PageSourceSearch

https://www.aniplast.ru/local/templates/main/js/main.js?176883531551953

js aniplast.ru collected 2026-10-08 08:34:31 UTC 51,953 bytes, 1,348 lines download raw bytes

1document.addEventListener("DOMContentLoaded", function () {
2
3    var slider2 = new Swiper('.main-slider__footer-container', {
4        slidesPerView: 4,
5        spaceBetween: 30,
6        loop: true,
7        breakpoints: {
8            320: {
9                slidesPerView: 3,
10            },
11            769: {
12                slidesPerView: 4,
13            }
14        }
15    });
16    var slider1 = new Swiper('.main-slider__container', {
17        slidesPerView: 1,
18        spaceBetween: 20,
19        loop: true,
20        effect: "fade",
21        fadeEffect: {
22            crossFade: true
23        },
24        centeredSlides: true,
25        navigation: {
26            nextEl: '.main-slider__footer-arrow-r',
27            prevEl: '.main-slider__footer-arrow-l',
28        },
29        pagination: {
30            el: '.main-slider__footer-pagination',
31            type: 'fraction',
32        },
33        thumbs: {
34            swiper: slider2,
35        },
36    });
37
38    if (document.querySelector('.main-slider__container')) {
39        // cartsSwiperT.slideNext(30, false);
40        slider1.on('slideNextTransitionStart', function () {
41            // slider2.slideNext(500, false);
42            slider2.slideToLoop(this.activeIndex-1, 500, false)
43        });
44        slider1.on('slidePrevTransitionStart', function () {
45            slider2.slidePrev(500, false);
46            // slider2.slideToLoop(this.activeIndex-1, 500, false)
47        });
48        // slider2.on('slideNextTransitionStart', function () {
49        //     // slider1.slideNext(500, false);
50        //     slider1.slideToLoop(this.activeIndex-1, 500, false)
51        // });
52        // slider2.on('slidePrevTransitionStart', function () {
53        //     slider1.slidePrev(500, false);
54        //     // slider1.slideToLoop(this.activeIndex-1, 500, false)
55        // });
56    }
57    var slider3 = new Swiper('.likely__items', {
58        slidesPerView: 4,
59        spaceBetween: 0,
60        navigation: {
61            nextEl: '.likely__arrow-r',
62            prevEl: '.likely__arrow-l',
63        },
64        autoplay: {
65            delay: 5000,
66        },
67        breakpoints: {
68            320: {
69                slidesPerView: 1,
70            },
71            769: {
72                slidesPerView: 4,
73            }
74        }
75    });
76
77    // if (document.querySelector('.main-slider__container')) {
78    //     // cartsSwiperT.slideNext(30, false); 
79    //     slider1.on('slideNextTransitionStart', function () {
80    //         slider2.slideNext(400, false);
81    //     });
82    //     slider1.on('slidePrevTransitionStart', function () {
83    //         slider2.slidePrev(400, false);
84    //     });
85    //     slider2.on('slideNextTransitionStart', function () {
86    //         slider1.slideNext(300, false);
87    //     });
88    //     slider2.on('slidePrevTransitionStart', function () {
89    //         slider1.slidePrev(300, false);
90    //     });
91    // }
92
93    var slider3 = new Swiper('.sertificat-slider__container', {
94        spaceBetween: 110,
95        loop: true,
96        speed: 1500,
97        centeredSlides: true,
98        navigation: {
99            nextEl: '.sertificat-slider__arrow-right',
100            prevEl: '.sertificat-slider__arrow-left',
101        },
102        pagination: {
103            el: '.sertificat-slider__pagination',
104            type: 'fraction',
105        },
106        breakpoints: {
107            320: {
108                slidesPerView: 2.85,
109                spaceBetween: 70
110            },
111            769: {
112                slidesPerView: 3.5,
113            },
114            1280: {
115                slidesPerView: 5
116            }
117        }
118    });
119
120
121    // var slider43 = new Swiper('.cart-slider-thumbs__container-3', {
122    //     slidesPerView: 3,
123    //     freeMode: true,
124    //     watchSlidesProgress: true,
125    //     breakpoints: {
126    //         320: {
127    //             slidesPerView: 1.85,
128    //             spaceBetween: 40
129    //         },
130    //         769: {
131    //             slidesPerView: 3,
132    //             spaceBetween: 20
133    //         }
134    //     }
135    // });
136
137    // var slider44 = new Swiper('.cart-slider__container-3', {
138    //     spaceBetween: 10,
139    //     navigation: {
140    //         nextEl: ".cart-slider__arrow-r-3",
141    //         prevEl: ".cart-slider__arrow-l-3",
142    //     },
143    //     thumbs: {
144    //         swiper: slider43,
145    //     },
146    //     pagination: {
147    //         el: '.cart-slider__pagination-3',
148    //         type: 'fraction',
149    //     }
150    // });
151
152    // var slider45 = new Swiper('.cart-slider-thumbs__container-4', {
153    //     slidesPerView: 3,
154    //     freeMode: true,
155    //     watchSlidesProgress: true,
156    //     breakpoints: {
157    //         320: {
158    //             slidesPerView: 1.85,
159    //             spaceBetween: 40
160    //         },
161    //         769: {
162    //             slidesPerView: 3,
163    //             spaceBetween: 20
164    //         }
165    //     }
166    // });
167
168    // var slider46 = new Swiper('.cart-slider__container-4', {
169    //     spaceBetween: 10,
170    //     navigation: {
171    //         nextEl: ".cart-slider__arrow-r-4",
172    //         prevEl: ".cart-slider__arrow-l-4",
173    //     },
174    //     thumbs: {
175    //         swiper: slider45,
176    //     },
177    //     pagination: {
178    //         el: '.cart-slider__pagination-4',
179    //         type: 'fraction',
180    //     }
181    // });
182
183
184    function getString(str, length) {
185
186        let result;
187        str = str.trim();
188        if (str.length > length) {
189            str = str.substr(0, length);
190            str += '...';
191        }
192        result = str;
193        return result;
194    }
195
196    // mobile-menu
197    // if (document.querySelector('.mobile-menu')) {
198    //     const mobileMenu = document.querySelector('.mobile-menu'),
199    //         menuButtonToggle = document.querySelector('.header__supheader-burger'),
200    //         body = document.querySelector('body'),
201    //         closeModal = document.querySelector('.mobile-menu__close');
202    //
203    //
204    //     menuButtonToggle.addEventListener('click', (e) => {
205    //         const target = e.target;
206    //         const menuHandler = () => {
207    //             mobileMenu.classList.toggle('hidden');
208    //             body.classList.toggle('noscroll');
209    //         };
210    //         if (target.closest('.header__supheader-burger')) {
211    //             menuHandler();
212    //         }
213    //     });
214    //
215    //     closeModal.addEventListener('click', (e) => {
216    //         mobileMenu.classList.add('hidden');
217    //         body.classList.remove('noscroll');
218    //     });
219    //
220    // }
221    let isMobile = true;
222
223    // mobile-menu
224    if (document.querySelector('.mobile-menu')) {
225        const mobileMenu = document.querySelector('.mobile-menu'),
226            menuButtonToggle = document.querySelector('.header__supheader-burger'),
227            closeButton = document.querySelector('.mobile-menu__close');
228
229        menuButtonToggle.addEventListener('click', (e) => {
230            const target = e.target;
231            const menuHandler = () => {
232                if (!isMobile) {
233                    mobileMenu.classList.add('hidden');
234                    return;
235                }
236
237                mobileMenu.classList.toggle('hidden')
238                lockBody(mobileMenu.classList.contains('hidden') ? 'remove' : 'add');
239
240
241            };
242
243            if (target.closest('.header__supheader-burger')) {
244                menuHandler();
245            }
246        });
247
248        closeButton.addEventListener('click', () => {
249            mobileMenu.classList.add('hidden');
250            lockBody('remove');
251        });
252    }
253
254    const lockBody = (action) => {
255        const body = document.querySelector('body');
256        body.classList[action]('noscroll');
257    };
258    // mobile authorized user menu
259    const selector = '.header__supheader-item.mobile';
260    const userIcon = document.querySelector(selector);
261
262    if (userIcon && isMobile) {
263        userIcon.addEventListener('click', () => {
264
265            const mobileMenu = document.querySelector('.mobile-user-menu'),
266                closeButton = mobileMenu.querySelector('.mobile-menu__close');
267
268            mobileMenu.classList.toggle('hidden');
269            userIcon.classList.toggle('--active');
270
271            lockBody('toggle');
272
273            closeButton.addEventListener('click', () => {
274                mobileMenu.classList.add('hidden');
275                lockBody('remove');
276                userIcon.classList.remove('--active');
277            });
278        });
279    }
280
281    window.addEventListener('resize', () => {
282        isMobile = window.matchMedia('(max-width: 768px)').matches;
283
284        if (!isMobile) {
285            const mobileMenu = document.querySelectorAll('.mobile-menu');
286
287            mobileMenu.forEach((menu) => menu.classList.add('hidden'));
288
289            document.querySelector(selector)?.classList.remove('--active');
290        }
291    });
292
293    //табы в общем каталоге 
294    if (document.querySelector('.catalog__tabs')) {
295        const findTabs = () => {
296            const findItem = document.querySelectorAll('.catalog__tab');
297            const activeImg = document.querySelectorAll('.catalog__tab-img-active');
298            const noActiveImg = document.querySelectorAll('.catalog__tab-img');
299            const cart = document.querySelectorAll('.catalog__item');
300
301            if (localStorage.getItem('tab') == 'view1') {
302                activeImg[0].style.display = 'block';
303                noActiveImg[0].style.display = 'none';
304            } else if (localStorage.getItem('tab') == 'view2') {
305                activeImg[1].style.display = 'block';
306                noActiveImg[1].style.display = 'none';
307                activeImg[0].style.display = 'none';
308                noActiveImg[0].style.display = 'block';
309                activeImg[2].style.display = 'none';
310                noActiveImg[2].style.display = 'block';
311                cart.forEach(item => {
312                    item.classList.add('catalog__item--medium');
313                    item.classList.remove('catalog__item--list');
314                });
315
316                let textsMedium = document.querySelectorAll('.catalog__item--medium .catalog__item-block>span');
317                textsMedium.forEach((item) => {
318                    item.textContent = getString(item.textContent, 50);
319                });
320            } else if (localStorage.getItem('tab') == 'view3') {
321                activeImg[2].style.display = 'block';
322                noActiveImg[2].style.display = 'none';
323                activeImg[0].style.display = 'none';
324                noActiveImg[0].style.display = 'block';
325                activeImg[1].style.display = 'none';
326                noActiveImg[1].style.display = 'block';
327                cart.forEach(item => {
328                    item.classList.remove('catalog__item--medium');
329                    item.classList.add('catalog__item--list');
330                });
331
332                let textsLarge = document.querySelectorAll('.catalog__item--list .catalog__item-block>span');
333                textsLarge.forEach((item) => {
334                    item.textContent = getString(item.textContent, 60);
335                });
336            } else {
337                activeImg[0].style.display = 'block';
338                noActiveImg[0].style.display = 'none';
339            }
340
341            findItem[0].addEventListener('click', (e) => {
342
343                activeImg[0].style.display = 'block';
344                noActiveImg[0].style.display = 'none';
345                activeImg[1].style.display = 'none';
346                noActiveImg[1].style.display = 'block';
347                activeImg[2].style.display = 'none';
348                noActiveImg[2].style.display = 'block';
349                cart.forEach(item => {
350                    item.classList.remove('catalog__item--medium');
351                    item.classList.remove('catalog__item--list');
352                });
353
354                let textsBig = document.querySelectorAll('.catalog__item .catalog__item-block>span');
355                textsBig.forEach((item) => {
356                    item.textContent = getString(item.textContent, 110);
357                });
358
359                localStorage.setItem('tab', 'view1');
360            });
361
362            findItem[1].addEventListener('click', (e) => {
363
364                activeImg[1].style.display = 'block';
365                noActiveImg[1].style.display = 'none';
366                activeImg[0].style.display = 'none';
367                noActiveImg[0].style.display = 'block';
368                activeImg[2].style.display = 'none';
369                noActiveImg[2].style.display = 'block';
370                cart.forEach(item => {
371                    item.classList.add('catalog__item--medium');
372                    item.classList.remove('catalog__item--list');
373                });
374
375                let textsMedium = document.querySelectorAll('.catalog__item--medium .catalog__item-block>span');
376                textsMedium.forEach((item) => {
377                    item.textContent = getString(item.textContent, 50);
378                });
379
380                localStorage.setItem('tab', 'view2');
381            });
382
383            findItem[2].addEventListener('click', (e) => {
384
385                activeImg[2].style.display = 'block';
386                noActiveImg[2].style.display = 'none';
387                activeImg[0].style.display = 'none';
388                noActiveImg[0].style.display = 'block';
389                activeImg[1].style.display = 'none';
390                noActiveImg[1].style.display = 'block';
391                cart.forEach(item => {
392                    item.classList.remove('catalog__item--medium');
393                    item.classList.add('catalog__item--list');
394                });
395
396                let textsLarge = document.querySelectorAll('.catalog__item--list .catalog__item-block>span');
397                textsLarge.forEach((item) => {
398                    item.textContent = getString(item.textContent, 60);
399                });
400
401                localStorage.setItem('tab', 'view3');
402
403            });
404        };
405        findTabs();
406    }
407
408    if (document.querySelector('.cart__tabs')) {
409        const items = document.querySelector('.cart__tabs');
410        const findItem = document.querySelectorAll('.cart__tab');
411        const cart = document.querySelectorAll('.cart__tab-content');
412
413        items.addEventListener('click', (e) => {
414            const target = e.target.closest('.cart__tab');
415            if (target) {
416                findItem.forEach((item, i) => {
417                    if (item === target) {
418                        item.classList.add('active-tab__cart');
419                        cart[i].classList.add('active');
420                    } else {
421                        item.classList.remove('active-tab__cart');
422                        cart[i].classList.remove('active');
423                    }
424                });
425            }
426        });
427    }
428    //select
429    $('.categories__select').click(function () {
430        $(this).attr('tabindex', 1).focus();
431        $(this).toggleClass('categories__active');
432        $(this).find('.categories__select-body').slideToggle(300);
433        $(this).find('.categories__select-header img').toggleClass('rotate-arrow');
434    });
435    $('.categories__select-header').focusout(function () {
436        $(this).removeClass('categories__active');
437        $(this).find('.categories__select-body').slideUp(300);
438    });
439    $('.categories__select .categories__select-body li').click(function () {
440        $(this).parents('.categories__select').addClass('active').find('span').text($(this).text());
441        $(this).parents('.categories__select').find('input').attr('value', $(this).attr('data-id'));
442    });
443    //pagination catalog
444    if (document.querySelector('.catalog__pagination-lev3')) {
445        let paginationContainer = document.querySelector('.catalog__pagination-lev3');
446        let paginationItem = document.querySelectorAll('.catalog__pagination-item');
447
448        paginationContainer.addEventListener('click', (e) => {
449            const target = e.target.closest('.catalog__pagination-item');
450            if (target) {
451                paginationItem.forEach((item) => {
452                    if (item === target) {
453                        item.classList.add('active-pagination');
454                    } else {
455                        item.classList.remove('active-pagination');
456                    }
457                });
458            }
459
460        });
461    }
462    // //tabs filter
463    /*if (document.querySelector('.filter-header')) {
464        let filterHeaders = document.querySelectorAll('.filter-header');
465        let filterHeadersActive = document.querySelectorAll('.catalog__sidebar-level1-header');
466        let filterHeadersActiveLev3 = document.querySelectorAll('.catalog__sidebar-level2-item');
467
468        let filterBodys = document.querySelectorAll('.filter-body');
469        let filterBodysLev2 = document.querySelectorAll('.catalog__sidebar-level2-body');
470
471        let filterTabContent = document.querySelectorAll('.catalog__items-content');
472        let filterTabGeneral = document.querySelector('.catalog__items-general');
473
474        let filterTab = document.querySelector('.catalog__sidebar-items');
475
476        let filterGeneralContentTab = document.querySelectorAll('.catalog__items-general > .catalog__item');
477
478        let filterTabContent2 = document.querySelectorAll('.catalog__items-level2-content');
479        let filterHeadersActive2 = document.querySelectorAll('.catalog__sidebar-level2-header');
480
481        let filterLev2Content = document.querySelectorAll('.catalog__items-content > .catalog__item');
482        let filterLev3Content = document.querySelectorAll('.catalog__items-level2-content > .catalog__item');
483
484        let filterTabContent3 = document.querySelectorAll('.catalog__items-level3-content');
485
486        let filterBreadCr = document.querySelectorAll('.breadcrumbs__link');
487
488        //let filterLev3 = document.querySelector('.catalog__body-filter');
489
490        //на любом шаге вложенности открывается содержимое
491        filterHeaders.forEach((item, i) => {
492            item.addEventListener('click', (e) => {
493                filterBodys[i].classList.toggle('active');
494            });
495        });
496
497        filterTab.addEventListener('click', (e) => {
498            //клик по начальному заголовку сайдбара, открытие 1-й вложенности
499            const target = e.target.closest('.catalog__sidebar-level1-header');
500
501            filterHeadersActive.forEach((item, i) => {
502                if (item === target) {
503                    filterTabGeneral.classList.add('hidden');
504                    item.classList.add('active-filter__level1');
505                    filterTabContent[i].classList.add('active-tab');
506                    filterTabContent3.forEach((item) => {
507                        item.classList.remove('active-tab');
508                    });
509                    filterBreadCr[2].textContent = "/" + item.textContent;
510                    filterBreadCr[1].classList.remove('breadcrumbs__link-active');
511                    filterBreadCr[2].classList.add('breadcrumbs__link-active');
512                    filterBreadCr[3].textContent = "";
513                    filterBreadCr[4].textContent = "";
514                    //filterLev3.style.display = 'none';
515                } else {
516                    item.classList.remove('active-filter__level1');
517                    filterTabContent[i].classList.remove('active-tab');
518                }
519            });
520            //клик по 1-му заголовку сайдбара, открытие 2-й вложенности
521            const targetLev2 = e.target.closest('.catalog__sidebar-level2-header');
522
523            filterHeadersActive2.forEach((item, i) => {
524                if (item === targetLev2) {
525                    filterTabContent2[i].classList.add('active-tab');
526                    filterTabContent3.forEach((item) => {
527                        item.classList.remove('active-tab');
528                    });
529                    filterBreadCr[3].textContent = "/" + item.textContent;
530                    filterBreadCr[2].classList.remove('breadcrumbs__link-active');
531                    filterBreadCr[3].classList.add('breadcrumbs__link-active');
532                    filterBreadCr[4].textContent = "";
533                    //filterLev3.style.display = 'none';
534
535                } else {
536                    filterTabContent2[i].classList.remove('active-tab');
537                }
538            });
539
540        });
541        //клик по начальным элементам, открытие 1-й вложенности
542        filterGeneralContentTab.forEach((item, i) => {
543            item.addEventListener('click', (e) => {
544                filterTabGeneral.classList.add('hidden');
545                filterTabContent[i].classList.add('active-tab');
546            });
547        });
548        //клик по 1-ым элементам, открытие 2-й вложенности
549        filterLev2Content.forEach((item, i) => {
550            item.addEventListener('click', (e) => {
551                item.closest('.catalog__items-content').classList.add('hidden');
552                filterTabContent2[i].classList.add('active-tab');
553            });
554        });
555        //клик по 2-му заголовку сайдбара, открытие 3-й вложенности с выпадашками
556        filterBodysLev2.forEach((item) => {
557            item.addEventListener('click', (e) => {
558                const target = e.target.closest('.catalog__sidebar-level2-item');
559                filterHeadersActiveLev3.forEach((item, i) => {
560                    if (item === target) {
561                        item.classList.add('active-filter__level3');
562                        filterTabContent3[i].classList.add('active-tab');
563                        filterBreadCr[4].textContent = "/" + item.textContent;
564                        filterBreadCr[3].classList.remove('breadcrumbs__link-active');
565                        filterBreadCr[4].classList.add('breadcrumbs__link-active');
566                        filterLev3.style.display = 'block';
567                    } else {
568                        item.classList.remove('active-filter__level3');
569                        filterTabContent3[i].classList.remove('active-tab');
570                    }
571                });
572            });
573        });
574
575        //клик по 2-ым элементам, открытие 3-й вложенности с выпадашками
576        filterLev3Content.forEach((item, i) => {
577            item.addEventListener('click', (e) => {
578                item.closest('.catalog__items-level2-content').classList.add('hidden');
579                filterTabContent3[i].classList.add('active-tab');
580                filterLev3.style.display = 'block';
581            });
582        });
583
584    }*/
585    //accardion
586    if (document.querySelector('.cart__specifications-mob')) {
587        let accardion = document.querySelector('.cart__specifications-mob');
588        let tab = document.querySelectorAll('.cart__specifications-question');
589        let answer = document.querySelectorAll('.cart__select-body');
590
591        accardion.addEventListener('click', (e) => {
592            const target = e.target.closest('.cart__specifications-question');
593            if (target) {
594                tab.forEach((item, i) => {
595                    if (item === target) {
596                        if (item.classList.contains('active-tab__cart')) {
597                            item.classList.remove('active-tab__cart');
598                            answer[i].classList.remove('active');
599                        } else {
600                            item.classList.add('active-tab__cart');
601                            answer[i].classList.add('active');
602                        }
603                        // tab[i].classList.add('active-accardion');
604                    } else {
605                        item.classList.remove('active-tab__cart');
606                        answer[i].classList.remove('active');
607                        // tab[i].classList.remove('active-accardion');
608                    }
609                });
610            }
611        });
612    }
613
614    if (document.querySelector('.cart__left-tabs')) {
615        const items = document.querySelector('.cart__left-tabs');
616        const findItem = document.querySelectorAll('.cart__left-tab');
617        const cart = document.querySelectorAll('.cart__left-content');
618
619        items.addEventListener('click', (e) => {
620            const target = e.target.closest('.cart__left-tab');
621            if (target) {
622                findItem.forEach((item, i) => {
623                    if (item === target) {
624                        item.classList.add('active-tab__cart');
625                        cart[i].classList.add('active');
626                    } else {
627                        item.classList.remove('active-tab__cart');
628                        cart[i].classList.remove('active');
629                    }
630                });
631            }
632        });
633    }
634
635    // пометка
636    let tabsSliders = [], tabsSlidersThumbs = [];
637
638    $(".cart-slider-thumbs__container").each(function () {
639        let el = $(this);
640        let newSlider = new Swiper(this, {
641            slidesPerView: 3,
642            watchSlidesProgress: true,
643            observer: true,
644            observeParents: true,
645            navigation: {
646                nextEl:  el.find('.cart-slider__arrow-rt')[0],
647                prevEl:  el.find('.cart-slider__arrow-lt')[0],
648            },
649            breakpoints: {
650                320: {
651                    slidesPerView: 1.85,
652                    spaceBetween: 40
653                },
654                769: {
655                    slidesPerView: 3,
656                    spaceBetween: 20
657                }
658            }
659        });
660        tabsSlidersThumbs.push(newSlider);
661    });
662
663    $(".cart-slider__container").each(function (index) {
664        let el = $(this);
665        tabsSliders.push(new Swiper(this, {
666            spaceBetween: 10,
667            observer: true,
668            observeParents: true,
669            navigation: {
670                nextEl: el.parent().find('.cart-slider__arrow-r')[0],
671                prevEl: el.parent().find('.cart-slider__arrow-l')[0],
672            },
673            thumbs: {
674                swiper: tabsSlidersThumbs[index],
675            }
676        }));
677    });
678
679    if (document.querySelector('.cart__left-tabs-spec')) {
680        let tabsLvl1 = $(".cart__left-tab"),
681            contentLvl1 = $(".cart__left-tabs-wrapper").children();
682
683        tabsLvl1.click(function () {
684            $(this).addClass("active-tab__cart").siblings().removeClass("active-tab__cart");
685            contentLvl1.eq($(this).index()).addClass("active").siblings().removeClass("active-tab__cart");
686        });
687        contentLvl1.each(function (index) {
688            let el = $(this), tabsLvl2 = el.find(".cart__left-tab-spec"),
689                contentLvl2 = el.find(".cart__left-tabs-content");
690
691            tabsLvl2.click(function () {
692                $(this).addClass("active-tab__cart").siblings().removeClass("active-tab__cart");
693                contentLvl2.eq($(this).index()).addClass("active").siblings().removeClass("active");
694            });
695        });
696
697        /*
698        const items = document.querySelector('.cart__left-tabs-spec');
699        const findItem = document.querySelectorAll('.cart__left-tab-spec');
700        const cart = document.querySelectorAll('.cart__left-tabs-content');
701        let tabsSliders = [];
702
703        items.addEventListener('click', (e) => {
704            const target = e.target.closest('.cart__left-tab-spec');
705            if (target) {
706                findItem.forEach((item, i) => {
707                    if (item === target) {
708                        item.classList.add('active-tab__cart');
709                        cart[i].classList.add('active');
710                        tabsSliders.push(new Swiper('.cart-slider-thumbs__container-2', {
711                            slidesPerView: 3,
712                            freeMode: true,
713                            watchSlidesProgress: true,
714                            breakpoints: {
715                                320: {
716                                    slidesPerView: 1.85,
717                                    spaceBetween: 40
718                                },
719                                769: {
720                                    slidesPerView: 3,
721                                    spaceBetween: 20
722                                }
723                            }
724                        }));
725
726                        tabsSliders.push(new Swiper('.cart-slider__container-2', {
727                            spaceBetween: 10,
728                            navigation: {
729                                nextEl: ".cart-slider__arrow-r-2",
730                                prevEl: ".cart-slider__arrow-l-2",
731                            },
732                            thumbs: {
733                                swiper: tabsSliders[i],
734                            },
735                            pagination: {
736                                el: '.cart-slider__pagination-2',
737                                type: 'fraction',
738                            }
739                        }));
740                    } else {
741                        item.classList.remove('active-tab__cart');
742                        cart[i].classList.remove('active');
743                    }
744                });
745            }
746        });*/
747    }
748
749    /*var slider41 = new Swiper('.cart-slider-thumbs__container', {
750        slidesPerView: 3,
751        freeMode: true,
752        watchSlidesProgress: true,
753        breakpoints: {
754            320: {
755                slidesPerView: 1.85,
756                spaceBetween: 40
757            },
758            769: {
759                slidesPerView: 3,
760                spaceBetween: 20
761            }
762        }
763    });
764
765    var slider4 = new Swiper('.cart-slider__container', {
766        spaceBetween: 10,
767        navigation: {
768            nextEl: ".cart-slider__arrow-r",
769            prevEl: ".cart-slider__arrow-l",
770        },
771        thumbs: {
772            swiper: slider41,
773        },
774        pagination: {
775            el: '.cart-slider__pagination',
776            type: 'fraction',
777        }
778    });*/
779
780    // mask
781    if ($('#telephone').length) {
782        $('#telephone').mask('+7(999) 999-99-99');
783    }
784
785    //toggle password
786    $('.toggle-password').click(function () {
787        const eye = $(this);
788        const input = eye.parent().find('#password');
789
790        if ($(input).attr('type') === 'password') {
791            $(input).attr('type', 'text');
792            $(eye).addClass('open');
793        } else {
794            $(input).attr('type', 'password');
795            $(eye).removeClass('open');
796        }
797    });
798    // Accordion
799    const items = document.querySelectorAll('.accordion__item-trigger');
800
801    if (items.length) {
802        items.forEach((item) => {
803            item.addEventListener('click', (e) => {
804                const parent = item.parentNode;
805
806                if (e.target.closest('.history__accordion-item-btn')) return
807
808                parent.classList.toggle('accordion__item-active');
809            });
810        });
811    }
812
813    //Order creation
814    let order = JSON.parse(localStorage.getItem('order')) || [];
815
816
817    const orderModuleView = () => {
818        if (order.length) {
819            displayOrderList(order);
820            changeCheckboxView(order)
821        }
822
823        function changeCheckboxView(order) {
824
825            if (order.length) {
826                order.forEach(({article}) => {
827                    const node = document.querySelector(`[data-id=${article}]`);
828                    const input = node?.querySelector('input')
829
830                    if (input) {
831                        input.checked = !input.checked
832                    }
833                })
834            }
835        }
836
837        const tableCheckboxes = document.querySelectorAll('.price__content-info-checkbox');
838
839        if (tableCheckboxes.length) {
840            tableCheckboxes.forEach((checkbox) => {
841                const input = checkbox.parentNode.querySelector('input');
842                const itemId = checkbox.closest('.price__content-info-table-row').dataset.itemId
843
844                input.addEventListener('change', () => {
845                    const isChecked = input.checked;
846
847                    const row = input.closest('.price__content-info-table-row');
848
849                    const data = {...serializeDataRow(row, 'td', 1), itemId};
850
851                    if (isChecked) {
852                        order = [...order, data];
853                        localStorage.setItem('order', JSON.stringify(order));
854
855                        displayOrderList(order);
856                        return;
857                    }
858
859                    order = order.filter(({article}) => article !== data.article);
860
861                    localStorage.setItem('order', JSON.stringify(order));
862
863                    displayOrderList(order);
864
865                });
866            });
867        }
868
869        const serializeDataRow = (node, selector, slice = 0) =>
870            Array.from(node.querySelectorAll(selector))
871                .slice(slice)
872                .reduce((acc, node, index) => {
873                    const names = ['article', 'name', 'count', 'price', 'amount', 'size'];
874
875                    acc[names[index]] = node.textContent.trim();
876
877                    return acc;
878                }, {});
879
880
881        function displayOrderList(orders) {
882            const table = document.querySelector('.order-creation__info');
883            const existText = document.querySelector('.order-creation__content .empty');
884
885            if (!orders.length) {
886                table.style.display = 'none';
887                existText.style.display = 'block';
888                return;
889            }
890
891            const orderTable = document.querySelector('.order-creation__order-table');
892
893            if (!orderTable) return;
894
895            const body = orderTable.querySelector('tbody');
896
897            body.innerHTML = orders
898                .map(({article, name, count, price, amount, size, itemId, comment}, index) => {
899                    if (index < 1) {
900                        $('.order-creation__field-body-comment').val(comment || '')
901                        // test = comment || ''
902                    }
903
904                    return `
905                <tr class="order-creation__order-table-row" data-item-id="${itemId}">
906                   <td aria-label="Артикул" data-label="Артикул" colspan="1" class="order-creation__order-table-cell">${article}</td>
907                   <td aria-label="Название" data-label="Название" colspan="2" class="order-creation__order-table-cell">
908                       ${name}
909                   </td>
910                   <td aria-label="Штук в упаковке" data-label="Штук в упаковке" colspan="1" class="order-creation__order-table-cell">${parseFloat(
911                        amount
912                    )}</td>
913                   <td data-label="Количество упаковок" colspan="1" class="order-creation__order-table-cell counter">
914                       <div>
915                           <button aria-label="Уменьшить значение товара" class="order-creation__order-table-btn decrement">
916                               <img src="/local/templates/main/img/order-creation/decrement.svg" alt="decrement" />
917                           </button>
918                           <input aria-label="Количество упаковок" type="number" max="100" maxlength="3" minlength="1" value="${count}" class="order-creation__order-table-counter">
919                           <button aria-label="Увеличить значение товара" class="order-creation__order-table-btn increment">
920                               <img src="/local/templates/main/img/order-creation/increment.svg" alt="decrement" />
921                           </button>
922                        </div>
923                   </td>
924                   <td aria-label="Объем упаковок" data-label="Объем упаковок" colspan="1" class="order-creation__order-table-cell">
925                    ${String((parseFloat(size) * count).toFixed(3)).replace('.', ',')} м³</td>
926                   <td aria-label="Сумма (без НДС)" data-label="Сумма (без НДС)" colspan="1" class="order-creation__order-table-cell">
927                        ${(parseFloat(price).toFixed(2) * count * parseFloat(amount)).toFixed(2)} руб.
928                    </td>
929                   <td colspan="1" class="order-creation__order-table-cell">
930                       <button aria-label="Удалить товар" class="order-creation__order-table-remove-btn">
931                           <img src="/local/templates/main/img/order-creation/remove-icon.svg" alt="remove" />
932                       </button>
933                   </td>
934                </tr>
935        `;
936                })
937                .join('');
938
939            table.style.display = 'flex';
940            existText.style.display = 'none';
941
942            changeOrderCount();
943            removeOrder();
944            updateOrderData();
945            cnhageCounterValue()
946        }
947
948        //Remove product from order
949        function removeOrder() {
950            const removeButtons = document.querySelectorAll('.order-creation__order-table-remove-btn');
951
952            removeButtons.forEach((button) => {
953                button.addEventListener('click', () => {
954                    const row = button.closest('.order-creation__order-table-row');
955
956                    const {article} = serializeDataRow(row, 'td');
957
958                    const cell = document.querySelector(`[data-id=${article}]`);
959                    const input = cell?.querySelector('input');
960
961                    order = order.filter((order) => article !== order.article);
962
963                    localStorage.setItem('order', JSON.stringify(order))
964
965                    displayOrderList(order);
966
967                    if (input) {
968                        input.checked = !input.checked;
969                    }
970                });
971
972                updateOrderData();
973            });
974        }
975
976        //Increment And Decrement
977        const MAX_ADDING_COUNTER_VALUE = 10000
978        const MIN_ADDING_COUNTER_VALUE = 1
979
980        function changeOrderCount() {
981            const buttons = document.querySelectorAll('.order-creation__order-table-cell.counter button');
982
983            buttons.forEach((button) => {
984                button.addEventListener('click', () => {
985                    const row = button.closest('.order-creation__order-table-row');
986
987                    const {article} = serializeDataRow(row, 'td');
988
989                    order = order.map((order) => {
990                        const currentOrderItem = order.article === article;
991
992                        if (currentOrderItem) {
993                            if (button.classList.contains('increment') && order.count < MAX_ADDING_COUNTER_VALUE) {
994                                order.count++;
995                            } else {
996                                if (button.classList.contains('decrement') && order.count > MIN_ADDING_COUNTER_VALUE) {
997                                    order.count--;
998                                }
999                            }
1000                        }
1001
1002                        return order;
1003                    });
1004
1005                    localStorage.setItem('order', JSON.stringify(order))
1006
1007                    displayOrderList(order);
1008                    updateOrderData();
1009                });
1010            });
1011        }
1012
1013        //Update Order Data
1014        function updateOrderData() {
1015            const amountNodes = document.querySelectorAll('.order-creation__order-table-cell.amount');
1016            const sizeNodes = document.querySelectorAll('.order-creation__order-table-cell.size');
1017
1018            const size = order.reduce(
1019                (acc, order) => acc + (parseFloat(order.size) * order.count),
1020                0
1021            );
1022            const amount = order.reduce((acc, order) => acc + parseFloat(order.price) * order.count * parseFloat(order.amount), 0);
1023
1024            amountNodes.forEach((node) => {
1025                node.textContent = `${amount.toFixed(2)} руб.`;
1026            });
1027
1028            sizeNodes.forEach((node) => {
1029                node.textContent = `${String(size.toFixed(3)).replace('.', ',')} м³`;
1030            });
1031        }
1032
1033        function cnhageCounterValue() {
1034            const counters = document.querySelectorAll('.order-creation__order-table-counter')
1035
1036            counters.forEach((counter) => {
1037                const row = counter.closest('tr').children[0]
1038                const {article} = order.find((order) => order.article === row.textContent)
1039
1040                counter.addEventListener('change', (event) => {
1041                    const value = event.target.value;
1042                    const isBigger = value > MAX_ADDING_COUNTER_VALUE || value < MIN_ADDING_COUNTER_VALUE
1043
1044                    const data = order.map((order) => {
1045                        if (order.article === article.trim()) {
1046                            order.count = isBigger ? 1 : value
1047                        }
1048
1049                        return order
1050                    })
1051
1052                    localStorage.setItem('order', JSON.stringify(data))
1053                    updateOrderData()
1054                    displayOrderList(data)
1055                })
1056            })
1057        }
1058    }
1059
1060    // const node = document.querySelector('.price__content')?.children[1];
1061    const node = document.querySelector('.price__content');
1062
1063    const observer = new MutationObserver(function () {
1064        orderModuleView()
1065    })
1066
1067    if (node) {
1068        observer.observe(node, {childList: true, subtree: true});
1069    }
1070
1071    orderModuleView()
1072    const serializeDataRow = (node, selector, slice = 0) =>
1073        Array.from(node.querySelectorAll(selector))
1074            .slice(slice)
1075            .reduce((acc, node, index) => {
1076                const names = ['article', 'name', 'count', 'price', 'amount', 'size'];
1077
1078                acc[names[index]] = node.textContent.trim();
1079
1080                return acc;
1081            }, {});
1082
1083    //Repeat order
1084    const repeatButtons = document.querySelectorAll('.history__accordion-item-btn');
1085
1086    if (repeatButtons.length) {
1087        repeatButtons.forEach((button) => {
1088            button.addEventListener('click', (e) => {
1089
1090                const parent = button.closest('.history__accordion-item');
1091                const rows = parent.querySelectorAll('.history__content-table-row');
1092                const itemIds = Array.from(parent.querySelectorAll('.history__content-table-row'), ((item) => item.dataset.itemId))
1093                const comment = $(button).parent().parent().find('.history__content-comment').html();
1094
1095                let data = [];
1096
1097                rows.forEach((row, index) => {
1098
1099                    const dataRow = serializeDataRow(row, 'td');
1100                    const amount = parseInt(row.querySelector('.hidden').textContent)
1101
1102                    const serializeData = {
1103                        amount: parseInt(amount),
1104                        article: dataRow.article,
1105                        count: parseInt(dataRow.count),
1106                        name: dataRow.name,
1107                        price: dataRow.size,
1108                        size: dataRow.amount.replace(',', '.'),
1109                        itemId: itemIds[index],
1110                        comment: comment.trim() || ''
1111                    };
1112                    data = [...data, serializeData];
1113                });
1114
1115                localStorage.setItem('order', JSON.stringify(data));
1116
1117                history.pushState(null, null, '/sozdat-zakaz/')
1118                window.location.reload()
1119            });
1120        });
1121    }
1122
1123    // add query params to history page
1124    // const url = new URL(window.location.href)
1125    // const page = url.searchParams.get('PAGEN_1')
1126    //
1127    // if (url.search !== '?filter_history=Y' && window.location.pathname === '/istoriya-zakazov/' && !page) {
1128    //     history.pushState(null, null, "?filter_history=Y");
1129    //     window.location.href = url.href + '?filter_history=Y'
1130    //
1131    //     observer.disconnect()
1132    // }
1133
1134    $('.send_order-btn').click(function (event) {
1135        event.preventDefault();
1136
1137        var arrKeys = [];
1138
1139        $('.order-creation__info').find('.order-creation__order-table-row').each(function () {
1140            if ($(this).data('item-id') != undefined) {
1141                var id = $(this).data('item-id');
1142                var count = +$(this).find('.order-creation__order-table-counter').val();
1143                var articul = $(this).find('.order-creation__order-table-cell').eq(0).text();
1144                var countIn = $(this).find('.order-creation__order-table-cell').eq(2).text();
1145                var comment = $(document).find('textarea[name="comment"]').val().toString();
1146                arrKeys.push([encodeURIComponent(id), encodeURIComponent(count), encodeURIComponent(articul), encodeURIComponent(countIn), encodeURIComponent(comment)]);
1147            }
1148        });
1149
1150        const orderButton = $('.send_order-btn')
1151
1152        $.ajax({
1153            type: 'POST',
1154            url: '/ajax/order.php',
1155            data: {
1156                arrKeys: arrKeys
1157            },
1158            success: function (data) {
1159                if (data === 'success') {
1160                    // appendTable();
1161                    removeOrder();
1162                    showModalSuccessText();
1163                    $('#order-creation').css('display', 'none');
1164                    window.scrollTo({
1165                        top: 0,
1166                        left: 0,
1167                        behavior: "smooth",
1168                    });
1169                }
1170
1171                if (data === 'error') {
1172                    $('#order-creation').css('display', 'none');
1173                    showModalErrorText()
1174                }
1175                console.log(data);
1176                orderButton.removeAttr('disabled')
1177            },
1178            error: function (data) {
1179                console.log(data);
1180                console.log(false);
1181                orderButton.removeAttr('disabled')
1182                showModalErrorText()
1183            },
1184            beforeSend: () => {
1185                orderButton.attr('disabled', 'true')
1186            }
1187        })
1188    });
1189
1190    const title = document.querySelector('.modal__title')
1191    const title_status = document.querySelector('.status-modal_title')
1192    const body = document.querySelector('#order-creation').querySelector('.modal__body');
1193
1194    $('.order-creation__order-btn').click(function () {
1195        appendTable();
1196
1197        const value = $('.order-creation__field-body-comment').val().replaceAll('<br>', '\n');
1198        const parsedHTML = $.parseHTML(value)
1199        $('.order-creation__field-input').val(value.replace('Комментарий отсутствовал', ''));
1200
1201        // removeOrder()
1202        window.scrollTo({
1203            top: 0,
1204            left: 0,
1205            behavior: "smooth",
1206        });
1207    });
1208    
1209    function appendTable() {
1210        const table = document.querySelector('.order-creation__order-table').cloneNode(true);
1211        $(table).find('.order-creation__order-table-counter').addClass('disabled')
1212        $(table).find('.order-creation__order-table-cell.counter input').css('textAlign', 'start')
1213
1214        body.appendChild(table);
1215        $('.modal__wrapper').first().css('display', 'flex');
1216        $('body').addClass('noscroll')
1217    }
1218
1219    // function removeTable() {
1220    //     body.textContent = '';
1221    //     $('body').removeClass('noscroll')
1222    // }
1223    function removeTable() {
1224        $(body).find('table').remove()
1225        $('body').removeClass('noscroll')
1226    }
1227    function showModalErrorText() {
1228        // body.textContent = '';
1229        title_status.textContent = 'К сожалению, при создании заказа произошла ошибка, свяжитесь с менеджером.'
1230
1231        $('#order-status').first().css('display', 'flex');
1232    }
1233
1234    function showModalSuccessText() {
1235        // body.textContent = '';
1236        title_status.textContent = 'Заказ успешно отправлен.'
1237
1238        $('#order-status').first().css('display', 'flex');
1239    }
1240
1241    function removeOrder() {
1242        const table = document.querySelector('.order-creation__info');
1243        const existText = document.querySelector('.order-creation__content .empty');
1244
1245        if (order.length) {
1246            changeCheckboxView(order)
1247        }
1248
1249        function changeCheckboxView(order) {
1250            order.forEach(({article}) => {
1251                const node = document.querySelector(`[data-id=${article}]`);
1252                const input = node?.querySelector('input')
1253
1254                if (input) {
1255                    input.checked = !input.checked
1256                }
1257            })
1258        }
1259
1260        table.style.display = 'none';
1261        existText.style.display = 'block';
1262
1263        localStorage.removeItem('order')
1264        order = []
1265    }
1266
1267    const close = document.querySelectorAll('.modal__close')
1268    const modal = document.querySelectorAll('.modal__wrapper')
1269
1270    close.forEach((button, index) => {
1271        button.addEventListener('click', () => {
1272            modal[index].style.display = 'none';
1273            body.classList.remove('locked');
1274
1275            removeTable();
1276        });
1277    })
1278
1279    modal.forEach((element, index) => {
1280        element.addEventListener('click', (e) => {
1281            if (e.target === modal[index]) {
1282                element.style.display = 'none';
1283                body.classList.remove('locked');
1284
1285                removeTable();
1286            }
1287        });
1288    })
1289
1290    // Open/Close order list
1291    function bindModal(trigger, modal, close) {
1292        trigger = document.querySelector(trigger),
1293            modal = document.querySelector(modal),
1294            close = document.querySelector(close)
1295
1296        const body = document.body
1297        const bodyTable = document.querySelector('#fully-order').querySelector('.modal__body');
1298
1299        trigger.addEventListener('click', e => {
1300            e.preventDefault()
1301            modal.style.display = 'flex'
1302            body.classList.add('noscroll')
1303
1304            const table = document.querySelector('.order-creation__order-table').cloneNode(true);
1305
1306            bodyTable.appendChild(table);
1307            $('.modal__table-wrapper').css('display', 'flex');
1308            $('.order-creation__order-table tfoot').addClass('fully-tfoot')
1309            $('#fully-order .order-creation__order-table').addClass('fully-table')
1310        });
1311        close.addEventListener('click', () => {
1312            modal.style.display = 'none'
1313            body.classList.remove('noscroll')
1314
1315            $('.order-creation__order-table').removeClass('fully-table')
1316            $('.order-creation__order-table tfoot').removeClass('fully-tfoot')
1317            bodyTable.textContent = '';
1318        });
1319        modal.addEventListener('click', e => {
1320            if (e.target === modal) {
1321                modal.style.display = 'none'
1322                body.classList.remove('noscroll')
1323
1324                $('.order-creation__order-table').removeClass('fully-table')
1325                $('.order-creation__order-table tfoot').removeClass('fully-tfoot')
1326                bodyTable.textContent = '';
1327            }
1328        })
1329    }
1330
1331    const openOrder = document.querySelector('#open-order');
1332
1333    if (openOrder) {
1334        bindModal('#open-order', '#fully-order', '#close-fully-order')
1335    }
1336});
1337
1338/* правки по мобильному меню */
1339document.addEventListener('DOMContentLoaded', function () {
1340    const toggles = document.querySelectorAll('.js-submenu-toggle');
1341
1342    toggles.forEach(function (toggle) {
1343        toggle.addEventListener('click', function () {
1344            const parent = this.closest('.mobile-menu__item');
1345            parent.classList.toggle('open');
1346        });
1347    });
1348});

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.