PageSourceSearch

https://www.gantuning.ru/themes/gantuning/assets/js/captcha.js

js gantuning.ru collected 2026-10-07 23:02:24 UTC 15,009 bytes, 576 lines download raw bytes

1/* Yandex Smart Captcha */
2let ysc_flag_loaded = false;
3let ysc_container = false;
4
5/* resellers */
6let ysc_id_resellers = false;
7
8/* review add */
9let ysc_id_review_add = false;
10
11/* search */
12let ysc_id_search_modal = false;
13
14/* special offer */
15let ysc_id_ga_modal = false;
16let ysc_id_gap = false;
17let ysc_id_gap_modal = false;
18let ysc_id_gt = false;
19let ysc_id_gt_modal = false;
20let ysc_id_gtl_modal = false;
21
22
23/* Загружаем каптчу */
24function SmartCaptchaLoad() {
25	if(!window.smartCaptcha) {
26		return;
27	}
28
29	SmartCaptchaInit();
30	
31	ysc_flag_loaded = true;
32	console.log('captcha loaded');
33}
34
35
36/* Создаем каптчу на странице */
37function SmartCaptchaInit() {
38	/* resellers */
39	if(document.getElementById('captcha_container_resellers') !== null) { 
40		ysc_id_resellers = window.smartCaptcha.render('captcha_container_resellers', {
41			sitekey: smarty_captcha_public,
42			invisible: true, 
43			callback: SmartyCaptchaExecuteReseller,
44		});
45		
46	}/* resellers */
47	if(document.getElementById('captcha_container_motorwarranty') !== null) { 
48		ysc_id_motorwarranty = window.smartCaptcha.render('captcha_container_motorwarranty', {
49			sitekey: smarty_captcha_public,
50			invisible: true, 
51			callback: SmartyCaptchaExecuteMotorwarranty,
52		});
53	}
54	
55	/* review add */
56	if(document.getElementById('captcha_container_review_add') !== null) { 
57		ysc_id_review_add = window.smartCaptcha.render('captcha_container_review_add', {
58			sitekey: smarty_captcha_public,
59			invisible: true, 
60			callback: SmartyCaptchaExecuteReviewAdd,
61		});
62	}
63	
64	/* search */
65	if(document.getElementById('captcha_container_search_modal') !== null) { 
66		ysc_id_search_modal = window.smartCaptcha.render('captcha_container_search_modal', {
67			sitekey: smarty_captcha_public,
68			invisible: true, 
69			callback: SmartyCaptchaExecuteSearch,
70		});
71	}
72	
73	/* special offer */
74	if(document.getElementById('captcha_container_ga_modal') !== null) { 
75		ysc_id_ga_modal = window.smartCaptcha.render('captcha_container_ga_modal', {
76			sitekey: smarty_captcha_public,
77			invisible: true, 
78			callback: SmartyCaptchaExecuteSpecialOffer,
79		});
80	}
81	if(document.getElementById('captcha_container_gap') !== null) { 
82		ysc_id_gap = window.smartCaptcha.render('captcha_container_gap', {
83			sitekey: smarty_captcha_public,
84			invisible: true, 
85			callback: SmartyCaptchaExecuteSpecialOffer,
86		});
87	}
88	if(document.getElementById('captcha_container_gap_modal') !== null) { 
89		ysc_id_gap_modal = window.smartCaptcha.render('captcha_container_gap_modal', {
90			sitekey: smarty_captcha_public,
91			invisible: true, 
92			callback: SmartyCaptchaExecuteSpecialOffer,
93		});
94	}
95	if(document.getElementById('captcha_container_gt') !== null) { 
96		ysc_id_gt = window.smartCaptcha.render('captcha_container_gt', {
97			sitekey: smarty_captcha_public,
98			invisible: true, 
99			callback: SmartyCaptchaExecuteSpecialOffer,
100		});
101	}
102	if(document.getElementById('captcha_container_gt_modal') !== null) { 
103		ysc_id_gt_modal = window.smartCaptcha.render('captcha_container_gt_modal', {
104			sitekey: smarty_captcha_public,
105			invisible: true, 
106			callback: SmartyCaptchaExecuteSpecialOffer,
107		});
108	}
109	if(document.getElementById('captcha_container_gtl_modal') !== null) { 
110		ysc_id_gtl_modal = window.smartCaptcha.render('captcha_container_gtl_modal', {
111			sitekey: smarty_captcha_public,
112			invisible: true, 
113			callback: SmartyCaptchaExecuteSpecialOffer,
114		});
115	}
116
117}
118
119
120/* Запуск обработки форм */
121function SmartCaptchaFormSend(CONTAINER) {
122	if(!window.smartCaptcha) {
123		return;
124	}
125	
126	ysc_container = CONTAINER;
127	
128	switch(CONTAINER) {
129		/* resellers */
130		case 'captcha_container_resellers': {
131			window.smartCaptcha.execute(ysc_id_resellers); 
132		} break;
133		
134		/* motorwarranty */
135		case 'captcha_container_motorwarranty': {
136			window.smartCaptcha.execute(ysc_id_motorwarranty); 
137		} break;
138
139		/* review add */
140		case 'captcha_container_review_add': {
141			window.smartCaptcha.execute(ysc_id_review_add); 
142		} break;
143	
144		/* search */
145		case 'captcha_container_search_modal': {
146			window.smartCaptcha.execute(ysc_id_search_modal); 
147		} break
148		
149		/* special offer */
150		case 'captcha_container_ga_modal': {
151			window.smartCaptcha.execute(ysc_id_ga_modal); 
152		} break;
153		case 'captcha_container_gap': {
154			window.smartCaptcha.execute(ysc_id_gap); 
155		} break;
156		case 'captcha_container_gap_modal': {
157			window.smartCaptcha.execute(ysc_id_gap_model); 
158		} break;
159		case 'captcha_container_gt': {
160			window.smartCaptcha.execute(ysc_id_gt); 
161		} break;
162		case 'captcha_container_gt_modal': {
163			window.smartCaptcha.execute(ysc_id_gt_modal); 
164		} break;
165		case 'captcha_container_gtl_modal': {
166			window.smartCaptcha.execute(ysc_id_gtl_modal); 
167		} break;
168	
169	}
170	
171}
172
173
174/* Обработчики */
175function SmartyCaptchaExecuteReseller(token) {
176	let form = $('#resellers-form');
177	let name = form.find('.js-name');
178	let phone = form.find('.js-phone');
179	let email = form.find('.js-email');
180	let city = form.find('.js-city');
181	
182	let flag_error = false;
183	
184	if(!name.val()) {
185		flag_error = true;
186		name.addClass('is-invalid');
187		name.parent('.contact-line').removeClass('success');
188		name.parent('.contact-line').addClass('error');
189	}
190	else {
191		name.removeClass('is-invalid');
192		name.parent('.contact-line').removeClass('error');
193		name.parent('.contact-line').addClass('success');
194	}
195
196	if(!phone.val()) {
197		flag_error = true;
198		phone.addClass('is-invalid');
199		phone.parent('.contact-line').removeClass('success');
200		phone.parent('.contact-line').addClass('error');
201	}
202	else {
203		phone.removeClass('is-invalid');
204		phone.parent('.contact-line').removeClass('error');
205		phone.parent('.contact-line').addClass('success');
206	}
207	
208	if(!email.val()) {
209		flag_error = true;
210		email.addClass('is-invalid');
211		email.parent('.contact-line').removeClass('success');
212		email.parent('.contact-line').addClass('error');
213	}
214	else {
215		email.removeClass('is-invalid');
216		email.parent('.contact-line').removeClass('error');
217		email.parent('.contact-line').addClass('success');
218	}
219	
220	if(!city.val()) {
221		flag_error = true;
222		city.addClass('is-invalid');
223		city.parent('.contact-line').removeClass('success');
224		city.parent('.contact-line').addClass('error');
225	}
226	else {
227		city.removeClass('is-invalid');
228		city.parent('.contact-line').removeClass('error');
229		city.parent('.contact-line').addClass('success');
230	}
231	
232	if(!flag_error) {
233		$.ajax({
234			type: 'POST',
235			url: '/reseller/',
236			data: {
237				ajax: 'resselers',
238				name: name.val(),
239				phone: phone.val(),
240				email: email.val(),
241				city: city.val(),
242				captcha: token
243			},
244			dataType: 'json'
245		}).done(function(answer) {
246			if(answer.status == 'ok') {
247				$('#resellers-form').hide();
248				$('#successFormText').show();
249			}
250			else {
251				alert('Ошибка сервера. Попробуйте позже');
252			}
253		});
254	}
255
256	console.log('captcha executed');
257	
258	/* Ленивый перезапуск каптчи */
259	if(ysc_flag_loaded) { 
260		SmartCaptchaInit();
261	}
262}
263
264function SmartyCaptchaExecuteMotorwarranty(token) {
265	
266	let form = $('#motorwarranty');
267	
268	form.find('.field-error').remove();
269	let date_valid = false;
270	let entered_date = form.find('.js-date-mask').val();
271	let date_error = '';
272
273	let reg = /(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[012])-\d\d\d\d/;
274
275	if (entered_date.match(reg)) {
276
277		let date_split = entered_date.split("-");
278		let date = new Date(date_split[2], date_split[1] - 1, date_split[0]);
279		let date1900 = new Date(1900, 0, 1);
280
281		if(date > Date.now()) {
282			date_error = 'Дата не должна быть больше текущей';
283		} else if (date <= date1900){
284			date_error = 'Дата должна быть больше 01-01-1900';
285		} else{
286			$('.js-date-mask').removeClass('error');
287			date_valid = true;
288		}
289	} else {
290		$('.js-date-mask').addClass('error');
291		$('.js-date-mask').after('<div class="field-error" style="color:red;">Введите дату в формате ДД-ММ-ГГГГ</div>');
292	}
293	
294	let email_error = '';
295	let email_valid = false;
296	let email = $('input[name=mail]').val();
297
298	if(email != '') {
299		var pattern = /^[A-Z0-9._%+-]+@([A-Z0-9-]+\.)+[A-Z]{2,4}$/i;
300		if(pattern.test(email)){
301			$("input[name=mail]").removeClass('error');
302			email_valid = true;
303		} else {
304			email_error = 'Некорректный email';
305		}
306	} else {
307		email_error = 'Поле email не должно быть пустым';
308	}
309	
310	if(date_valid && email_valid) {
311		$('.js-date-mask').removeClass('error');
312		$("input[name=mail]").removeClass('error');
313
314		var url = form.attr('action');
315		var data = form.serializeArray();
316		data.push({name:'captcha', 'value': token});
317		
318		$.ajax({
319			type: "POST",
320			url: url,
321			data: data,
322			dataType: 'json',
323			success: function(r){
324				if( r.errors.length > 0 ) {
325					if(r.res == 'notValidEmail') {
326						alert(r.errors);
327						return;
328					} else {
329						alert('Ошибка сервера..');
330						return;
331					}
332				}
333
334				$('#motorwarranty').hide();
335				$('.hide-after').hide();
336				$('.motorwarranty-page .success').show();
337				$('.js-after-form').show();
338			},
339			fail: function(r){
340				alert('Error');
341				console.log(r);
342			}
343
344		});
345	} else {
346		if (!date_valid) {
347			$('.js-date-mask').addClass('error');
348			$('.js-date-mask').after('<div class="field-error" style="color:red;">'+date_error+'</div>');
349		}
350		if (!email_valid) {
351			$("input[name=mail]").addClass('error');
352			$("input[name=mail]").after('<div class="field-error" style="color:red;">'+email_error+'</div>');
353		}
354	}
355	
356	/* Ленивый перезапуск каптчи */
357	if(ysc_flag_loaded) { 
358		SmartCaptchaInit();
359	}
360	
361}
362
363function SmartyCaptchaExecuteReviewAdd(token) {
364	var data = $('#add_review').serializeArray();
365
366	let flag_error = false;
367	
368	if($('#stars').val().length === 0) {
369		$('.js-stars-error').removeClass('inactive');
370		$('.total-rait__stars').addClass('error');
371		flag_error = true;
372	}
373	else {
374		$('.js-stars-error').addClass('inactive');
375		$('.total-rait__stars').removeClass('error');
376	}
377	
378	if($('#product_type').val().length === 0) {
379		$('.js-product_type-error').removeClass('inactive');
380		$('.choose-type__item').addClass('error');
381		flag_error = true;
382	}
383	else {
384		$('.js-product_type-error').addClass('inactive');
385		$('.choose-type__item').removeClass('error');
386	}
387	
388	if($('#name_city').val().length === 0) {
389		$('.js-name_city-error').removeClass('inactive');
390		$('#name_city').addClass('error');
391		flag_error = true;
392	}
393	else {
394		$('.js-name_city-error').addClass('inactive');
395		$('#name_city').removeClass('error');
396	}
397	
398	if($('#order_car').val().length === 0) {
399		$('.js-order_car-error').removeClass('inactive');
400		$('#order_car').addClass('error');
401		flag_error = true;
402	}
403	else {
404		$('.js-order_car-error').addClass('inactive');
405		$('#order_car').removeClass('error');
406	}
407	
408	if(!flag_error) {
409		$.ajax({
410			type: 'POST',
411			url: '/reviews/add/',
412			data: data,
413			dataType: 'json'
414		}).done(function(answer) {
415			if(answer.status == 'ok') {
416				$('#add_review').hide();
417				$('.hide-after').hide();
418				$('.js-after-form').show();
419				$('html, body').animate({scrollTop: '0px'}, 300);
420			}
421			else {
422				alert('Ошибка сервера. Попробуйте позже');
423			}
424		});
425	} 
426			
427	console.log('captcha executed');
428	
429	/* Ленивый перезапуск каптчи */
430	if(ysc_flag_loaded) { 
431		SmartCaptchaInit();
432	}
433}
434
435function SmartyCaptchaExecuteSearch(token) {
436	var form = $('.kr_form_footer_search_modal').parents('.modal-body');
437	var name = form.find('.kr_chippicker_form_name');
438	var phone = form.find('.kr_chippicker_form_phone');
439	var mail = form.find('.kr_chippicker_form_mail');
440	var car = form.find('.kr_chippicker_form_car');
441	var engine = form.find('.kr_chippicker_form_engine');
442	
443	let flag_error = false;
444	
445	if(!name.val()) {
446		flag_error = true;
447		name.addClass('is-invalid');
448	}
449	else {
450		name.removeClass('is-invalid');
451	}
452	
453	if(!phone.val()) {
454		flag_error = true;
455		phone.addClass('is-invalid');
456	}
457	else {
458		phone.removeClass('is-invalid');
459	}
460	
461	if(!mail.val()) {
462		flag_error = true;
463		mail.addClass('is-invalid');
464	}
465	else {
466		mail.removeClass('is-invalid');
467	}
468	
469	if(!car.val()) {
470		flag_error = true;
471		car.addClass('is-invalid');
472	}
473	else {
474		car.removeClass('is-invalid');
475	}
476	
477	if(!engine.val()) {
478		flag_error = true;
479		engine.addClass('is-invalid');
480	}
481	else {
482		engine.removeClass('is-invalid');
483	}
484	
485	if(!flag_error) {
486		$.ajax({
487			url: '/module/kr_chippicker/ajax',
488			method: 'POST',
489			data:{
490				task: 'submit_form',
491				name: name.val(),
492				phone: phone.val(),
493				mail: mail.val(),
494				car: car.val(),
495				engine: engine.val(),
496				captcha: token
497			},
498			dataType: 'json'
499		}).done(function(answer) {
500			if(answer.status == 'ok') {
501				form.find('form').hide();
502				form.find('.form-sent').show();
503				name.val('');
504				phone.val('');
505				mail.val('');
506				car.val('');
507				engine.val('');
508			}
509			else {
510				alert('Ошибка сервера. Попробуйте позже');
511			}
512		});
513	}
514	console.log('captcha executed');
515	
516	/* Ленивый перезапуск каптчи */
517	if(ysc_flag_loaded) { 
518		SmartCaptchaInit();
519	}
520}
521
522function SmartyCaptchaExecuteSpecialOffer(token) {
523	let Form = $('.kr_form_catalog_special_offer[data-type="' + ysc_container + '"]');
524	let name = Form.find('input[name="name"]').val();
525	let phone = Form.find('input[name="phone"]').val();
526	let chip = Form.find('input[name="chip"]').val();
527
528	if(name == '') {
529		Form.find('input[name="name"]').addClass('is-invalid');
530	}
531	else {
532		Form.find('input[name="name"]').removeClass('is-invalid');
533	}
534
535	if(phone == '') {
536		Form.find('input[name="phone"]').addClass('is-invalid');
537	}
538	else{
539		Form.find('input[name="phone"]').removeClass('is-invalid');
540	}
541
542	if(name != '' && phone != '' && chip != '') {
543		$.ajax({
544			url: '/module/kr_chippicker/ajax',
545			method: 'POST',
546			data:{
547				task: 'offer_form', 
548				name: name,
549				phone: phone,
550				chip: chip,
551				url: window.location.href,
552				captcha: token
553			},
554			dataType: 'json'
555		}).done(function(answer) {
556			if(answer.status == 'ok') {
557				if(typeof ym != 'undefined') {
558					ym(43767234, 'reachGoal', 'order_done_pop_up');
559				}
560				let result = Form.find('.kr_form_result').data('result');
561				Form.html(result);
562			}
563			else {
564				alert('Ошибка сервера. Попробуйте позже');
565			}
566		});
567	}
568	
569	console.log('captcha executed');
570	
571	/* Ленивый перезапуск каптчи */
572	if(ysc_flag_loaded) { 
573		SmartCaptchaInit();
574	}
575}
576

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.