PageSourceSearch

https://tarusa-hotel.ru/wp-content/themes/tarusahote/assets/js/script.js?ver=1790972198

js tarusa-hotel.ru collected 2026-10-02 20:17:11 UTC 7,630 bytes, 279 lines download raw bytes

1jQuery(document).ready(function ($) {
2    // ДЛЯ ОТКРЫТИЯ МОДАЛКИ
3    function openModalOrMenu(trigger, targetSelector) {
4        $(trigger).addClass('active');
5        $('body').css('overflow-y', 'hidden');
6        $(targetSelector).on('click', function (e) {
7            if (e.target === this) {
8                $(this).removeClass('active');
9                $('body').css('overflow-y', 'initial');
10            }
11        });
12    }
13
14    // ДЛЯ ЗАКРЫТИЯ МОДАЛКИ, КОГДА ПРОКЛИКАНО ЗА ПРЕДЕЛЫ МОДАЛКИ
15    function closeModalOrMenu(trigger) {
16        $(trigger).removeClass('active');
17        $('body').css('overflow-y', 'initial');
18    }
19
20    // ДЛЯ ВЫБОРА HREF ДЛЯ МОДАЛКИ
21    $('a.getModal').on('click', function (e) {
22        e.preventDefault();
23        let triggerHref = $(this).attr('href');
24        openModalOrMenu(triggerHref, triggerHref);
25    });
26
27
28// ДЛЯ ЗАКРЫТИЯ МОДАЛКИ
29  $(".modal__close, .btn_close").on("click", function () {
30    closeModalOrMenu($(this).parents(".modal"));
31  });
32
33    // ДЛЯ ЗАКРЫТИЯ МОБИЛЬНОГО МЕНЮ
34    $('.mobile-menu__close, .mobile-menu, .mobile-menu a').on('click', function () {
35        closeModalOrMenu($(this).parents('.mobile-menu'));
36    });
37
38// toggler ДЛЯ АККОРДИОНА
39$('.accordion__item').on('click', function (e) {
40  // если клик был по ссылке или кнопке — не обрабатываем
41  if ($(e.target).closest('a, button').length) {
42    return;
43  }
44  $(this).toggleClass('active');
45});
46
47    $('.opening__down').on('click', function (e) {
48        e.preventDefault();
49        const parentSection = $(this).closest('section');
50        const nextSection = parentSection.next('section');
51        if (nextSection.length) {
52            $('html, body').animate({
53                scrollTop: nextSection.offset().top
54            }, 100);
55        }
56    });
57
58    $('.events__slider').each(function (index, element) {
59        let mainSlider = new Swiper(element, {
60            effect: 'fade',
61            fadeEffect: {
62                crossFade: true
63            },
64            loop: true,
65            navigation: {
66                prevEl: $(element).find('.events__arrow--left').get(0),
67                nextEl: $(element).find('.events__arrow--right').get(0),
68            },
69        });
70    });
71
72    $('.cards__view').each(function (index, element) {
73        let mainSlider = new Swiper(element, {
74            effect: 'fade',
75            fadeEffect: {
76                crossFade: true
77            },
78            loop: true,
79            navigation: {
80                prevEl: $(element).find('.cards__arrow--left').get(0),
81                nextEl: $(element).find('.cards__arrow--right').get(0),
82            },
83        });
84    });
85});
86
87// МАСКА ДЛЯ ТЕЛЕФОНА В input[type='tel']
88let maskedPhones = document.querySelectorAll("input[type='tel']");
89for (var i = 0; i < maskedPhones.length; i++) {
90    new IMask(maskedPhones[i], {
91        mask: '+{7} (000) 000-00-00',
92        placeholder: {
93            show: 'always'
94        }
95    });
96}
97
98// ДЛЯ ЗАКРЫТИЯ МОДАЛКИ, КОГДА ПРОКЛИКАНО ЗА ПРЕДЕЛЫ МОДАЛКИ - УНИВЕРСАЛЬНЫЙ
99let body = document.querySelector('body')
100function closeModal(modalName, reverse = false) {
101    modalName = document.querySelector(modalName)
102    window.addEventListener('click', function (e) {
103        if (reverse) {
104            if (e.target === modalName) {
105                modalName.classList.remove('active')
106                body.style.overflowY = 'initial'
107
108            }
109        } else {
110            if (e.target !== modalName) {
111                modalName.classList.remove('active')
112                body.style.overflowY = 'initial'
113
114            }
115        }
116
117    })
118}
119closeModal('.mobile-menu', true)
120
121
122function createTab(tabName, contentName, selectName) {
123    tabName = document.querySelectorAll(tabName);
124    contentName = document.querySelectorAll(contentName);
125    const select = document.querySelector(selectName);
126
127    if (select) {
128        let tabsArray = Array.from(tabName);
129        tabsArray.map((tab, tabIndex) => {
130            tab.addEventListener('click', function (e) {
131                e.preventDefault();
132                for (let tabAll of tabName) tabAll.classList.remove('active');
133                this.classList.add('active');
134
135                for (let tabsContents of contentName) tabsContents.classList.remove('active');
136                contentName[tabIndex].classList.add('active');
137                select.selectedIndex = tabIndex;
138            });
139        });
140
141        select.addEventListener('change', function () {
142            let selectedIndex = this.selectedIndex;
143
144            for (let tabAll of tabName) tabAll.classList.remove('active');
145            for (let tabsContents of contentName) tabsContents.classList.remove('active');
146
147            tabName[selectedIndex].classList.add('active');
148            contentName[selectedIndex].classList.add('active');
149        });
150    }
151}
152createTab('.rest .tabs__item', '.rest .tabs__content', '.rest .tabs__select');
153createTab('.gallery .tabs__item', '.gallery .tabs__content', '.gallery .tabs__select');
154
155
156// SWIPER слайдеры
157const welcomeSlider = new Swiper('.welcome__slider', {
158    loop: true,
159    slidesPerView: 1,
160    speed: 1500,
161    autoplay: true,
162    autoplaySpeed: 4000,
163    effect: 'fade',
164    fadeEffect: {
165        crossFade: true
166    },
167    navigation: {
168        prevEl: ".welcome__arrow--left",
169        nextEl: ".welcome__arrow--right",
170    },
171
172});
173
174const offerSlider = new Swiper('.offer__slider', {
175    loop: true,
176    spaceBetween: 25,
177    slidesPerView: 3,
178    navigation: {
179        prevEl: ".arrow--left",
180        nextEl: ".arrow--right",
181    },
182    breakpoints: {
183        0: {
184            slidesPerView: 1.5,
185            spaceBetween: 10,
186        },
187
188        620: {
189            spaceBetween: 20,
190            slidesPerView: 2,
191        },
192
193        1400: {
194            slidesPerView: 3,
195        },
196    }
197});
198
199const reviewsSlider = new Swiper('.reviews__slider', {
200    loop: true,
201    spaceBetween: 0,
202    slidesPerView: 3,
203    centeredSlides: true,
204    navigation: {
205        prevEl: ".arrow--left",
206        nextEl: ".arrow--right",
207    },
208    breakpoints: {
209        0: {
210            slidesPerView: 1.2,
211            spaceBetween: 10,
212        },
213
214        620: {
215            spaceBetween: 20,
216            slidesPerView: 2.5,
217        },
218
219        1400: {
220            spaceBetween: 0,
221            slidesPerView: 3,
222        },
223    }
224});
225
226let cardsTrigger = new Swiper("#cardMini", {
227    slidesPerView: 5,
228    spaceBetween: 15,
229    freeMode: true,
230    watchSlidesProgress: true,
231    loop: false,
232    breakpoints: {
233        0: {
234            spaceBetween: 10,
235            slidesPerView: 'auto',
236        },
237
238        620: {
239            slidesPerView: 'auto',
240        },
241
242        1024: {
243            slidesPerView: 'auto',
244        },
245
246        1400: {
247            slidesPerView: 5,
248        },
249    }
250});
251
252
253let cardsSlider = new Swiper("#cardMain", {
254    effect: 'fade',
255    fadeEffect: {
256        crossFade: true
257    },
258    loop: false,
259    thumbs: {
260        swiper: cardsTrigger,
261    },
262    navigation: {
263        prevEl: ".card__arrow--left",
264        nextEl: ".card__arrow--right",
265    },
266});
267
268
269document.addEventListener(
270  "wpcf7mailsent",
271  function (response) {
272    document.querySelectorAll(".modal").forEach(function (popup) {
273      popup.classList.remove("active");
274    });
275
276    document.getElementById("done").classList.add("active");
277  },
278  false
279);

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.