PageSourceSearch

https://www.garant.ru/static/www/js/form.js?933

js garant.ru collected 2026-09-24 06:23:53 UTC 7,131 bytes, 284 lines download raw bytes

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		'«' : '&laquo;',
213		'»' : '&raquo;'
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.