PageSourceSearch

https://rzdarena.ru/assets/custom.js?178583081715025

js rzdarena.ru collected 2026-10-02 16:54:46 UTC 15,025 bytes, 409 lines download raw bytes

1BX.ready(function(){
2    BX.addCustomEvent('onCounterGoals', function(eventdata){
3        if(typeof eventdata != 'object')
4            eventdata = {goal: ''};
5
6        if(typeof eventdata.goal != 'string')
7            eventdata.goal = '';
8        
9        if(eventdata.goal)
10        {
11            window.dataLayer = window.dataLayer || [];
12            if(BX.arMobecanOptions['YA_GOALS'] == 'Y' && BX.arMobecanOptions['YA_COUNTER_ID'])
13            {
14                var idCounter = BX.arMobecanOptions['YA_COUNTER_ID'], obCounter;
15                idCounter = parseInt(idCounter);
16
17                if(idCounter){
18                    try{
19                        obCounter = window['yaCounter'+idCounter];
20                        if(obCounter){
21                            if(typeof ym != 'undefined'){
22                                ym(idCounter,'reachGoal', eventdata.goal);//new
23                            }else{
24                                obCounter.reachGoal(eventdata.goal);//old
25                            }
26                        }
27                    }catch(e){
28                        console.error(e)
29                    }
30                }
31                else
32                {
33                    console.info('Bad counter id!', idCounter);
34                }
35            }
36            window.dataLayer.push({'event': eventdata.goal});
37        }
38        else
39        {
40            console.info('Bad even goal!', 'undefined');
41        }
42    });
43    BX.addCustomEvent('onInitSlideSwiper', function(eventdata){
44        if(typeof eventdata != 'object')
45            eventdata = {obname: ''};
46        if(typeof eventdata.obname != 'string')
47            eventdata.obname = '';
48        if(eventdata.obname){
49            window.initSlideSwiper(eventdata.obname);
50        }
51    });
52});
53
54//ajax
55$.fn.ajaxForm = function(settings){
56    settings = $.extend({
57        requiredInputs: '.req',
58        statusEmptyText: 'Заполните обязательные поля',
59        disableButtonAfterSend: true,
60        showstatus: true,
61        start: function(holder,form,data){},
62        success: function(holder,form,data){},
63        complete: function(holder,form,data){}
64    }, settings);
65
66    $(this).each(function(index, el) {
67        var holder = $(this);
68        var form = $("form", holder);
69        var status = $('.status', holder).length ? $('.status', holder).hide() : $('<div>').addClass('status').prependTo(form).hide();
70        var button = $('button[type=submit]', form);
71        var reqInputs = $(settings.requiredInputs, form);
72        var file = $('input[type=file]', form);
73        $('input[name=e-mail]', form).val('');
74
75        form.on('submit', function(event) {
76            event.preventDefault();
77            var inputError = false;
78
79            reqInputs.each(function(){
80                var ths = $(this);
81                if(ths.attr('disabled') == 'disabled'){
82                    return;
83                }
84                if(!ths.val() || ths.val() == '' || (ths.is(':checkbox') && !ths.is(':checked'))){
85                    inputError = true;
86                    ths.parent().parent().addClass('is-invalid');
87                    ths.addClass('is-error');
88                    if(settings.statusEmptyText) {
89                        status.fadeIn().html(settings.statusEmptyText).addClass('error');
90                    }
91                    ths.off('focus.req').on('focus.req', function(event) {
92                        status.fadeOut();
93                        ths.parent().parent().removeClass('is-invalid').addClass('is-valid');
94                        ths.removeClass('is-error');
95                    });
96                }
97            });
98
99            if(!inputError){
100                button.attr('disabled', 'disabled').addClass('disabled');
101                settings.start(holder, form);
102                if(file.length){
103                    if(form){
104                        $.ajax({
105                            url: form.attr('action'),
106                            type: 'POST',
107                            data: new FormData(form.get(0)),
108                            async: false,
109                            cache: false,
110                            contentType: false,
111                            processData: false,
112                            success: function(data){
113                                button.removeAttr('disabled').removeClass('disabled');
114                                if(data.status == "success"){
115                                    status.removeClass('error').addClass('success');
116                                    settings.success(holder,form,data);
117                                    if(settings.disableButtonAfterSend){
118                                        button.addClass('disabled').attr('disabled', 'disabled');
119                                    }
120                                }else{
121                                    status.removeClass('success').addClass('error');
122                                }
123                                if(settings.showstatus){
124                                    status.fadeIn().html(data.message);
125                                }
126                                settings.complete(holder,form,data);
127                                setTimeout(function () {
128                                    status.fadeOut();
129                                }, 2000);
130                                window.initReCaptchaToken();
131                            },
132                            error: function(){
133                                window.initReCaptchaToken();
134                                status.fadeIn().html('Ошибка сервера. Повторите позже.');
135                                button.removeAttr('disabled').removeClass('disabled');
136                            },
137                        });
138                    }
139                }else{
140                    $.ajax({
141                        url: form.attr('action'),
142                        type: form.attr('method'),
143                        dataType: 'JSON',
144                        data: form.serialize(),
145                    })
146                    .done(function(data) {
147                        button.removeAttr('disabled').removeClass('disabled');
148                        if(data.status == "success"){
149                            status.removeClass('error').addClass('success');
150                            settings.success(holder,form,data);
151                            if(settings.disableButtonAfterSend){
152                                button.addClass('disabled').attr('disabled', 'disabled');
153                            }
154                        }else{
155                            status.removeClass('success').addClass('error');
156                        }
157                        if(settings.showstatus){
158                            status.fadeIn().html(data.message);
159                        }
160                        settings.complete(holder,form,data);
161                        setTimeout(function () {
162                            status.fadeOut();
163                        }, 2000);
164                        window.initReCaptchaToken();
165                    })
166                    .fail(function(data) {
167                        window.initReCaptchaToken();
168                        status.fadeIn().html('Ошибка сервера. Повторите позже.');
169                        button.removeAttr('disabled').removeClass('disabled');
170                    });
171                }
172            }
173        });
174    });
175};
176window.initReCaptchaToken = () => {
177    if(typeof grecaptcha === 'object' && BX.arMobecanOptions.G_SITE_KEY && $('[data-recaptcha-token]').length){
178        grecaptcha.ready(function() {
179            grecaptcha.execute(BX.arMobecanOptions.G_SITE_KEY, {action: 'contacts_feedback'}).then(function(token){
180                $('[data-recaptcha-token]').each(function(index, el){
181                    $(el).val(token);
182                });
183            });
184        });
185    }
186}
187window.getMore = function(params) {
188    //window.preloader.add();
189    $.ajax({
190        url: params.url,
191        type: 'GET',
192        dataType: 'JSON',
193        data: params.params
194    })
195    .done(function (data) {
196        if (data.status == 'success') {
197            params.el.remove();
198            if (data.target) {
199                $(data.target).append(data.html);
200                if (data.paginationNum) {
201                    $('[data-pagination-num="' + data.paginationNum + '"]').html(data.pagination);
202                }
203                if (data.url) {
204                    BX.ajax.history.put(null, data.url);
205                }
206                if(data.obname){
207                    BX.onCustomEvent('onInitSlideSwiper', [{'obname': data.obname}]);
208                }
209            }
210        }
211        //window.preloader.remove();
212    })
213    .fail(function () {
214        //window.preloader.remove();
215        console.log("Произошла ошибка сервера!");
216    });
217}
218window.initSlideSwiper = function(obname) {
219    if(obname){
220        setTimeout(function () {
221            new Swiper('.' + obname + '-swiper-slider .swiper', {
222                loop: true,
223                slidesPerView: 1,
224                pagination: {
225                    el: '.' + obname + '-swiper-slider .swiper-pagination',
226                },
227                navigation: {
228                    nextEl: '.' + obname + '-swiper-slider .swiper-button-next',
229                    prevEl: '.' + obname + '-swiper-slider .swiper-button-prev',
230                }
231            });
232        }, 500);
233    }
234}
235$(function(){
236    window.initReCaptchaToken();
237    $('.ajax-form').ajaxForm({
238        disableButtonAfterSend: false,
239        complete: function(holder, form, data){
240            holder.addClass('sended');
241            if(data.status == "success"){
242                form.trigger('reset');
243            }
244            if(data && typeof data.eventdata == 'object'){
245                if ($('[data-sid="PHONE"]', form)) {
246                    data.eventdata.phone = $('[data-sid="PHONE"]', form).val();
247                }
248                if ($('[data-sid="CLIENT_NAME"]', form)) {
249                    data.eventdata.name = $('[data-sid="CLIENT_NAME"]', form).val();
250                }
251                BX.onCustomEvent('onCounterGoals', [data.eventdata]);
252            }
253            if(data.redirect) {
254                setTimeout(function () {
255                    location.href = data.redirect;
256                }, 1000);
257                return;
258            }
259        }
260    });
261});
262
263console.log('custom.js here');
264
265document.addEventListener('DOMContentLoaded', () => {
266    const popup = document.querySelector(
267        '.popup-wrapper[data-popup-name="areas"]'
268    );
269
270    if (!popup) {
271        return;
272    }
273
274    const optionsContainer = popup.querySelector('.popup__options');
275    const footer = popup.querySelector('.popup__footer');
276
277    if (!optionsContainer || !footer) {
278        return;
279    }
280
281    const removeParkingElements = () => {
282        const extraOption = popup.querySelector('.parking-extra-option');
283        const extraButton = popup.querySelector('.parking-extra-button');
284        const mobileOptions = popup.querySelector('.parking-mobile-options');
285
286        if (extraOption) {
287            extraOption.remove();
288        }
289
290        if (extraButton) {
291            extraButton.remove();
292        }
293
294        if (mobileOptions) {
295            mobileOptions.remove();
296        }
297
298        optionsContainer.classList.remove('parking-desktop-options');
299        footer.classList.remove('parking-popup-footer');
300    };
301
302    const addParkingOption = () => {
303        const option = document.createElement('div');
304
305        option.className = 'white-card parking-extra-option';
306
307        option.innerHTML = `
308			<div class="white-card__ico white-card__ico--small">
309				<img src="/upload/iblock/175/agigum44ls29kpmybr7m3b90cp1ydapo.svg">
310			</div>
311
312			<div class="white-card__text white-card__text--small">
313				Парковка в дни матчей
314			</div>
315		`;
316
317        optionsContainer.appendChild(option);
318    };
319
320    const addParkingButton = () => {
321        const button = document.createElement('a');
322
323        button.href = 'https://www.fclm.ru/tickets/';
324        button.target = '_blank';
325        button.rel = 'noopener noreferrer';
326        button.className = 'btn w-full parking-extra-button';
327        button.textContent = 'Парковка в дни матчей';
328
329        footer.appendChild(button);
330    };
331
332    const addMobileLayout = () => {
333        const firstOption = optionsContainer.querySelector(
334            '.white-card:not(.parking-extra-option)'
335        );
336
337        const secondOption = optionsContainer.querySelector(
338            '.parking-extra-option'
339        );
340
341        const firstButton = footer.querySelector(
342            '[data-popup-init][data-popup="areasForm"]'
343        );
344
345        const secondButton = footer.querySelector(
346            '.parking-extra-button'
347        );
348
349        if (
350            !firstOption ||
351            !secondOption ||
352            !firstButton ||
353            !secondButton
354        ) {
355            return;
356        }
357
358        const mobileOptions = document.createElement('div');
359        const firstGroup = document.createElement('div');
360        const secondGroup = document.createElement('div');
361
362        mobileOptions.className = 'parking-mobile-options';
363        firstGroup.className = 'parking-mobile-option';
364        secondGroup.className = 'parking-mobile-option';
365
366        firstGroup.appendChild(firstOption.cloneNode(true));
367        firstGroup.appendChild(firstButton.cloneNode(true));
368
369        secondGroup.appendChild(secondOption.cloneNode(true));
370        secondGroup.appendChild(secondButton.cloneNode(true));
371
372        mobileOptions.appendChild(firstGroup);
373        mobileOptions.appendChild(secondGroup);
374
375        optionsContainer.classList.add('parking-desktop-options');
376        footer.classList.add('parking-popup-footer');
377
378        optionsContainer.parentElement.appendChild(mobileOptions);
379    };
380
381    const activateParkingElements = () => {
382        removeParkingElements();
383
384        addParkingOption();
385        addParkingButton();
386
387        footer.classList.add('parking-popup-footer');
388
389        addMobileLayout();
390    };
391
392    document.addEventListener('click', (event) => {
393        const button = event.target.closest(
394            '[data-popup-init][data-popup="areas"]'
395        );
396
397        if (!button) {
398            return;
399        }
400
401        removeParkingElements();
402
403        if (button.dataset.id !== '129') {
404            return;
405        }
406
407        activateParkingElements();
408    });
409});

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.