PageSourceSearch

https://baltkz.ru/assets/templates/new/js/common.js?v=20260731

js baltkz.ru collected 2026-10-07 22:29:23 UTC 27,575 bytes, 1,034 lines download raw bytes

1"use strict";
2function MyRound10(val) {
3	return Math.round(val / 10) * 10;
4}
5const JSCCommon = {
6
7	btnToggleMenuMobile: [].slice.call(document.querySelectorAll(".toggle-menu-mobile--js")),
8	menuMobile: document.querySelector(".menu-mobile--js"),
9	menuMobileLink: [].slice.call(document.querySelectorAll(".menu-mobile--js ul li a")),
10
11	modalCall() {
12		const link = ".link-modal-js";
13
14		Fancybox.bind(link, {
15			arrows: false,
16			infobar: false,
17			touch: false,
18			infinite: false,
19			dragToClose: false,
20			type: 'inline',
21			autoFocus: false,
22			l10n: {
23				Escape: "Закрыть",
24				NEXT: "Вперед",
25				PREV: "Назад",
26			},
27		});
28		document.querySelectorAll(".modal-close-js").forEach(el => {
29			el.addEventListener("click", () => {
30				Fancybox.close();
31			})
32		})
33		Fancybox.bind('[data-fancybox]', {
34			placeFocusBack: false,
35		});
36
37		const linkModal = document.querySelectorAll(link);
38		function addData() {
39			linkModal.forEach(element => {
40				element.addEventListener('click', () => {
41					let modal = document.querySelector(element.getAttribute("href"));
42					const data = element.dataset;
43
44					function setValue(val, elem) {
45						if (elem && val) {
46							const el = modal.querySelector(elem)
47							el.tagName == "INPUT"
48								? el.value = val
49								: el.innerHTML = val;
50							// console.log(modal.querySelector(elem).tagName)
51						}
52					}
53					setValue(data.title, '.ttu');
54					setValue(data.text, '.after-headline');
55					setValue(data.btn, '.btn');
56					setValue(data.order, '.order');
57				})
58			})
59		}
60		if (linkModal) addData();
61	},
62	// /modalCall
63	toggleMenu() {
64		const toggle = this.btnToggleMenuMobile;
65		const menu = this.menuMobile;
66		document.addEventListener("click", function (event) {
67			const toggleEv = event.target.closest(".toggle-menu-mobile--js");
68			if (!toggleEv) return;
69			toggle.forEach(el => el.classList.toggle("on"));
70			menu.classList.toggle("active");
71			[document.body, document.querySelector('html')].forEach(el => el.classList.toggle("fixed"));
72		}, { passive: true });
73	},
74	closeMenu() {
75		let menu = this.menuMobile;
76		if (!menu) return;
77		if (menu.classList.contains("active")) {
78			this.btnToggleMenuMobile.forEach(element => element.classList.remove("on"));
79			this.menuMobile.classList.remove("active");
80			[document.body, document.querySelector('html')].forEach(el => el.classList.remove("fixed"));
81		}
82
83	},
84	mobileMenu() {
85		if (!this.menuMobileLink) return;
86		this.toggleMenu();
87		document.addEventListener('mouseup', (event) => {
88			let container = event.target.closest(".menu-mobile--js.active"); // (1)
89			let link = event.target.closest(".menu-mobile .menu a"); // (1)
90			let toggle = event.target.closest('.toggle-menu-mobile--js.on'); // (1)
91			if (!container && !toggle) this.closeMenu();
92		}, { passive: true });
93
94		window.addEventListener('resize', () => {
95			if (window.matchMedia("(min-width: 992px)").matches) this.closeMenu();
96		}, { passive: true });
97	},
98	// /mobileMenu
99
100	// tabs  .
101	tabscostume(tab) {
102		// const tabs = document.querySelectorAll(tab);
103		// const indexOf = element => Array.from(element.parentNode.children).indexOf(element);
104		// tabs.forEach(element => {
105		// 	let tabs = element;
106		// 	const tabsCaption = tabs.querySelector(".tabs__caption");
107		// 	const tabsBtn = tabsCaption.querySelectorAll(".tabs__btn");
108		// 	const tabsWrap = tabs.querySelector(".tabs__wrap");
109		// 	const tabsContent = tabsWrap.querySelectorAll(".tabs__content");
110		// 	const random = Math.trunc(Math.random() * 1000);
111		// 	tabsBtn.forEach((el, index) => {
112		// 		const data = `tab-content-${random}-${index}`;
113		// 		el.dataset.tabBtn = data;
114		// 		const content = tabsContent[index];
115		// 		content.dataset.tabContent = data;
116		// 		if (!content.dataset.tabContent == data) return;
117
118		// 		const active = content.classList.contains('active') ? 'active' : '';
119		// 		// console.log(el.innerHTML);
120		// 		content.insertAdjacentHTML("beforebegin", `<div class="tabs__btn-accordion  btn btn-primary  mb-1 ${active}" data-tab-btn="${data}">${el.innerHTML}</div>`)
121		// 	})
122
123
124		// 	tabs.addEventListener('click', function (element) {
125		// 		const btn = element.target.closest(`[data-tab-btn]:not(.active)`);
126		// 		if (!btn) return;
127		// 		const data = btn.dataset.tabBtn;
128		// 		const tabsAllBtn = this.querySelectorAll(`[data-tab-btn`);
129		// 		const content = this.querySelectorAll(`[data-tab-content]`);
130		// 		tabsAllBtn.forEach(element => {
131		// 			element.dataset.tabBtn == data
132		// 				? element.classList.add('active')
133		// 				: element.classList.remove('active')
134		// 		});
135		// 		content.forEach(element => {
136		// 			element.dataset.tabContent == data
137		// 				? (element.classList.add('active'), element.previousSibling.classList.add('active'))
138		// 				: element.classList.remove('active')
139		// 		});
140		// 	})
141		// })
142
143		$('.' + tab + '__caption').on('click', '.' + tab + '__btn:not(.active)', function (e) {
144			$(this)
145				.addClass('active').siblings().removeClass('active')
146				.closest('.' + tab).find('.' + tab + '__content').hide().removeClass('active')
147				.eq($(this).index()).fadeIn().addClass('active');
148
149		});
150
151	},
152	// /tabs
153
154	inputMask() {
155		// mask for input
156		let InputTel = [].slice.call(document.querySelectorAll('input[type="tel"]'));
157		InputTel.forEach(element => element.setAttribute("pattern", "[+][0-9]{1}[(][0-9]{3}[)][0-9]{3}-[0-9]{2}-[0-9]{2}"));
158
159		let InputEmail = [].slice.call(document.querySelectorAll('input[type="email"]'));
160		InputEmail.forEach(element => element.setAttribute("pattern", "[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$"));
161
162		Inputmask("email").mask(InputEmail);
163		Inputmask("+7(999)999-99-99").mask(InputTel);
164
165
166	},
167	// /inputMask
168	ifie() {
169		var isIE11 = !!window.MSInputMethodContext && !!document.documentMode;
170		if (isIE11) {
171			document.body.insertAdjacentHTML("beforeend", '<div class="browsehappy">	<p class=" container">К сожалению, вы используете устаревший браузер. Пожалуйста, <a href="http://browsehappy.com/" target="_blank">обновите ваш браузер</a>, чтобы улучшить производительность, качество отображаемого материала и повысить безопасность.</p></div>');
172		}
173	},
174	heightwindow() {
175		// First we get the viewport height and we multiple it by 1% to get a value for a vh unit
176		let vh = window.innerHeight * 0.01;
177		// Then we set the value in the --vh custom property to the root of the document
178		document.documentElement.style.setProperty('--vh', `${vh}px`);
179
180		// We listen to the resize event
181		window.addEventListener('resize', () => {
182			// We execute the same script as before
183			let vh = window.innerHeight * 0.01;
184			document.documentElement.style.setProperty('--vh', `${vh}px`);
185		}, { passive: true });
186	},
187	animateScroll() {
188		$(document).on('click', " .menu li a, .scroll-link", function () {
189			const elementClick = $(this).attr("href");
190			if (!document.querySelector(elementClick)) {
191				$(this).attr("href", '/' + elementClick)
192			}
193			else {
194				let destination = $(elementClick).offset().top;
195				$('html, body').animate({ scrollTop: destination - 80 }, 0);
196				return false;
197			}
198		});
199	},
200	getCurrentYear(el) {
201		let now = new Date();
202		let currentYear = document.querySelector(el);
203		if (currentYear) currentYear.innerText = now.getFullYear();
204	},
205	toggleShow(toggle, drop) {
206
207		let catalogDrop = drop;
208		let catalogToggle = toggle;
209
210		$(document).on('click', catalogToggle, function () {
211			$(this).toggleClass('active').next().fadeToggle('fast', function () {
212				$(this).toggleClass("active")
213			});
214		})
215
216		document.addEventListener('mouseup', (event) => {
217			let container = event.target.closest(catalogDrop + ".active"); // (1)
218			let link = event.target.closest(catalogToggle); // (1)
219			if (!container || !catalogToggle) {
220				$(catalogDrop).removeClass('active').fadeOut();
221				$(catalogToggle).removeClass('active');
222			};
223		}, { passive: true });
224	},
225	makeDDGroup() {
226		let parents = document.querySelectorAll('.dd-group-js');
227		for (let parent of parents) {
228			if (parent) {
229				// childHeads, kind of funny))
230				let ChildHeads = parent.querySelectorAll('.dd-head-js:not(.disabled)');
231				$(ChildHeads).click(function () {
232					let clickedHead = this;
233
234					$(ChildHeads).each(function () {
235						if (this === clickedHead) {
236							//parent element gain toggle class, style head change via parent
237							$(this.parentElement).toggleClass('active')
238								.find('.dd-content-js').slideToggle(function () {
239									$(this).toggleClass('active');
240								});
241						}
242						// else {
243						// 	$(this.parentElement).removeClass('active');
244						// 	$(this.parentElement).find('.dd-content-js').slideUp(function () {
245						// 		$(this).removeClass('active');
246						// 	});
247						// }
248					});
249
250				});
251			}
252		}
253	},
254
255	customRange() {
256
257		$(".qwiz-range").ionRangeSlider({
258			skin: "round",
259			grid: false,
260			grid_snap: false,
261			hide_min_max: true,
262			// hide_from_to: true,
263			max_postfix: "+",
264			postfix: " мм",   // fix 31.07.2026: слайдер .qwiz-range = ТОЛЩИНА камня (мм), не площадь
265			// min: 0,
266			// max: 100,
267			// step: 5,
268		});
269		$(".range-wrap").each(function () {
270			var _this = $(this);
271
272			var $range = _this.find(".slider-js");
273
274			var $inputFrom = _this.find(".input_from");
275
276			var $inputTo = _this.find(".input_to");
277
278			var instance,
279				step = 10,
280				from,
281				to,
282				min = $range.data('min'),
283				max = $range.data('max');
284			$range.ionRangeSlider({
285				skin: "round",
286				type: "double",
287				grid: false,
288				grid_snap: false,
289				hide_min_max: true,
290				hide_from_to: true,
291				onStart: updateInputs,
292				onChange: updateInputs,
293				onFinish: updateInputs
294			});
295			instance = $range.data("ionRangeSlider");
296
297			function updateInputs(data) {
298				from = data.from;
299				to = data.to;
300				$inputFrom.prop("value", from);
301				$inputTo.prop("value", to); // InputFormat();
302			}
303
304			$inputFrom.on("change input ", function () {
305				var val = +$(this).prop("value").replace(/\s/g, ''); // validate
306
307				if (val < min) {
308					val = min;
309				} else if (val > to) {
310					val = to;
311				}
312
313				instance.update({
314					from: val
315				});
316				$(this).prop("value", MyRound10(val));
317				console.log(val);
318			});
319			$inputTo.on("change input ", function () {
320				var val = +$(this).prop("value").replace(/\s/g, ''); // validate
321
322				if (val < from) {
323					val = from;
324				} else if (val > max) {
325					val = max;
326				}
327
328				instance.update({
329					to: val
330				});
331				$(this).prop("value", currencyFormat(MyRound10(val)));
332			});
333		});
334	}
335};
336const $ = jQuery;
337
338function eventHandler() {
339	// JSCCommon.ifie();
340	JSCCommon.modalCall();
341	JSCCommon.tabscostume('tabs');
342	JSCCommon.mobileMenu();
343	JSCCommon.inputMask();
344	JSCCommon.heightwindow();
345	JSCCommon.customRange();
346	JSCCommon.makeDDGroup();
347	// JSCCommon.toggleShow(".catalog-block__toggle--desctop", '.catalog-block__dropdown');
348	// JSCCommon.animateScroll();
349
350	// JSCCommon.CustomInputFile(); 
351	var x = window.location.host;
352	let screenName;
353	screenName = document.body.dataset.bg;
354	if (screenName && x.includes("localhost:30")) {
355		document.body.insertAdjacentHTML("beforeend", `<div class="pixel-perfect" style="background-image: url(screen/${screenName});"></div>`);
356	}
357
358
359	function setFixedNav() {
360		let topNav = document.querySelector('.top-nav  ');
361		if (!topNav) return;
362		window.scrollY > 0
363			? topNav.classList.add('fixed')
364			: topNav.classList.remove('fixed');
365	}
366
367	function whenResize() {
368		setFixedNav();
369	}
370
371	window.addEventListener('scroll', () => {
372		setFixedNav();
373
374	}, { passive: true })
375	window.addEventListener('resize', () => {
376		whenResize();
377	}, { passive: true });
378
379	whenResize();
380
381	// $('.topLine__choose-city-btn').click(function(){
382	// 	$(this).toggleClass('active');
383	// 	$(this).next().toggleClass('show');
384	// });
385	// $('.catalog-toggle').click(function(){
386	// 	$(this).toggleClass('active');
387	// });
388	// $('.topLine__top-nav-btn').click(function(){
389	// 	$('body').toggleClass('fixed');
390	// 	$('.top-nav').toggleClass('mob-menu');
391	// }); //до утра
392	// $('.top-nav__catalog-close').click(function(){
393	// 	$('body').toggleClass('fixed');
394	// 	$('.top-nav').toggleClass('mob-menu');
395	// }); //до утра
396
397	$('.sCatalog__show-more').click(function () {
398		$('.sCatalog__caption').toggleClass('sCatalog__caption--active');
399	});
400	$('.topLine__input').focus(function () {
401		$('.topLine__input-btn').toggleClass('topLine__input-btn--active');
402	});
403	$('.topLine__input').blur(function () {
404		$('.topLine__input-btn').toggleClass('topLine__input-btn--active');
405	});
406	$('.list-title--js').click(function () {
407		$(this).toggleClass('active');
408		$(this).next().slideToggle();
409	});
410	let defaultSl = {
411		spaceBetween: 0,
412		lazy: {
413			loadPrevNext: true,
414		},
415		watchOverflow: true,
416		spaceBetween: 0,
417		loop: true,
418		navigation: {
419			nextEl: '.swiper-button-next',
420			prevEl: '.swiper-button-prev',
421		},
422		pagination: {
423			el: ' .swiper-pagination',
424			type: 'bullets',
425			clickable: true,
426			// renderBullet: function (index, className) {
427			// 	return '<span class="' + className + '">' + (index + 1) + '</span>';
428			// }
429		},
430	}
431	var SliderThumbs = new Swiper(".sOneProduct__slider-thumbs--js", {
432		spaceBetween: 10,
433		direction: "vertical",
434		slidesPerView: 5,
435		watchOverflow: true,
436		// freeMode: true,
437		watchSlidesVisibility: true,
438		watchSlidesProgress: true,
439		lazy: {
440			loadPrevNext: true,
441		},
442	});
443	var sOneProductSlider = new Swiper(".sOneProduct__slider--js", {
444		spaceBetween: 10,
445		slidesPerView: 1,
446		direction: "vertical",
447		watchOverflow: true,
448		touchReleaseOnEdges: true,
449		lazy: {
450			loadPrevNext: true,
451		},
452		thumbs: {
453			swiper: SliderThumbs,
454			watchOverflow: true,
455		}
456	});
457	var deposits = new Swiper(".sDeposits__slider--js ", {
458		slidesPerView: 'auto',
459		spaceBetween: 42,
460		breakpoints: {
461			992: {
462				slidesPerView: 5
463			},
464		},
465	});
466	var projectsSlider = new Swiper(".sProject__slider--js  ", {
467		slidesPerView: 1,
468		loop: false,
469		allowTouchMove: false,
470		autoplay: {
471			delay: 2000,
472		},
473		navigation: {
474			nextEl: ".sProject__page-link--next",
475			prevEl: ".sProject__page-link--prev",
476		},
477		on: {
478			init(swiper) {
479
480				let next = $(".sProject__slider--js .swiper-slide-next").data("title");
481				let prev = $(".sProject__slider--js .swiper-slide-prev").data("title");
482
483				$(".sProject__page-link--next .page-link-caption").html(next)
484				$(".sProject__page-link--prev .page-link-caption").html(prev)
485				this.el.addEventListener('mouseenter', () => {
486					this.autoplay.stop();
487				});
488
489				this.el.addEventListener('mouseleave', () => {
490					this.autoplay.start();
491				});
492			},
493			slideChangeTransitionEnd() {
494				let next = $(".sProject__slider--js .swiper-slide-next").data("title");
495				let prev = $(".sProject__slider--js .swiper-slide-prev").data("title");
496
497				$(".sProject__page-link--next .page-link-caption").html(next)
498				$(".sProject__page-link--prev .page-link-caption").html(prev)
499			},
500		},
501	});
502	var projectPicSlider = new Swiper(".sProject__slider-pic--js  ", {
503		slidesPerView: '1',
504		loop: true,
505		spaceBetween: 0,
506		navigation: {
507			nextEl: ".swiper-button-next",
508			prevEl: ".swiper-button-prev",
509		},
510		pagination: {
511			el: ".swiper-pagination",
512			clickable: true,
513		},
514	});
515	var oneDepositSlider = new Swiper(".sOneDeposit__slider--js", {
516		slidesPerView: '1',
517		loop: true,
518		spaceBetween: 0,
519		autoplay: {
520			delay: 2000,
521		},
522		navigation: {
523			nextEl: ".swiper-button-next",
524			prevEl: ".swiper-button-prev",
525		},
526		pagination: {
527			el: ".swiper-pagination",
528			clickable: true,
529		},
530		on: {
531			init() {
532				this.el.addEventListener('mouseenter', () => {
533					this.autoplay.stop();
534				});
535
536				this.el.addEventListener('mouseleave', () => {
537					this.autoplay.start();
538				});
539			}
540		},
541	});
542	var sDeliverySlider = new Swiper(".sDeliveryMethods__slider--js  ", {
543		slidesPerView: 'auto',
544		// loop: true,
545		spaceBetween: 24,
546		pagination: {
547			el: ".swiper-pagination",
548			clickable: true,
549		},
550		navigation: {
551			nextEl: ".sDeliveryMethods .swiper-button-next",
552			prevEl: ".sDeliveryMethods .swiper-button-prev",
553		},
554	});
555	var sCertificatesSlider = new Swiper(".sCertificates__slider--js  ", {
556		slidesPerView: 'auto',
557		// loop: true,
558		spaceBetween: 24,
559		pagination: {
560			el: ".swiper-pagination",
561			clickable: true,
562		},
563		navigation: {
564			nextEl: ".sCertificates .swiper-button-next",
565			prevEl: ".sCertificates .swiper-button-prev",
566		},
567	});
568	var reviews = new Swiper(".sReviews__slider--js", {
569		slidesPerView: 1,
570		loop: true,
571		autoplay: {
572			delay: 2000,
573		},
574		navigation: {
575			nextEl: ".swiper-button-next",
576			prevEl: ".swiper-button-prev",
577		},
578
579		on: {
580			init() {
581				this.el.addEventListener('mouseenter', () => {
582					this.autoplay.stop();
583				});
584
585				this.el.addEventListener('mouseleave', () => {
586					this.autoplay.start();
587				});
588			}
589		},
590	});
591	var reviewsSlider = new Swiper(".sReviewsSlider__slider--js", {
592		slidesPerView: 'auto',
593		navigation: {
594			nextEl: ".swiper-button-next",
595			prevEl: ".swiper-button-prev",
596		},
597		pagination: {
598			el: ".swiper-pagination",
599			clickable: true,
600		},
601		breakpoints: {
602			576: {
603				slidesPerView: 1
604			},
605		},
606	});
607	var sAboutCompanySlider = new Swiper(".sAboutCompany__slider--js", {
608		slidesPerView: 'auto',
609		spaceBetween: 24,
610		loop: true,
611		autoplay: {
612			delay: 2000,
613		},
614		navigation: {
615			nextEl: ".sAboutCompany .swiper-button-next",
616			prevEl: ".sAboutCompany .swiper-button-prev",
617		},
618		pagination: {
619			el: ".swiper-pagination",
620			clickable: true,
621		},
622		// breakpoints: {
623		// 	576: {
624		// 		slidesPerView: 1
625		// 	},
626		// },
627	});
628	var reviewsNoteSlider = new Swiper(".sReviewsNoteSlider__slider--js", {
629		slidesPerView: 'auto',
630		navigation: {
631			nextEl: ".swiper-button-next",
632			prevEl: ".swiper-button-prev",
633		},
634		breakpoints: {
635			576: {
636				slidesPerView: 1
637			},
638		},
639	});
640	var offers = new Swiper(".sOffers__slider--js", {
641		slidesPerView: 'auto',
642		spaceBetween: 15,
643		pagination: {
644			el: ".swiper-pagination",
645			clickable: true,
646		},
647		autoplay: {
648			delay: 5000,
649			reverseDirection: true,
650			pauseOnMouseEnter: true,
651		},
652		breakpoints: {
653			1200: {
654				slidesPerView: 4
655			},
656			992: {
657				slidesPerView: 3
658			},
659			600: {
660				slidesPerView: 2
661			},
662			300: {
663				slidesPerView: 1
664			},
665		},
666		navigation: {
667			nextEl: ".swiper-button-next",
668			prevEl: ".swiper-button-prev",
669		},
670	});
671
672	var offers = new Swiper(".sRecently__slider--js", {
673		slidesPerView: 'auto',
674		spaceBetween: 15,
675		autoplay: {
676			delay: 5000,
677			reverseDirection: true,
678			pauseOnMouseEnter: true,
679		},
680		breakpoints: {
681			1200: {
682				slidesPerView: 4
683			},
684			992: {
685				slidesPerView: 3
686			},
687			600: {
688				slidesPerView: 2
689			},
690			300: {
691				slidesPerView: 1
692			},
693		},
694		navigation: {
695			nextEl: ".swiper-button-next",
696			prevEl: ".swiper-button-prev",
697		},
698	});
699
700	var sSignificantObjects = new Swiper(".sSignificantObjects__slider--js", {
701		slidesPerView: 'auto',
702		spaceBetween: 24,
703		pagination: {
704			el: ".sSignificantObjects .swiper-pagination",
705			clickable: true,
706		},
707		breakpoints: {
708			768: {
709				spaceBetween: 35,
710				slidesPerView: 2
711			},
712			1200: {
713				spaceBetween: 50,
714				slidesPerView: 2
715			}
716		},
717		navigation: {
718			nextEl: ".sSignificantObjects .swiper-button-next",
719			prevEl: ".sSignificantObjects .swiper-button-prev",
720		},
721	});
722
723	var productionSlider = new Swiper(".sProduction__slider--js", {
724		slidesPerView: 'auto',
725		spaceBetween: 10,
726		// loop: true,
727		navigation: {
728			nextEl: ".sProduction__slider-block .swiper-button-next",
729			prevEl: ".sProduction__slider-block .swiper-button-prev",
730		},
731		breakpoints: {
732			992: {
733				slidesPerView: 2,
734				spaceBetween: 30,
735			},
736			576: {
737				spaceBetween: 20,
738			}
739		}
740
741	});
742	const swiper4 = new Swiper('.sBanners__slider--js', {
743		// slidesPerView: 5,
744		// ...defaultSl,
745		slidesPerView: 'auto',
746		freeMode: true,
747		slideToClickedSlide: true,
748
749	});
750	// modal window
751	const swiper5 = new Swiper('.place-slider--js', {
752		// slidesPerView: 5,
753		// ...defaultSl,
754		slidesPerView: 'auto',
755		freeMode: true,
756		loop: false,
757		navigation: {
758			nextEl: ".place-slider-wrap .swiper-button-next",
759			prevEl: ".place-slider-wrap .swiper-button-prev",
760		},
761	});
762	const swiperbreadcrumb = new Swiper('.breadcrumb-wrap .swiper', {
763		// slidesPerView: 5,
764		// ...defaultSl,
765		watchOverflow: true,
766		slidesPerView: 'auto',
767		freeMode: true,
768		loop: false,
769	});
770
771
772
773	$(".sQwiz__body .radio-block ").click(function () {
774		if ($(this).find('input').is(':checked')) {
775			$(this).parents(".sQwiz__step").find(".sCalc__btn--next.d-none").removeClass("d-none")
776		}
777
778	})
779
780	$(".sCalc__btn--next, .sQwiz__body .radio-block").click(function () {
781		$(this).parents(".sQwiz__step").hide().removeClass('active').next().fadeIn(function () {
782			$(this).addClass('active');
783		})
784	})
785	$(".sCalc__btn--prev").click(function () {
786		$(this).parents(".sQwiz__step").hide().removeClass('active').prev().fadeIn(function () {
787			$(this).addClass('active');
788		})
789	})
790
791
792	$(".toggle-search-js").click(function () {
793		$(this).toggleClass("active");
794		$(".topLine__input-wrap").slideToggle().find("input").focus();
795	})
796
797	$(".toggle-filter--js").click(function () {
798		$(".sidebar__filter").toggleClass("active")
799		$("body").toggleClass("fixed")
800	})
801	$(".sidebar__head span").click(function () {
802		$(".sidebar__filter").removeClass("active")
803		$("body").removeClass("fixed")
804	})
805
806	// Скрываем фильтр при клике на "Показать"
807	$('#btn_result').click(function () {
808		$(".sidebar__head span").click();
809	})
810
811	//if (document.querySelector(".prod-right-block")) {
812
813	//var Sticky = new hcSticky('.prod-right-block', {
814	//stickTo: '.sOneProduct__wrap'
815	//});
816	//}
817
818
819
820};
821if (document.readyState !== 'loading') {
822	eventHandler();
823} else {
824	document.addEventListener('DOMContentLoaded', eventHandler);
825}
826
827$(document).ready(function () {
828	$('input').keydown(function (e) {
829		if (e.keyCode === 13) {
830			console.log($('.qwiz-range').val())
831
832			$('.active .sCalc__btn--next').click()
833		}
834	});
835
836});
837
838// window.onload = function () {
839// 	document.body.classList.add('loaded_hiding');
840// 	window.setTimeout(function () {
841// 		document.body.classList.add('loaded');
842// 		document.body.classList.remove('loaded_hiding');
843// 	}, 500);
844// }
845// Прокрутка наверх страницы
846$(window).on('scroll', function () {
847	if ($(this).scrollTop() > 100) {
848		$('.button-up').addClass('scroll');
849	} else {
850		$('.button-up').removeClass('scroll');
851	}
852});
853$('.button-up').click(function () {
854	$('body,html').animate({
855		scrollTop: 0
856	}, 500);
857	return false;
858});
859$(document).ready(function () {
860
861	$("#get_t").on("click", function () {
862
863		var get_id = $(this).attr("data-item");
864		var target = $("." + get_id).offset().top;
865
866		$("html, body").animate({ scrollTop: target }, 400);
867
868	});
869});
870
871
872// Фиксирование блока консультанта
873$(document).ready(function () {
874	let lastScrollTop = 0;
875	$(window).scroll(function () {
876		let sidebar = $('.sidebar');
877		let consultant = $('.sidebar .consultant-block');
878		let orderLast = $('.order-last');
879		if (consultant.length > 0) {
880			let posScrol1 = sidebar.offset().top + sidebar.height() - consultant.height() - 100;
881			let posScrol2 = sidebar.offset().top + sidebar.height();
882			let posScrol3 = orderLast.offset().top + orderLast.height() - consultant.height() - 215;
883			let st = $(this).scrollTop();
884			if (sidebar.height() < $('#sProducts').height()) {
885				/* fix 30.07.2026: см. комментарий ниже — состояние по позиции, без направления */
886				if (st < posScrol1) {
887					consultant.removeClass('fixed');
888					consultant.removeClass('fixed2');
889				}
890				else if (st >= posScrol3) {
891					consultant.removeClass('fixed');
892					consultant.addClass('fixed2');
893				}
894				else {
895					consultant.removeClass('fixed2');
896					consultant.addClass('fixed');
897				}
898			}
899			lastScrollTop = st;
900		}
901
902	});
903});
904// Фиксирование шапки
905$(window).on('scroll', function () {
906	if ($(this).scrollTop() > $('.header').height()) {
907		$('.topLine-fixed').fadeIn();
908		if (window.matchMedia('(max-width: 991px)').matches) {
909			$('.stock-fixed').addClass('mobile');
910		}
911	} else {
912		$('.topLine-fixed').fadeOut();
913		if (window.matchMedia('(max-width: 991px)').matches) {
914			$('.stock-fixed').removeClass('mobile');
915		}
916	}
917});
918/*
919var st = $('#sel_t').val();
920
921let arr = st.split(','); 
922
923$('.prc').text(arr[1])
924$('.item_price').text(arr[1])
925$('.h_tolhina').text(arr[0])
926$('.add-product').attr('data-id', arr[2]); 
927*/
928$("#sel_t").change(function () {
929	var st = $('#sel_t').val();
930
931	let arr = st.split(',');
932
933	$('.prc').text(arr[1])
934	$('.item_price').text(arr[1])
935	$('.h_tolhina').text(arr[0])
936	$('.add-product').attr('data-id', arr[2]);
937});
938
939
940$('.btn-thickness').click(function () {
941	if ($(this).hasClass('inactive')) return;
942	$('#p-thickness > span').text($(this).text());
943	$('.btn-thickness.inactive').removeClass('inactive');
944	$(this).addClass('inactive');
945	var thickness = $(this).data('thickness');
946	var id = $(this).data('id');
947	var price = $(this).data('price');
948	$('.prc').text(price);
949	$('#sel_t').val(thickness + ',' + price + ',' + id);
950});
951// Фиксирование правого блока в карточке товара
952$(document).ready(function () {
953	let lastScrollTop = 0;
954	$(window).scroll(function () {
955		let sOneProductWrap = $('.sOneProduct__wrap');
956		let prodRightBlock = $('.sOneProduct__wrap .prod-right-block');
957		if (prodRightBlock.length > 0 && window.matchMedia("(min-width: 992px)").matches) {
958			let posScrol1 = sOneProductWrap.offset().top + prodRightBlock.height();
959			let posScrol2 = sOneProductWrap.offset().top + sOneProductWrap.height() - prodRightBlock.height() - 65;
960			let posScrol3 = sOneProductWrap.offset().top - 65;
961			let st = $(this).scrollTop();
962			if (sOneProductWrap.height() > prodRightBlock.height()) {
963
964				/* fix 30.07.2026: состояние считается ТОЛЬКО по позиции скролла, без учёта
965				   направления (st > lastScrollTop) — иначе при скролле вверх классы не снимались
966				   и правый блок «залипал» внизу. */
967				if (st < posScrol3) {
968					prodRightBlock.removeClass('fixed');
969					prodRightBlock.removeClass('fixed2');
970				}
971				else if (st >= posScrol2) {
972					prodRightBlock.removeClass('fixed');
973					prodRightBlock.addClass('fixed2');
974				}
975				else {
976					prodRightBlock.removeClass('fixed2');
977					prodRightBlock.addClass('fixed');
978				}
979			}
980			lastScrollTop = st;
981		}
982
983	});
984});
985
986
987
988document.addEventListener('DOMContentLoaded', () => {
989	try {
990		const place = document.querySelectorAll('.place-slider__title')
991
992		place.forEach(place => {
993			const trimingPlace = place.textContent.trim()
994			place.textContent = trimingPlace
995			if (place.textContent == 'Дымовский') {
996				place.textContent = 'Дымовское'
997			} else {
998				console.log('No found')
999			}
1000		})
1001	} catch (error) {
1002		console.log(error)
1003	}
1004})
1005
1006
1007try {
1008	const preVideo = document.querySelector('#pre-video')
1009
1010	setTimeout(() => {
1011		preVideo.insertAdjacentHTML('afterend', `
1012	
1013<video id="main-video" loop="" muted="" autoplay="" poster="assets/templates/new/img/@2x/webp/header-block.webp"  class="picture-bg" style="object-fit: cover;z-index: -3;">
1014
1015<source src="/assets/templates/video/video-bg-3.mp4" type="video/mp4">
1016				<source src="/assets/templates/video/video-bg-3.webm" type="video/webm">
1017
1018</video>
1019	
1020	`)
1021	}, 5000)
1022} catch (error) {
1023	console.log(erroe)
1024}
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034

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.