PageSourceSearch

https://medongroup-odc.ru/local/templates/medon/scripts/all_min.js

js medongroup-odc.ru collected 2026-09-28 14:24:46 UTC 97,732 bytes, 2,300 lines download raw bytes

1"use strict";
2var _createClass = function() {
3        function defineProperties(target, props) {
4            for (var i = 0; i < props.length; i++) {
5                var descriptor = props[i];
6                descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in
7                    descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key,
8                        descriptor)
9            }
10        }
11        return function(Constructor, protoProps, staticProps) {
12            return protoProps && defineProperties(Constructor.prototype, protoProps), staticProps &&
13                defineProperties(Constructor, staticProps), Constructor
14        }
15    }(),
16    _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
17        return typeof obj
18    } : function(obj) {
19        return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ?
20            "symbol" : typeof obj
21    };
22
23function _classCallCheck(instance, Constructor) {
24    if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function")
25}! function(module) {
26    var components = [],
27        first_init = !1;
28    module.init = function() {
29        first_init || (first_init = !0);
30        var self = this;
31        $("[data-v-tpl]").not("[data-v-inited]").each(function() {
32            self.initTemplate(this)
33        })
34    }, module.initTemplate = function(node) {
35        var $node = $(node),
36            instanceName = $node.attr("data-v-tpl"),
37            data, instanceData, templateObj;
38        data = $node.attr("data-v-data-id") ? window[$node.attr("data-v-data-id")] || {} : $node.data(
39            "v-data") || {}, instanceName ? components[instanceName] && (instanceData = components[
40            instanceName](node, data, instanceName)) : instanceData = module.initDefaultTemplate(node,
41            data), instanceData && ($node.attr("data-v-inited", ""), instanceData && (instanceData
42                .data || (instanceData.data = {}), instanceData.data.inited = !0), templateObj =
43            new Vue(instanceData))
44    }, module.addComponent = function(name, data) {
45        Vue.component(name, data)
46    }, module.addInstance = function(name, component) {
47        name && component && (components[name] = component, first_init && module.init())
48    }, module.initDefaultTemplate = function(element, data) {
49        return {
50            el: element,
51            data: data
52        }
53    }
54}(window.vue_utils = window.vue_utils || {}), jQuery(function($) {
55        vue_utils.init()
56    }),
57    function(module) {
58        module.isObject = function isObject(value) {
59            var type = void 0 === value ? "undefined" : _typeof(value);
60            return null != value && ("object" == type || "function" == type)
61        }, module.debounce = function debounce(func, wait, options) {
62            var lastArgs = void 0,
63                lastThis = void 0,
64                maxWait = void 0,
65                result = void 0,
66                timerId = void 0,
67                lastCallTime = void 0,
68                lastInvokeTime = 0,
69                leading = !1,
70                maxing = !1,
71                trailing = !0;
72            if ("function" != typeof func) throw new TypeError("Expected a function");
73
74            function invokeFunc(time) {
75                var args = lastArgs,
76                    thisArg = lastThis;
77                return lastArgs = lastThis = void 0, lastInvokeTime = time, result = func.apply(thisArg,
78                    args)
79            }
80
81            function leadingEdge(time) {
82                return lastInvokeTime = time, timerId = setTimeout(timerExpired, wait), leading ?
83                    invokeFunc(time) : result
84            }
85
86            function remainingWait(time) {
87                var timeSinceLastCall, timeSinceLastInvoke = time - lastInvokeTime,
88                    result = wait - (time - lastCallTime);
89                return maxing ? Math.min(result, maxWait - timeSinceLastInvoke) : result
90            }
91
92            function shouldInvoke(time) {
93                var timeSinceLastCall = time - lastCallTime,
94                    timeSinceLastInvoke;
95                return void 0 === lastCallTime || timeSinceLastCall >= wait || timeSinceLastCall < 0 ||
96                    maxing && time - lastInvokeTime >= maxWait
97            }
98
99            function timerExpired() {
100                var time = Date.now();
101                if (shouldInvoke(time)) return trailingEdge(time);
102                timerId = setTimeout(timerExpired, remainingWait(time))
103            }
104
105            function trailingEdge(time) {
106                return timerId = void 0, trailing && lastArgs ? invokeFunc(time) : (lastArg
106s = lastThis =
107                    void 0, result)
108            }
109
110            function cancel() {
111                void 0 !== timerId && clearTimeout(timerId), lastInvokeTime = 0, lastArgs = lastCallTime =
112                    lastThis = timerId = void 0
113            }
114
115            function flush() {
116                return void 0 === timerId ? result : trailingEdge(Date.now())
117            }
118
119            function debounced() {
120                for (var time = Date.now(), isInvoking = shouldInvoke(time), _len = arguments.length,
121                        args = Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
122                if (lastArgs = args, lastThis = this, lastCallTime = time, isInvoking) {
123                    if (void 0 === timerId) return leadingEdge(lastCallTime);
124                    if (maxing) return timerId = setTimeout(timerExpired, wait), invokeFunc(lastCallTime)
125                }
126                return void 0 === timerId && (timerId = setTimeout(timerExpired, wait)), result
127            }
128            return wait = +wait || 0, module.isObject(options) && (leading = !!options.leading, maxWait =
129                    (maxing = "maxWait" in options) ? Math.max(+options.maxWait || 0, wait) : maxWait,
130                    trailing = "trailing" in options ? !!options.trailing : trailing), debounced.cancel =
131                cancel, debounced.flush = flush, debounced
132        }, module.poll = function poll(fn, callback, errback, timeout, interval) {
133            var endTime = Number(new Date) + (timeout || 2e3);
134            interval = interval || 100,
135                function p() {
136                    fn() ? callback() : Number(new Date) < endTime ? setTimeout(p, interval) : errback(
137                        new Error("timed out for " + fn + ": " + arguments))
138                }()
139        }, module.throttle = function throttle(func, wait, options) {
140            var leading = !0,
141                trailing = !0;
142            if ("function" != typeof func) throw new TypeError("Expected a function");
143            return module.isObject(options) && (leading = "leading" in options ? !!options.leading :
144                    leading, trailing = "trailing" in options ? !!options.trailing : trailing), module
145                .debounce(func, wait, {
146                    leading: leading,
147                    maxWait: wait,
148                    trailing: trailing
149                })
150        }, module.once = function(fn, context) {
151            var result;
152            return function() {
153                return fn && (result = fn.apply(context || this, arguments), fn = null), result
154            }
155        }, module.memoize = function memoize(fn) {
156            return function() {
157                var args = Array.prototype.slice.call(arguments),
158                    hash = "",
159                    i = args.length,
160                    currentArg;
161                for (currentArg = null; i--;) hash += (currentArg = args[i]) === Object(currentArg) ?
162                    JSON.stringify(currentArg) : currentArg, fn.memoize || (fn.memoize = {});
163                return hash in fn.memoize ? fn.memoize[hash] : fn.memoize[hash] = fn.apply(this, args)
164            }
165        }, module.memoizeTimeout = function memoize(fn) {
166            var timeout = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1e3;
167            return function() {
168                var args = Array.prototype.slice.call(arguments),
169                    hash = "",
170                    i = args.length,
171                    currentArg, cacheValue;
172                for (currentArg = null; i--;) hash += (currentArg = args[i]) === Object(currentArg) ?
173                    JSON.stringify(currentArg) : currentArg, fn.memoizeByTimout || (fn
174                        .memoizeByTimout = {});
175                return fn.memoizeByTimout || (fn.memoizeByTimout = {}), hash in fn.memoizeByTimout &&
176                    (cacheValue = fn.memoizeByTimout[hash], new Date - cacheValue.time < timeout) ?
177                    cacheValue.data : ((cacheValue = {}).data = fn.apply(this, args), cacheValue
178                        .time = new Date, fn.memoizeByTimout[hash] = cacheValue, cacheValue.data)
179            }
180        }
181    }(window.utils = window.utils || {}),
182    function(module) {
183        function whenDonePromise(action, check) {
184            var promise;
185            return function(callback) {
186                promise || (promise = new Promise(function(resolve, reject) {
187                    action && check || reject(), action();
188                    var maxIntrvalCount = 500,
189                        interval = setInterval(function() {
190                            (maxIntrvalCount -= 1) < 0 && clearInterval(interval), check(
191                                function() {
192                                    clearInterval(interval), resolve()
193                                })
194                        }, 200)
195                })), promise.then(function() {
196                    callback()
197                })
198            }
199        }
200
201        function _initMap(mapId, mapConfig) {
202            var map;
203            return new ymaps.Map(mapId, mapConfig)
204        }
205
206        function _createPlacemark(coords) {
207            return new ymaps.Placemark(coords, {}, {
208                preset: "islands#violetDotIconWithCaption",
209                draggable: !0
210            })
211        }
212
213        function _addSearchPlacemark(map, coords, coordsChanges) {
214            var placemark = _createPlacemark(coords = coords || map.getCenter());
215            return map.geoObjects.add(placemark), placemark.events.add("dragend", function() {
216                coordsChanges && coordsChanges(placemark.geometry.getCoordinates())
217            }), map.events.add("click", function(e) {
218                var coords = e.get("coords");
219                placemark.geometry.setCoordinates(coords), coordsChanges && coordsChanges(coords)
220            }), coordsChanges(coords), placemark
221        }
222        module.ready = whenDonePromise(function() {
223            window.ymaps || $("<script/>").attr("src",
224                "https://api-maps.yandex.ru/2.1/?lang=ru_RU&mode=release").appendTo("head")
225        }, function(success) {
226            window.ymaps && ymaps.ready(function() {
227                success()
228            })
229        }), module.getMap = function(nodeId, mapConfig) {
230            var promise;
231            return new Promise(function(resolve, reject) {
232                module.ready(function() {
233                    var map = _initMap(nodeId, mapConfig);
234                    resolve(map)
235                })
236            })
237        }, module.destroyMap = function(map) {
238            map && map.destroy()
239        }, module.getAddressByCoords = function(coords) {
240            var promise;
241            return new Promise(function(resolve, reject) {
242                var wait;
243                whenDonePromise(function() {}, function(success) {
244                    ymaps.geocode && success()
245                })(function() {
246                    ymaps.geocode(coords).then(function(res) {
247                        var geoObject = res.geoObjects.get(0);
248                        resolve({
249                            name: geoObject.properties.get("name"),
250                            description: geoObject.properties.get(
251                                "description"),
252                            text: geoObject.properties.get("text")
253                        })
254                    }, function(err) {
255                        reject()
256                    })
257                })
258            })
259        }, module.getCoordsByAddress = function(address) {
260            var promise;
261            return new Promise(function(resolve, reject) {
262                ymaps.geocode(address, {
263                    results: 1
264                }).then(function(res) {
265                    var firstGeoObject, cords = res.geoObjects.get(0).geometry
266                        .getCoordinates();
267                    resolve(cords)
268                }, function(err) {
269                    reject()
270                })
271            })
272        }, module.centerMap = function(map, coords) {
273            map.setCenter(coords)
274        }, module.addPlacemark = function(map, placemark) {
275            if (null == map) return !1;
276            if (!placemark.coords) return !1;
277            var props = {};
278            if (null != placemark.text && placemark.text.length > 0) {
279                var value_view = "";
280                if (placemark.text.length > 0) {
281                    var rnpos = placemark.text.indexOf("\n");
282                    value_view = rnpos <= 0 ? placemark.text : placemark.text.substring(0, rnpos)
283                }
284                placemark.description ? props.balloonContent = placemark.description : props
285                    .balloonContent = placemark.text.replace(/\n/g, "<br />"), props.hintContent =
286                    value_view
287            }
288            var options = { balloonCloseButton: !0 };
289            if (placemark.icon) {
290                options.iconLayout = 'default#image';
291                options.iconImageHref = '/local/templates/medon/img/map-pin.svg';
292                options.iconImageSize = [60, 60];
293                options.iconImageOffset = [-30, -30];
294            }
295            var obPlacemark = new ymaps.Placemark(placemark.coords, props, options);
296            return map.geoObjects.add(obPlacemark), obPlacemark
297        }
298    }(window.mapService = window.mapService || {}),
299    function(module) {
300        function inViewport(element, options) {
301            var _element$getBoundingC = element.getBoundingClientRect(),
302                top = _element$getBoundingC.top,
303                right = _element$getBoundingC.right,
304                bottom = _element$getBoundingC.bottom,
305                left = _element$getBoundingC.left,
306                width = _element$getBoundingC.width,
307                height = _element$getBoundingC.height,
308                intersection_t = bottom,
309                intersection_r = window.innerWidth - left,
310                intersection_b = window.innerHeight - top,
311                intersection_l = right,
312                threshold_x = options.threshold * width,
313                threshold_y = options.threshold * height;
314            return intersection_t > options.offset.top + threshold_y && intersection_r > options.offset
315                .right + threshold_x && intersection_b > options.offset.bottom + threshold_y &&
316                intersection_l > options.offset.left + threshold_x
317        }
318        var inViewRegistry = function() {
319                function inViewRegistry(elements, options) {
320                    _classCallCheck(this, inViewRegistry), this.options = options, this.elements = elements,
321                        this.current = [], this.handlers = {
322                            enter: [],
323                            exit: []
324                        }, this.singles = {
325                            enter: [],
326                            exit: []
327                        }
328                }
329                return _createClass(inViewRegistry, [{
330                    key: "check",
331                    value: function check() {
332                        var _this = this;
333                        return this.elements.forEach(function(el) {
334                            var passes = _this.options.test(el, _this.options),
335                                index = _this.current.indexOf(el),
336                                current = index > -1,
337                                entered, exited = !passes && current;
338                            passes && !current && (_this.current.push(el), _this.emit(
339                                "enter", el)), exited && (_this.current.splice(
340                                index, 1), _this.emit("exit", el))
341                        }), this
342                    }
343                }, {
344                    key: "on",
345                    value: function on(event, handler) {
346                        return this.handlers[event].push(handler), this
347                    }
348                }, {
349                    key: "once",
350                    value: function once(event, handler) {
351                        return this.singles[event].unshift(handler), this
352                    }
353                }, {
354                    key: "emit",
355                    value: function emit(event, element) {
356                        for (; this.singles[event].length;) this.singles[event].pop()(
357                        element);
358                        for (var length = this.handlers[event].length; --length > -1;) this
359                            .handlers[event][length](element);
360                        return this
361                    }
362                }]), inViewRegistry
363            }(),
364            inView = function inView() {
365                if ("undefined" != typeof window) {
366                    var interval = 100,
367                        triggers = ["scroll", "resize", "load"],
368                        selectors = {
369                            history: []
370                        },
371                        options = {
372                            offset: {},
373                            threshold: 0,
374                            test: inViewport
375                        },
376                        check = utils.throttle(function() {
377                            selectors.history.forEach(function(selector) {
378                                selectors[selector].check()
379                            })
380                        }, 100);
381                    triggers.forEach(function(event) {
382                        return addEventListener(event, check)
383                    }), window.MutationObserver && addEventListener("DOMContentLoaded", function() {
384                        new MutationObserver(check).observe(document.body, {
385                            attributes: !0,
386                            childList: !0,
387                            subtree: !0
388                        })
389                    });
390                    var control = function control(selector) {
391                        if ("string" == typeof selector) {
392                            var elements = [].slice.call(document.querySelectorAll(selector));
393                            return selectors.history.indexOf(selector) > -1 ? selectors[selector]
394                                .elements = elements : (selectors[selector] = new inViewRegistry(elements,
395                                    options), selectors.history.push(selector)), selectors[selector]
396                        }
397                    };
398                    return control.offset = function(o) {
399                        if (void 0 === o) return options.offset;
400                        var isNum = function isNum(n) {
401                            return "number" == typeof n
402                        };
403                        return ["top", "right", "bottom", "left"].forEach(isNum(o) ? function(dim) {
404                            return options.offset[dim] = o
405                        } : function(dim) {
406                            return isNum(o[dim]) ? options.offset[dim] = o[dim] : null
407                        }), options.offset
408                    }, control.threshold = function(n) {
409                        return "number" == typeof n && n >= 0 && n <= 1 ? options.threshold = n : options
410                            .threshold
411                    }, control.test = function(fn) {
412                        return "function" == typeof fn ? options.test = fn : options.test
413                    }, control.is = function(el) {
414                        return options.test(el, options)
415                    }, control.offset(0), control
416                }
417            };
418        module.$ = inView()
419    }(window.inView = window.inView || {});
420var _createClass = function() {
421    function defineProperties(target, props) {
422        for (var i = 0; i < props.length; i++) {
423            var descriptor = props[i];
424            descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in
425                descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key,
426                    descriptor)
427        }
428    }
429    return function(Constructor, protoProps, staticProps) {
430        return protoProps && defineProperties(Constructor.prototype, protoProps), staticProps &&
431            defineProperties(Constructor, staticProps), Constructor
432    }
433}();
434
435function _classCallCheck(instance, Constructor) {
436    if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function")
437}
438jQuery(function($) {
439        var menu = document.getElementById("menu"),
440            header = document.getElementById("masterHeader"),
441            nav = document.getElementsByClassName("nav__geo")[0];
442        if (menu && nav) {
443            var btnToNavTop = document.getElementsByClassName("btn-to-nav__geo"),
444                height = "-" + nav.clientHeight + "px",
445                close = document.querySelector(".mobile-close"),
446                deskClose = document.querySelector(".header__close-city"),
447                mobileContainer = document.querySelector(".header__container-rMenu"),
448                desContainer = document.querySelector(".header__container-rDes"),
449                $menu = $(menu),
450                $nav = $(nav),
451                $mobileContainer = $(mobileContainer),
452                $desContainer = $(desContainer),
453                $btnMobile = $(".btn__mobile"),
454                $close = $(close),
455                isTouch = !1;
456            $menu.on("touchstart", function(e) {
457                isTouch = !0
458            }), $menu.on("click", function(e) {
459                e.preventDefault(), showCityMenu()
460            }), $menu.on("mouseenter", function() {
461                showCityMenu()
462            }), $close.on("click", function(e) {
463                e.preventDefault(), hideCityMenu()
464            }), $nav.on("mouseleave", function(e) {
465                hideCityMenu()
466            }), deskClose && (deskClose.onclick = function(e) {
467                e.preventDefault(), hideCityMenu()
468            })
469        }
470
471        function toggleClass(element, className) {
472            if (element && className) {
473                var classString = element.className,
474                    nameIndex = classString.indexOf(className); - 1 == nameIndex ? classString += " " +
475                    className : classString = classString.substr(0, nameIndex) + classString.substr(
476                        nameIndex + className.length), element.className = classString
477            }
478        }
479
480        function addClass(element, className) {
481            if (element && className) {
482                var classString = element.className,
483                    nameIndex; - 1 == classString.indexOf(className) && (classString += " " + className,
484                    element.className = classString)
485            }
486        }
487
488        function showCityMenu() {
489            var headerEl = document.querySelector('.header');
490            if (headerEl) { nav.style.top = headerEl.getBoundingClientRect().bottom + 'px'; }
491            $nav.addClass("show"), $mobileContainer.removeClass("hide"), $desContainer.addClass("hide"),
492                $("body").addClass("overflow"), $btnMobile.is(".active") && ($btnMobile.toggleClass(
493                    "active"), $(".mobile").toggleClass("display"))
494        }
495
496        function hideCityMenu() {
497            nav.style.top = '';
498            $nav.removeClass("show"), $mobileContainer.addClass("hide"), $desContainer.removeClass(
499                "hide"), $("body").removeClass("overflow")
500        }
501    }),
502        jQuery(function($) {
503            var btnMobile = document.querySelector(".btn__mobile");
504            btnMobile && btnMobile.addEventListener("click", function(e) {
505                this.classList.toggle("active"),
506                console.log(e.target);
507                document.querySelector(".mobile").classList.toggle("display");
508                document.querySelector("body").classList.toggle("overflow");
509            });
510
511            $('.js-nav-item-trigger').on('click', function(e) {
512                e.preventDefault();
513                $(this).parent().toggleClass('active');
514                $(this).parent().next().toggleClass('hide');
515            });
516    }), jQuery(function($) {
517        var tabs = document.getElementsByClassName("tabs"),
518            tabContent = document.getElementsByClassName("content"),
519            tabMobContent = document.getElementsByClassName("content-mobile"),
520            $tabs = $(".tabs"),
521            $tabContent = $(".content"),
522            $tabMobContent = $(".content-mobile"),
523            canClose = !0,
524            clearTimer = null,
525            clearTimerTime = 50,
526            isTouch = !1;
527
528        function startCloseTimer() {
529            clearTimer = setTimeout(function() {
530                closeTab(), clearTimer = null
531            }, clearTimerTime)
532        }
533
534        function clearCloseTimer() {
535            clearTimer && (clearTimeout(clearTimer), clearTimer = null)
536        }
537
538        function closeTab() {
539            clearCloseTimer(), $tabs.removeClass("selected"), $tabContent.addClass("hidden"),
540                $tabMobContent.addClass("hidden")
541        }
542
543        function animateScroll($tab) {
544            var windowWidth;
545            (window.innerWidth || $(window).width()) <= 640 && $("html, body").animate({
546                scrollTop: $tab.offset().top - 100
547            }, 200)
548        }
549
550        function selectTab($tab, index) {
551            clearCloseTimer(), closeTab(), $tab.addClass("selected"), $tabContent.eq(index).removeClass(
552                "hidden"), $tabMobContent.eq(index).removeClass("hidden")
553        }
554
555        $tabs.on("touchstart", function() {
556            isTouch = !0;
557            var $tab = $(this),
558                index = $tab.parent().index(),
559                iff;
560            $tab.is(".selected") ? closeTab() : (selectTab($tab, index))
561        });
562
563        $tabMobContent.on("touchstart", function(e) {
564            e.stopPropagation()
565        });
566
567
568        $(window).on('load resize', function() {
569
570            if ($(window).width() > 1025) {
571
572                console.log(1);
573                $tabs.on("mouseenter", function() {
574                    if (!isTouch) {
575                        var $tab = $(this),
576                            iff;
577                        $tab.is(".selected") || selectTab($tab, $tab.parent().index())
578                    }
579                });
580
581                $tabs.on("mouseleave", function() {
582                    var windowWidth;
583                    isTouch || (window.innerWidth || $(window).width()) <= 640 && startCloseTimer()
584                });
585            } else {
586                console.log(2);
587            }
588        }),
589
590
591
592        $(".filter").on("mouseenter", function() {
593            clearCloseTimer()
594        }),
595
596        $(".filter").on("mouseleave", function() {
597            startCloseTimer()
598        }),
599
600        $tabContent.on("mouseenter", function() {
601            clearCloseTimer()
602        }),
603
604        $tabContent.on("mouseleave", function() {
605            startCloseTimer()
606        }),
607
608        $tabContent.addClass("hidden"),
609
610        $tabMobContent.addClass("hidden")
611    }),
612        jQuery(function($) {
613        function getBalancerHeight($el, $elBalanced, height) {
614            if (!$elBalanced.length) return height;
615            var eheight = $elBalanced.height();
616            return eheight || height
617        }
618
619        function balancerPageBody() {
620            $(".page-body").each(function() {
621                var textEl = $(this),
622                    textElHeight = textEl.height(),
623                    textElHeightLimit = textEl.data("character-height");
624                if (textElHeightLimit && !textEl.is(".open")) {
625                    var temporaryElHeight2 = getBalancerHeight(textEl, textEl.find(".page-body__balanced"), textElHeightLimit);
626                    textEl.css("height", temporaryElHeight2 + "px")
627                }
628            })
629        }
630        $(".page-body").each(function() {
631            var textEl = $(this),
632                textElCharacterLimitDefault = textEl.data("rows-limit");
633
634            if (textEl.find(".page-body").length) {
635                textEl.find(".page-body .inner-content").removeClass("inner-content");
636                textEl.find(".page-body").removeClass("page-body show-more").attr("data-skip", true);
637            }
638
639            if (textEl.data("skip")) {
640                return;
641            }
642
643            // rows-limit
644            if (textElCharacterLimitDefault) {
645                var textElCharacters = textEl.html().length,
646                    showMoreText = textEl.data("show-more"),
647                    showLessText = textEl.data("show-less"),
648                    textElCharacterLimitSizes = textEl.data("rows-sizes"),
649                    textElCharacterLimit = getRowsLimit(),
650                    heights = getRowsHeights(textEl, textElCharacterLimit),
651                    textElHeight,
652                    maxHeight = heights[textElCharacterLimit];
653                
654                textEl.find('h1').each(function() {
655                    maxHeight += $(this).height();
656                });
657
658                if (textEl.height() > maxHeight) {
659                    var temporaryElHeight = maxHeight;
660                    textEl.addClass("show-more").html('<div class="inner-content">' + textEl.html() + "</div>");
661                    textEl.css("height", temporaryElHeight + "px");
662                    $('<a href="javascript:void(0);" id="show-more-link" class="show-more-link callback__show">' + showMoreText + "</a>").insertAfter(textEl);
663
664                    textEl.siblings(".show-more-link").on("click", function() {
665                        var $this = $(this),
666                            innerContentHeight = textEl.find(".inner-content").height();
667
668                        if (textEl.height() < innerContentHeight) {
669                            $this.html(showLessText),
670                            $this.addClass("callback__showed"),
671                            textEl.css("height", innerContentHeight + "px").addClass("open");
672                            var timer = setTimeout(function() {
673                                textEl.css("height", "")
674                            }, 800)
675                        } else {
676                            $this.html(showMoreText),
677                            $this.removeClass("callback__showed"),
678                            textEl.css("height", innerContentHeight + "px");
679                            var _timer = setTimeout(function() {
680                                textEl.css("height", temporaryElHeight + "px")
681                                    .removeClass("open")
682                            }, 10)
683                        }
684                    })
685                }
686            }
687
688            function getRowsLimit() {
689                var winWidth = $(window).width(),
690                    limit = void 0,
691                    limitBreakpoint = void 0;
692                return $.each(textElCharacterLimitSizes, function(breakpoint, value) {
693                    !limit && breakpoint > winWidth ? (limit = value, limitBreakpoint =
694                            breakpoint) : limitBreakpoint && breakpoint <
695                        limitBreakpoint && (limit = value, limitBreakpoint = breakpoint)
696                }), limit || textElCharacterLimitDefault
697            }
698
699            function getRowsHeights(el, maxRowsLimit) {
700                var html = el.html();
701                el.addClass("show-more").append('<div class="temporary-el"></div>');
702                var heigths = [0],
703                    temporaryEl = el.find(".temporary-el"),
704                    len = html.length,
705                    height = 0,
706                    reg = /<[^>]+>/,
707                    i = 1;
708                if (null !== html.search(reg)) {
709                    var matches = html.match(reg);
710                    matches && matches.length && matches[0] && (i = matches[0].length + 1)
711                }
712                for (; i < len; i += 20) {
713                    var newHtml = html.substr(0, i);
714                    if (temporaryEl.html(newHtml), height < temporaryEl.height() && (height =
715                            temporaryEl.height(), heigths.push(height)), maxRowsLimit < heigths
716                        .length) break
717                }
718                return temporaryEl.remove(), el.removeClass("show-more"), heigths
719            }
720
721
722            // character-limit
723            var textElHeight = textEl.height(),
724                textElCharacters = textEl.html().length,
725                textElCharacterLimit = textEl.data("character-limit"),
726                showMoreText = textEl.data("show-more"),
727                showLessText = textEl.data("show-less"),
728                el, html;
729            if (($(window).width() < 481 && textEl.data("character-limitphone") ?
730                    textElCharacterLimit = textEl.data("character-limitphone") : $(window)
731                .width() < 769 && textEl.data("character-limittablet") ? textElCharacterLimit =
732                    textEl.data("character-limittablet") : $(window).width() < 1016 && textEl
733                    .data("character-limitdesk") && (textElCharacterLimit = textEl.data(
734                        "character-limitdesk")), textElCharacterLimit) && textElCharacters >
735                textElCharacterLimit) {
736                var oldHtml = textEl.html();
737                textEl.addClass("show-more").append('<div class="temporary-el">' + textEl.html()
738                    .substr(0, textElCharacterLimit) + "</div>").html(
739                    '<div class="inner-content">' + textEl.html() + "</div>");
740                var temporaryEl = $(".temporary-el"),
741                    temporaryElHeight = temporaryEl.height();
742                temporaryEl.remove(), textEl.css("height", temporaryElHeight + "px"), el = textEl[
743                    0], html = oldHtml, $(el).on("get-character.by-height", function(e,
744                    height) {
745                    var $inner = $(this).find(".inner-content");
746                    $inner.append('<div class="temporary-el"> </div>');
747                    for (var $temp = $inner.find(".temporary-el"), len = html
748                        .length; len--;) {
749                        var newHtml = html.substr(0, len);
750                        if ($temp.html(newHtml), $temp.height() < height) break
751                    }
752                    $temp.remove()
753                }), $(
754                    '<a href="javascript:void(0);" id="show-more-link" class="show-more-link callback__show">' +
755                    showMoreText + "</a>").insertAfter(textEl), textEl.siblings(
756                    ".show-more-link").on("click", function() {
757                    var $this = $(this),
758                        innerContentHeight = textEl.find(".inner-content").height();
759                    if (textEl.height() < innerContentHeight) {
760                        $this.html(showLessText), $this.addClass("callback__showed"),
761                            textEl.css("height", innerContentHeight + "px").addClass(
762                                "open");
763                        var timer = setTimeout(function() {
764                            textEl.css("height", "")
765                        }, 800)
766                    } else {
767                        $this.html(showMoreText), $this.removeClass("callback__showed"),
768                            textEl.css("height", innerContentHeight + "px");
769                        var _timer2 = setTimeout(function() {
770                            textEl.css("height", temporaryElHeight + "px")
771                                .removeClass("open")
772                        }, 10)
773                    }
774                })
775            }
776
777
778            // character-height
779            var textElHeight = textEl.height(),
780                textElHeightLimit = textEl.data("character-height"),
781                showMoreText = textEl.data("show-more"),
782                showLessText = textEl.data("show-less");
783            if (textElHeightLimit && textElHeight > textElHeightLimit) {
784                textEl.addClass("show-more").append('<div class="temporary-el">' + textEl.html()
785                    .substr(0, textElHeightLimit) + "</div>").html(
786                    '<div class="inner-content">' + textEl.html() + "</div>");
787                var temporaryEl = $(".temporary-el"),
788                    temporaryElHeight = textElHeightLimit;
789                temporaryEl.remove(), textEl.css("height", temporaryElHeight + "px"), $(
790                    '<a href="javascript:void(0);" id="show-more-link" class="show-more-link callback__show">' +
791                    showMoreText + "</a>").insertAfter(textEl), textEl.siblings(
792                    ".show-more-link").on("click", function() {
793                    var $this = $(this),
794                        innerContentHeight = textEl.find(".inner-content").height();
795                    if (textEl.height() < innerContentHeight) {
796                        $this.html(showLessText), textEl.css("height",
797                            innerContentHeight + "px").addClass("open");
798                        var timer = setTimeout(function() {
799                            textEl.css("height", "")
800                        }, 800)
801                    } else {
802                        var temporaryElHeight2 = getBalancerHeight(textEl, textEl.find(
803                            ".page-body__balanced"), temporaryElHeight);
804                        $this.html(showMoreText), textEl.css("height",
805                            innerContentHeight + "px");
806                        var _timer3 = setTimeout(function() {
807                            textEl.css("height", temporaryElHeight2 + "px")
808                                .removeClass("open")
809                        }, 10)
810                    }
811                })
812            }
813        }), balancerPageBody(), $(window).resize(balancerPageBody)
814    }), jQuery(function($) {
815        var stickyElement = $(".sticky-element"),
816            stickyElementPositioner = $(".footer__top"),
817            header = $(".subheader");
818
819        function stickyElementFixed() {
820            stickyElement.addClass("sticky-element-sticky")
821        }
822
823        function stickyElementStatic() {
824            stickyElement.removeClass("sticky-element-sticky")
825        }
826        stickyElement.length && stickyElementPositioner.length && $(window).scroll(function() {
827            var elementTarget = stickyElementPositioner.offset().top,
828                scrollTop = $(window).scrollTop() + $(window).height(),
829                elementTrigger = header.offset().top,
830                scrollBottom = $(window).scrollTop();
831            scrollTop <= elementTarget && scrollBottom >= elementTrigger ? stickyElementFixed() :
832                stickyElementStatic()
833        })
834    }),
835    jQuery(function($) {
836        var stickyElement = $(".subheader"),
837            stickyElementPositioner = $(".subheader-wrapper"),
838            header = $(".filter");
839        var stickyHeaderMob = $(".header__mobile").not(".header__mobile--last");
840
841        function stickyElementFixed() {
842            stickyElement.addClass("subheader_fixed"),
843            stickyElementPositioner.addClass("subheader-wrapper_fixed");
844            stickyHeaderMob.addClass("is-fixed");
845        }
846
847        function stickyElementStatic() {
848            stickyElement.removeClass("subheader_fixed"),
849            stickyElementPositioner.removeClass("subheader-wrapper_fixed");
850            stickyHeaderMob.removeClass("is-fixed");
851        }
852
853        header.length || (header = $(".header-post")),
854        stickyElement.length && stickyElementPositioner.length && $(window).scroll(function() {
855            if (!$('body').hasClass('static-header')) {
856                var elementTarget = stickyElementPositioner.offset().top,
857                    scrollTop = $(window).scrollTop() + $(window).height(),
858                    elementTrigger = header.offset().top,
859                    scrollBottom = $(window).scrollTop();
860
861                scrollTop >= elementTarget && scrollBottom >= elementTrigger ? stickyElementFixed() : stickyElementStatic()
862            }
863        })
864    }),
865    function() {
866        function sameHeights() {
867            helper("contacts__adr"), helper("contacts__metro")
868        }
869
870        function helper(className) {
871            var $nodeList = $("." + className);
872            if ($nodeList) {
873                var heights = [];
874                $nodeList.each(function() {
875                    this.style.height = "", heights.push($(this).height())
876                });
877                var tallest = Math.max.apply(Math, heights),
878                    smallest = Math.min.apply(Math, heights),
879                    tallestIndex = -1;
880                tallest != smallest && ($(heights).each(function(i, height) {
881                    -1 == tallestIndex && height == tallest && (tallestIndex = i)
882                }), $nodeList.each(function(i) {
883                    i != tallestIndex && (this.style.height = tallest + "px")
884                }))
885            }
886        }
887        var resized = !0,
888            timeout = null,
889            refresh = function refresh() {
890                resized ? (requestAnimationFrame(sameHeights), timeout = setTimeout(refresh, 100), resized = !
891                    1) : timeout && (clearTimeout(timeout), timeout = null)
892            },
893            refreshD = utils.throttle(sameHeights, 17);
894        window.addEventListener("resize", function() {
895            refreshD()
896        }), refreshD(), $.each([100, 200, 500, 1500, 4e3, 8e3, 16e3, 32e3], function(i, t) {
897            setTimeout(function() {
898                refreshD()
899            }, t)
900        }), window.contacts__metro__set_resize = function() {
901            refreshD()
902        }
903    }(), jQuery(function($) {
904        $(".slider-wrapper").each(function() {
905            var currentslide = 0,
906                $sliderWrapper = $(this),
907                backgroundContainer = $sliderWrapper.data("background-container"),
908                $backgroundContainer, $slider = $sliderWrapper.find(".slider-item"),
909                $next = $sliderWrapper.find(".next"),
910                $prev = $sliderWrapper.find(".prev"),
911                interval;
912
913            function slide() {
914                var item = $slider.eq(currentslide);
915                $slider.hide(), item.css("display", "inline-block"), item.data(
916                    "background-style") && $backgroundContainer.attr("style", item.data(
917                        "background-style"))
918            }
919
920            function next() {
921                (currentslide += 1) > $slider.length - 1 && (currentslide = 0), slide()
922            }
923
924            function prev() {
925                (currentslide -= 1) < 0 && (currentslide = $slider.length - 1), slide()
926            }
927
928            function clear() {
929                clearInterval(interval)
930            }
931            backgroundContainer && (($backgroundContainer = $sliderWrapper.find(
932                backgroundContainer)).length || ($backgroundContainer = $sliderWrapper
933                .closest(backgroundContainer))), slide(), $next.on("click", next), $prev.on(
934                "click", prev)
935        })
936    }), $(document).ready(function($) {
937        $(".btnOpenForm").on("click", function(event) {
938            event.preventDefault(), $.ajax({
939                url: $(this).attr("href") ? $(this).attr("href") : $(this).data("url")
940            }).done(function(data) {
941                var $data = $(data);
942                $data.appendTo("body"), $.fn.webform && $data.find(".js-webform")
943                .webform(), $("html").addClass("fixForModelForm");
944                for (var inputs = document.getElementsByTagName("input"), i = 0; i <
945                    inputs.length; i++)
946                    if ("js-blink-input" == document.getElementsByTagName("input")[i]
947                        .id) {
948                        var id = document.getElementsByTagName("input")[i].id,
949                            elem = document.getElementById(id);
950                        elem.parentNode.removeChild(elem)
951                    } $(".form-popup-bg").addClass("is-visible"), $(".form-popup-bg").on(
952                    "click",
953                    function(event) {
954                        ($(event.target).is(".form-popup-bg") || $(event.target).is(
955                            ".close-button")) && (event.preventDefault(), $(this)
956                            .remove(), $("html").removeClass("fixForModelForm"))
957                    })
958            }).fail(function(xhr) {
959                console.log("error", xhr)
960            })
961        })
962    }), $(document).ready(function($) {
963        $(".btnOpenGal").on("click", function(event) {
964            event.preventDefault(), $("body").append(
965                '<div class="form-popup-bg form-popup-bg_img"><div class="form-popup-bg_img-close-area"></div><div class="form-container img-container"><span class="close-button"></span><img src="' +
966                $(this).attr("href") + '"></div></div>'), $(".form-popup-bg").addClass(
967                "is-visible"), $(".form-popup-bg").on("click", function(event) {
968                ($(event.target).is(".form-popup-bg") || $(event.target).is(
969                    ".close-button")) && (event.preventDefault(), $(this).remove(), $(
970                    document).off("keyup.popup-img"))
971            }), $(document).on("keyup.popup-img", function handler(e) {
972                27 === e.keyCode && $(".close-button").click()
973            })
974        }), $(".btnOpenPhoto").on("click", function(event) {
975            event.preventDefault(), $("body").append(
976                '<div class="form-popup-bg form-popup-bg_img"><div class="form-popup-bg_img-close-area"></div><div class="form-container img-container form-img"><div class="gallery__arrow-prev"  id="prevp"></div><div id="nextp" class="gallery__arrow-next"></div><span class="close-button"></span><img src="' +
977                $(this).attr("href") + '" alt="' + $(this).attr("alt") +
978                '"><p class="photo-text">' + $(this).attr("data") + "</p></div></div>"), $(
979                ".form-popup-bg").addClass("is-visible");
980            var id = $(this).data("id"),
981                galleryId = $(this).closest(".gallery").data("gallery"),
982                imgs = galleryImgs[galleryId],
983                imgcount = imgs.length,
984                currentIndex = 0;
985
986            function getCurrentIndex(id) {
987                for (var index = 0, i = 0; i < imgs.length; i++) id == imgs[i].id && (id = i);
988                return id
989            }
990
991            function showImg(img) {
992                $(".img-container").find("img").not(".close-button").attr("src", img.big_img)
993                    .attr("alt", img.name), $(".img-container").find(".photo-text").text(img.name)
994            }
995            currentIndex = getCurrentIndex(id), showImg(imgs[currentIndex]), $("#nextp").click(
996                function() {
997                    (currentIndex += 1) >= imgs.length && (currentIndex = 0), showImg(imgs[
998                        currentIndex])
999                }), $("#prevp").click(function() {
1000                (currentIndex -= 1) < 0 && (currentIndex = imgs.length - 1), showImg(imgs[
1001                    currentIndex])
1002            }), $(".form-popup-bg").on("click", function(event) {
1003                ($(event.target).is(".form-popup-bg") || $(event.target).is(
1004                    ".close-button")) && (event.preventDefault(), $(this).remove(), $(
1005                    document).off("keyup.popup-img"))
1006            }), $(document).on("keyup.popup-img", function handler(e) {
1007                27 === e.keyCode && $(".close-button").click()
1008            })
1009        })
1010    }), $(document).ready(function($) {
1011        if (window.addressWorkTime) {
1012            var workTimes = addressWorkTime,
1013                $workTime = $(".footer__metro"),
1014                index = 0;
1015            $workTime.on("click", ".footer__prev-btn", prev), $workTime.on("click", ".footer__next-btn",
1016                next)
1017        }
1018
1019        function changeTime(index) {
1020            var workTime = workTimes[index],
1021                $times = $workTime.find(".footer__metro-work .footer__metro-hours");
1022            $times.eq(0).text(workTime.worktime), $times.eq(1).text(workTime.worktime_saturday), $times
1023                .eq(2).text(workTime.worktime_sunday), $workTime.find(".footer__metro-name").text(workTime
1024                    .metro), $workTime.find(".metro-svg").attr("fill", workTime.metro_color_line)
1025        }
1026
1027        function prev() {
1028            (index -= 1) < 0 && (index = workTimes.length - 1), changeTime(index)
1029        }
1030
1031        function next() {
1032            (index += 1) >= workTimes.length && (index = 0), changeTime(index)
1033        }
1034    });
1035var VideoGallery = function() {
1036    function VideoGallery(videos, section, parent, $parent) {
1037        _classCallCheck(this, VideoGallery), this.videos = videos, this.section = section, this.parent =
1038            parent, this.slideIndex = 0, $parent && $parent.length || ($parent = $("." + section)),
1039            $parent.append(
1040                '<div class="form-popup-bg form-popup-bg_video"><div class="form-popup-bg_video-close-area"></div><div class="form-container video-container form-img form-popup-bg_one"><div class="gallery__arrow-prev"></div><div class="gallery__arrow-next"></div><span class="close-button"></span></div></div>'
1041                ), this.loadImages()
1042    }
1043    return _createClass(VideoGallery, [{
1044        key: "loadImages",
1045        value: function loadImages() {
1046            var _this = this,
1047                counter = 0;
1048            $.each(this.videos, function(i) {
1049                $(".form-popup-bg > .video-container").append(
1050                    '<div class="gallery-slides"><iframe width="780px" height="450" src="' +
1051                    _this.videos[i].video +
1052                    `" frameborder="0"  allowfullscreen></iframe><p class="video-text"> </p></div>"`), counter++
1053            })
1054        }
1055    }, {
1056        key: "openModal",
1057        value: function openModal(arg) {
1058            $(".form-popup-bg").addClass("is-visible"), this.currentSlide(arg)
1059        }
1060    }, {
1061        key: "openModalLink",
1062        value: function openModalLink(link) {
1063            $(".form-popup-bg > .video-container").append(
1064                    '<div class="gallery-slides"><iframe width="780px" height="450" src="' +
1065                    link + '" frameborder="0"  allowfullscreen></iframe></div>'), $(
1066                    ".form-popup-bg").addClass("is-visible"), $(".form-popup-bg")
1067                .addClass("form-popup-bg_one")
1068        }
1069    }, {
1070        key: "closeModal",
1071        value: function closeModal() {
1072            $(".form-popup-bg").removeClass("is-visible"), $(".form-popup-bg").remove()
1073        }
1074    }, {
1075        key: "currentSlide",
1076        value: function currentSlide(id) {
1077            for (var index = 0, i = 0; i < this.videos.length; i++) id == this.videos[i]
1078                .id && (id = i);
1079            this.showSlides(this.slideIndex = id)
1080        }
1081    }, {
1082        key: "changeSlide",
1083        value: function changeSlide(arg) {
1084            this.showSlides(this.slideIndex += arg)
1085        }
1086    }, {
1087        key: "showSlides",
1088        value: function showSlides(arg) {
1089            var i = void 0,
1090                slides = $(".gallery-slides");
1091            for (arg >= slides.length && (this.slideIndex = 0), arg < 0 && (this
1092                    .slideIndex = slides.length - 1), i = 0; i < slides.length; i++)
1093                slides[i].style.display = "none";
1094            slides[this.slideIndex].style.display = "block"
1095        }
1096    }]), VideoGallery
1097}();
1098$(document).ready(function($) {
1099        var gallery;
1100        $(".btnOpenVid").click(function(e) {
1101            e.preventDefault();
1102            var $this = $(this),
1103                id = $this.data("id"),
1104                videoLink = $this.attr("href") || $this.data("href"),
1105                galleryId = $this.closest(".galleryVid").data("gallery"),
1106                videos = window.galleryVideos && galleryVideos[galleryId] || [],
1107                gallery, gallery;
1108            !videos.length && videoLink ? (gallery = new VideoGallery(videos, "galleryVid",
1109                "btnOpenVid", $this.closest(".galleryVid"))).openModalLink(videoLink) : ((
1110                    gallery = new VideoGallery(videos, "galleryVid", "btnOpenVid", $this
1111                        .closest(".galleryVid"))).openModal(id), $(".gallery__arrow-prev")
1112                .click(function() {
1113                    gallery.changeSlide(-1)
1114                }), $(".gallery__arrow-next").click(function() {
1115                    gallery.changeSlide(1)
1116                }));
1117            $(".close-button").click(function() {
1118                gallery.closeModal()
1119            }), $(".form-popup-bg_video-close-area").click(function() {
1120                gallery.closeModal()
1121            })
1122        })
1123    }), $(".slide-container").each(function() {
1124        var currentslide = 0,
1125            $slider = $(this).find(".slide-item"),
1126            $parent = $(this),
1127            $next = $parent.find(".slide-next"),
1128            $prev = $parent.find(".slide-prev"),
1129            interval;
1130
1131        function slide() {
1132            var item = $slider.eq(currentslide);
1133            $slider.addClass("slide-hide"), $slider.removeClass("slide-active"), item.addClass(
1134                "slide-active")
1135        }
1136
1137        function next() {
1138            (currentslide += 1) > $slider.length - 1 && (currentslide = 0), slide()
1139        }
1140
1141        function prev() {
1142            (currentslide -= 1) < 0 && (currentslide = $slider.length - 1), slide()
1143        }
1144
1145        function clear() {
1146            clearInterval(interval)
1147        }
1148        slide(), $next.on("click", next), $prev.on("click", prev)
1149    }), $(document).ready(function() {
1150        $(".container").each(function() {
1151            var highestBox = 0;
1152            $(".column", this).each(function() {
1153                $(this).height() > highestBox && (highestBox = $(this).height())
1154            }), $(".column", this).height(highestBox)
1155        })
1156    }), $(document).ready(function() {
1157        function balancer() {
1158            $(".column-container").each(function() {
1159                var height = $(".resizeMain", this).height();
1160                $(".resizeItem", this).css("max-height", height + "px")
1161            })
1162        }
1163        balancer(), $(window).resize(balancer)
1164    }), jQuery(function($) {
1165        var $carousel = $(".slick-carousel");
1166        $carousel.length && ($carousel.on("init", function() {
1167            var $last;
1168            $(this).find(".slick-track .slick-active").last().addClass("slick-active_last")
1169        }), $carousel.on("beforeChange", function(slider, domSlider, slide, animSlide) {
1170            var $last, $next, $prev, $last;
1171            ($last = $(this).find(".slick-active_last")).length ? slide 
1171< animSlide ? ($last
1172                .next().addClass("slick-active_last"), $last.removeClass(
1173                    "slick-active_last")) : ($last.prev().addClass("slick-active_last"),
1174                $last.removeClass("slick-active_last")) : ($last = $(this).find(
1175                ".slick-track .slick-active").last()).addClass("slick-active_last")
1176        }), $carousel.on("setPosition", function(e, c) {
1177            var $last, $last;
1178            ($last = $(this).find(".slick-active_last")).removeClass("slick-active_last"), (
1179                $last = $(this).find(".slick-track .slick-active").last()).addClass(
1180                "slick-active_last")
1181        }), $carousel.slick({
1182            infinite: !0,
1183            slidesToShow: 4,
1184            slidesToScroll: 1,
1185            arrows: !0,
1186            dots: !0,
1187            nextArrow: '<div class="slide__arrow-next"></div>',
1188            prevArrow: '<div class="slide__arrow-prev"></div>',
1189            customPaging: function customPaging(slider, i) {
1190                var thumb = $(slider.$slides[i]).data();
1191                return "<a></a>"
1192            },
1193            responsive: [{
1194                breakpoint: 1100,
1195                settings: {
1196                    slidesToShow: 3
1197                }
1198            }, {
1199                breakpoint: 860,
1200                settings: {
1201                    slidesToShow: 2
1202                }
1203            }, {
1204                breakpoint: 660,
1205                settings: {
1206                    slidesToShow: 1
1207                }
1208            }]
1209        }))
1210    }), $(document).ready(function() {
1211        if ($(".slick-banner").length) {
1212            var autoplaySpeed = 4e3;
1213            $(".slick-banner").on("init", function() {
1214                var self = this;
1215                setTimeout(function() {
1216                    var $this = $(self);
1217                    setSlideTimout($this), $this.slick("slickPlay")
1218                }, 0)
1219            }), $(".slick-banner").on("afterChange", function() {
1220                var $this;
1221                setSlideTimout($(this))
1222            }), jQuery(".slick-banner").slick({
1223                infinite: !0,
1224                slidesToShow: 1,
1225                slidesToScroll: 1,
1226                arrows: !0,
1227                dots: !0,
1228                autoplay: !0,
1229                nextArrow: '<div class="banner__arrow-next"></div>',
1230                prevArrow: '<div class="banner__arrow-prev"></div>',
1231                appendArrows: $(".slick-banner_arrows-wrapper"),
1232                slide: "div.banner",
1233                customPaging: function customPaging(slider, i) {
1234                    var thumb = $(slider.$slides[i]).data();
1235                    return "<a></a>"
1236                }
1237            })
1238        }
1239
1240        function setSlideTimout($slider) {
1241            var speed = $slider.find(".slick-active").data("time-display");
1242            speed ? speed *= 1e3 : speed = autoplaySpeed, $slider.slick("slickSetOption", "autoplaySpeed",
1243                speed)
1244        }
1245    }), $(document).ready(function($) {
1246        $(".price-hide-analysis").on("click", function() {
1247            $(".price-analysis").hide(), $(".price-show-analysis").attr("style", "")
1248        }), $(".price-show-analysis").on("click", function() {
1249            $(".price-analysis").show(), $(".price-show-analysis").hide()
1250        })
1251    }), $(document).ready(function($) {
1252        var tabs = $(".tabss .contacts__notes");
1253        tabs.click(function(e) {
1254            e.preventDefault();
1255            var $this = $(this),
1256                $link = $(this).find("a");
1257            tabs.removeClass("activer"), tabs.find("a").removeClass("active"), $this.addClass(
1258                "activer"), $link.addClass("active"), $(".contacts__content").find(
1259                ".contacts-item__how").hide();
1260            var index = $this.closest(".contacts__col").index(),
1261                $contacts, $next, $hows;
1262            $this.closest(".contacts").next(".contacts__content").find(".contacts-item__how").eq(
1263                index).fadeIn(200)
1264        }), tabs.eq(0).trigger("click")
1265    }),
1266    function($, window, document, undefined) {
1267        var $html = $("html");
1268
1269        function updateSvg() {
1270            $(".c-dropdown__list").find("svg").each(function() {
1271                $(this).parent().hide()
1272            }), $(".c-dropdown__list").find("svg").each(function() {
1273                $(this).parent().show()
1274            })
1275        }
1276        $html.on("click.ui.dropdown", ".js-dropdown", function(e) {
1277            e.preventDefault(), $(this).toggleClass("is-open"), $(this).is(".is-open") && (
1278            updateSvg(), window.contacts__metro__set_resize && contacts__metro__set_resize())
1279        }),
1280        $html.on("click.ui.dropdown", ".js-dropdown [data-dropdown-value]", function(e) {
1281            e.preventDefault();
1282            var $item = $(this),
1283                $dropdown = $item.parents(".js-dropdown");
1284            $dropdown.find(".js-dropdown__input").val($item.data("dropdown-value")).trigger("keyup"), $dropdown.find(
1285                ".js-dropdown__current").text($item.data("dropdown-value")), $dropdown.find(
1286                ".js-dropdown__current").addClass("c-button--dropdown_selected")
1287        }),
1288        $html.on("keyup", ".js-dropdown-search-input", function(e) {
1289            var dropdown = $(this).closest('.js-dropdown'),
1290                noResult = dropdown.find(".js-dropdown-search-no-result"),
1291                items = dropdown.find('[data-dropdown-value]'),
1292                query = $(this).val(),
1293                count = 0;
1294
1295            noResult.hide();
1296            items.show();
1297            items.each(function() {
1298                $(this).html($(this).data("dropdown-value"));
1299
1300                if (query.length > 0) {
1301                    if ($(this).data("dropdown-value").toUpperCase().indexOf(query.toUpperCase()) < 0) {
1302                        $(this).hide();
1303                    }
1304                    else {
1305                        $(this).html($(this).data("dropdown-value").replace(RegExp(query, 'ig'), '<span class="highlight">$&</span>'));
1306                        count++;
1307                    }
1308                }
1309            });
1310
1311            if (query.length > 0) {
1312                dropdown.addClass("is-open");
1313
1314                if (count === 0)
1315                    noResult.show();
1316            }
1317        }),
1318        $html.on("click.ui.dropdown", function(e) {
1319            var $target;
1320            $(e.target).parents().hasClass("js-dropdown") || $(".js-dropdown").removeClass("is-open");
1321
1322            if (!$(e.target).closest("[data-dropdown-value]").length) {
1323                var $input = $(".js-dropdown-search-input");
1324                if ($input.closest('.js-dropdown').find('[data-dropdown-value="' + $input.val() + '"]').length === 0)
1325                    $input.val("").trigger("keyup");
1326            }
1327        }),
1328        $("body").on("click", ".js-dropdown-reset", function() {
1329            $(".js-dropdown__current").each(function() {
1330                var $current = $(this);
1331                $current.text($current.data("default")), $current.removeClass(
1332                    "c-button--dropdown_selected")
1333            }), $(".js-dropdown__input").each(function() {
1334                var $input = $(this);
1335                $input.val($input.data("default"))
1336            }), $(".js-dropdown-search-input").trigger("keyup")
1337        })
1338    }(jQuery, window, document), $(".contacts__show-more").on("click", function() {
1339        var $this = $(this),
1340            activeClass = "active";
1341        $this.is(".active") ? ($this.removeClass("active"), $this.siblings(".contacts__content-hide")
1342            .fadeOut(200)) : ($this.addClass("active"), $this.siblings(".contacts__content-hide")
1343            .fadeIn(200))
1344    }), $(".js-contacts__show-more").on("click", function() {
1345        var $this = $(this),
1346            activeClass = "active";
1347        $this.is(".active") ? ($this.removeClass("active"), $this.siblings(".contacts__content-hide2")
1348            .fadeOut(200)) : ($this.addClass("active"), $this.siblings(".contacts__content-hide2")
1349            .fadeIn(200))
1350    }), jQuery(function($) {
1351        $(".whatwedo-check-black").find(".whatwedo__list li").each(function() {
1352            var $this = $(this);
1353            $this.find("a").length || $this.addClass("whatwedo__list__black")
1354        })
1355    }), jQuery(function($) {
1356        $(".flex-column-count").each(function() {
1357            var $flex = $(this),
1358                maxColumns = $flex.data("cols-limit"),
1359                gap = $flex.data("gap-limit"),
1360                $childs = $flex.children(),
1361                count = $childs.length,
1362                heights = [];
1363            $childs.each(function() {
1364                var $this = $(this);
1365                heights.push($this.height())
1366            });
1367            var maxHeight = Math.max.apply(Math, heights),
1368                rowsInColumn, newFlexHeight = Math.ceil(count / maxColumns) * maxHeight + "px";
1369            $flex.css("height", newFlexHeight);
1370            var widths = [];
1371            $childs.each(function() {
1372                var $this = $(this);
1373                widths.push($this.width())
1374            });
1375            var maxWidth = Math.max.apply(Math, widths);
1376
1377            function getNewHeight() {
1378                for (var flexWidth = $flex.width(), columns = maxColumns, columnsWidth =
1379                        maxWidth * columns + gap * (columns - 1); flexWidth + 1 < columnsWidth &&
1380                    (columnsWidth = maxWidth * --columns + gap * (columns - 1), columns););
1381                var rowsInColumn, newFlexHeight;
1382                return columns < 1 && (columns = 1), Math.ceil(count / columns) * maxHeight + "px"
1383            }
1384
1385            function reCalcHeight() {
1386                $flex.css("height", getNewHeight())
1387            }
1388            reCalcHeight(), $(window).on("resize", utils.debounce(reCalcHeight, 100))
1389        })
1390    }),
1391    function() {
1392        var nav$ = $(".clinicsNav");
1393        if (nav$.length) {
1394            var document$ = $(document),
1395                wndw$ = $(window),
1396                navTop, navHeight, Anchor1, Anchor2, Anchor2_2, Anchor3, Anchor4, Anchor5, Anchor6, Anchor7,
1397                last_dheight = 0,
1398                anhorIds = ["content-contraindication", "content-treatment_benef
1398its",
1399                    "content-treatment_plan", "content-appointment", "content-doctors", "content-reviews",
1400                    "content-prices", "content-map"
1401                ],
1402                anhors = [];
1403            calcOffset(), $([500, 1500, 4e3, 6e3, 1e4, 15e3]).each(function(i, time) {
1404                setTimeout(calcOffset, time), setTimeout(onScoll, time)
1405            }), $(window).on("resize", utils.debounce(calcOffset, 100)), wndw$.scroll(utils.throttle(
1406                onScoll, 50)), nav$.find("a").on("click", function(e) {
1407                e.preventDefault();
1408                var this$;
1409                var link = $(this).attr("href");
1410                var $linkContent = $(link);
1411
1412                if ($linkContent.length) {
1413                    var top = $linkContent.offset().top + 1;
1414
1415                    //nav$.is(".stickyNav") || (top -= navHeight + 50),
1416
1417                    $("html, body").animate({
1418                        scrollTop: top
1419                    }, 800, "swing")
1420                }
1421            })
1422        }
1423
1424        function calcOffset() {
1425            var dheight = document$.height();
1426            dheight != last_dheight && (last_dheight = dheight, nav$.is(".stickyNav") || (navTop = nav$
1427                .offset().top, navHeight = nav$.height()), anhors.length || $.each(anhorIds, function(
1428                i, id) {
1429                var $node = $("#" + id);
1430                if ($node.length) anhors.push({
1431                    id: id,
1432                    node: $node,
1433                    top: 0
1434                });
1435                else {
1436                    var $removeLink = $(".nav__item").find("a").filter('[href="#' + id + '"]');
1437                    $removeLink.length && $removeLink.parent().remove()
1438                }
1439            }), $.each(anhors, function(i, anhor) {
1440                anhors[i].top = Math.round(anhor.node.position().top)
1441            }), anhors.sort(function(a, b) {
1442                return a.top > b.top
1443            }))
1444        }
1445
1446        function toggleSelectedClass(id) {
1447            nav$.find("li").removeClass("selectedElem");
1448            var link$ = nav$.find('a[href="#' + id + '"]');
1449            link$.length && link$.closest("li").addClass("selectedElem")
1450        }
1451
1452        function onScoll() {
1453            var docTop = document$.scrollTop();
1454            if (docTop > navTop + navHeight ? nav$.addClass("stickyNav") : nav$.removeClass("stickyNav"),
1455                anhors[0].top && !(docTop < anhors[0].top))
1456                for (var len = anhors.length; len--;)
1457                    if (docTop >= anhors[len].top) {
1458                        //toggleSelectedClass(anhors[len].id);
1459                        break
1460                    }
1461        }
1462    }(), jQuery(function($) {
1463        $(".js-gallery__show-more").on("click", function(e) {
1464            e.preventDefault();
1465            var $gallery = $(this).closest(".gallery").next(".gallery");
1466            $gallery.toggle();
1467            var $showMore = $(this).find(".gallery__more-showMore");
1468            $gallery.is(":visible") ? $showMore.text($showMore.data("showen")) : $showMore.text(
1469                $showMore.data("hidden"))
1470        })
1471    }), jQuery(function($) {
1472        $(".filterNav").keyup(function() {
1473            var filter_text = $(this).val();
1474            filter_text ? (filter_text = filter_text.toLowerCase(), $(".filterList a").each(
1475                function() {
1476                    $(this).text().toLowerCase().indexOf(filter_text) >= 0 ? $(this)
1477                        .parent().slideDown() : $(this).parent().slideUp()
1478                })) : $(".filterList li").slideDown()
1479        });
1480        var $links = $(".filterList li a");
1481        $links.click(function() {
1482            $links.removeClass("hover"), $(this).addClass("hover")
1483        })
1484    }), jQuery(function($) {
1485        $(".doctor-metro, .doctor-metro__desk, .doctor-wrap").on("click", function(e) {
1486            e.preventDefault(), e.stopPropagation(), $(this).closest(".doctor__col").toggleClass(
1487                "doctor__col_active")
1488        })
1489    }), jQuery(function($) {
1490        $(".doctor-metro").mouseenter(function(e) {
1491            e.preventDefault(), $(this).next(".doctor-wrap").css("opacity", "1")
1492        })
1493    }), jQuery(function($) {
1494        $(".doctor-metro").mouseleave(function(e) {
1495            e.preventDefault(), $(this).next(".doctor-wrap").css("opacity", "0")
1496        })
1497    }), jQuery(function($) {
1498        function showSuccessFormText(forms) {
1499            setTimeout(function() {
1500                $(forms).find(".form-success span").each(function() {
1501                    var $this;
1502                    $(this).addClass("showed")
1503                }), hideSuccessFormText($forms)
1504            }, 50)
1505        }
1506
1507        function hideSuccessFormText(forms) {
1508            $(forms).find(".form-success span").each(function() {
1509                var $this = $(this),
1510                    time = $this.data("time") || 3e3;
1511                setTimeout(function() {
1512                    $this.removeClass("showed")
1513                }, time)
1514            })
1515        }
1516        var $forms = $(".webform_doctor");
1517        showSuccessFormText($forms), $forms.on("afterSend.bx.webform", function() {
1518            showSuccessFormText($(this).closest(".webform_doctor"))
1519        })
1520    });
1521var store = new Vuex.Store({
1522    state: {
1523        countries: [],
1524        selectedCountry: !1,
1525        blogCharsGroup: !1
1526    },
1527    mutations: {
1528        initCountries: function initCountries(state, countries) {
1529            state.countries = countries
1530        },
1531        selectCountry: function selectCountry(state, country) {
1532            state.selectedCountry = country
1533        },
1534        selectBlogCharsGroup: function selectBlogCharsGroup(state, gruop) {
1535            state.blogCharsGroup = gruop
1536        }
1537    },
1538    actions: {
1539        initCountries: function initCountries(_ref, _ref2) {
1540            var commit = _ref.commit,
1541                country = _ref2.country,
1542                countries = _ref2.countries;
1543            countries && countries.length && (commit("initCountries", countries), countries
1544                .forEach(function(_country) {
1545                    _country.id == country && commit("selectCountry", _country)
1546                }))
1547        }
1548    },
1549    getters: {
1550        selectedCountryId: function selectedCountryId(state) {
1551            return state.selectedCountry && state.selectedCountry.id || 0
1552        }
1553    }
1554});
1555
1556function _toConsumableArray(arr) {
1557    if (Array.isArray(arr)) {
1558        for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
1559        return arr2
1560    }
1561    return Array.from(arr)
1562}
1563vue_utils.addInstance("footer-map", function(element, data) {
1564    return data.map = "", {
1565        el: element,
1566        data: data,
1567        mounted: function mounted() {
1568            var self = this;
1569            inView.$('[data-v-tpl="footer-map"]').once("enter", function() {
1570                self.initMap()
1571            });
1572            var timer = setTimeout(function() {
1573                self.initMap()
1574            }, 2e4);
1575            jQuery(window).on("load", function() {
1576                setTimeout(function() {
1577                    self.initMap()
1578                }, 15e3)
1579            })
1580        },
1581        destroyed: function destroyed() {
1582            mapService.destroyMap(this.map)
1583        },
1584        methods: {
1585            initMap: function initMap() {
1586                var self = this;
1587                self.map || (self.map = !0, mapService.getMap(this.mapId, {
1588                    center: this.center,
1589                    zoom: this.zoom
1590                }).then(function(map) {
1591                    map.behaviors.disable("scrollZoom"), map.controls.remove(
1592                            "trafficControl"), map.controls.remove(
1593                        "typeSelector"), self.map = map, self.points && self
1594                        .points.length && self.points.forEach(function(elem,
1595                            index, arr) {
1596                            mapService.addPlacemark(self.map, elem)
1597                        })
1598                }))
1599            }
1600        }
1601    }
1602}), vue_utils.addInstance("clinic-world-map", function(element, data) {
1603    return store.dispatch("initCountries", {
1604        country: data.country,
1605        countries: data.countries
1606    }), delete data.country, delete data.countries, data.map = "", {
1607        store: store,
1608        el: element,
1609        data: data,
1610        mounted: function mounted() {
1611            var self = this;
1612            mapService.getMap(this.mapId, {
1613                center: this.center,
1614                zoom: this.zoom
1615            }).then(function(map) {
1616                map.behaviors.disable("scrollZoom"), map.behaviors.disable("drag"),
1617                    map.controls.remove("trafficControl"), map.controls.remove(
1618                        "typeSelector"), self.map = map, self.points && self.points
1619                    .length && self.points.forEach(function(elem, index, arr) {
1620                        mapService.addPlacemark(self.map, elem)
1621                    })
1622            })
1623        },
1624        destroyed: function destroyed() {
1625            mapService.destroyMap(this.map)
1626        },
1627        computed: {
1628            countries: function countries() {
1629                return this.$store.state.countries
1630            }
1631        },
1632        methods: {
1633            isActive: function isActive(country) {
1634                var activeCountryId;
1635                return this.$store.getters.selectedCountryId == country.id
1636            },
1637            setActive: function setActive(country) {
1638                this.$store.commit("selectCountry", country), country.coords && (this.map
1639                    .setCenter(country.coords), this.map.setZoom(country.zoom || 3))
1640            }
1641        }
1642    }
1643}), vue_utils.addInstance("clinic-world-map-addresses", function(element, data) {
1644    return {
1645        store: store,
1646        el: element,
1647        methods: {
1648            isActive: function isActive(countryId) {
1649                var activeCountryId;
1650                return this.$store.getters.selectedCountryId == countryId
1651            }
1652        }
1653    }
1654}), vue_utils.addInstance("blog-chars-tabs", function(element, data) {
1655    return store.commit("selectBlogCharsGroup", data.group), {
1656        store: store,
1657        el: element,
1658        computed: {
1659            group: function group() {
1660                return this.$store.state.blogCharsGroup
1661            }
1662        },
1663        methods: {
1664            setActiveGroup: function setActiveGroup(group) {
1665                this.$store.commit("selectBlogCharsGroup", group)
1666            },
1667            isActiveGroup: function isActiveGroup(group) {
1668                return this.group == group
1669            }
1670        }
1671    }
1672}), vue_utils.addInstance("blog-chars-filter", function(element, data) {
1673    return {
1674        store: store,
1675        el: element,
1676        data: {
1677            char: ""
1678        },
1679        computed: {
1680            group: function group() {
1681                return this.$store.state.blogCharsGroup
1682            }
1683        },
1684        methods: {
1685            setActive: function setActive(char) {
1686                this.char == char ? this.char = "" : this.char = char
1687            },
1688            isActive: function isActive(char) {
1689                return this.char == char
1690            },
1691            isShown: function isShown(char) {
1692                return this.char == char || "" == this.char
1693            },
1694            isActiveGroup: function isActiveGroup(group) {
1695                return this.group == group
1696            }
1697        }
1698    }
1699}), vue_utils.addInstance("multislider", function(element, data) {
1700    return data.index = 0, {
1701        el: element,
1702        data: data,
1703        mounted: function mounted() {
1704            this.prev()
1705        },
1706        methods: {
1707            prev: function prev() {
1708                var _items;
1709                (_items = this.items).splice.apply(_items, [0, 0].concat(_toConsumableArray(
1710                    this.items.splice(this.items.length - 1, 1))))
1711            },
1712            next: function next() {
1713                var _items2;
1714                (_items2 = this.items).splice.apply(_items2, [this.items.length - 1, 0]
1715                    .concat(_toConsumableArray(this.items.splice(0, 1))))
1716            }
1717        }
1718    }
1719}), vue_utils.addInstance("multislider-adaptive", function(element, data) {
1720    return data.index = 0, data.size = 0, {
1721        el: element,
1722        data: data,
1723        mounted: function mounted() {
1724            window.addEventListener("resize", this.handleResize), this.handleResize()
1725        },
1726        beforeDestroy: function beforeDestroy() {
1727            window.removeEventListener("resize", this.handleResize)
1728        },
1729        methods: {
1730            prev: function prev() {
1731                var last = this.items.pop();
1732                this.items.splice(0, 0, last)
1733            },
1734            next: function next() {
1735                var first = this.items.shift();
1736                this.items.push(first)
1737            },
1738            handleResize: utils.debounce(function() {
1739                this.size = $(window).width()
1740            }, 50)
1741        },
1742        computed: {
1743            currentItems: function currentItems() {
1744                for (var items = this.items.slice(0, this.countItems); items.length < this
1745                    .countItems;) items.push({});
1746                return items
1747            },
1748            countItems: function countItems() {
1749                var self = this,
1750                    count = 0;
1751                return self.size && $.each(this.counts, function(size, sizeCount) {
1752                    !count && self.size < size && (count = sizeCount)
1753                }), count || (count = this.count), count
1754            }
1755        }
1756    }
1757}), jQuery(function($) {
1758    $(".js-doctor-carousel").slick({
1759        infinite: !0,
1760        speed: 300,
1761        slidesToShow: 3,
1762        adaptiveHeight: !0,
1763        centerPadding: "40px",
1764        arrows: !0,
1765        responsive: [{
1766            breakpoint: 1025,
1767            settings: {
1768                slidesToShow: 2,
1769                slidesToScroll: 1
1770            }
1771        }, {
1772            breakpoint: 641,
1773            settings: {
1774                slidesToShow: 1,
1775                slidesToScroll: 1
1776            }
1777        }]
1778    });
1779
1780    jQuery(window).on('resize orientationchange', function () {
1781        $(".js-doctor-carousel").slick('resize');
1782    });
1783
1784    jQuery(".js-doctor-carousel").slick('resize');
1785}),
1786
1787$(document).on("input", 'input[type="text"]', function() {
1788    if ("" == $(this).val());
1789    else {
1790        var pattern, pattern;
1791        // if ($(this).hasClass("input_phone"))(pattern = /^\+7\(\d{3}\)\ \d{3}-\d{2}-\d{2}$/i).test($(
1792        //     this).val()) ? ($(this).parents("form").find(".form-sumbit").removeAttr("disabled"),
1793        //     $(this).parents("form").find(".form-sumbit").css("background-color", "#0babcd"), $(
1794        //         this).css("border", ""), $(this).parents(".wrap_input").find("small").hide()) : (
1795        //     $(this).parents("form").find(".form-sumbit").attr("disabled", "disabled"), $(this)
1796        //     .parents("form").find(".form-sumbit").css("background-color", "#c8d3d9"), $(this).css(
1797        //         "border", "1px solid red"), $(this).parents(".wrap_input").find("small").show());
1798        if ($(this).hasClass("input_email"))(pattern =
1799            /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i).test($(this).val()) ? ($(
1800                this).parents("form").find(".form-sumbit").removeAttr("disabled"), $(this)
1801            .parents("form").find(".form-sumbit").css("background-color", "#0babcd"), $(this).css(
1802                "border", ""), $(this).parents(".wrap_input").find("small").hide()) : ($(this)
1803            .parents("form").find(".form-sumbit").attr("disabled", "disabled"), $(this).parents(
1804                "form").find(".form-sumbit").css("background-color", "#c8d3d9"), $(this).css(
1805                "border", "1px solid red"), $(this).parents(".wrap_input").find("small").show())
1806    }
1807}),
1808
1809 $(".js-geo-city").on("click", function(e) {
1810    return e.preventDefault(), $(".nav__geo").toggleClass("show"), $(window).width() < 1025 && $(
1811            ".header__container-rMenu").removeClass("hide").prev().addClass("hide"), $("html, body")
1812        .animate({
1813            scrollTop: 0
1814        }, 500), !1
1815});
1816
1817
1818if($('.js-city-list-alt')) {
1819    $('.js-city-list-alt').on('click', function() {
1820        $('.nav__geo').addClass('show');
1821        $('.header__container-rDes').addClass('hide');
1822        $('body').addClass('overflow');
1823        $('.header__container-rMenu').removeClass('hide');
1824    })
1825}
1826
1827if($('.js-clinic-parent-link')) {
1828    $('.js-clinic-parent-link').on('click', function(e) {
1829        e.preventDefault();
1830        $(this).toggleClass('is-active');
1831        $(this).next().toggle()
1832    })
1833}
1834
1835if($('.js-mobile-child-item-menu')) {
1836    $('.js-mobile-child-item-menu').on('click', function(e) {
1837        e.preventDefault();
1838        $(this).toggleClass('is-active');
1839        $(this).next().toggle()
1840    })
1841}
1842
1843jQuery(function($) {
1844    var sliderContacts = function() {
1845        $(".js-contacts-slider").slick({
1846            speed: 300,
1847            infinite: false,
1848            slidesToShow: 4,
1849            slidesToScroll: 1,
1850            arrows: !0,
1851            dots: false,
1852            nextArrow: '<div class="slide__arrow-next"></div>',
1853            prevArrow: '<div class="slide__arrow-prev"></div>',
1854            responsive: [
1855                {
1856                breakpoint: 1024,
1857                settings: "unslick"
1858               }
1859            ]
1860        });
1861    };
1862
1863    sliderContacts();
1864
1865    jQuery(window).on("load, resize",function(e){
1866        if($(window).width() > 1025) {
1867            sliderContacts();
1868        }
1869    });
1870
1871});
1872
1873
1874/*Слайдер с лицензиями*/
1875$(document).ready(function ()
1876{
1877	jQuery(".js-docs-slider").slick(
1878	{
1879		infinite: true,
1880		slidesToShow: 8,
1881		slidesToScroll: 1,
1882		arrows: true,
1883		dots: false,
1884		nextArrow: '<div class="slide__arrow-next"></div>',
1885		prevArrow: '<div class="slide__arrow-prev"></div>',
1886		responsive: [
1887		{
1888			breakpoint: 1200,
1889			settings:
1890			{
1891				slidesToShow: 6
1892			}
1893		},
1894		{
1895			breakpoint: 1024,
1896			settings:
1897			{
1898				slidesToShow: 3,
1899				slidesToScroll: 1
1900			}
1901		},
1902		{
1903			breakpoint: 750,
1904			settings:
1905			{
1906				slidesToShow: 2,
1907				slidesToScroll: 1
1908			}
1909		},
1910        {
1911            breakpoint: 640,
1912            settings:
1913            {
1914                slidesToShow: 1,
1915                slidesToScroll: 1
1916            }
1917        }]
1918	});
1919
1920	jQuery(window).on('resize orientationchange', function () {
1921		$(".js-docs-slider").slick('resize');
1922	});
1923
1924	jQuery(".js-docs-slider").slick('resize');
1925
1926});
1927
1928
1929jQuery(document).ready(function (){
1930    if($(".slider-docs__item")) {
1931        $(".slider-docs__item").fancybox({
1932            width: "100%",
1933            margin: [0, 0, 0, 100] // top, right, bottom, left
1934        });
1935    }
1936
1937    // устанавливаем одинаковую высоту блоков в схемах лечения
1938    if($('.js-sheme-text')) {
1939        var schemTextblock = $('.js-sheme-text');
1940        var maxHeightTextBlock = 0;
1941        $(schemTextblock).each(function(index, item) {
1942            var itemBlock = $(item).height();
1943            if(maxHeightTextBlock < itemBlock) {
1944                maxHeightTextBlock = itemBlock;
1945            }
1946        });
1947        $(schemTextblock).height(maxHeightTextBlock);
1948    }
1949
1950    if($('.js-city-list-choice')) {
1951        $('.js-city-list-choice').on('click', function() {
1952            $('.nav__geo').addClass('show');
1953            $('.header__container-rMenu').removeClass('hide');
1954        })
1955    }
1956
1957
1958    // Плавный скролл
1959    if($('.js-scroll-to')) {
1960        $('.js-scroll-to').on('click', function() {
1961            $('html, body').animate({
1962                scrollTop: $($(this).attr("href")).offset().top
1963            }, 1500);
1964        });
1965    }
1966
1967    if($('.js-show-more-list')) {
1968        $('.js-show-more-list').on('click', function() {
1969            $('.js-show-more-list').prev().toggleClass('is-active');
1970        })
1971    }
1972
1973    jQuery(".js-page__block__doctors-slider").slick({
1974        mobileFirst: false,
1975        infinite: true,
1976        slidesToShow: 3,
1977        slidesToScroll: 1,
1978        arrows: true,
1979        dots: false,
1980        nextArrow: '<div class="slide__arrow-next"></div>',
1981        prevArrow: '<div class="slide__arrow-prev"></div>',
1982        responsive:
1983            [
1984                {
1985                    breakpoint: 1280,
1986                    settings: {
1987                        slidesToShow: 2,
1988                        slidesToScroll: 1
1989                    }
1990                },
1991                {
1992                    breakpoint: 750,
1993                    settings: {
1994                        slidesToShow: 1,
1995                        slidesToScroll: 1
1996                    }
1997                }
1998            ]
1999    });
2000
2001    jQuery(window).on('resize orientationchange', function () {
2002        jQuery('.js-page__block__doctors-slider').slick('resize');
2003    });
2004
2005    jQuery('.js-page__block__doctors-slider').slick('resize');
2006
2007
2008    if($('.js-city-list-alt')) {
2009    $('.js-city-list-alt').on('click', function() {
2010            $('.nav__geo').addClass('show');
2011            $('.header__container-rDes').addClass('hide');
2012            $('body').addClass('overflow');
2013            $('.header__container-rMenu').removeClass('hide');
2014        })
2015    }
2016
2017
2018    $(document).on("input", 'input[type="text"]', function() {
2019        if ("" == $(this).val());
2020        else {
2021            var pattern, pattern;
2022            // if ($(this).hasClass("input_phone"))(pattern = /^\+7\(\d{3}\)\ \d{3}-\d{2}-\d{2}$/i).test($(
2023            //     this).val()) ? ($(this).parents("form").find(".form-sumbit").removeAttr("disabled"),
2024            //     $(this).parents("form").find(".form-sumbit").css("background-color", "#0babcd"), $(
2025            //         this).css("border", ""), $(this).parents(".wrap_input").find("small").hide()) : (
2026            //     $(this).parents("form").find(".form-sumbit").attr("disabled", "disabled"), $(this)
2027            //     .parents("form").find(".form-sumbit").css("background-color", "#c8d3d9"), $(this).css(
2028            //         "border", "1px solid red"), $(this).parents(".wrap_input").find("small").show());
2029            if ($(this).hasClass("input_email"))(pattern =
2030                /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i).test($(this).val()) ? ($(
2031                    this).parents("form").find(".form-sumbit").removeAttr("disabled"), $(this)
2032                .parents("form").find(".form-sumbit").css("background-color", "#0babcd"), $(this).css(
2033                    "border", ""), $(this).parents(".wrap_input").find("small").hide()) : ($(this)
2034                .parents("form").find(".form-sumbit").attr("disabled", "disabled"), $(this).parents(
2035                    "form").find(".form-sumbit").css("background-color", "#c8d3d9"), $(this).css(
2036                    "border", "1px solid red"), $(this).parents(".wrap_input").find("small").show())
2037        }
2038    }),
2039
2040     $(".js-geo-city").on("click", function(e) {
2041        return e.preventDefault(), $(".nav__geo").toggleClass("show"), $(window).width() < 1025 && $(
2042                ".header__container-rMenu").removeClass("hide").prev().addClass("hide"), $("html, body")
2043            .animate({
2044                scrollTop: 0
2045            }, 500), !1
2046    });
2047
2048    // Развернуть текст на главной
2049    $('.js-show-more__action').on('click', function(){
2050        $(this).parent().hide();
2051        $('.js-show-more__container').addClass('is-active');
2052    })
2053    //
2054    //
2055    // $('.js-doctor-item-graf')
2056});
2057
2058// Выравниваем блоки записаться Рё РÑ
2058–рафик РїРѕ телефону РІ карточке врача
2059$(window).on('load resize', function() {
2060    if($(window).width() > 640) {
2061        $('.js-doctor-item-call').height($('.js-doctor-item-graf').height() + 1 + 'px')
2062    }
2063});
2064
2065$('.js-show-more-doctor').on('click', function(e){
2066    e.preventDefault();
2067    $(this).prev().addClass('is-active');
2068    $(this).hide();
2069});
2070
2071
2072// табы на главной странице
2073$('.js-medication').each(function(i , item) {
2074
2075    $(item).on('click', function() {
2076        if ($(item).hasClass('is-active')) {
2077            $('.js-medication').removeClass('is-active');
2078            //removeClass('is-active');
2079            $(item).addClass('is-active');
2080        } else {
2081            $('.js-medication-mob').addClass('is-hidden');
2082            $($('.js-medication-mob')[i]).removeClass('is-hidden');
2083            $('.js-medication').removeClass('is-active');
2084            $(item).addClass('is-active');
2085        }
2086    })
2087});
2088
2089$('.price__main .price__line-adr').on('click', function(){
2090    $(this).closest('.price__block').find('.price__list').toggleClass('show');
2091});
2092
2093// устанавливаем одинаковую высоту блоков в схемах лечения
2094if($('.js-sheme-text')) {
2095    var schemTextblock = $('.js-sheme-text');
2096    var maxHeightTextBlock = 0;
2097    $(schemTextblock).each(function(index, item) {
2098        var itemBlock = $(item).height();
2099        if(maxHeightTextBlock < itemBlock) {
2100            maxHeightTextBlock = itemBlock;
2101        }
2102    });
2103    $(schemTextblock).height(maxHeightTextBlock);
2104}
2105
2106$('.js-show-more__action__wrapper').on('click', function() {
2107    $(this).prev().addClass('active');
2108    $(this).hide();
2109});
2110
2111// Скрываем стрелки слайдера, если слайдов меньше 2-х
2112
2113if($('.callback__text.slider-item') && $('.callback__text.slider-item').length < 2) {
2114    $('.callback__text.slider-item').parent().next().hide();
2115    $('.callback__text.slider-item').next().hide();
2116}
2117// Плавный скролл
2118if($('.js-scroll-to')) {
2119    $('.js-scroll-to').on('click', function() {
2120        $('html, body').animate({
2121            scrollTop: $($(this).attr("href")).offset().top
2122        }, 1500);
2123    });
2124}
2125
2126$(document).on('click', function(event) {
2127    if($(event.target).hasClass("filter__main") || $(event.target).hasClass("filter__title")) {
2128        $('.filter__button').removeClass('selected');
2129        $('.filter__button').next().addClass('hidden');
2130    }
2131});
2132
2133$('.js-medication-full .medication__title').on('click', function() {
2134    $(this).next().toggleClass('is-active');
2135});
2136
2137$(document).ready(function() {
2138    if ($(".js-header-slider").length) {
2139
2140        jQuery(".js-header-slider").slick({
2141            infinite: !0,
2142            slidesToShow: 1,
2143            slidesToScroll: 1,
2144            arrows: false,
2145            dots: true,
2146            autoplay: true,
2147            autoplaySpeed: 5000
2148        })
2149    }
2150
2151    if($('.js-action-slider')) {
2152        $('.js-action-slider').slick({
2153            infinite: true,
2154            slidesToShow: 4,
2155            slidesToScroll: 1,
2156            arrows: true,
2157            dots: false,
2158            autoplay: false,
2159            responsive: [{
2160            breakpoint: 1024,
2161                settings: {
2162                    slidesToShow: 3
2163                }
2164            },
2165            {
2166                breakpoint: 768,
2167                settings: {
2168                    slidesToShow: 2
2169                }
2170            },
2171            {
2172                breakpoint: 640,
2173                settings: {
2174                    slidesToShow: 1
2175               }
2176            }
2177            ]
2178        });
2179
2180
2181        jQuery(window).on('resize orientationchange', function () {
2182            $(".js-action-slider").slick('resize');
2183        });
2184
2185        jQuery(".js-action-slider").slick('resize');
2186    }
2187});
2188
2189if ($('.js-autor-item').length > 3) {
2190    $('.js-autor-list').css({"maxHeight":"85px"});
2191    $('.js-autor-more').addClass('is-show');
2192}
2193
2194$('.js-autor-more').on('click', function() {
2195    $(this).prev().toggleClass('is-active');
2196
2197    if($(this).prev().hasClass('is-active')) {
2198        $(this).text('Скрыть')
2199    } else {
2200        $(this).text('Показать полностью')
2201    }
2202});
2203
2204
2205$(document).ready(function() {
2206    // Баннер по умолчанию скрыт в разметке (display: none), т.к. страница может отдаваться
2207    // из Bitrix Composite-кэша одинаково всем гостям. Показываем его только если у ЭТОГО
2208    // браузера нет cookie согласия — это единственный источник истины, не зависящий от кэша страницы.
2209    if (!/(?:^|; )BITRIX_SM_cookie_confidence_msg=/.test(document.cookie)) {
2210        $('.js-cookie-policy').show();
2211    }
2212});
2213
2214$(document).on('click', '.js-cookie-policy-close', function(e) {
2215    document.cookie = "BITRIX_SM_cookie_confidence_msg=declined; path=/";
2216    $(this).closest('.js-cookie-policy').hide();
2217    e.preventDefault();
2218});
2219
2220$(document).on('click', '.js-cookie-policy-accept', function(e) {
2221    let date = new Date(Date.now() + 1000 * 60 * 60 * 24 * 365);
2222    document.cookie = "BITRIX_SM_cookie_confidence_msg=1; expires=" + date.toUTCString() + "; path=/";
2223    $(this).closest('.js-cookie-policy').hide();
2224    e.preventDefault();
2225});
2226
2227
2228jQuery(document).ready(function (){
2229    if ($('.js-price-map-wrapper').length > 0) {
2230        $(document).on('click', '.js-price-toggle-map', function(e) {
2231            var map = $(this).closest('.js-price-map-wrapper').find('.js-price-map');
2232
2233            if (map.hasClass('active')) {
2234                map.removeClass('active');
2235            }
2236            else {
2237                $('.js-price-map.active').removeClass('active');
2238                map.addClass('active');
2239            }
2240
2241            e.preventDefault();
2242        });
2243
2244        $(document).on('click', function(e) {
2245            if (!$('.js-price-toggle-map').is(e.target) && !$('.js-price-map').is(e.target) && $('.js-price-map').has(e.target).length === 0)
2246                $('.js-price-map.active').removeClass('active');
2247        });
2248    }
2249});
2250
2251
2252$(document).on('click', '.js-to-anchor', function(e) {
2253    var offsetHeader = window.matchMedia("(max-width: 888px)").matches ? 80 : 0;
2254    var offsetHeaderBtns = window.matchMedia("(max-width: 888px)").matches ? $('.header__mobile:first').outerHeight(false) : 0;
2255    if (!$('.header__mobile:first').hasClass('is-fixed'))
2256        offsetHeaderBtns += offsetHeaderBtns;
2257
2258    var id = $(this).attr('href');
2259    var top = $(id).offset().top - ($(this).data('offset') || 0) - offsetHeader - offsetHeaderBtns;
2260
2261    $('body, html').animate({scrollTop: top}, 600, 'swing');
2262
2263    e.preventDefault();
2264});
2265
2266
2267// collapse
2268$(document).on('click', '[data-toggle="collapse"]', function(e) {
2269    var target = $(this).data('target') || $(this).attr('href') || $(this).closest('[data-collapse="item"]').find('[data-collapse="target"]')[0];
2270
2271    if (target) {
2272        $(this).toggleClass('collapsed');
2273
2274        if ($(target).hasClass('show')) {
2275            $(target).removeClass('show').slideToggle(400);
2276        }
2277        else {
2278            $(target).slideToggle(400, function() {
2279                $(target).addClass('show');
2280            })
2281        }
2282    }
2283
2284    e.preventDefault();
2285});
2286
2287
2288$(function () {
2289    new isvek.Bvi({
2290        target: '.bvi-btn',
2291        fontSize: 16,
2292        fontSizeMin: 16,
2293        fontSizeMax: 32,
2294        theme: 'none',
2295        images: true,
2296        builtElements: true,
2297        speech: false,
2298        panelFixed: false,
2299    });
2300});

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.