PageSourceSearch

https://msk-leader.ru/templates/bs5/js/template.js?v=1.19

js msk-leader.ru collected 2026-10-07 20:00:27 UTC 20,076 bytes, 593 lines download raw bytes

1jQuery(function ($) {
2	
3	// детектируем Safari
4	var ua = window.navigator.userAgent;
5	var iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);
6	var webkit = !!ua.match(/WebKit/i);
7	var iOSSafari = iOS && webkit && !ua.match(/CriOS/i);
8	if(iOSSafari) $('body').addClass('safari'); 
9	
10	
11	
12	let ww = $(window).width();
13	
14	// мобильное меню (верхнее)
15	$(".mobmnu-btn").click(function() { // клик по гамбургеру
16		//$('.mobmenu').toggleClass('d-none');
17		$(this).parent().next().toggleClass('d-none')
18		$(this).parent().toggleClass('opened')
19		
20		$('.btm-mobile .mobmenu').addClass('d-none');
21		$('.btm-mobile .chatmenu').addClass('d-none');
22	});
23	$(".mobmenu>li.deeper>a").click(function(event) { // показ дочерних пунктов
24		event.preventDefault();
25		$(this).toggleClass('opened')
26		$(this).parent().find('ul').slideToggle('normal');
27	});
28	
29	
30	// нижнее
31	$(".kat-btn").click(function(event) { // клик по гамбургеру
32		event.preventDefault();
33		$('.btm-mobile .mobmenu').toggleClass('d-none');
34		$('.btm-mobile .chatmenu').addClass('d-none');
35		
36		$(".mobline").removeClass('opened'); // зкарываем верхнее
37		$(".topp .mobmenu").addClass('d-none');
38	});
39	
40	
41	$(".chat-btn").click(function(event) { // клик по Звонок/Чат
42		event.preventDefault();
43		$('.btm-mobile .chatmenu').toggleClass('d-none');
44		$('.btm-mobile .mobmenu').addClass('d-none');
45		
46		$(".mobline").removeClass('opened'); // зкарываем верхнее
47		$(".topp .mobmenu").addClass('d-none');
48	});
49	// конец мобильного меню
50	
51
52
53
54	// фильтр-редиректор в блоге
55	$('#select_drop').on('change', function() {
56	  if( this.value!="" ) document.location.href =  this.value;
57	});
58
59
60
61
62	//hot-spot
63	$('li.spot').click(function() { 
64		let win = $(this).parent().next();
65		win.hide();
66		win.html( $(this).html() ).fadeIn();
67		win.removeClass('start-0 end-0');
68		win.addClass( $(this).attr('data-pos') );
69	});
70	
71	$('.spots-window').click(function() { 
72		$(this).fadeOut();
73	});
74	
75	
76	
77	//закрывашка сео-текста
78	$('.half-text-oppener').click(function() { 
79		$(this).prev().removeClass('half-text');
80		$(this).hide();
81	});
82
83
84
85	//слайдер
86	
87if(ww<900){
88	
89	$(".slick-carousel").slick({
90	  arrows: false,	
91	  dots: true,
92	  infinite: false,
93	  speed: 500,
94	  slidesToShow: 2,
95	  slidesToScroll: 2,
96	  responsive: [
97		{
98		  breakpoint: 1024,
99		  settings: {
100			slidesToShow: 2,
101			slidesToScroll: 2,
102			infinite: true,
103			dots: true
104		  }
105		},
106		{
107		  breakpoint: 600,
108		  settings: {
109			slidesToShow: 1,
110			slidesToScroll: 1
111		  }
112		}
113	  ]
114	});	
115}	
116	
117	
118
119	$('.slider-foli .slider-for').slick({
120		slidesToShow: 1,
121		slidesToScroll: 1,
122		arrows: false,
123		fade: true,
124		asNavFor: '.slider-nav'
125	});
126	
127	$('.slider-box .slider-for').slick({
128		slidesToShow: 1,
129		slidesToScroll: 1,
130		arrows: true,
131		fade: true,
132		asNavFor: '.slider-nav',
133		vertical:false
134	});
135
136	if(ww>800){
137
138		$('.slider-box .slider-nav').slick({
139			slidesToShow: 4,
140			slidesToScroll: 1,
141			asNavFor: '.slider-for',
142			arrows: false,
143			centerMode: true,
144			focusOnSelect: true,
145			vertical:true
146		});
147		
148		$('.slider-foli .slider-nav').slick({
149			slidesToShow: 4,
150			slidesToScroll: 2,
151			asNavFor: '.slider-for',
152			arrows: false,
153			centerMode: false,
154			focusOnSelect: true,
155			dots: true,
156			vertical:true
157		});		
158
159
160		/* из 3-х блоков */
161		$('.slick-3').slick({
162			infinite: true,
163			slidesToShow: 3,
164			slidesToScroll: 3
165		});
166		
167	}
168	else{
169		$('.slider-box .slider-nav').slick({
170			slidesToShow: 4,
171			slidesToScroll: 1,
172			asNavFor: '.slider-for',
173			arrows: false,
174			centerMode: true,
175			focusOnSelect: true,
176			vertical:false
177		});
178		
179		$('.slider-foli .slider-nav').slick({
180			slidesToShow: 3,
181			slidesToScroll: 1,
182			asNavFor: '.slider-for',
183			arrows: false,
184			centerMode: false,
185			focusOnSelect: true,
186			dots: false,
187			vertical:false
188		});			
189
190
191		/* из 3-х блоков */
192		$('.slick-3').slick({
193			infinite: true,
194			slidesToShow: 1,
195			slidesToScroll: 1
196		});		
197	}		
198
199
200
201
202	
203	// формы связи
204	// $('.tel_form').mask('+0 0000000000000');	
205	
206	// для ЛОВЦА
207	var dnd = $.cookie('dnd'); // кука 'Не показывать ловца'
208	var lockForms=0; // индикатор бокировки всплытия форм, чтобы не срабатывали многократно
209	
210	// инициируем модальные формы
211	var myModal = new bootstrap.Modal(document.getElementById('myForm'))
212	var myModal2 = new bootstrap.Modal(document.getElementById('myForm2'))
213	var infModal = new bootstrap.Modal(document.getElementById('infModal'))
214	var Lovetz = new bootstrap.Modal(document.getElementById('Lovetz'))
215	var okModal = new bootstrap.Modal(document.getElementById('okModal'))
216	var montaj = "";
217	//okModal.show();
218	
219	$('.js-consult-form .form-tel').change(function(){ // as_p_am
220		$('#email_form_main2_b').val("begood");
221	});
222	
223	$(".form-bt").click(function( event ) {
224		cur_form = $(this).closest( "form" ); // нашли форму-родителя для текущей кнопки
225		cur_form.find('.tel_form').removeClass('is-invalid');		
226		
227		let eml = cur_form.find('input[name="email_form_main"]').val();
228		if(eml=="" || eml=="[email protected]"){
229			cur_form.find('input[name="email_form_main"]').val("[email protected]"); // ан_ти_сп_ам
230		}
231	});
232	
233	// Fetch all the forms we want to apply custom Bootstrap validation styles to
234	var forms = document.querySelectorAll('.needs-validation')
235	// Loop over them and prevent submission
236	Array.prototype.slice.call(forms)
237	.forEach(function (form) {
238	  form.addEventListener('submit', function (event) {		  
239		dnd = 1;		// блокируем запуск
240		set_dnd();		// ловца		  
241		event.preventDefault()
242		event.stopPropagation()
243
244		let sogl = $(cur_form[0]).find('.sogl').prop('checked');	// чекбокс Согласия на обработку
245		if ( (!form.checkValidity()) || (!sogl) ) {
246			$(cur_form[0]).find('.sogl-border').removeClass('redborder');
247			if(!sogl){ $(cur_form[0]).find('.sogl-border').addClass('redborder') }
248		}
249		else{
250			let fd = new FormData(cur_form[0]); // передаем объект формы в функцию и получаем аналог сериализации с поддержкой файлов
251			//var str = $(form).serialize()+montaj+'&url='+document.URL;
252
253			fd.append('url', document.URL);		
254			$.ajax({
255				processData: false,
256				contentType: false,
257				type: "POST",
258				url: "/zakazform.php",
259				data: fd,
260				success: function(msg2) {
261					//alert(msg2);
262					let foundPos = msg2.indexOf('OK', 0);					
263					
264					//if(msg2 == 'OK') {	
265					if(foundPos == 0) {	// c_pam или норм				
266						//result2 = '<div class="notification_ok">Спасибо, ваше сообщение было отправлено. Ожидайте звонка</div>';					
267						if($('#myForm').hasClass('show')) myModal.hide(); // если открыта форма заказа звонка - закрываем
268						if($('#myForm2').hasClass('show')) myModal2.hide();
269						if($('#Lovetz').hasClass('show')) Lovetz.hide();
270						okModal.show();
271						if(msg2 == 'OK') { ym(64452808, 'reachGoal', 'sendform'); };
272						
273						var tl = fd.get('tel_form');	// передача параметров визита
274						tl = tl.slice(-4);
275						//console.log(tl);
276						var myP = {test: {t: tl}}; 
277						ym(64452808, 'params', {params: myP});
278						
279					} else {
280						if(  msg2.indexOf('tel-err')!==-1 ){  // если в коде ошибки есть указание на телефон, то
281							$(form).find('.tel_form').addClass('is-invalid');
282							//$('.invalid-feedback').text(msg2);
283						}
284					}
285					//$('#note2').html(result2);
286				}
287			});
288		}
289		form.classList.add('was-validated')
290		
291	  }, false)
292	})
293
294
295	$(".modal-bt").click(function( event ) {
296		event.preventDefault()
297		myModal.show()
298		dnd = 1;		// блокируем запуск
299		set_dnd();		// ловца		
300	});
301
302
303	
304	$(".zakaz-bt").click(function( event ) {
305		event.preventDefault()
306		let d_text = $(this).attr('data-txt')
307		let pref_txt = "Интересуют ";
308		if( d_text.indexOf('камера')!==-1 || d_text.indexOf('омпрессор ')!==-1 || d_text.indexOf('CIP')!==-1 ) pref_txt = "Интересует ";
309		$('#txt_form_128').text("Здравствуйте. "+pref_txt+$(this).attr('data-txt')+". ");
310		myModal2.show()
311		dnd = 1;		// блокируем запуск
312		set_dnd();		// ловца
313				
314	});
315	
316	
317	
318	$(".inf-bt").click(function( event ) {
319		event.preventDefault()
320		let d_text = $(this).attr('data-txt');
321		let d_select = $(this).attr('data-select');
322		
323		$('#infModal .modal-body').html($(d_text).html());
324		$('#infModal .modal-body').removeClass( "selected" );
325		$('#infModal .modal-body').find(d_select).addClass( "selected" );
326		infModal.show()	
327	});	
328	
329	// конец форм
330	
331	
332	
333	
334	
335
336	// AJAX пагинация для ТЕГОВ ( чтобы работало, добавляем view.raw.php к имеющемуся view.html.php )
337	next_page = $('ul.pagination li.active').next('li')
338	if (!(  next_page.hasClass('d-none') || next_page.hasClass('disabled') )) {
339		$('nav').append('<div class="t-render"></div>').hide().after('<button class="ld_more btn btn-lg btn-primary my-5 headShake">Загрузить ещё</button>');
340		
341		
342		var suff="?format=raw";
343		var page='gall';		// тип страницы
344		var wrp ='.container'; // контейнер для добавления подгружаемых
345		var blk ='.row';		 // тип подгружаемого блока
346		
347		if ( $("body").is(".itemid-113") || $("body").is(".itemid-124") || $("body").is(".itemid-137") || $("body").is(".itemid-138") || $("body").is(".itemid-168") ) { // для статей
348			suff="&tmpl=component";
349			page='stati';
350			wrp='.items-row.row-1';
351			blk='.items-row';			
352			//$('div.pagination-wrap').append('<div class="t-render"></div>').hide().after('<button class="ld_more btn btn-lg">Загрузить ещё</button>');
353		}
354		
355		var ld_more = $('.ld_more');
356		$(document).on('click', 'button.ld_more', function () {
357			//console.log(next_page.find('a').attr('href') + suff);
358			$(this).blur().hide();
359			$.get(next_page.find('a').attr('href') + suff, function (responce) {	
360				var x=x1='';
361				if(page=='gall') x = $('<div>'+responce+'</div>').find('.row').html(); // берем только содержимое блока
362				if(page=='otzivi') x = $('<div>'+responce+'</div>').find('.usl_main').html();
363				//if(page=='stati')  x = $('<div>'+responce+'</div>').find(wrp).html();
364				//if(page=='stati')  x = $(responce);
365				
366				if(page=='stati')  { // для блога с ведущей статьей надо приводить её к виду остальных
367					x1 = $('<div>'+responce+'</div>');
368					x1.find('.item').removeClass('leading-0');
369					x1.find('.card-deck .card').wrap('<div class="wow zoomIn col-lg-4 p-3" />');					
370					//x = x1.find('.wow.col-lg-4').addClass('norm'); // поэтому выбираем сами блоки
371					x = x1.find('.col-cont');
372				}
373				//console.log(x)
374				//$('.footer').append(x);
375				wrp=$('.blog .items-row:last');
376				$(wrp).append(x);
377				
378				/*
379				$('.t-render').append(x);
380				$('.t-render').find('.page-subheader').remove();
381				
382				$('.t-render '+ blk).each(function() {
383					$(this).addClass('new-block').hide();
384				});
385				
386				
387				$(".pagination-wrap").hide();
388				if(page=='stati'){
389					//$(ld_more).before($('.t-render').html());
390				}
391				else $(wrp).append($('.t-render').html());
392				
393				var cnt=0;
394				$(wrp+' .new-block').each(function() {
395					cnt++;
396					$(this).removeClass('new-block').fadeIn(cnt*200);
397				});
398				$('.t-render').html('');
399				*/
400				
401				next_page = $('<div>'+responce+'</div>').find('ul.pagination li.active').next('li');
402			if ( !(next_page.hasClass('d-none') || next_page.hasClass('disabled')) ) {
403					ld_more.fadeIn();
404				}
405
406			});
407			return false;
408		});	  
409	  
410	} 
411
412
413
414// ------------  Показываем таблицу сравнения в SRMTEC
415	$('.compare').click(function(event){
416		$(this).find('i').toggleClass('fa-angle-down fa-angle-up');
417		//$(this).parent().parent().find('.tbl-comp').toggle();
418		let tbl=$(this).parent().parent().find('table');
419		tbl.parent().toggleClass('d-none');
420		let colors = tbl.attr("data-colors");
421		if(colors){
422			let palitra = tbl.attr("data-palitra").split("-");
423			let clrs = colors.split("-");
424			for (let i = 0; i < clrs.length; i++) {
425			  clrs[i] =  Number(clrs[i]);
426			}			
427			tbl.find('tr').each(function(){
428				let count=1;
429				$(this).find('td').each(function(){
430					//console.log(count);
431					//console.log(clrs[0]+clrs[1]+clrs[2]+clrs[3]);
432					let curClr = palitra[0];
433					if( count<=clrs[0]+clrs[1]+clrs[2]+clrs[3] ) curClr = palitra[3];
434					if( count<=clrs[0]+clrs[1]+clrs[2] ) curClr = palitra[2];
435					if( count<=clrs[0]+clrs[1] ) curClr = palitra[1];
436					if( count<=clrs[0] ) curClr = palitra[0];
437					$(this).addClass('td_bg'+curClr);
438					count++;					
439					
440				});
441			});
442		}
443	});	
444
445
446
447
448	
449// -------------------- 		ЛОВЕЦ ЛИДОВ		-----------------------------------------------------
450// используем fancybox3
451
452/*  ПЕРЕНЕСЕНО В БЛОК С ФОРМАМИ
453	var dnd = $.cookie('dnd'); // кука 'Не показывать ловца'
454	var lockForms=0; // индикатор бокировки всплытия форм, чтобы не срабатывали многократно
455*/
456	var maxTime = 80; // кол-во секунд до показа формы
457	//console.log('ttime='+sessionStorage.ttime)
458	var lastX = 0;
459	var lastY = 0;
460	var angle = 0, distance = 0;
461	var lastTime = new Date();
462
463
464	function set_dnd(){
465		var date = new Date();
466		date.setTime(date.getTime() + 24 * 60 * 60 * 1000)*3; // не тревожим 3 дня
467		$.cookie('dnd', 1, {
468			expires: date, path: '/'
469		});
470	}
471	
472
473	function showForm(cls){
474		lockForms=1;	// блокируем другие и следующие запуски формы
475		dnd = 1;
476		set_dnd();
477		if(cls=="top-r") $('.lovetz').removeClass('modal-dialog-centered');
478		
479		let title = (document.title).toLowerCase(); // контекстно-зависимый вопрос
480		let l_txt = "Интересует холодильное оборудование?";		
481		if( title.indexOf('техническое обслуживание')!==-1 ) l_txt = "Необходимо техническое обслуживание объекта?";
482		if( title.indexOf('заморозка')!==-1 || title.indexOf('морозильник')!==-1 ) l_txt = "Интересует оборудование для заморозки?";
483		if( title.indexOf('проектирование')!==-1 ) l_txt = "Нужен проект холодоснабжения?";
484		if( title.indexOf('испытан')!==-1 || title.indexOf('камеры холода')!==-1  || title.indexOf('климатическ')!==-1 ) l_txt = "Интересуют камеры испытаний?";
485		if( title.indexOf('склад')!==-1 || title.indexOf(' рц ')!==-1 ) l_txt = "Интересуют низкотемпературные склады?";
486		if( title.indexOf('плиточ')!==-1 ) l_txt = "Интересует плиточный скороморозильный аппарат?";
487		if( title.indexOf('льдоген')!==-1 ) l_txt = "Интересует промышленный льдогенератор?";
488		if( title.indexOf('шнек')!==-1 ) l_txt = "Интересует камера шнековой заморозки?";
489		if( title.indexOf('омпрессоры')!==-1 ) l_txt = "Интересует холодильный компрессор?";
490		
491		let userLang = navigator.language || navigator.userLanguage;
492		let lng = userLang.substring(0, 2);
493		if(lng == "ru") $('.lovetz_txt').html(l_txt); // для русского языка производим подмену фраз на динамическую, остальные получают перевод стандартной
494		
495		if($('#infModal').hasClass('show')) infModal.hide(); // закрыли информационное окно
496		Lovetz.show();
497		//baseClass:"lovez "+cls, // добавляем свой класс для кастомизации формы (top-r - кажем в углу)
498	}
499	
500
501
502	if(!dnd){
503		
504		
505		if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(navigator.userAgent)) {
506			// для мобил вызываем проверку по интервалу 
507			let timerId = setInterval(() => mobTimer(), 1000); // в 1 секунду
508			
509			function mobTimer(){	// срабатывание на мобильном устройстве
510				var now = new Date();
511				if(!sessionStorage.ttime) sessionStorage.ttime = now - lastTime;
512				sessionStorage.ttime = +sessionStorage.ttime + (now - lastTime);
513				var ttime = (+sessionStorage.ttime)/1000;
514				//console.log('ttime='+ttime);
515				lastTime = now;
516				if(!lockForms && ttime> maxTime) {
517					clearInterval(timerId);			
518					showForm('cntr');	// при достижении времени на сайте
519				}	
520			}
521			
522		} else {
523	
524			// а для ПК цепляемся к движению мыши
525			$(document).mousemove(function(event) {
526			  var now = new Date();
527			  if(!sessionStorage.ttime) sessionStorage.ttime = now - lastTime;
528			  sessionStorage.ttime = +sessionStorage.ttime + (now - lastTime);
529			  var ttime = (+sessionStorage.ttime)/1000;
530		//ttime = 50; // для тестов !!!
531			  //console.log('ttime='+ttime);
532			  if ((now - lastTime) >= 30) { // интервал срабатывания обработки перемещения курсора
533				
534				var mx = event.clientX;
535				var my = event.clientY;
536				var vx = mx - lastX;
537				var vy = -(my - lastY);
538				angle = Math.atan2(vy, vx);
539				distance = Math.sqrt(vx * vx + vy * vy);
540
541				lastX = mx;
542				lastY = my;
543				lastTime = now;
544				
545				//console.log( my +"   "+vy+"   "+ (distance.toFixed(2) + ", " + angle.toFixed(3)) );
546				if(!lockForms && my<70 && vy>40 && ttime>40) showForm('top-r'); // при движеии вверх и времени на сайте
547				if(!lockForms && ttime> maxTime ) showForm('cntr');	// при достижении времени на сайте
548				
549			  }
550			});
551		
552		}
553	
554	}
555
556
557// -------------------- 	КОНЕЦ ЛОВЦА ЛИДОВ	
558
559
560
561
562
563
564/*	
565	
566	// переключатель картинок 
567	$('.ico-panel div').click(function(event){
568		if (!$(this).hasClass('active')){
569			$(this).addClass('active').siblings().removeClass('active');
570			var pos = $(this).index();
571			$( ".pic-max div").eq(pos).fadeIn().siblings().hide();
572			//$( ".pic-max div").eq(pos).removeClass("invis").siblings().addClass("invis");
573		}
574	});
575
576
577
578	$('.unlocker').click(function(){ // раскрытие таблицы сравнения
579		var cnt = $(this).parent().parent();
580		cnt.removeClass('closed');
581		$(this).parent().fadeOut();
582		setTimeout(() => {  cnt.addClass("norma").removeClass("overflow-hidden"); }, 1600); // сбрасываем высоту контейнеру		
583	});
584	
585	//$('#astroid-header, #astroid-sticky-header').removeAttr("data-trigger"); // убираем атрибут, чтобы не срабатывал фансибокс на блоке с меню
586	//alert('2');
587	//$('.astroid-header').click(function() { return false; });
588	
589*/
590
591
592
593});

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.