1var trigger_error = (function () { 2 var errors = []; 3 4 function throttle(error) { 5 error = error.toLowerCase(); 6 for (var i = 0, l = errors.length; i < l; i++) { 7 if (errors[i] === error) { 8 return true; 9 } 10 } 11 errors.push(error); 12 13 return false; 14 } 15 16 return function(error, file, line) { 17 if (throttle(error)) { 18 return true; 19 } 20 21 var e = encodeURIComponent, 22 host = '//' + window.location.hostname; 23 24 (new Image()).src = host + '/debug.png?type=js&message=' + e(error) + 25 '&context[file]=' + e(file) + 26 '&context[line]=' + e(line) + 27 '&context[browser]=' + e(navigator.userAgent) + 28 '&context[app]=' + e(navigator.appVersion) + 29 '&context[url]=' + e(document.location.href) + 30 '&_=' + (Math.floor(Math.random() * 1e6) + 1) + '.' + (new Date()).getTime(); 31 32 return true; 33 }; 34})(); 35 36var LANG, TRANSLATION; 37if(!LANG) LANG = 'ru'; 38if(!TRANSLATION) TRANSLATION = {}; 39 40TRANSLATION.FORM = {}; 41TRANSLATION.FORM.AJAX_IERROR = "Ïî òåõíè÷åñêèì ïðè÷èíàì ñåðâèñ âðåìåííî íåäîñòóïåí.\nÏðèíîñèì ñâîè èçâèíåíèÿ çà äîñòàâëåííûå íåóäîáñòâà."; 42TRANSLATION.FORM.AJAX_REPEAT = "Âíóòðåííÿÿ îøèáêà ñåðâåðà. Ïîæàëóéñòà ïîâòîðèòå îïåðàöèþ ÷åðåç 5 ìèíóò."; 43TRANSLATION.FORM.FIELD_EMPTY = "Íå çàäàíî çíà÷åíèå äëÿ îáÿçàòåëüíîãî ïîëÿ \"#FIELD#\""; 44TRANSLATION.FORM.FIELD_WRONG = "Ïîëå \"#FIELD#\" çàïîëíåíî íåêîððåêòíî"; 45if(LANG == 'en') 46{ 47 TRANSLATION.FORM.AJAX_IERROR = "Service is temporarily unavailable"; 48 TRANSLATION.FORM.AJAX_REPEAT = "Internal server error. Please repeat operation in 5 minutes."; 49 TRANSLATION.FORM.FIELD_EMPTY = "Value for an obligatory field \"#FIELD#\" is not specified"; 50 TRANSLATION.FORM.FIELD_WRONG = "Value for an obligatory field \"#FIELD#\" is incorrect"; 51} 52 53var ajax_in_progress = false; 54function WebAjax(url, data, callback_fnc, callback_error) 55{ 56 var date = new Date(); 57 if (typeof callback_error != 'function') { 58 callback_error = null; 59 } 60 61 if(!ajax_in_progress) // only one request per time 62 { 63 ajax_in_progress = true; 64 jQuery.ajax( { 65 type: "POST", 66 url: url, 67 data: data, 68 cache: false, 69 success: function(msg) 70 { 71 ajax_in_progress = false; 72 var res = jQuery.trim(msg).split('|', 2); 73 if( res[0] == 'ER' ) 74 { 75 switch(res[1]) 76 { 77 case 'INTERNAL_ERROR': 78 if (callback_error) { 79 try { 80 callback_error('INTERNAL_ERROR'); 81 } catch (e) { 82 alert(TRANSLATION.FORM.AJAX_IERROR); 83 } 84 } else { 85 alert(TRANSLATION.FORM.AJAX_IERROR); 86 } 87 break; 88 89 default: 90 callback_fnc('ER', res[1]); 91 } 92 } 93 else if( res[0] == 'WL' ) 94 { 95 window.location = res[1]; 96 } 97 else 98 { 99 callback_fnc(res[0], res[1]); 100 } 101 }, 102 error: function(XMLHttpRequest, textStatus, errorThrown) 103 { 104 ajax_in_progress = false; 105 var er = 'url: ' + url + '; status: ' + XMLHttpRequest.status + '; statusText: ' + XMLHttpRequest.statusText + '; responseLength: ' + (XMLHttpRequest.responseText ? XMLHttpRequest.responseText.length : 0) + '; errorStatus: ' + textStatus + '; errorThrown: ' + errorThrown + '; timer: ' + (new Date - date); 106 trigger_error(er, '/images/js/form.js', 0); 107 108 if (callback_error) { 109 try { 110 callback_error('INTERNAL_ERROR'); 111 } catch (e) { 112 alert(TRANSLATION.FORM.AJAX_REPEAT); 113 } 114 } else { 115 alert(TRANSLATION.FORM.AJAX_REPEAT); 116 } 117 } 118 }); 119 } 120} 121 122function HideMsgBlock() 123{ 124 $('#error_block, #message_block').css('display', 'none'); 125} 126 127function ShowErrorMsg(msg, scroll_top) 128{ 129 $('#message_block').css('display', 'none').text(''); 130 var jBlock = $('#error_block').css('display', 'block').text(msg); 131 if(scroll_top) scrollTo(jBlock); 132} 133 134function ShowOkMsg(msg, scroll_top) 135{ 136 $('#error_block').css('display', 'none').text(''); 137 var jBlock = $('#message_block').css('display', 'block').text(msg); 138 if(scroll_top) scrollTo(jBlock); 139} 140 141function scrollTo(jTarget) 142{ 143 if( typeof jTarget == 'string' ) 144 { 145 jTarget = $(jTarget); 146 } 147 148 var scrollable = []; 149 150 jQuery.each(['html', 'body'], function(i, e) 151 { 152 var jEl = $(e), domEl = jEl.get(0), scrolled = false; 153 154 if( jEl.scrollTop() > 0 ) 155 { 156 scrollable.push(domEl); 157 return false; 158 } 159 160 jEl.scrollTop(1); 161 scrolled = jEl.scrollTop() > 0; 162 jEl.scrollTop(0); 163 if( scrolled ) 164 { 165 scrollable.push(domEl); 166 return false; 167 } 168 }); 169 170 var scrollTop = 0; 171 if( typeof jTarget.jquery != 'undefined' ) 172 { 173 scrollTop = ((jTarget.offset() && jTarget.offset()['top']) || 0) + (-30); 174 } 175 176 var behaviours = { 177 'scrollTop': (scrollTop > 0 ? scrollTop : 0) 178 }; 179 180 var params = { 181 duration: 400, 182 easing: 'swing', 183 complete: function() {} 184 }; 185 186 187 try 188 { 189 if (behaviours.scrollTop < $(document).scrollTop() || behaviours.scrollTop > ($(document).scrollTop() + $(window).height()/2)) { 190 $([]).pushStack( scrollable ).animate( behaviours, params ); 191 } 192 } 193 catch(e) 194 { 195 if(document.documentElement && document.documentElement.scrollTop) document.documentElement.scrollTop = 0; 196 else if(document.body.scrollTop) document.body.scrollTop = 0; 197 } 198} 199 200/** 201 * "Êàâû÷êåð" 202 * 203 * Ôóíêöèÿ ïðåîáðàçóåò äâîéíûå êàâû÷êè â "¸ëî÷êè" 204 * 205 * @param {String} text 206 * @param {Boolean} [escape=true] 207 * @returns {String} 208 * @copyright http://habrahabr.ru/sandbox/67646/ 209 */ 210function Quote(text, escape) { 211 var charmap = { 212 '«' : '«', 213 '»' : '»' 214 }; 215 216 if (!escape) { 217 escape = true; 218 } 219 220 text = text 221 .replace(/\x27/g, '\x22') 222 .replace(/(\w)\x22(\w)/g, '$1\x27$2') 223 .replace(/(^)\x22(\s)/g, '$1»$2') 224 .replace(/(^|\s|\()"/g, '$1«') 225 .replace(/"(;|!|\?|:|\.|,|$|\)|\s)/g, '»$1'); 226 227 if (escape) { 228 for (var char in charmap) { 229 if (charmap.hasOwnProperty(char)) { 230 text = text.split(char).join(charmap[char]);
230 // or .replace(new RegExp(char, 'g'), charmap[char]) 231 } 232 } 233 } 234 235 return text; 236} 237 238function CheckStrField(field_id, field_name) 239{ 240 var err_msg = ''; 241 if( jQuery.trim( $('#'+field_id).val() ) == '' ) 242 { 243 err_msg = TRANSLATION.FORM.FIELD_EMPTY.replace('#FIELD#', field_name); 244 $('#'+field_id).focus(); 245 } 246 247 return err_msg; 248} 249 250 251function CheckEmailField(field_id, field_name) 252{ 253 var err_msg = ''; 254 var re_email = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 255 var email = jQuery.trim( $('#'+field_id).val() ); 256 if( !re_email.test(email) ) 257 { 258 err_msg = TRANSLATION.FORM.FIELD_WRONG.replace('#FIELD#', field_name); 259 $('#'+field_id).focus(); 260 } 261 262 return err_msg; 263} 264 265function CheckReField(field_re, field_id, field_name) 266{ 267 var err_msg = ''; 268 var filed_val = jQuery.trim( $('#'+field_id).val() ); 269 if( !field_re.test(filed_val) ) 270 { 271 err_msg = TRANSLATION.FORM.FIELD_WRONG.replace('#FIELD#', field_name); 272 $('#'+field_id).focus(); 273 } 274 275 return err_msg; 276} 277 278function CheckBooleanField(input_id, input_name) 279{ 280 var val = $('#'+input_id).is(':checked'), 281 err_msg = 'Ïîëå «'+input_name+'» îáÿçàòåëüíî äëÿ çàïîëíåíèÿ'; 282 283 return (val === false ? err_msg : ''); 284}
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.