PageSourceSearch

https://oknapiter.ru/bitrix/templates/oknapiter.inner/js/main.js?178593269813974

js oknapiter.ru collected 2026-10-08 19:52:27 UTC 13,974 bytes, 373 lines download raw bytes

1svg4everybody();
2$(function () {
3    var prevArrowTpl = '<button class="slick-arrow slick-arrow-prev"><span class="fa fa-arrow-left"></span></button>';
4    var nextArrowTpl = '<button class="slick-arrow slick-arrow-next"><span class="fa fa-arrow-right"></span></button>';
5    $('.gallery-slider').on('init', function (event, slick) {
6        document.querySelector('.slider-wrap__descr > p').textContent = slick.$slides[0].children[0].alt;
7    });
8    $('.slider').slick({
9        lazyLoad: 'ondemand',
10        dots: true,
11        prevArrow: prevArrowTpl,
12        nextArrow: nextArrowTpl,
13    });
14    $('.mob-slider').slick({
15        lazyLoad: 'ondemand',
16        dots: true,
17        prevArrow: prevArrowTpl,
18        nextArrow: nextArrowTpl,
19    });
20    $('.gallery-slider').on('beforeChange', function (event, slick, currentSlide, nextSlide) {
21        document.querySelector('.slider-wrap__descr > p').textContent = slick.$slides[nextSlide].children[0].alt;
22    });
23    $('.carousel').slick({
24        slidesToShow: 4,
25        slidesToScroll: 1,
26        lazyLoad: 'ondemand',
27        prevArrow: prevArrowTpl,
28        nextArrow: nextArrowTpl,
29        slide: '.slide',
30        responsive: [{
31            breakpoint: 1400,
32            settings: {
33                slidesToShow: 3,
34            },
35        }, {
36            breakpoint: 980,
37            settings: {
38                slidesToShow: 2,
39            },
40        }, {
41            breakpoint: 639,
42            settings: {
43                slidesToShow: 1,
44            },
45        }],
46    });
47    var prevChevronTpl = '<button class="slick-arrow slick-arrow-prev"><span class="fa fa-chevron-left"></span></button>';
48    var nextChevronTpl = '<button class="slick-arrow slick-arrow-next"><span class="fa fa-chevron-right"></span></button>';
49    $('.text-with-image-slider').slick({
50        prevArrow: prevArrowTpl,
51        nextArrow: nextArrowTpl,
52    });
53    $('.products-list-slider').slick({
54        slidesToShow: 4,
55        slidesToScroll: 1,
56        prevArrow: prevArrowTpl,
57        nextArrow: nextArrowTpl,
58        responsive: [{
59            breakpoint: 769,
60            settings: {
61                slidesToShow: 3,
62                slidesToScroll: 1,
63                arrows: false,
64            }
65        }, {
66            breakpoint: 600,
67            settings: {
68                slidesToShow: 2,
69                slidesToScroll: 1,
70                arrows: false,
71            }
72        }, ]
73    });
74});
75$(document).ready(function() {
76    $('.js-toggle-menu').click(function () {
77        $('body').toggleClass('mobile-navigation-opened');
78        $(this).toggleClass('active');
79        $('.mobile-navigation').toggleClass('opened');
80    });
81    $('.js-toggle-nav-group').click(function () {
82        $(this).parents('.nav-group').toggleClass('opened');
83    });
84    $('.js-open-popup').click(function (event) {
85        event.preventDefault();
86        var hash = $(this).attr('href');
87        $('body').addClass('popup-active');
88        $('.popup.active').removeClass('active');
89        $(hash).addClass('active');
90        window.location.hash = hash;
91        $('.popups').scrollTop(0);
92    });
93    $('.js-close-popup').click(function () {
94        var scrollTop = $(window).scrollTop();
95        $('body').removeClass('popup-active');
96        $('.popup.active').removeClass('active');
97        window.location.hash = '';
98        $(window).scrollTop(scrollTop);
99    });
100    if (~window.location.hash.indexOf('-popup')) {
101        $('body').addClass('popup-active');
102        $(window.location.hash).addClass('active');
103        $('.popups').scrollTop(0)
104    }
105
106    function setCallbackTime(shift) {
107        var shift = shift || 0;
108        var currentTime = new Date();
109        var targetTime = new Date(currentTime.getTime() + shift * 1000 * 60);
110        $('#callback-hours').val(leftPad(targetTime.getHours(), 2));
111        $('#callback-minutes').val(leftPad(targetTime.getMinutes(), 2));
112    };
113    setCallbackTime();
114    $('[href="#callback-popup"]').click(function () {
115        setCallbackTime();
116    });
117    $('[name="callback-time"]').on('change', function () {
118        var option = $(this).attr('id').replace('callback-', '');
119        switch (option) {
120            case 'now':
121                {
122                    setCallbackTime();
123                    break;
124                }
125            case '30-minutes':
126                {
127                    setCallbackTime(30);
128                    break;
129                }
130            case 'set-time':
131                {
132                    setCallbackTime();
133                    break;
134                }
135        }
136    });
137    $('.js-start-video').click(function () {
138        var $container = $(this).parents('.video');
139        var $video = $('<iframe src="https://www.youtube.com/embed/' + $container.data('video') + '?autoplay=1&controls=0&showinfo=0&cc_load_policy=1" class="video-player" allowfullscreen></iframe>');
140        $video.appendTo($container);
141    });
142    $('.js-pseudo-tab').click(function (event) {
143        event.preventDefault();
144        localStorage.setItem('SCROLL_TOP', $(window).scrollTop());
145        window.location = $(this).attr('href');
146    });
147    $('.js-tab').click(function (event) {
148        event.preventDefault();
149        var tab = $(this).addClass('active');
150        tab.siblings('.active').removeClass('active');
151        $(tab.attr('href')).addClass('active').siblings('.active').removeClass('active');
152    });
153//    $('.js-link').click(function () {
154//        window.location = $(this).data('href');
155//    });
156    $('.js-toggle-content').click(function () {
157        $(this).parents('.collapsed-content').toggleClass('active');
158    });
159    var $window = $('.window', '.more-than-window-block');
160    var $lens = $('.lens', '.more-than-window-block');
161    $(window).resize(function () {
162        $lens.css({
163            'background-size': $window.width() + 'px auto',
164        });
165    });
166    $(window).trigger('resize');
167    $window.mousemove(function (e) {
168        var left = e.pageX - $window.offset().left - $lens.outerWidth() / 2;
169        var top = e.pageY - $window.offset().top - $lens.outerHeight() / 2;
170        var maxLeft = $window.outerWidth() - $lens.outerWidth();
171        var maxTop = $window.outerHeight() - $lens.outerHeight();
172        if (left < 0) {
173            left = 0;
174        } else if (left > maxLeft) {
175            left = maxLeft;
176        }
177        if (top < 0) {
178            top = 0;
179        } else if (top > maxTop) {
180            top = maxTop;
181        }
182        $lens.css({
183            left: left,
184            top: top,
185            'background-position': (-left) + 'px ' + (-top) + 'px',
186            'background-size': $window.width() + 'px auto',
187        });
188    });
189    $('a[href*="#"]:not([href="#"])').click(function () {
190        if ($(this).hasClass('js-tab') || $(this).hasClass('js-open-popup') || $(this).hasClass('js-open-review-popup')) return;
191        if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
192            var target = $(this.hash);
193            target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
194
195            if (target.length) {
196                $('html, body').animate({
197                    scrollTop: target.offset().top
198                }, 1000);
199                return false;
200            }
201        }
202    });
203});
204$(window).on('load', function () {
205    setTimeout(function () {
206        try {
207            $('.carousel').slick('refresh');
208        } catch (e) {}
209    }, 100);
210});
211
212$(function () {
213    if ($('.js-reveal').length) {
214        var sr = ScrollReveal({
215            distance: '10px',
216            duration: 1000,
217            scale: 1,
218            viewFactor: 0.01,
219            viewOffset: {
220                top: 85
221            },
222        });
223        sr.reveal('.js-reveal');
224    }
225});
226
227function calculatorSubmitCallback(response) {
228    if (response == 'success') {
229        $('body').addClass('popup-active');
230        $('#success-popup').addClass('active');
231        setTimeout(function () {
232            $('.js-close-popup').click();
233        }, 3000);
234        var form = $('form.DiscountForm_form_36Sa');
235        var fields = $('.DiscountForm_inputs_2lQf input')
236        var phone = fields[1].value;
237        var fio = fields[0].value;
238        var sub = 'Форма калькулятора';
239        var ct_node_id = '5';
240        var ct_site_id = '14095';
241        var ct_data = {
242            fio: fio,
243            phoneNumber: phone,
244            subject: sub,
245            sessionId: window.call_value,
246        };
247        if (typeof (phone) != 'undefined' && phone != '') {
248            $.ajax({
249                url: 'https://api-node' + ct_node_id + '.calltouch.ru/calls-service/RestAPI/requests/' + ct_site_id + '/register/',
250                dataType: 'json',
251                type: 'POST',
252                data: ct_data
253            });
254        }
255    }
256}
257$(function () {
258    setTimeout(function () {
259        $('.DiscountForm_button_1vlF').click(function () {
260            yaCounter20819428.reachGoal('calc');
261        });
262    }, 300);
263});
264$(function () {
265    if(document.querySelector("[data-fancybox]")) {
266        $("[data-fancybox]").fancybox({
267            thumbs: false,
268            hash: false,
269            loop: false,
270            keyboard: true,
271            toolbar: true,
272            animationEffect: true,
273            arrows: true,
274            clickContent: false,
275            buttons: ["close"],
276        });
277    }
278});
279
280function popup_open(element) {
281    let img_src = element.children(`img`).attr(`src`)
282    let alt = element.children(`img`).attr(`alt`)
283    let id = element.attr(`id`)
284    $('.popup-fade').attr('style', 'display: flex;');
285    $('.popup-fade').append(`<div class="popup_items" id="` + id + `" ><button class="popup-arrows popup-arrows-prev" onclick="popup_prev($(this))"><span class="fa fa-arrow-left"></span></button><div class="popup_body">
286  <img src="` + img_src + `" />
287  <p>` + alt + `</p>
288 </div><button class="popup-arrows popup-arrows-next" onclick="popup_next($(this))"><span class="fa fa-arrow-right"></span></button></div>`)
289    $('body').attr('style', 'overflow-y: hidden;')
290    return false;
291}
292
293function popup_next(element) {
294    let id = element.parents('.popup_items').attr('id')
295    let src_img = $('div#' + (Number(id) + 1) + '.product').children(`img`).attr('src')
296    let alt = $('div#' + (Number(id) + 1) + '.product').children(`img`).attr('alt')
297    if (alt !== undefined) {
298        $('#' + id).remove()
299        $('.popup-fade').append(`<div class="popup_items" id="` + (Number(id) + 1) + `" ><button class="popup-arrows popup-arrows-prev" onclick="popup_prev($(this))"><span class="fa fa-arrow-left"></span></button><div class="popup_body">
300   <img src="` + src_img + `" />
301   <p>` + alt + `</p>
302  </div><button class="popup-arrows popup-arrows-next" onclick="popup_next($(this))"><span class="fa fa-arrow-right"></span></button></div>`)
303    }
304}
305
306function popup_prev(element) {
307    let id = element.parents('.popup_items').attr('id')
308    let src_img = $('div#' + (Number(id) - 1) + '.product').children(`img`).attr('src')
309    let alt = $('div#' + (Number(id) - 1) + '.product').children(`img`).attr('alt')
310    if (alt !== undefined) {
311        $('#' + id).remove()
312        $('.popup-fade').append(`<div class="popup_items" id="` + (Number(id) - 1) + `" ><button class="popup-arrows popup-arrows-prev" onclick="popup_prev($(this))"><span class="fa fa-arrow-left"></span></button><div class="popup_body">
313   <img src="` + src_img + `" />
314   <p>` + alt + `</p>
315  </div><button class="popup-arrows popup-arrows-next" onclick="popup_next($(this))"><span class="fa fa-arrow-right"></span></button></div>`)
316    }
317}
318$(document).ready(function ($) {
319    $(document).keydown(function (e) {
320        if (e.keyCode === 27) {
321            e.stopPropagation();
322            $('.popup-fade').attr('style', 'display: none;');
323            $('body').attr('style', 'overflow-y: scroll;')
324            $('#popup_items').remove()
325        }
326    });
327    $('.popup-fade').click(function (e) {
328        if ($(e.target).closest('.popup_items').length == 0) {
329            console.log($(this))
330            $(this).attr('style', 'display: none;');
331            $('body').attr('style', 'overflow-y: scroll;')
332            $('.popup_items').remove()
333        }
334    });
335});
336
337document.addEventListener('DOMContentLoaded', function() {
338    document.querySelectorAll('form').forEach(form => {
339        form.addEventListener('submit', function(event) {
340            // Ищем чекбокс разными способами
341            let checkbox = this.querySelector('.calc-check__label-input');
342            
343            if (!checkbox) {
344                checkbox = this.querySelector('.calk-check__label-input');
345            }
346            
347            if (!checkbox) {
348                const calcCheckDiv = this.querySelector('.calc-check');
349                if (calcCheckDiv) {
350                    checkbox = calcCheckDiv.querySelector('input[type="checkbox"]');
351                }
352            }
353            
354            // ЕСЛИ ЧЕКБОКС НЕ НАЙДЕН - ПРОПУСКАЕМ ПРОВЕРКУ
355            if (!checkbox) {
356                console.log('Чекбокс не найден, форма отправляется без проверки');
357                return true;
358            }
359            
360            // Если чекбокс найден, проверяем его состояние
361            console.log('Чекбокс найден, состояние:', checkbox.checked);
362            
363            if (!checkbox.checked) {
364                event.preventDefault();
365                alert('Пожалуйста, подтвердите согласие на обработку персональных данных');
366                return false;
367            }
368            
369            console.log('Форма отправляется');
370            return true;
371        });
372    });
373});

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.