PageSourceSearch

https://vectorzaboty.ru/static/js/main.js?74

js vectorzaboty.ru collected 2026-10-06 16:31:37 UTC 36,879 bytes, 1,058 lines download raw bytes

vendor: 88 bytes, lines 1-4
1/******/ (() => { // webpackBootstrap
2/******/ 	var __webpack_modules__ = ({
3
4/***/ "./s
4ource/js/helpers/Form.js":
5/*!***********************************!*\
6  !*** ./source/js/helpers/Form.js ***!
7  \***********************************/
8/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9
10"use strict";
11__webpack_require__.r(__webpack_exports__);
12/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
14/* harmony export */ });
15function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
16
17function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
18
19function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
20
21var Form = /*#__PURE__*/function () {
22  function Form(obj) {
23    _classCallCheck(this, Form);
24
25    this.form = obj;
26  }
27
28  _createClass(Form, [{
29    key: "getValues",
30    value: function getValues() {
31      if (!this.values) {
32        this.values = {};
33        var self = this;
34        this.form.find('[name]').each(function () {
35          self.values[$(this).attr('name')] = $(this).val();
36        });
37      }
38
39      return this.values;
40    }
41  }, {
42    key: "isValid",
43    value: function isValid() {
44      this.hideErrors();
45      this.errors = {}; // Проверка на required
46
47      for (var i = 0; i < this.form.find('[required]').length; i++) {
48        var elem = this.form.find('[required]').eq(i);
49
50        if (elem.val() == '' || $(elem).attr('type') === 'checkbox' && $(elem).prop('checked') === false) {
51          elem.addClass('error');
52          var msg = 'Поле обязательно для заполнения';
53          this.errors[elem.attr('name')] = msg;
54          this.showError(elem.attr('name'), msg);
55        } else {
56          this.hideError(elem.attr('name'));
57        }
58      } // Проверка select
59
60
61      for (var _i = 0; _i < this.form.find('select').length; _i++) {
62        var _elem = this.form.find('select').eq(_i);
63
64        if (!(_elem.parent().css('display') === 'none')) {
65          if (!_elem.val() && _elem.val() != []) {
66            _elem.parent().find('.select__head').addClass('error');
67
68            this.errors[_elem.attr('name')] = 'Выберите одно из полей';
69          }
70        }
71      }
72
73      return Object.keys(this.errors).length == 0;
74    }
75  }, {
76    key: "url",
77    value: function url(value) {
78      if (!value) return this.uri;
79      this.uri = value;
80      return this;
81    }
82  }, {
83    key: "clear",
84    value: function clear() {
85      this.form.find('input:not([type="hidden"]):not([type="submit"]), select, textarea').val('');
86      this.form.find('input:not([type="hidden"]), select, textarea').each(function () {
87        $(this).next().text('');
88      });
89    }
90  }, {
91    key: "hideErrors",
92    value: function hideErrors() {
93      for (var name in this.getValues()) {
94        this.hideError(name);
95      }
96    }
97  }, {
98    key: "hideError",
99    value: function hideError(name) {
100      this.form.find('[name="' + name + '"]').removeClass('error');
101      this.form.find('[name="' + name + '"]').parent().find('span.error').remove();
102    }
103  }, {
104    key: "showError",
105    value: function showError(name, msg) {
106      this.form.find('[name="' + name + '"]:not([type="hidden"])').addClass('error');
107      if (this.form.find('[name="' + name + '"]:not([type="hidden"])').next('span.error').length) this.form.find('[name="' + name + '"]:not([type="hidden"])').next().html(msg);else this.form.find('[name="' + name + '"]:not([type="hidden"])').after('<span generated="true" class="error">' + msg + '</span>');
108    }
109  }]);
110
111  return Form;
112}();
113
114/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Form);
115
116/***/ }),
117
118/***/ "./source/js/modules/_form.js":
119/*!************************************!*\
120  !*** ./source/js/modules/_form.js ***!
121  \************************************/
122/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
123
124"use strict";
125__webpack_require__.r(__webpack_exports__);
126/* harmony import */ var _helpers_Form__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers/Form */ "./source/js/helpers/Form.js");
127
128
129/*
130    jQuery Masked Input Plugin
131    Copyright (c) 2007 - 2014 Josh Bush (digitalbush.com)
132    Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license)
133    Version: 1.4.0
134*/
135!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b,c=navigator.userAgent,d=/iphone/i.test(c),e=/chrome/i.test(c),f=/android/i.test(c);a.mask={definitions:{9:"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"},autoclear:!0,dataName:"rawMaskFn",placeholder:"_"},a.fn.extend({caret:function(a,b){var c;if(0!==this.length&&!this.is(":hidden"))return"number"==typeof a?(b="number"==typeof b?b:a,this.each(function(){this.setSelectionRange?this.setSelectionRange(a,b):this.createTextRange&&(c=this.createTextRange(),c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",a),c.select())})):(this[0].setSelectionRange?(a=this[0].selectionStart,b=this[0].selectionEnd):document.selection&&document.selection.createRange&&(c=document.selection.createRange(),a=0-c.duplicate().moveStart("character",-1e5),b=a+c.text.length),{begin:a,end:b})},unmask:function(){return this.trigger("unmask")},mask:function(c,g){var h,i,j,k,l,m,n,o;if(!c&&this.length>0){h=a(this[0]);var p=h.data(a.mask.dataName);return p?p():void 0}return g=a.extend({autoclear:a.mask.autoclear,placeholder:a.mask.placeholder,completed:null},g),i=a.mask.definitions,j=[],k=n=c.length,l=null,a.each(c.split(""),function(a,b){"?"==b?(n--,k=a):i[b]?(j.push(new RegExp(i[b])),null===l&&(l=j.length-1),k>a&&(m=j.length-1)):j.push(null)}),this.trigger("unmask").each(function(){function h(){if(g.completed){for(var a=l;m>=a;a++)if(j[a]&&C[a]===p(a))return;g.completed.call(B)}}function p(a){return g.placeholder.charAt(a<g.placeholder.length?a:0)}function q(a){for(;++a<n&&!j[a];);return a}function r(a){for(;--a>=0&&!j[a];);return a}function s(a,b){var c,d;if(!(0>a)){for(c=a,d=q(b);n>c;c++)if(j[c]){if(!(n>d&&j[c].test(C[d])))break;C[c]=C[d],C[d]=p(d),d=q(d)}z(),B.caret(Math.max(l,a))}}function t(a){var b,c,d,e;for(b=a,c=p(a);n>b;b++)if(j[b]){if(d=q(b),e=C[b],C[b]=c,!(n>d&&j[d].test(e)))break;c=e}}function u(){var a=B.val(),b=B.caret();if(a.length<o.length){for(A(!0);b.begin>0&&!j[b.begin-1];)b.begin--;if(0===b.begin)for(;b.begin<l&&!j[b.begin];)b.begin++;B.caret(b.begin,b.begin)}else{for(A(!0);b.begin<n&&!j[b.begin];)b.begin++;B.caret(b.begin,b.begin)}h()}function v(){A(),B.val()!=E&&B.change()}function w(a){if(!B.prop("readonly")){var b,c,e,f=a.which||a.keyCode;o=B.val(),8===f||46===f||d&&127===f?(b=B.caret(),c=b.begin,e=b.end,e-c===0&&(c=46!==f?r(c):e=q(c-1),e=46===f?q(e):e),y(c,e),s(c,e-1),a.preventDefault()):13===f?v.call(this,a):27===f&&(B.val(E),B.caret(0,A()),a.preventDefault())}}function x(b){if(!B.prop("readonly")){var c,d,e,g=b.which||b.keyCode,i=B.caret();if(!(b.ctrlKey||b.altKey||b.metaKey||32>g)&&g&&13!==g){if(i.end-i.begin!==0&&(y(i.begin,i.end),s(i.begin,i.end-1)),c=q(i.begin-1),n>c&&(d=String.fromCharCode(g),j[c].test(d))){if(t(c),C[c]=d,z(),e=q(c),f){var k=function(){a.proxy(a.fn.caret,B,e)()};setTimeout(k,0)}else B.caret(e);i.begin<=m&&h()}b.preventDefault()}}}function y(a,b){var c;for(c=a;b>c&&n>c;c++)j[c]&&(C[c]=p(c))}function z(){B.val(C.join(""))}function A(a){var b,c,d,e=B.val(),f=-1;for(b=0,d=0;n>b;b++)if(j[b]){for(C[b]=p(b);d++<e.length;)if(c=e.charAt(d-1),j[b].test(c)){C[b]=c,f=b;break}if(d>e.length){y(b+1,n);break}}else C[b]===e.charAt(d)&&d++,k>b&&(f=b);return a?z():k>f+1?g.autoclear||C.join("")===D?(B.val()&&B.val(""),y(0,n)):z():(z(),B.val(B.val().substring(0,f+1))),k?b:l}var B=a(this),C=a.map(c.split(""),function(a,b){return"?"!=a?i[a]?p(b):a:void 0}),D=C.join(""),E=B.val();B.data(a.mask.dataName,function(){return a.map(C,function(a,b){return j[b]&&a!=p(b)?a:null}).join("")}),B.one("unmask",function(){B.off(".mask").removeData(a.mask.dataName)}).on("focus.mask",function(){if(!B.prop("readonly")){clearTimeout(b);var a;E=B.val(),a=A(),b=setTimeout(function(){z(),a==c.replace("?","").length?B.caret(0,a):B.caret(a)},10)}}).on("blur.mask",v).on("keydown.mask",w).on("keypress.mask",x).on("input.mask paste.mask",function(){B.prop("readonly")||setTimeout(function(){var a=A(!0);B.caret(a),h()},0)}),e&&f&&B.off("input.mask").on("input.mask",u),A()})}})});
136
137
138$(document).ready(function () {
139  var popup;
140
141  function reset(form) {
142    $(form).find('input:not([type="hidden"],[type="submit"], .sendform), textarea, select ').each(function () {
143      $(this).val('');
144    });
145  }
146  
147  $('.phoneinput').mask('+7 (999) 999-99-99');
148
149  $(document).on('click', '.form button[type="submit"]', function (e) {
150    e.preventDefault();
151    var form = $(this).closest("form");
152    var formObj = new _helpers_Form__WEBPACK_IMPORTED_MODULE_0__["default"](form);
153    popup = $(form).closest('.modal');
154
155    if (!formObj.isValid()) {
156      for (var name in formObj.errors) {
157        formObj.showError(name, formObj.errors[name]);
158      }
159
160      return;
161    }
162	
163	
164
165    $.ajax({
166      type: 'POST',
167      url: '/ajax/form/send/',
168      data: form.serialize(),
169      success: function success(data) {
170        $(form).closest('.modal').removeClass('show');
171        $('#modelSuccess').addClass('show').css('display', 'block').css('padding-right', '17px');
172        $('body').addClass('modal-open').css('padding-right', '17px');
173        $('body').append('<div class="modal-backdrop fade show"></div>');
174        reset(form);
175      },
176      error: function error(data) {}
177    });
178  });
179  $(document).on('click', '#modelSuccess .close', function () {
180    $('#modelSuccess').removeClass('show').css('display', 'none');
181    $('body').removeClass('modal-open').css('padding-right', '0');
182    $('.modal-backdrop').remove();
183    $(popup).click();
184  });
185});
186
187/***/ }),
188
189/***/ "./source/js/modules/_main.js":
190/*!************************************!*\
191  !*** ./source/js/modules/_main.js ***!
192  \************************************/
193/***/ (() => {
194
195$(function () {
196  $(".seo-text-toggle ins").on("click", function () {
197    this.textContent = this.textContent === "СКРЫТЬ" ? "ЧИТАТЬ ДАЛЕЕ" : "СКРЫТЬ";
198    $(".seo-text-hidden").toggle("slow");
199  }); // Отработка нажатий на кнопку "Показать ещё" в блоке услуг
200
201  $(document).on("click", '[name="more_services_button"]', function () {
202    const $mod = this.dataset.value;
203    const $servicesList = $('[name="services_list"]');
204    
205    const isMobile = $(window).width() <= 500;
206    
207    
208    // Показываем индикатор загрузки
209    $(this).prop('disabled', true).html(
210      $mod == "show" ? '<span class="spinner-border spinner-border-sm" role="status"></span> Загрузка...' : '<span class="spinner-border spinner-border-sm" role="status"></span> Скрыть'
211    );
212
213    const url = $mod == "show" ? "/ajax/main/show_more/" : "/ajax/main/hide_more/";
214    
215    $.ajax({
216        type: "POST",
217        url: url,
218        data: {},
219        success: function(render) {
220            $servicesList.html(render);
221            const $servicesGrid = $servicesList.find('.services-grid');
222            
223            const isSliderInitialized = $servicesGrid.hasClass('owl-loaded');
224            const $updatedGrid = $('[name="services_list"] .services-grid');
225            
226            if (isMobile) {
227              const $moreServicesButton = $servicesGrid.find('[name="more_services_button"]');
228              const dataValue = $moreServicesButton.data('value') || 'show';
229              const buttonText = dataValue === 'hide' ? 'Скрыть' : 'Все услуги';
230              const buttonCardHtml = `
231                <div class="single-department-card">
232                <div class="single-department">
233                  <div class="wrap-single-department-serv" style="justify-content: center;">
234                  <div class="text-center">
235                    <button type="button" class="default-btn" name="more_services_button" data-value="${dataValue}">${buttonText}</button>
236                  </div>                 
237                  </div>
238                </div>
239                </div>
240                `;
241
242                $servicesGrid.append(buttonCardHtml);
243                if (!isSliderInitialized) {
244                    $updatedGrid.owlCarousel({
245                        items: 1,
246                        center: false,
247                        loop: false,
248                        margin: 20,
249                        stagePadding: 70,
250                        nav: false,
251                        dots: false,
252                        responsive: {
253                            0: { items: 1 },
254                            480: { items: 1 }
255                        },
256                        onInitialized: function() {
257                            this.$stage.css({
258                                'padding-left': '0px',
259                                'padding-right': this.settings.stagePadding + 'px'
260                            });
261                        }
262                    });
263                } else {
264                    $updatedGrid.trigger('refresh.owl.carousel');
265                }
266            } else {
267                if (isSliderInitialized) {
268                    $updatedGrid.trigger('destroy.owl.carousel');
269                    $updatedGrid.removeClass('owl-carousel owl-loaded');
270                }
271            }
272        },
273        error: function() {
274            alert('Произошла ошибка при загрузке данных');
275        },
276        complete: function() {
277            // Восстанавливаем кнопку
278            $('[name="more_services_button"]').prop('disabled', false)
279                .html($mod == "show" ? "Скрыть" : "Все услуги")
280                .attr('data-value', $mod == "show" ? "hide" : "show");
281        }
282    });
283});
284
285  // Инициализация слайдера при загрузке страницы и ресайзе
286  function initServicesSlider() {
287    const $servicesGrid = $('[name="services_list"] .services-grid');
288    const isMobile = $(window).width() <= 500;
289    if (isMobile && !$servicesGrid.hasClass('owl-loaded')) {
290      const $moreServicesButton = $servicesGrid.find('[name="more_services_button"]');
291      const dataValue = $moreServicesButton.data('value') || 'show';
292      const buttonText = dataValue === 'hide' ? 'Скрыть' : 'Все услуги';
293        const buttonCardHtml = `
294                <div class="single-department-card">
295                <div class="single-department">
296                  <div class="wrap-single-department-serv" style="justify-content: center;">
297                  <div class="text-center">
298                    <button type="button" class="default-btn" name="more_services_button" data-value="${dataValue}">${buttonText}</button>
299                  </div>                 
300                  </div>
301                </div>
302                </div>
303                `;
304
305    $servicesGrid.append(buttonCardHtml);
306        $servicesGrid.owlCarousel({
307            items: 1,
308            center: false,
309            loop: false,
310            margin: 20,
311            stagePadding: 70,
312            nav: false,
313            dots: false,
314            responsive: {
315                0: { items: 1 },
316                480: { items: 1 }
317            },
318            onInitialized: function() {
319                this.$stage.css({
320                    'padding-left': '0px',
321                    'padding-right': this.settings.stagePadding + 'px'
322                });
323            }
324        });
325    } else if (!isMobile && $servicesGrid.hasClass('owl-loaded')) {
326        $servicesGrid.trigger('destroy.owl.carousel');
327        $servicesGrid.removeClass('owl-carousel owl-loaded');
328    }
329  }
330
331  function initOtherServicesSlider() {
332    const $services_slider_list = $('[name="services_slider_list"] .services-grid');
333    $('[name="services_slider_list"] .show_more_button.mob-d-none').css('display', 'none');
334    if ($services_slider_list) {
335      $services_slider_list.owlCarousel({
336        items: 4,
337        center: false,
338        loop: false,
339        margin: 20,
340        nav: false,
341        dots: true,
342        responsive: {
343          0: {
344            items: 1,
345            stagePadding: 70,
346            onInitialized: function() {
347              this.$stage.css({
348                  'padding-left': '0px',
349                  'padding-right': this.settings.stagePadding + 'px'
350              });
351            }
352          },
353          551: {
354            stagePadding: 0,
355            onInitialized: function() {
356              this.$stage.css({
357                  'padding-left': '0px',
358                  'padding-right': '0px'
359              });
360            }
361          },
362          768: {
363            items: 2
364          },
365          1000: {
366            items: 4
367          }
368        },
369        
370      });
371    }
372  }
373
374  $(document).ready(function() {
375      initServicesSlider();
376      initOtherServicesSlider();
377  });
378
379  $(window).resize(function() {
380      initServicesSlider();
381  });
382
383  const sendReqButtons = document.querySelectorAll('.send-req');
384  const klikZvonokButton = document.getElementById('klik_zvonok') || document.querySelector('.klik_zvonok');
385
386  sendReqButtons.forEach(button => {
387      button.addEventListener('click', function(e) {
388          
389          e.preventDefault();
390          if (klikZvonokButton) {
391              klikZvonokButton.click();
392          }
393      });
394  });
395
396  $(document).on('click', '.single-feedback-popup', function () {
397    console.log($(this).find('.feedback-text'));
398    $('#exampleModalFeedback .modal-body').empty().append($(this).find('.feedback-text').clone());
399    $('#exampleModalFeedback .feedback_contentPopup').empty().append($(this).find('.feedback_content').clone());
400  });
401
402  // $(document).on('click', '.single-feedback-popup > img', function () {
403  //   console.log($(this).closest('.single-feedback-popup').find('.feedback-text'));
404  //   $('#exampleModalFeedback .modal-body').empty().append($(this).closest('.single-feedback-popup').find('.feedback-text').clone());
405  //   $('#exampleModalFeedback .feedback_contentPopup').empty().append($(this).closest('.single-feedback-popup').find('.feedback_content').clone());
406  // }); // При получении/потере фокуса на услуге-родителе
407
408  $('[name="parent_service"]').not('.side-panel [name="parent_service"], .side-panel [name="parent_service"] *').hover(
409    function () {
410      var parentId = this.dataset.value;
411      var dropped = $('[name="child_service"][data-value="' + parentId + '"]').not('.side-panel [name="child_service"], .side-panel [name="child_service"] *');
412
413      for (var i = 0; i < dropped.length; i++) {
414        $(dropped[i]).show();
415      }
416    },
417    function () {
418      var parentId = this.dataset.value;
419      var dropped = $('[name="child_service"][data-value="' + parentId + '"]').not('.side-panel [name="child_service"], .side-panel [name="child_service"] *');
420      var hideAll = true;
421
422      for (var i = 0; i < dropped.length; i++) {
423        if ($(dropped[i]).is(":hover") == true) {
424          hideAll = false;
425        }
426      }
427
428      if (hideAll) {
429        for (var _i = 0; _i < dropped.length; _i++) {
430          $(dropped[_i]).hide();
431        }
432      }
433    }
434  );
435
436  $('[name="child_service"]').not('.side-panel [name="child_service"], .side-panel [name="child_service"] *').hover(
437    function () {}, 
438    function () {
439      var parentId = this.dataset.value;
440      var parentElement = $('[name="parent_service"][data-value="' + parentId + '"]').not('.side-panel [name="parent_service"], .side-panel [name="parent_service"] *');
441      var dropped = $('[name="child_service"][data-value="' + parentId + '"]').not('.side-panel [name="child_service"], .side-panel [name="child_service"] *');
442      var hideAll = true;
443
444      for (var i = 0; i < dropped.length; i++) {
445        if ($(dropped[i]).is(":hover") == true) {
446          hideAll = false;
447        }
448      }
449
450      if (parentElement.is(":hover")) {
451        hideAll = false;
452      }
453
454      if (hideAll) {
455        for (var _i2 = 0; _i2 < dropped.length; _i2++) {
456          $(dropped[_i2]).hide();
457        }
458      }
459    }
460  );
461});
462
463/***/ }),
464
465/***/ "./source/js/modules/_promedi-map.js":
466/*!*******************************************!*\
467  !*** ./source/js/modules/_promedi-map.js ***!
468  \*******************************************/
469/***/ (() => {
470
471/*==============================================================*/
472// Promedi Map JS
473
474/*==============================================================*/
475(function ($) {
476  "use strict"; // Start of use strict
477
478  var marker;
479
480  window.initMap = function () {
481    var map = new google.maps.Map(document.getElementById("map"), {
482      zoom: 13,
483      center: {
484        lat: 55.78,
485        lng: 37.68
486      }
487    });
488    marker = new google.maps.Marker({
489      map: map,
490      draggable: true,
491      animation: google.maps.Animation.DROP,
492      position: {
493        lat: 55.78,
494        lng: 37.68
495      }
496    });
497    marker.addListener("click", toggleBounce);
498  };
499
500  function toggleBounce() {
501    if (marker.getAnimation() !== null) {
502      marker.setAnimation(null);
503    } else {
504      marker.setAnimation(google.maps.Animation.BOUNCE);
505    }
506  }
507})(jQuery); // End of use strict
508
509/***/ }),
510
511/***/ "./source/js/modules/_script.js":
512/*!**************************************!*\
513  !*** ./source/js/modules/_script.js ***!
514  \**************************************/
515/***/ (() => {
516
517(function ($) {
518  "use strict";
519
520  jQuery(document).on("ready", function () {
521    // Header Sticky
522    $(window).on("scroll", function () {
523      if ($(this).scrollTop() > 150) {
524        $(".header-sticky").addClass("is-sticky");
525      } else {
526        $(".header-sticky").removeClass("is-sticky");
527      }
528    }); // Dropdown
529
530    $(".navbar-light .dropdown").on("hover", function () {
531      $(this).on("find", ".dropdown-menu").first().stop(true, true).slideDown(100);
532    }, function () {
533      $(this).on("find", ".dropdown-menu").first().stop(true, true).slideUp(50);
534    }); // Hero slider JS
535	
536	$(".staff-links1").click(function(e){
537		e.preventDefault();
538		$(this).parent('.staff-links').toggleClass("opeinfo");
539    });
540	
541		function scrollToAnchor(anchorId) {
542            var element = $('#' + anchorId);
543            var hiddenParent = element.closest('.seo-text-hidden');
544            if (hiddenParent.length) {
545                hiddenParent.slideDown(400, function() {
546                    var offset = element.offset().top - 180;
547                    $('html, body').animate({
548                        scrollTop: offset
549                    }, 500);
550                });
551            } else {
552                var offset = element.offset().top - 180;
553                $('html, body').animate({
554                    scrollTop: offset
555                }, 500); 
556            }
557        }
558
559       
560        $('.yakor-list a[href^="#"]').on('click', function(e) {
561            e.preventDefault();
562            var anchorId = $(this).attr('href').substring(1);
563            scrollToAnchor(anchorId);
564        });
565	
566	$(".faq-head").click(function(e){
567		$(this).toggleClass("opened");
568    });
569	
570	$(".faqmain-list__item-head").click(function(e){
571		$(this).toggleClass("active");
572    });
573	
574	 $(".sidelka-card.single-card").hover(function(){
575		
576		$('.staff-links.opeinfo',this).removeClass("opeinfo");
577		
578     });
579
580
581
582     
583    let owl = $('.hero-slider');
584
585    owl.owlCarousel({
586      items: 1,
587      loop: true,
588      nav: true,
589      autoplay: false,
590      autoplayHoverPause: false,
591      mouseDrag: true,
592      dots: false,
593      navText: ["<i class='icofont-swoosh-left'></i>", "<i class='icofont-swoosh-right'></i>"]
594    }); // Popup Video JS
595    owl.trigger('refresh');
596
597    $('.slider-rev').owlCarousel({
598      loop: true,
599      margin: 10,
600      nav: false,
601      slideBy: 3,
602      dots: true,
603      responsive: {
604        0: {
605          items: 1,
606          dots: false,
607          nav: true
608        },
609        600: {
610          items: 2,
611          dots: false,
612          nav: true
613        },
614        1000: {
615          items: 3
616        }
617      }
618    });
619
620    $('.toggle-comment').on('click', function(e) {
621      e.preventDefault(); // Отменяем стандартное поведение ссылки
622      
623      //const fullComment = $(this).closest('.comment').find('.full-comment');
624      //const shortComment = $(this).closest('.comment').find('.short-comment');
625
626      // Переключаем видимость комментариев
627      //fullComment.toggle();
628      //shortComment.toggle();
629
630      // Добавляем/удаляем класс active для изменения стиля
631      $(this).closest('.comment').toggleClass('active');
632  });
633
634
635
636	$(".sertificat-carousel").owlCarousel({
637      items: 3,
638      loop: true,
639      nav: false,
640      autoplay: true,
641      autoplayHoverPause: false,
642      mouseDrag: true,
643      dots: true,
644      responsive:{
645			0:{
646				items:1,
647				nav:true
648			},
649			480:{
650				items:1,
651				nav:false
652			},
653			1000:{
654				items:3,
655				nav:true,
656				loop:false
657			}
658		}
659  });
660	
661	$('.sertificat-carousel a').magnificPopup({
662		type: 'image',
663		closeOnContentClick: true,
664		gallery: {
665			enabled: true,
666			navigateByImgClick: true,
667			preload: [0,1]
668		}
669	});
670	
671
672    $(".popup-youtube, .popup-vimeo").magnificPopup({
673      disableOn: 300,
674      type: "iframe",
675      mainClass: "mfp-fade",
676      removalDelay: 160,
677      preloader: false,
678      fixedContentPos: false
679    }); // Date Picker
680	
681	
682
683    $(function () {
684      $("#datepicker").datepicker();
685    }); // CounterUp JS
686
687    $(".counter").counterUp({
688      delay: 15,
689      time: 3000
690    }); // Tabs
691
692    (function ($) {
693		
694		
695	
696		
697      $(".tab ul.tabs").addClass("active").find("> li:eq(0)").addClass("current");
698      $(".tab ul.tabs li a").on("click", function (g) {
699        var tab = $(this).closest(".tab"),
700            index = $(this).closest("li").index();
701        tab.find("ul.tabs > li").removeClass("current");
702        $(this).closest("li").addClass("current");
703        tab.find(".tab_content").find("div.tabs_item").not("div.tabs_item:eq(" + index + ")").slideUp();
704        tab.find(".tab_content").find("div.tabs_item:eq(" + index + ")").slideDown();
705        g.preventDefault();
706      });
707    })(jQuery); // Expert doctors carousel JS
708
709	$(".mainpage-doctors").owlCarousel({
710      loop: true,
711      nav: true,
712      autoplay: false,
713      autoplayHoverPause: true,
714      mouseDrag: false,
715      margin: 30,
716      dots: false,
717      navText: ["<i class='icofont-swoosh-left'></i>", "<i class='icofont-swoosh-right'></i>"],
718      responsive: {
719        0: {
720          items: 2
721        },
722        600: {
723          items: 3
724        },
725        1000: {
726          items: 4
727        }
728      }
729    });
730
731    $(".services-slider").owlCarousel({
732      loop: true,
733      nav: true,
734      autoplay: false,
735      autoplayHoverPause: true,
736      mouseDrag: false,
737      margin: 30,
738      dots: false,
739      navText: ["<i class='icofont-swoosh-left'></i>", "<i class='icofont-swoosh-right'></i>"],
740      responsive: {
741        0: {
742          items: 2
743        },
744        600: {
745          items: 3
746        },
747        1000: {
748          items: 4
749        }
750      }
751    });
752	
753    $(".expert-doctors-carousel").owlCarousel({
754      loop: true,
755      nav: true,
756      autoplay: false,
757      autoplayHoverPause: true,
758      mouseDrag: false,
759      margin: 30,
760      dots: false,
761      navText: ["<i class='icofont-swoosh-left'></i>", "<i class='icofont-swoosh-right'></i>"],
762      responsive: {
763        0: {
764          items: 1
765        },
766        600: {
767          items: 2
768        },
769        1000: {
770          items: 3
771        }
772      }
773    }); // Feedback Carousel JS
774
775    $(".feedback-carousel").owlCarousel({
776      loop: true,
777      nav: true,
778      autoplay: true,
779      autoplayHoverPause: true,
780      mouseDrag: true,
781      margin: 30,
782      center: true,
783      dots: false,
784      navText: ["<i class='icofont-swoosh-left'></i>", "<i class='icofont-swoosh-right'></i>"],
785      responsive: {
786        0: {
787          items: 1
788        },
789        768: {
790          items: 2
791        },
792        1200: {
793          items: 3
794        }
795      }
796    }); // Latest news Carousel JS
797
798    $(".latest-news-carousel").owlCarousel({
799      loop: true,
800      nav: true,
801      autoplay: true,
802      autoplayHoverPause: true,
803      mouseDrag: false,
804      margin: 30,
805      dots: false,
806      navText: ["<i class='icofont-swoosh-left'></i>", "<i class='icofont-swoosh-right'></i>"],
807      responsive: {
808        0: {
809          items: 1
810        },
811        768: {
812          items: 2
813        },
814        1000: {
815          items: 3
816        }
817      }
818    }); 
819    
820    $(".sidelki-flex").owlCarousel({
821      loop: true,
822      nav: true,
823      autoplay: true,
824      autoplayHoverPause: true,
825      mouseDrag: false,
826      margin: 30,
827      dots: false,
828      navText: ["<i class='icofont-swoosh-left'></i>", "<i class='icofont-swoosh-right'></i>"],
829      slideBy: 4,
830      responsive: {
831        0: {
832          items: 1,
833          dots: true
834        },
835        768: {
836          items: 2,
837          dots: true
838        },
839        769: {
840          dots: false
841        },
842        1000: {
843          items: 4
844        }
845      }
846    });
847
848    // Subscribe form
849
850    function callbackFunction(resp) {
851      if (resp.result === "success") {
852        formSuccessSub();
853      } else {
854        formErrorSub();
855      }
856    }
857
858    function formSuccessSub() {
859      $(".newsletter-form")[0].reset();
860      submitMSGSub(true, "Thank you for subscribing!");
861      setTimeout(function () {
862        $("#validator-newsletter").addClass("hide");
863      }, 4000);
864    }
865
866    function formErrorSub() {
867      $(".newsletter-form").addClass("animated shake");
868      setTimeout(function () {
869        $(".newsletter-form").removeClass("animated shake");
870      }, 1000);
871    }
872
873    function submitMSGSub(valid, msg) {
874      if (valid) {
875        var msgClasses = "validation-success";
876      } else {
877        var msgClasses = "validation-danger";
878      }
879
880      $("#validator-newsletter").removeClass().addClass(msgClasses).text(msg);
881    } // AJAX MailChimp
882
883
884    $(".newsletter-form").ajaxChimp({
885      url: "https://envytheme.us20.list-manage.com/subscribe/post?u=60e1ffe2e8a68ce1204cd39a5&amp;id=42d6d188d9",
886      // Your url MailChimp
887      callback: callbackFunction
888    }); // Back Top Button
889
890    $("body").append('<div id="toTop"><i class="icofont-bubble-up"></i></div>');
891    $(window).on("scroll", function () {
892      if ($(this).scrollTop() != 0) {
893        $("#toTop").fadeIn();
894      } else {
895        $("#toTop").fadeOut();
896      }
897    });
898    $("#toTop").on("click", function () {
899      $("html, body").animate({
900        scrollTop: 0
901      }, 600);
902      return false;
903    });
904  }); // preloader
905
906//  jQuery(window).on("load", function () {
907//    jQuery(".preloader").fadeOut(500);
908//  });
909  $(".caption-text-mh-300").on({
910    click: function click() {
911      $(".staff_desc").toggle().css("min-height", "260px");
912    }
913  });
914})(jQuery);
915
916var servicesHeaderBtn = document.getElementById("services-header-btn");
917var servicesDropdownMenu = document.getElementById("services-dropdown-menu");
918var aboutHeaderBtn = document.getElementById("about-header-btn");
919var aboutDropdownMenu = document.getElementById("about-dropdown-menu");
920var aboutPricesBtn = document.getElementById("about-prices-btn");
921var aboutPricesMenu = document.getElementById("about-prices-menu");
922servicesHeaderBtn.addEventListener("click", function () {
923  if (servicesDropdownMenu.classList.contains("dropdown-menu-hide")) {
924    servicesDropdownMenu.classList.remove("dropdown-menu-hide");
925  } else {
926    servicesDropdownMenu.classList.add("dropdown-menu-hide");
927  }
928});
929aboutHeaderBtn.addEventListener("click", function () {
930  if (aboutDropdownMenu.classList.contains("dropdown-menu-hide")) {
931    aboutDropdownMenu.classList.remove("dropdown-menu-hide");
932  } else {
933    aboutDropdownMenu.classList.add("dropdown-menu-hide");
934  }
935});
936aboutPricesBtn.addEventListener("click", function () {
937  if (aboutPricesMenu.classList.contains("dropdown-menu-hide")) {
938    aboutPricesMenu.classList.remove("dropdown-menu-hide");
939  } else {
940    aboutPricesMenu.classList.add("dropdown-menu-hide");
941  }
942});
943
944/***/ })
944,
945
946/***/ "./source/js/modules sync recursive _[^_].*\\.(js)$":
947/*!************************************************!*\
948  !*** ./source/js/modules/ sync _[^_].*\.(js)$ ***!
949  \************************************************/
950/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
951
952var map = {
953	"./_form.js": "./source/js/modules/_form.js",
954	"./_main.js": "./source/js/modules/_main.js",
955	"./_promedi-map.js": "./source/js/modules/_promedi-map.js",
956	"./_script.js": "./source/js/modules/_script.js"
957};
958
959
960function webpackContext(req) {
961	var id = webpackContextResolve(req);
962	return __webpack_require__(id);
963}
964function webpackContextResolve(req) {
965	if(!__webpack_require__.o(map, req)) {
966		var e = new Error("Cannot find module '" + req + "'");
967		e.code = 'MODULE_NOT_FOUND';
968		throw e;
969	}
970	return map[req];
971}
972webpackContext.keys = function webpackContextKeys() {
973	return Object.keys(map);
974};
975webpackContext.resolve = webpackContextResolve;
976module.exports = webpackContext;
977webpackContext.id = "./source/js/modules sync recursive _[^_].*\\.(js)$";
978
979/***/ })
980
981/******/ 	});
982/************************************************************************/
983/******/ 	// The module cache
984/******/ 	var __webpack_module_cache__ = {};
985/******/ 	
986/******/ 	// The require function
987/******/ 	function __webpack_require__(moduleId) {
988/******/ 		// Check if module is in cache
989/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
990/******/ 		if (cachedModule !== undefined) {
991/******/ 			return cachedModule.exports;
992/******/ 		}
993/******/ 		// Create a new module (and put it into the cache)
994/******/ 		var module = __webpack_module_cache__[moduleId] = {
995/******/ 			// no module.id needed
996/******/ 			// no module.loaded needed
997/******/ 			exports: {}
998/******/ 		};
999/******/ 	
1000/******/ 		// Execute the module function
1001/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
1002/******/ 	
1003/******/ 		// Return the exports of the module
1004/******/ 		return module.exports;
1005/******/ 	}
1006/******/ 	
1007/************************************************************************/
1008/******/ 	/* webpack/runtime/define property getters */
1009/******/ 	(() => {
1010/******/ 		// define getter functions for harmony exports
1011/******/ 		__webpack_require__.d = (exports, definition) => {
1012/******/ 			for(var key in definition) {
1013/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
1014/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
1015/******/ 				}
1016/******/ 			}
1017/******/ 		};
1018/******/ 	})();
1019/******/ 	
1020/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
1021/******/ 	(() => {
1022/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
1023/******/ 	})();
1024/******/ 	
1025/******/ 	/* webpack/runtime/make namespace object */
1026/******/ 	(() => {
1027/******/ 		// define __esModule on exports
1028/******/ 		__webpack_require__.r = (exports) => {
1029/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
1030/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1031/******/ 			}
1032/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
1033/******/ 		};
1034/******/ 	})();
1035/******/ 	
1036/************************************************************************/
1037var __webpack_exports__ = {};
1038// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
1039(() => {
1040/*!********************************!*\
1041  !*** ./source/js/bootstrap.js ***!
1042  \********************************/
1043(function () {
1044  'use strict';
1045
1046  window.fuckIE = !!window.MSInputMethodContext && !!document.documentMode; // Include js-modules
1047
1048  var req = __webpack_require__("./source/js/modules sync recursive _[^_].*\\.(js)$");
1049
1050  req.keys().forEach(function (key) {
1051    req(key);
1052  });
1053})();
1054})();
1055
1056/******/ })()
1057;
1058

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.