PageSourceSearch

https://salataviya.ru/static/apps/common/inova_static_lib/scripts/ajax.js?20211220152638

js salataviya.ru collected 2026-10-02 18:22:00 UTC 8,769 bytes, 237 lines download raw bytes

1function ajax_handler($parent, ajax_url, ajax_args_dict, preloader, $data) {
2    var is_need_sub_request = false;
3    if ($data !== undefined) {
4        var res = ajax_replacer($parent, $data);
5        if (res === false)
6            is_need_sub_request = true;
7        else
8            $parent = res;
9    } else {
10        is_need_sub_request = true;
11    }
12    if (is_need_sub_request)
13        $.ajax({
14            type: 'GET',
15            timeout: 30000,
16            url: ajax_url,
17            data: ajax_args_dict,
18            success: function (data) {
19                var res = ajax_replacer($parent, $(data));
20                if (res !== false)
21                    $parent = res;
22            },
23            error: function () {
24                $parent.css('position', 'relative');
25                $parent.animate({'left': '-=4px'}, 50);
26                $parent.animate({'left': '+=8px'}, 50);
27                $parent.animate({'left': '-=8px'}, 50);
28                $parent.animate({'left': '+=8px'}, 50);
29                $parent.animate({'left': '-=8px'}, 50);
30                $parent.animate({'left': '+=8px'}, 50);
31                $parent.animate({'left': '-=4px'}, 50);
32            },
33            complete: function () {
34                ajax_destroy($parent, preloader);
35                $(document).trigger('inova_admin.toggle_ui', [undefined, $parent]);
36            }
37        });
38    else
39        ajax_destroy($parent, preloader);
40}
41
42function ajax_replacer($parent, $data) {
43    var ajax_id = $parent.attr('data-ajax-id');
44    if (ajax_id === undefined)
45        ajax_id = '';
46    var selector = '*[data-ajax-id="' + ajax_id + '"]';
47    var $result = $data.filter(selector);
48    if ($result.length !== 1) {
49        $result = $data.find(selector);
50        if ($result.length !== 1)
51            $result = false;
52    }
53    if ($result !== false) {
54        $result.css('opacity', '.33');
55        $parent.replaceWith($result);
56        $parent = $result;
57        return $parent;
58    }
59    return false;
60}
61
62function rotate_preloader(elem, degree) {
63    elem.css({WebkitTransform: 'rotate(' + degree + 'deg)'});
64    elem.css({'-moz-transform': 'rotate(' + degree + 'deg)'});
65    elem.css({'transform': 'rotate(' + degree + 'deg)'});
66    var timer = setTimeout(function () {
67        rotate_preloader(elem, degree + 15);
68    }, 40);
69}
70
71function ajax_create_preloader($parent) {
72    var preloader_width = $parent.width();
73    var preloader_height = $parent.height();
74    var preloader = $('#PRELOADER');
75    if (preloader.length === 0) {
76        $(document.body).append('<div id="PRELOADER"><div class="rotor"></div></div>');
77        preloader = $('#PRELOADER');
78        try {
79            var rotor = preloader.find('.rotor');
80            rotor.css({
81                left: preloader_width / 2 - 80 / 2 + 'px',
82                top: preloader_height / 2 - 80 / 2 + 'px'
83            });
84            rotate_preloader(rotor, 0);
85        } catch (e) {
86        }
87    }
88    preloader.css({
89        'left': $parent.offset().left,
90        'top': $parent.offset().top,
91        'width': preloader_width,
92        'height': preloader_height
93    });
94    preloader.animate({'opacity': '1'});
95    return preloader;
96}
97
98function ajax_destroy($parent, preloader) {
99    $parent.animate({'opacity': '1'});
100    if (preloader !== undefined) {
101        preloader.animate({'opacity': '0'});
102        setTimeout(function () {
103            preloader.remove();
104        }, 400);
105    }
106}
107
108
109$(document)
110    .on('click', 'a[data-ajax-link]', function () {
111        var $link = $(this);
112        var $parent = $link.closest('*[data-ajax-id], *[data-ajax-url]');
113        var parent_url = $parent.attr('data-ajax-url');
114        if (parent_url === undefined)
115            parent_url = location.href.split(location.host)[1];
116        else
117            parent_url = decodeURIComponent(parent_url);
118        var parent_url_args = '';
119        if (parent_url.indexOf('?') !== -1)
120            parent_url_args = parent_url.split('?')[1].split('&');
121        var ajax_url = parent_url.split('?')[0];
122        var ajax_args_dict = {};
123        var i, par;
124        for (i = 0; i < parent_url_args.length; i++) {
125            par = parent_url_args[i].split('=');
126            ajax_args_dict[par[0]] = par[1];
127        }
128        var link_url = $link.attr('href');
129        var link_url_args = [];
130        if (link_url.indexOf('?') !== -1)
131            link_url_args = link_url.split('?')[1].split('&');
132        for (i = 0; i < link_url_args.length; i++) {
133            par = link_url_args[i].split('=');
134            ajax_args_dict[par[0]] = par[1];
135        }
136
137        $parent.animate({'opacity': '.33'});
138
139        var preloader = ajax_create_preloader($parent);
140
141        ajax_handler($parent, ajax_url, ajax_args_dict, preloader);
142
143        return false;
144
145    })
146    .on('click', 'form[data-ajax-form] *[type=submit]', function () {
147        var $submit = $(this);
148        $submit.attr('data-submit-action', '1');
149    })
150    .on('submit', 'form[data-ajax-form]', function () {
151        var $form = $(this);
152        var $parent = $form.closest('*[data-ajax-id], *[data-ajax-url]');
153        var parent_url = $parent.attr('data-ajax-url');
154        if (parent_url === undefined)
155            parent_url = location.href.split(location.host)[1];
156        else
157            parent_url = decodeURIComponent(parent_url);
158        var parent_url_args = '';
159        var ajax_url = parent_url.split('?')[0];
160        var ajax_args_dict = {};
161        var i, par;
162        for (i = 0; i < parent_url_args.length; i++) {
163            par = parent_url_args[i].split('=');
164            ajax_args_dict[par[0]] = par[1];
165        }
166
167        $parent.animate({'opacity': '.33'});
168
169        var preloader = ajax_create_preloader($parent);
170
171        var data;
172        try {
173            data = new FormData($form[0]);
174            var $submit = $form.find('*[type=submit][data-submit-action=1]');
175            if ($submit.length === 1) {
176                var name = $submit.attr('name'), value = $submit.attr('value');
177                if (name !== '' && value !== '')
178                    data.append(name, value);
179            }
180            $submit.removeAttr('data-submit-action');
181        } catch (e) {
182            data = $form.serialize();
183        }
184
185        var action = $form.attr('action');
186        if (action === undefined)
187            action = location.href.split(location.host)[1];
188
189        $.ajax({
190            type: $form.attr('method'),
191            url: action,
192            data: data,
193            cache: false,
194            contentType: false,
195            processData: false,
196            beforeSend: function () {
197                $form.find('*[type=submit]').attr('disabled', 'disabled');
198            },
199            success: function (data, textStatus) {
200                try {
201                    ajax_handler($parent, ajax_url, ajax_args_dict, preloader, $(data));
202                } catch (e) {
203                    ajax_handler($parent, ajax_url, ajax_args_dict, preloader);
204                }
205            },
206            error: function (xhr, ajaxOptions, thrownError) {
207                ajax_destroy($parent, preloader);
208                if (window.top === window.self) {
209                    var message = xhr.responseText;
210                    if (message === '' || message === undefined || message === null)
211                        switch (xhr.status) {
212                            case 403:
213                                message = 'Уважаемый посетитель!<br/>' +
214                                    'Это действие доступно только пользователям, прошедшим ' +
215                                    '<a href="/account/signup/" title="Зарегистрироваться на сайте" data-popup-auth-form>регистрацию</a> и ' +
216                                    '<a href="/auth/login/" title="Авторизоваться на сайте" data-popup-auth-form>авторизацию</a>.';
217                                break;
218                            case 404:
219                                message = 'Страница не найдена.';
220                                break;
221                            case 500:
222                                message = 'Ошибка сервера.';
223                                break;
224                            default:
225                                message = 'Неизвестная ошибка.';
226                                break;
227                        }
228                    inova_popup.set_message(message, 'Ошибка');
229                }
230            },
231            complete: function () {
232                $form.find('*[type=submit]').prop('disabled', false);
233            }
234        });
235        return false;
236    });
237

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.