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.