PageSourceSearch

https://xn--b1afangnhhpfjehh.xn--p1ai/local/templates/main_catalog/plugins/main.js

js xn--b1afangnhhpfjehh.xn--p1ai collected 2026-09-30 03:09:47 UTC 21,067 bytes, 832 lines download raw bytes

1document.addEventListener('DOMContentLoaded', function () {
2  const edd = easydropdown('.select-city', {
3    behavior: {
4      liveUpdates: true,
5      useNativeUiOnMobile: false
6    }
7  });
8});
9
10// Кнопка показать еще 
11document.addEventListener('DOMContentLoaded', function () {
12  let moreBtn = document.querySelectorAll('#more-btn');
13  moreBtn.forEach((elem) => {
14    elem.addEventListener('click', () => {
15      elem.parentNode.querySelector('.content').classList.toggle('hidden')
16    })
17  })
18});
19
20// Мобильное меню  
21document.addEventListener('DOMContentLoaded', function () {
22  let drawer = function () {
23    if (!Element.prototype.closest) {
24      if (!Element.prototype.matches) {
25        Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
26      }
27      Element.prototype.closest = function (s) {
28        let el = this;
29        let ancestor = this;
30        if (!document.documentElement.contains(el)) return null;
31        do {
32          if (ancestor.matches(s)) return ancestor;
33          ancestor = ancestor.parentElement;
34        } while (ancestor !== null);
35        return null;
36      };
37    }
38    //
39    // Настройки
40    //
41    let settings = {
42      speedOpen: 50,
43      speedClose: 350,
44      activeClass: 'is-active',
45      visibleClass: 'is-visible',
46      selectorTarget: '[data-drawer-target]',
47      selectorTrigger: '[data-drawer-trigger]',
48      selectorClose: '[data-drawer-close]',
49
50    };
51
52
53    //
54    // Methods
55    //
56
57    // Toggle accessibility
58    let toggleAccessibility = function (event) {
59      if (event.getAttribute('aria-expanded') === 'true') {
60        event.setAttribute('aria-expanded', false);
61      } else {
62        event.setAttribute('aria-expanded', true);
63      }
64    };
65
66    // Open Drawer
67    let openDrawer = function (trigger) {
68
69      // Find target
70      let target = document.getElementById(trigger.getAttribute('aria-controls'));
71
72      // Make it active
73      target.classList.add(settings.activeClass);
74
75      // Make body overflow hidden so it's not scrollable
76      document.documentElement.style.overflow = 'hidden';
77
78      // Toggle accessibility
79      toggleAccessibility(trigger);
80
81      // Make it visible
82      setTimeout(function () {
83        target.classList.add(settings.visibleClass);
84      }, settings.speedOpen);
85
86    };
87
88    // Close Drawer
89    let closeDrawer = function (event) {
90
91      // Find target
92      let closestParent = event.closest(settings.selectorTarget),
93        childrenTrigger = document.querySelector('[aria-controls="' + closestParent.id + '"');
94
95      // Make it not visible
96      closestParent.classList.remove(settings.visibleClass);
97
98      // Remove body overflow hidden
99      document.documentElement.style.overflow = '';
100
101      // Toggle accessibility
102      toggleAccessibility(childrenTrigger);
103
104      // Make it not active
105      setTimeout(function () {
106        closestParent.classList.remove(settings.activeClass);
107      }, settings.speedClose);
108
109    };
110
111    // Click Handler
112    let clickHandler = function (event) {
113
114      // Find elements
115      let toggle = event.target,
116        open = toggle.closest(settings.selectorTrigger),
117        close = toggle.closest(settings.selectorClose);
118
119      // Open drawer when the open button is clicked
120      if (open) {
121        openDrawer(open);
122      }
123
124      // Close drawer when the close button (or overlay area) is clicked
125      if (close) {
126        closeDrawer(close);
127      }
128
129      // Prevent default link behavior
130      if (open || close) {
131        event.preventDefault();
132      }
133
134    };
135
136    // Keydown Handler, handle Escape button
137    let keydownHandler = function (event) {
138
139      if (event.key === 'Escape' || event.keyCode === 27) {
140
141        // Find all possible drawers
142        let drawers = document.querySelectorAll(settings.selectorTarget),
143          i;
144
145        // Find active drawers and close them when escape is clicked
146        for (i = 0; i < drawers.length; ++i) {
147          if (drawers[i].classList.contains(settings.activeClass)) {
148            closeDrawer(drawers[i]);
149          }
150        }
151
152      }
153
154    };
155
156
157    //
158    // Inits & Event Listeners
159    //
160    document.addEventListener('click', clickHandler, false);
161    document.addEventListener('keydown', keydownHandler, false);
162
163
164  };
165
166  drawer();
167
168});
169
170
171
172
173
174// Главный слайдер
175document.addEventListener('DOMContentLoaded', function () {
176  let swiperMain = new Swiper(".swiper-main", {
177    slidesPerView: 1,
178    speed: 1000,
179    autoplay: {
180      delay: 5000,
181    },
182    navigation: {
183      nextEl: ".next0",
184      prevEl: ".prev0",
185    },
186
187  });
188});
189///
190
191// Перелюключения вида карточек товара
192$(document).ready(function () {
193  $('#list').click(function (event) {
194    event.preventDefault();
195    $('.list').addClass('active');
196    $('.grid').removeClass('active');
197    $('#products .item').addClass('list-group-item');
198    $('#products .item').removeClass('grid-group-item');
199
200  });
201  $('#grid').click(function (event) {
202    event.preventDefault();
203    $('.grid').addClass('active');
204    $('.list').removeClass('active');
205    $('#products .item').removeClass('list-group-item');
206    $('#products .item').addClass('grid-group-item');
207
208  });
209});
210
211// Слайдер блог
212document.addEventListener('DOMContentLoaded', function () {
213  let swiperBlog = new Swiper(".swiper-blog", {
214    lazy: true,
215    observer: true,
216    observeParents: true,
217    pagination: {
218      el: '.swiper-pagination',
219      clickable: true,
220    },
221
222    breakpoints: {
223      0: {
224        slidesPerView: 1,
225        spaceBetween: 20,
226      },
227      575: {
228        slidesPerView: 2,
229        spaceBetween: 20,
230      },
231      991: {
232        slidesPerView: 3,
233        spaceBetween: 20,
234      }
235    }
236  });
237});
238
239
240// Слайдер о нас
241document.addEventListener('DOMContentLoaded', function () {
242  let swiperAbout = new Swiper(".swiper-about", {
243    navigation: {
244      nextEl: '.selectornx5',
245      prevEl: '.selectorpr5',
246    },
247
248  });
249});
250
251// Слайдер история
252$(document).ready(function () {
253  let history_list = new Swiper('.history_list', {
254    speed: 500,
255    effect: 'fade',
256
257    breakpoints: {
258      639: {
259        autoHeight: true
260      }
261    }
262  });
263
264  let history_years = new Swiper('.history_years', {
265    slidesPerView: 'auto',
266    speed: 500,
267    autoplay: {
268      delay: 5000,
269      disableOnInteraction: false,
270    },
271    slideToClickedSlide: true
272  });
273
274  history_years.on('slideChange', function () {
275    let slideNumber = history_years.activeIndex;
276    history_list.slideTo(slideNumber);
277  });
278  history_list.on('slideChange', function () {
279    let slideNumber = history_list.activeIndex;
280    history_years.slideTo(slideNumber);
281    $(".history_years .swiper-wrapper .swiper-slide").removeClass("swiper-slide-active");
282    $(".history_years .swiper-wrapper").find(".swiper-slide").eq(slideNumber).addClass("swiper-slide-active");
283  });
284
285  $(".history_years .history_year").click(function () {
286    let slideNumber = history_years.clickedIndex;
287    history_list.slideTo(slideNumber);
288    history_years.slideTo(slideNumber);
289    $(".history_years .history_year").closest(".swiper-slide").removeClass("swiper-slide-active");
290    $(this).closest(".swiper-slide").addClass("swiper-slide-active");
291  });
292
293});
294
295
296
297// Слайдер наша команда
298jQuery(document).ready(function ($) {
299
300  $('.persons-slider .ps-persons-photo').on('click', function () {
301    var ce = $(this).closest('.ps-persons-photo-wrap').eq(0);
302    if (!ce.hasClass('ps-active')) {
303      var slider = $(this).closest('.persons-slider').eq(0);
304      var n = ce.data('n');
305      slider.data('cn', n);
306      slider.find('.ps-persons-photo-wrap.ps-active, .ps-persons-name-wrap.ps-active, .ps-slides-item.ps-active').removeClass('ps-active');
307      slider.find('.ps-persons-photo-wrap[data-n=' + n + '], .ps-persons-name-wrap[data-n=' + n + '], .ps-slides-item[data-n=' + n + ']').addClass('ps-active');
308    }
309  });
310
311  $('.persons-slider .ps-persons-name-wrap').on('click', function () {
312    var ce = $(this);
313    if (!ce.hasClass('ps-active')) {
314      var slider = $(this).closest('.persons-slider').eq(0);
315      var n = ce.data('n');
316      slider.data('cn', n);
317      slider.find('.ps-persons-photo-wrap.ps-active, .ps-persons-name-wrap.ps-active, .ps-slides-item.ps-active').removeClass('ps-active');
318      slider.find('.ps-persons-photo-wrap[data-n=' + n + '], .ps-persons-name-wrap[data-n=' + n + '], .ps-slides-item[data-n=' + n + ']').addClass('ps-active');
319    }
320  });
321
322  $('.persons-slider .ps-button.ps-prev').on('click', function (e) {
323    e.preventDefault();
324    var slider = $(this).closest('.persons-slider').eq(0);
325    var cn = slider.data('cn') - 1;
326    var ic = slider.find('.ps-slides-item').length;
327    if (cn < 0) cn = ic - 1;
328    slider.data('cn', cn);
329    slider.find('.ps-persons-photo-wrap.ps-active, .ps-persons-name-wrap.ps-active, .ps-slides-item.ps-active').removeClass('ps-active');
330    slider.find('.ps-persons-photo-wrap[data-n=' + cn + '], .ps-persons-name-wrap[data-n=' + cn + '], .ps-slides-item[data-n=' + cn + ']').addClass('ps-active');
331    return false;
332  });
333
334  $('.persons-slider .ps-button.ps-next').on('click', function (e) {
335    e.preventDefault();
336    var slider = $(this).closest('.persons-slider').eq(0);
337    var cn = slider.data('cn') + 1;
338    var ic = slider.find('.ps-slides-item').length;
339    if (cn > ic - 1) cn = 0;
340    slider.data('cn', cn);
341    slider.find('.ps-persons-photo-wrap.ps-active, .ps-persons-name-wrap.ps-active, .ps-slides-item.ps-active').removeClass('ps-active');
342    slider.find('.ps-persons-photo-wrap[data-n=' + cn + '], .ps-persons-name-wrap[data-n=' + cn + '], .ps-slides-item[data-n=' + cn + ']').addClass('ps-active');
343    return false;
344  });
345});
346
347
348
349
350// Верхний слайдер, на определенном разрешение отключается
351
352document.addEventListener('DOMContentLoaded', function () {
353
354  'use strict';
355  const breakpoint = window.matchMedia('(max-width:991px)');
356
357  // keep track of swiper instances to destroy later
358  let mySwiper;
359
360  const breakpointChecker = function () {
361
362    // if larger viewport and multi-row layout needed
363    if (breakpoint.matches === true) {
364
365      // clean up old instances and inline styles when available
366      if (mySwiper !== undefined) mySwiper.destroy(true, true);
367
368      // or/and do nothing
369      return;
370
371      // else if a small viewport and single column layout needed
372    } else if (breakpoint.matches === false) {
373
374      // fire small viewport version of swiper
375      return enableSwiper();
376
377    }
378
379  };
380
381
382
383  const enableSwiper = function () {
384    mySwiper = new Swiper('.swiper-filter', {
385      slidesPerView: 6,
386      spaceBetween: 30,
387      simulateTouch: false,
388      watchOverflow: true,
389      scrollbar: {
390        el: '.swiper-scrollbar',
391        hide: false,
392        draggable: true,
393        snapOnRelease: true
394      },
395      breakpoints: {
396        0: {
397          slidesPerView: 1,
398        },
399        375: {
400          slidesPerView: 2,
401        },
402        768: {
403          slidesPerView: 3,
404        },
405        991: {
406          slidesPerView: 4,
407        },
408        1200: {
409          slidesPerView: 5,
410        },
411        1400: {
412          slidesPerView: 6,
413        },
414
415      },
416
417    });
418
419  };
420
421
422  // keep an eye on viewport size changes
423  breakpoint.addListener(breakpointChecker);
424
425  // kickstart
426  breakpointChecker();
427
428
429});
430
431
432
433
434// Слайдер карточка товара
435document.addEventListener('DOMContentLoaded', function () {
436  let swiperCard = new Swiper(".swiper-card", {
437    slidesPerView: 1,
438    spaceBetween: 10,
439    observer: true,
440    observeParents: true,
441    navigation: {
442      nextEl: ".next1",
443      prevEl: ".prev1",
444    },
445  });
446
447});
448
449
450// Слайдер популярные товары
451document.addEventListener('DOMContentLoaded', function () {
452  let swiperProduct = new Swiper(".product-popular", {
453    slidesPerView: 4,
454    spaceBetween: 23,
455    observer: true,
456    observeParents: true,
457    pagination: {
458      el: '.swiper-pagination-pop',
459      clickable: true,
460    },
461    breakpoints: {
462      0: {
463        slidesPerView: 1,
464        spaceBetween: 0,
465      },
466      575: {
467        slidesPerView: 2,
468        spaceBetween: 23,
469      },
470      991: {
471        slidesPerView: 4,
472        spaceBetween: 23,
473      }
474    }
475  });
476});
477
478// Слайдер новые товары
479document.addEventListener('DOMContentLoaded', function () {
480  let swiperProductNew = new Swiper(".product-new", {
481    slidesPerView: 4,
482    spaceBetween: 23,
483    observer: true,
484    observeParents: true,
485    pagination: {
486      el: '.swiper-pagination-new',
487      clickable: true,
488    },
489    navigation: {
490      nextEl: '.selectornx4',
491      prevEl: '.selectorpr4'
492    },
493    breakpoints: {
494      0: {
495        slidesPerView: 1,
496        spaceBetween: 0,
497      },
498      575: {
499        slidesPerView: 2,
500        spaceBetween: 23,
501      },
502      991: {
503        slidesPerView: 4,
504        spaceBetween: 23,
505      }
506    }
507  });
508});
509
510// Слайдер хиты товары
511document.addEventListener('DOMContentLoaded', function () {
512  let swiperProductHit = new Swiper(".product-hit", {
513    slidesPerView: 4,
514    spaceBetween: 23,
515    observer: true,
516    observeParents: true,
517    pagination: {
518      el: '.swiper-pagination-hit',
519      clickable: true,
520    },
521    navigation: {
522      nextEl: '.selectornx5',
523      prevEl: '.selectorpr5'
524    },
525    breakpoints: {
526      0: {
527        slidesPerView: 1,
528        spaceBetween: 0,
529      },
530      575: {
531        slidesPerView: 2,
532        spaceBetween: 23,
533      },
534      991: {
535        slidesPerView: 4,
536        spaceBetween: 23,
537      }
538    }
539  });
540});
541
542
543// Слайдер новости
544document.addEventListener('DOMContentLoaded', function () {
545  let swiperNews = new Swiper(".swiper-news", {
546    spaceBetween: 23,
547    navigation: {
548      nextEl: '.selectornx3',
549      prevEl: '.selectorpr3'
550    },
551    breakpoints: {
552      0: {
553        slidesPerView: 1,
554        spaceBetween: 20,
555      },
556      575: {
557        slidesPerView: 2,
558        spaceBetween: 20,
559      },
560      991: {
561        slidesPerView: 3,
562        spaceBetween: 20,
563      },
564      1200: {
565        slidesPerView: 4,
566        spaceBetween: 20,
567      }
568    }
569  });
570});
571
572
573
574// Слайдер наша продукция
575document.addEventListener('DOMContentLoaded', function () {
576  let swiperProduction = new Swiper(".swiper-production", {
577    slidesPerView: 'auto',
578    loop: true,
579    centeredSlides: true,
580
581    navigation: {
582      nextEl: '.selectornx6',
583      prevEl: '.selectorpr6'
584    },
585
586    breakpoints: {
587      0: {
588        slidesPerView: 1,
589      },
590      575: {
591        slidesPerView: 'auto',
592      },
593
594    }
595
596  });
597});
598
599// leaflet map
600$(function () {
601  if (typeof (map) != 'undefined' && map != null) {
602    let map = L.map('map', {
603      zoomControl: false
604    }
604).setView([55.711287, 37.583367], 15);
605    var myIcon = L.icon({
606      iconUrl: '/local/templates/main_catalog/img/geo-alt-fill.svg',
607      iconSize: [40, 40],
608    });
609    L.control
610      .zoom({
611        position: "topright",
612      })
613      .addTo(map);
614    L.tileLayer('https://tile.jawg.io/jawg-light/{z}/{x}/{y}.png?access-token=w0annfrLSg3VjANfqPzuWGICCiGBxSvKnGraWVweNt25XfhT05bDAoS2ja6i1UXV', {
615      subdomains: ['mt0', 'mt1', 'mt2', 'mt3'],
616      maxZoom: 25,
617    }).addTo(map);
618    L.marker([55.711287, 37.583367], {
619      icon: myIcon
620    }).addTo(map)
621  }
622});
623
624
625
626
627
628//  swiper slider
629document.addEventListener('DOMContentLoaded', function () {
630  let swiperProjects = new Swiper(".projects", {
631    observer: true,
632    observeParents: true,
633    navigation: {
634      nextEl: ".next3",
635      prevEl: ".prev3",
636    },
637    autoplay: {
638      delay: 5000,
639      disableOnInteraction: false,
640    },
641    breakpoints: {
642      0: {
643        slidesPerView: "auto",
644        spaceBetween: 20
645      },
646      575: {
647        slidesPerView: 2,
648        spaceBetween: 30
649      },
650      768: {
651        slidesPerView: 2,
652        spaceBetween: 40
653      },
654      991: {
655        slidesPerView: 3,
656        spaceBetween: 50
657      },
658      1200: {
659        slidesPerView: 3,
660        spaceBetween: 80
661      }
662    }
663  });
664
665
666
667});
668
669
670
671
672
673/*каталог в отдельном файле*/
674
675document.addEventListener('DOMContentLoaded', function () {
676  lightGallery(document.getElementById('aniimated-thumbnials'), {
677    thumbnail: true
678  });
679});
680
681
682/*Уведомление об использовании куки*/
683
684document.addEventListener('DOMContentLoaded', function () {
685  $('.use_cookies-close').click(function () {
686    ucf();
687  });
688
689  function ucf() {
690    $('.use_cookies-wrap').removeClass('show');
691    var expires;
692    var date = new Date();
693    date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000));
694    expires = "expires = " + date.toGMTString();
695    document.cookie = "sk_ucf = Y; " + expires + "; path=/";
696  }
697});
698
699
700/**/
701
702function showRequest(formData, jqForm, options) {
703  var fields = new Array();
704  return true;
705}
706
707function showResponse(responseText, statusText) {
708
709  $("#formRequest input[type='text']").val('');
710  $("#formRequest textarea").val('');
711  $("#formRequest input[type='checkbox']").removeAttr("checked");
712  $('#modalFeedback').modal('hide');
713  $('#modal_feedback').modal('show');
714  /*document.getElementById('orderFormResponse').innerHTML = responseText;*/
715
716  return false;
717}
718
719function showResponseZakaz(responseText, statusText) {
720
721  $("#formRequest input[type='text']").val('');
722  $("#formRequest textarea").val('');
723  $("#formRequest input[type='checkbox']").removeAttr("checked");
724  $('#modal_feedback').modal('show');
725  /*document.getElementById('orderFormResponse').innerHTML = responseText;*/
726
727  return false;
728}
729
730function showResponseBasket(responseText, statusText) {
731
732  window.location.replace('/basket/?paction=send');
733
734  return false;
735}
736
737
738
739function showError(statusText) {
740  alert("Ошибка соединения: " + statusText);
741  return false;
742}
743
744$(function () {
745  $(".mask-date").mask('99.99.9999');
746  $(".mask-phone").mask('+7 (999) 999-99-99');
747  $(".mask-inn").mask('9999999999');
748  $(".mask-ufns").mask('9999');
749});
750
751
752// обработка в корзину
753
754
755jQuery(document).ready(function ($) {
756  $('.addbasket').click(function () {
757    $('#addbasketModal').modal('show');
758    var tname = $(this).attr('data-name');
759    var tid = $(this).attr('data-id');
760    $('#addBasketTovar').text('"' + tname + '"');
761
762
763    $.ajax({
764      url: '/local/templates/main_catalog/parts/handler-basket.php',
765      type: 'POST',
766      data: {
767        action: 'add',
768        tid: tid
769      },
770      cache: false,
771      dataType: 'html',
772      success: function (data) {
773        $('.fixed-basket-subtitle').html(data);
774      },
775      error: function (jqXHR, status, errorThrown) {
776        console.log('ОШИБКА AJAX запроса: ' + status, jqXHR);
777      }
778    });
779
780
781
782
783  });
784
785  $('#addBasketClose').click(function () {
786    $('#addbasketModal').modal('hide');
787  });
788
789});
790
791
792document.addEventListener('DOMContentLoaded', function () {
793  'use strict'
794  var forms = document.querySelectorAll('.needs-validation')
795  Array.prototype.slice.call(forms)
796    .forEach(function (form) {
797      form.addEventListener('submit', function (event) {
798        if (!form.checkValidity()) {
799          event.preventDefault()
800          event.stopPropagation()
801        }
802
803        form.classList.add('was-validated')
804      }, false)
805    })
806
807
808});
809
810$('.feedback-left').click(function(){
811  $('.feedback-left__form').addClass("active");
812});
813
814$('.feedback-left__form-close').click(function(){
815$('.feedback-left__form').removeClass("active");
816});
817
818
819$(document).ready(function() {
820  $(".bx-filter-input-container input").keydown(function(event) {
821      if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || 
822          (event.keyCode == 65 && event.ctrlKey === true) || 
823          (event.keyCode >= 35 && event.keyCode <= 39)) {
824               return;
825      }
826      else {
827          if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
828              event.preventDefault(); 
829          }   
830      }
831  });
832});

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.