PageSourceSearch

https://ukids.ru/wp-content/themes/reboot_child/assets/js/front-page.js?ver=1.7

js ukids.ru collected 2026-10-08 03:25:19 UTC 45,013 bytes, 1,061 lines download raw bytes

1/* Прогресс бар */
2window.addEventListener('scroll', function() {
3    var scrollTop = window.scrollY || document.documentElement.scrollTop;
4    var scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
5    var scrollPercent = (scrollTop / scrollHeight) * 100;
6
7    document.getElementById('progress-bar').style.width = scrollPercent + '%';
8});
9
10document.addEventListener('DOMContentLoaded', (event) => {
11    let email = document.querySelector('input.email-mask');
12    if (email) {
13        Inputmask({
14            alias: 'email',
15            clearIncomplete: true,
16            greedy: false
17        }).mask(email)
18    }
19
20    /*POPUP Видео*/
21    const video = document.querySelectorAll('.popup-video');
22
23    video.forEach(addListTrigger => {
24        addListTrigger.addEventListener('click', function(event) {
25            event.preventDefault();
26            Fancybox.show([{ src: '#popup-video', type: 'inline' }], {
27                dragToClose: false,
28                closeButton: false
29            });
30        });
31    });
32
33    function iniSubmitForm() {
34        const form = document.querySelector('.write-us-form');
35        if (!form) return;
36
37        const submitButton = form.querySelector('.btn-write');
38
39        if (form) {
40            ym(97424487, 'reachGoal', 'pokaz_otkr_sotrydnichestvo');
41        }
42
43        if (submitButton) {
44            const phoneInput = form.querySelector('input[name="phone"]');
45
46            submitButton.addEventListener('click', function(event) {
47                event.preventDefault();
48
49                const nameInput = form.querySelector('input[name="name"]');
50                const phoneInput = form.querySelector('input[type="tel"]');
51                const companyInput = form.querySelector('input[name="company"]');
52                const messageInput = form.querySelector('textarea[name="textarea"]');
53                const consentCheckbox = form.querySelector('input[type="checkbox"]');
54
55                document.getElementById('name-error').textContent = '';
56                document.getElementById('phone-error').textContent = '';
57                document.getElementById('message-error').textContent = '';
58                document.getElementById('consent-error').textContent = '';
59
60                function showError(elementId, message) {
61                    const errorElement = document.getElementById(elementId);
62                    errorElement.textContent = message;
63                    errorElement.classList.add('active');
64
65                    setTimeout(() => {
66                        errorElement.textContent = '';
67                        errorElement.classList.remove('active');
68                    }, 3000);
69                }
70
71                if (!nameInput.value) {
72                    showError('name-error', 'Пожалуйста, введите ваше имя.');
73                    return;
74                }
75
76                if (!phoneInput.value) {
77                    showError('phone-error', 'Пожалуйста, введите ваш номер телефона.');
78                    return;
79                }
80
81                if (!messageInput.value) {
82                    showError('message-error', 'Пожалуйста, опишите ваше предложение.');
83                    return;
84                }
85
86                if (!consentCheckbox.checked) {
87                    showError('consent-error', 'Вы должны согласиться на обработку персональных данных.');
88                    return;
89                }
90
91                const text = `
92                #Предложение с сайта
93                Имя: ${nameInput.value}
94                Телефон: ${phoneInput.value}
95                Компания: ${companyInput.value}
96                Предложение: ${messageInput.value}
97            `;
98
99                const params = {
100                    chat_id: '-1002291307547',
101                    parse_mode: 'html',
102                    text: text.trim()
103                };
104
105                console.group('📤 Отправка формы: Сотрудничество (Telegram)');
106                console.log('Время отправки:', new Date().toLocaleStr
106ing());
107                console.log('URL:', 'https://api.telegram.org/bot[СКРЫТО]/sendMessage');
108                console.log('Данные формы:', {
109                    chat_id: params.chat_id,
110                    parse_mode: params.parse_mode,
111                    text: params.text
112                });
113                console.groupEnd();
114
115                fetch('https://api.telegram.org/bot7320708967:AAHqKiKbH1o00CGnPmhcBd23vOylfJwlm9s/sendMessage', {
116                    method: 'POST',
117                    headers: {
118                        'Content-Type': 'application/x-www-form-urlencoded',
119                    },
120                    body: new URLSearchParams(params),
121                })
122                    .then(response => response.json())
123                    .then(data => {
124                        console.group('📥 Ответ сервера: Сотрудничество (Telegram)');
125                        console.log('Время ответа:', new Date().toLocaleString());
126                        console.log('Ответ Telegram:', data);
127                        console.log('Успешно:', data.ok ? '✅' : '❌');
128                        console.groupEnd();
129
130                        if (data.ok) {
131                            Fancybox.show([{
132                                src: '#popup_close',
133                                type: 'inline'
134                            }], {
135                                dragToClose: false,
136                                closeButton: false
137                            });
138                            ym(97424487, 'reachGoal', 'lead_otkr_sotrydnichestvo');
139                            form.reset();
140                        } else {
141                            showError('name-error', 'Ошибка отправки данных в Telegram.');
142                        }
143                    })
144                    .catch(error => {
145                        console.group('📥 Ответ сервера: Сотрудничество (Telegram)');
146                        console.error('❌ Ошибка при отправке данных в Telegram:', error);
147                        console.groupEnd();
148                        showError('name-error', 'Ошибка отправки данных в Telegram.');
149                    });
150            });
151        }
152    }
153
154    iniSubmitForm();
155
156    function iniSubscribeFormFirst() {
157        const form = document.querySelector('.subscribe-form.first');
158        if (!form) return;
159
160        const submitButton = form.querySelector('.submit-button');
161        const phoneInput = form.querySelector('input[name="phone"]');
162
163        submitButton.addEventListener('click', function(event) {
164            event.preventDefault();
165
166            const nameInput = form.querySelector('input[name="name"]');
167            const emailInput = form.querySelector('input[name="email"]');
168            const roistatInput = form.querySelector('input[name="roistat"]');
169            const tariffInput = form.querySelector('input[name="Tariff"]');
170            const tipSdelkiInput = form.querySelector('input[name="tip_sdelki"]');
171            const typeleadInput = form.querySelector('input[name="typelead"]');
172            const titleInput = form.querySelector('input[name="TITLE"]');
173            const promocodeInput = form.querySelector('input[name="promocode"]');
174
175            document.getElementById('name-error-subscribe-first').textContent = '';
176            document.getElementById('phone-error-subscribe-first').textContent = '';
177            document.getElementById('email-error-subscribe-first').textContent = '';
178
179            function showError(id, message) {
180                const el = document.getElementById(id);
181                el.textContent = message;
182                setTimeout(() => el.textContent = '', 3000);
183            }
184
185            if (!nameInput.value.trim()) {
186                showError('name-error-subscribe-first', 'Пожалуйста, введите ваше имя.');
187                return;
188            }
189
190            if (!phoneInput.value.trim()) {
191                showError('phone-error-subscribe-first', 'Пожалуйста, введите ваш номер телефона.');
192                return;
193            }
194
195            if (!emailInput.value.trim()) {
196                showError('email-error-subscribe-first', 'Пожалуйста, введите ваш E-mail.');
197                return;
198            }
199
200            const rawPhone = phoneInput.value;
201            const sanitizedPhone = rawPhone.replace(/[()\s\-]/g, '').trim();
202
203            const data = new URLSearchParams();
204            const urlParams = new URLSearchParams(window.location.search);
205
206            data.append('action', 'subscribe_form_first');
207            data.append('name', nameInput.value.trim());
208            data.append('phone', sanitizedPhone);
209            data.append('email', emailInput.value.trim());
210            data.append('roistat', roistatInput?.value ?? '');
211            data.append('Tariff', tariffInput?.value ?? '');
212            data.append('tip_sdelki', tipSdelkiInput?.value ?? '');
213            data.append('typelead', typeleadInput?.value ?? '');
214            data.append('title', titleInput?.value ?? '');
215            data.append('promocode', promocodeInput?.value.trim() ?? '');
216
217            ['utm_term', 'utm_source', 'utm_medium', 'utm_content', 'utm_campaign'].forEach(param => {
218                data.append(param, urlParams.get(param) ?? '');
219            });
220
221            console.group('📤 Отправка формы: Подписка (первая форма)');
222            console.log('Время отправки:', new Date().toLocaleString());
223            console.log('URL:', '/wp-content/themes/reboot_child/ajax/ajax.php');
224            console.log('Данные формы:', Object.fromEntries(data.entries()));
225            console.groupEnd();
226
227            const xhr = new XMLHttpRequest();
228            xhr.open('POST', '/wp-content/themes/reboot_child/ajax/ajax.php');
229            xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
230            xhr.send(data);
231
232            xhr.onreadystatechange = function() {
233                if (xhr.readyState === 4) {
234                    console.group('📥 Ответ сервера: Подписка (первая форма)');
235                    console.log('Время ответа:', new Date().toLocaleString());
236                    console.log('HTTP статус:', xhr.status);
237                    console.log('Сырой ответ:', xhr.responseText);
238
239                    if (xhr.status === 200) {
240                        try {
241                            const result = JSON.parse(xhr.responseText);
242                            console.log('Распарсенный JSON:', result);
243                            console.log('Успешно:', result.success ? '✅' : '❌');
244                            console.groupEnd();
245
246                            if (result.success) {
247                                Fancybox.show([{ src: '#popup_close', type: 'inline' }], {
248                                    dragToClose: false,
249                                    closeButton: false
250                                });
251                                ym(97424487, 'reachGoal', 'lead_otkr_zapisatsya');
252                                form.reset();
253                            } else {
254                                showError('name-error-subscribe-first', result.message || 'Ошибка отправки.');
255                            }
256                        } catch (e) {
257                            console.error('❌ Ошибка разбора ответа:', e);
258                            console.error('Проблемный текст:', xhr.responseText);
259                            console.groupEnd();
260                        }
261                    } else {
262                        console.error('❌ HTTP ошибка:', xhr.status);
263                        console.groupEnd();
264                    }
265                }
266            };
267        });
268    }
269
270    iniSubscribeFormFirst();
271
272    function iniSubscribeFormSecond() {
273        const form = document.querySelector('.subscribe-form.second');
274        if (!form) return;
275
276        const submitButton = form.querySelector('.submit-button');
277        const phoneInput = form.querySelector('input[name="phone"]');
278
279        submitButton.addEventListener('click', function(event) {
280            event.preventDefault();
281
282            const nameInput = form.querySelector('input[name="name"]');
283            const emailInput = form.querySelector('input[name="email"]');
284            const roistatInput = form.querySelector('input[name="roistat"]');
285            const tariffInput = form.querySelector('input[name="Tariff"]');
286            const tipSdelkiInput = form.querySelector('input[name="tip_sdelki"]');
287            const typeleadInput = form.querySelector('input[name="typelead"]');
288            const titleInput = form.querySelector('input[name="TITLE"]');
289            const promocodeInput = form.querySelector('input[name="promocode"]');
290
291            document.getElementById('name-error-subscribe-second').textContent = '';
292            document.getElementById('phone-error-subscribe-second').textContent = '';
293            document.getElementById('email-error-subscribe-second').textContent = '';
294
295            function showError(id, message) {
296                const el = document.getElementById(id);
297                el.textContent = message;
298                setTimeout(() => el.textContent = '', 3000);
299            }
300
301            if (!nameInput.value.trim()) {
302                showError('name-error-subscribe-second', 'Пожалуйста, введите ваше имя.');
303                return;
304            }
305
306            if (!phoneInput.value.trim()) {
307                showError('phone-error-subscribe-second', 'Пожалуйста, введите ваш номер телефона.');
308                return;
309            }
310
311            if (!emailInput.value.trim()) {
312                showError('email-error-subscribe-second', 'Пожалуйста, введите ваш E-mail.');
313                return;
314            }
315
316            const rawPhone = phoneInput.value;
317            const sanitizedPhone = rawPhone.replace(/[()\s\-]/g, '').trim();
318
319            const data = new URLSearchParams();
320            const urlParams = new URLSearchParams(window.location.search);
321
322            data.append('action', 'subscribe_form_second');
323            data.append('name', nameInput.value.trim());
324            data.append('phone', sanitizedPhone);
325            data.append('email', emailInput.value.trim());
326            data.append('roistat', roistatInput?.value ?? '');
327            data.append('Tariff', tariffInput?.value ?? '');
328            data.append('tip_sdelki', tipSdelkiInput?.value ?? '');
329            data.append('typelead', typeleadInput?.value ?? '');
330            data.append('title', titleInput?.value ?? '');
331            data.append('promocode', promocodeInput?.value.trim() ?? '');
332
333            ['utm_term', 'utm_source', 'utm_medium', 'utm_content', 'utm_campaign'].forEach(param => {
334                data.append(param, urlParams.get(param) ?? '');
335            });
336
337            console.group('📤 Отправка формы: Подписка (вторая форма)');
338            console.log('Время отправки:', new Date().toLocaleString());
339            console.log('URL:', '/wp-content/themes/reboot_child/ajax/ajax.php');
340            console.log('Данные формы:', Object.fromEntries(data.entries()));
341            console.groupEnd();
342
343            const xhr = new XMLHttpRequest();
344            xhr.open('POST', '/wp-content/themes/reboot_child/ajax/ajax.php');
345            xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
346            xhr.send(data);
347
348            xhr.onreadystatechange = function() {
349                if (xhr.readyState === 4) {
350                    console.group('📥 Ответ сервера: Подписка (вторая форма)');
351                    console.log('Время ответа:', new Date().toLocaleString());
352                    console.log('HTTP статус:', xhr.status);
353                    console.log('Сырой ответ:', xhr.responseText);
354
355                    if (xhr.status === 200) {
356                        try {
357                            const result = JSON.parse(xhr.responseText);
358                            console.log('Распарсенный JSON:', result);
359                            console.log('Успешно:', result.success ? '✅' : '❌');
360                            console.groupEnd();
361
362                            if (result.success) {
363                                Fancybox.show([{ src: '#popup_close', type: 'inline' }], {
364                                    dragToClose: false,
365                                    closeButton: false
366                                });
367                                ym(97424487, 'reachGoal', 'lead_otkr_zapisatsya');
368                                form.reset();
369                            } else {
370                                showError('name-error-subscribe-second', result.message || 'Ошибка отправки.');
371                            }
372                        } catch (e) {
373                            console.error('❌ Ошибка разбора ответа:', e);
374                            console.error('Проблемный текст:', xhr.responseText);
375                            console.groupEnd();
376                        }
377                    } else {
378                        console.error('❌ HTTP ошибка:', xhr.status);
379                        console.groupEnd();
380                    }
381                }
382            };
383        });
384    }
385
386    iniSubscribeFormSecond();
387});
388
389function setupTabs() {
390    const tabs = document.querySelectorAll('.program-tab');
391    const cards = document.querySelectorAll('.program-card');
392    window.age = 6;
393
394    tabs.forEach(tab => {
395        tab.addEventListener('click', function() {
396            tabs.forEach(t => t.classList.remove('active'));
397            cards.forEach(card => card.classList.remove('active'));
398
399            this.classList.add('active');
400            window.age = this.dataset.age
401
402            const tabData = this.getAttribute('data-tab');
403
404            const activeCard = document.querySelector(`.program-card[data-card="${tabData}"]`);
405            if (activeCard) {
406                activeCard.classList.add('active');
407            }
408        });
409    });
410}
411setupTabs();
412
413const videoSlider = document.querySelector('.videoSwiper');
414if (videoSlider) {
415    var swiper = new Swiper(videoSlider, {
416        slidesPerView: 1,
417        spaceBetween: 40,
418        loop: true,
419        navigation: {
420            nextEl: '.video-slider .swiper-button-next',
421            prevEl: '.video-slider .swiper-button-prev',
422        },
423        breakpoints: {
424            768: {
425                slidesPerView: 1,
426                spaceBetween: 10
427            },
428            991: {
429                slidesPerView: 2,
430                spaceBetween: 30
431            },
432            1200: {
433                slidesPerView: 3,
434                spaceBetween: 30
435            }
436        },
437    });
438}
439
440const accordionItems = document.querySelectorAll('.accordion-item');
441
442if (accordionItems.length) {
443    accordionItems.forEach((item) => {
444        item.addEventListener('click', () => {
445            accordionItems.forEach((otherItem) => {
446                if (otherItem !== item) {
447                    otherItem.classList.remove('open');
448                }
449            });
450            item.classList.toggle('open');
451        });
452    });
453}
454
455document.addEventListener('scroll', function() {
456    const scrollImage = document.querySelector('.scroll-image');
457    const textOne = document.querySelector('.right-text.one');
458    const textTwo = document.querySelector('.right-text.second');
459
460    if (!scrollImage || !textOne || !textTwo) return;
461
462    const textOneRect = textOne.getBoundingClientRect();
463    const textTwoRect = textTwo.getBoundingClientRect();
464
465    const scrollDistance = textTwoRect.top - textOneRect.top;
466    const scrollTop = window.scrollY || document.documentElement.scrollTop;
467
468    if (scrollTop >= textOneRect.top + window.scrollY && scrollTop <= textTwoRect.top + window.scrollY) {
469        const newTop = Math.min(scrollTop - (textOneRect.top + window.scrollY), scrollDistance);
470        scrollImage.style.top = `${newTop}px`;
471
472        const opacityOne = 1 - (newTop / scrollDistance);
473        const opacityTwo = newTop / scrollDistance;
474
475        textOne.style.opacity = opacityOne;
476        textTwo.style.opacity = opacityTwo;
477    } else if (scrollTop < textOneRect.top + window.scrollY) {
478        textOne.style.opacity = 1;
479        textTwo.style.opacity = 0;
480        scrollImage.style.top = '0px';
481    } else if (scrollTop > textTwoRect.top + window.scrollY) {
482        textOne.style.opacity = 0;
483        textTwo.style.opacity = 1;
484        scrollImage.style.top = `${scrollDistance}px`;
485    }
486});
487
488// POPUP Овсянка
489document.addEventListener('DOMContentLoaded', function() {
490    const ovsyankaBtn = document.getElementById('ovsyanka-btn');
491    const ovsyankaForm = document.getElementById('ovsyanka-form');
492
493    if (ovsyankaBtn) {
494        ovsyankaBtn.addEventListener('click', function(event) {
495            event.preventDefault();
496            ym(97424487, 'reachGoal', 'klik_zakr_ovsyanka');
497            Fancybox.show([{ src: '#popup-ovsyanka', type: 'inline' }], {
498                dragToClose: false,
499                closeButton: false
500            });
501        });
502    }
503
504    if (ovsyankaForm) {
505        ovsyankaForm.addEventListener('submit', function(e) {
506            e.preventDefault();
507
508            const formData = new FormData(ovsyankaForm);
509            const submitBtn = ovsyankaForm.querySelector('.btn-submit');
510            const messageBlock = ovsyankaForm.querySelector('.form-message');
511
512            const privacyCheckbox = ovsyankaForm.querySelector('#ovsyanka-privacy');
513            if (!privacyCheckbox.checked) {
514                messageBlock.textContent = 'Пожалуйста, согласитесь с политикой конфиденциальности';
515                messageBlock.style.display = 'block';
516                messageBlock.style.color = 'red';
517                return false;
518            }
519
520            submitBtn.disabled = true;
521            submitBtn.textContent = 'Отправка...';
522
523            const email = formData.get('email');
524            const name = formData.get('name');
525
526            console.group('📤 Отправка формы: Овсянка');
527            console.log('Время отправки:', new Date().toLocaleString());
528            console.log('Данные формы:', { email, name });
529            console.groupEnd();
530
531            const iframeName = 'ovsyanka-iframe-' + Date.now();
532            const iframe = document.createElement('iframe');
533            iframe.name = iframeName;
534            iframe.style.display = 'none';
535            document.body.appendChild(iframe);
536
537            const hiddenForm = document.createElement('form');
538            hiddenForm.method = 'POST';
539            hiddenForm.action = 'https://tilda.dmsubscribe.ru/';
540            hiddenForm.target = iframeName;
541            hiddenForm.style.display = 'none';
542
543            const fields = {
544                'list_id': '165380',
545                'no_conf': 'yes',
546                'email': email,
547                'name': name
548            };
549
550            Object.keys(fields).forEach(key => {
551                const input = document.createElement('input');
552                input.type = 'hidden';
553                input.name = key;
554                input.value = fields[key];
555                hiddenForm.appendChild(input);
556            });
557
558            document.body.appendChild(hiddenForm);
559
560            let submitted = false;
561            iframe.onload = function() {
562                if (submitted) {
563                    console.group('📥 Ответ сервера: Овсянка');
564                    console.log('Время ответа:', new Date().toLocaleString());
565                    console.log('Форма отправлена успешно');
566                    console.groupEnd();
567
568                    messageBlock.textContent = 'Спасибо! Проверьте вашу почту.';
569                    messageBlock.style.color = '#4CAF50';
570                    messageBlock.style.display = 'block';
571                    ovsyankaForm.reset();
572
573                    if (typeof ym !== 'undefined') {
574                        ym(97424487, 'reachGoal', 'lead_zakr_ovsyanka');
575                    }
576
577                    setTimeout(() => {
578                        Fancybox.close();
579                    }, 2000);
580
581                    setTimeout(() => {
582                        hiddenForm.remove();
583                        iframe.remove();
584                    }, 3000);
585
586                    submitBtn.disabled = false;
587                    submitBtn.textContent = 'Получить';
588                }
589            };
590
591            submitted = true;
592            hiddenForm.submit();
593        });
594    }
595
596    // POPUP Программа
597    const programBtn = document.getElementById('program-btn');
598    const programForm = document.getElementById('program-form');
599
600    if (programBtn) {
601        programBtn.addEventListener('click', function(event) {
602            event.preventDefault();
603
604            const currentAge = window.age || 6;
605            const ageField = document.getElementById('program-age');
606
607            let ageValue = '';
608            switch (parseInt(currentAge)) {
609                case 6:
610                    ageValue = '6';
611                    break;
612                case 11:
613                    ageValue = '7';
614                    break;
615                case 12:
616                    ageValue = '11';
617                    break;
618                case 16:
619                    ageValue = '12';
620                    break;
621                default:
622                    ageValue = '6';
623            }
624
625            ageField.value = ageValue;
626
627            ym(97424487, 'reachGoal', 'klik_skach_programmy');
628            Fancybox.show([{ src: '#popup-program', type: 'inline' }], {
629                dragToClose: false,
630                closeButton: false
631            });
632        });
633    }
634
635    if (programForm) {
636        programForm.addEventListener('submit', function(e) {
637            e.preventDefault();
638
639            const formData = new FormData(programForm);
640            const submitBtn = programForm.querySelector('.btn-submit');
641            const messageBlock = programForm.querySelector('.form-message');
642
643            const privacyCheckbox = programForm.querySelector('#program-privacy');
644            if (!privacyCheckbox.checked) {
645                messageBlock.textContent = 'Пожалуйста, согласитесь с политикой конфиденциальности';
646                messageBlock.style.display = 'block';
647                messageBlock.style.color = 'red';
648                return false;
649            }
650
651            submitBtn.disabled = true;
652            submitBtn.textContent = 'Отправка...';
653
654            const email = formData.get('email');
655            const name = formData.get('name');
656            const age = formData.get('age');
657
658            console.group('📤 Отправка формы: Программа');
659            console.log('Время отправки:', new Date().toLocaleString());
660            console.log('Данные формы:', { email, name, age });
661            console.groupEnd();
662
663            const iframeName = 'program-iframe-' + Date.now();
664            const iframe = document.createElement('iframe');
665            iframe.name = iframeName;
666            iframe.style.display = 'none';
667            document.body.appendChild(iframe);
668
669            const hiddenForm = document.createElement('form');
670            hiddenForm.method = 'POST';
671            hiddenForm.action = 'https://sendsay.ru/backend/tilda/1QEGaj4Uge_p8eNc9O-5CcOg4vhNS5oIzExD4pLZiqi2Yeg';
672            hiddenForm.target = iframeName;
673            hiddenForm.style.display = 'none';
674
675            const fields = {
676                'email': email,
677                'name': name,
678                'age': age
679            };
680
681            Object.keys(fields).forEach(key => {
682                const input = document.createElement('input');
683                input.type = 'hidden';
684                input.name = key;
685                input.value = fields[key];
686                hiddenForm.appendChild(input);
687            });
688
689            document.body.appendChild(hiddenForm);
690
691            let submitted = false;
692            iframe.onload = function() {
693                if (submitted) {
694                    console.group('📥 Ответ сервера: Программа');
695                    console.log('Время ответа:', new Date().toLocaleString());
696                    console.log('Форма отправлена успешно');
697                    console.groupEnd();
698
699                    messageBlock.textContent = 'Спасибо! Проверьте вашу почту.';
700                    messageBlock.style.color = '#4CAF50';
701                    messageBlock.style.display = 'block';
702                    programForm.reset();
703
704                    if (typeof ym !== 'undefined') {
705                        ym(97424487, 'reachGoal', 'lead_skach_programmy');
706                    }
707
708                    setTimeout(() => {
709                        Fancybox.close();
710                    }, 2000);
711
712                    setTimeout(() => {
713                        hiddenForm.remove();
714                        iframe.remove();
715                    }, 3000);
716
717                    submitBtn.disabled = false;
718                    submitBtn.textContent = 'Получить';
719                }
720            };
721
722            submitted = true;
723            hiddenForm.submit();
724        });
725    }
726
727    // POPUP Пробная неделя
728    const trialBtns = document.querySelectorAll('.trial-week-btn');
729    const trialForm = document.getElementById('trial-form');
730
731    if (trialBtns.length > 0) {
732        trialBtns.forEach(btn => {
733            btn.addEventListener('click', function(event) {
734                event.preventDefault();
735
736                const titleField = trialForm.querySelector('input[name="TITLE"]');
737                if (titleField) {
738                    titleField.value = window.location.href;
739                }
740
741                if (this.classList.contains('diagnostics')) {
742                    ym(97424487, 'reachGoal', 'klik_diagnostika_zakr');
743                } else if (this.classList.contains('result-btn')) {
744                    ym(97424487, 'reachGoal', 'klik_zakr_zapis_2blok');
745                } else if (this.classList.contains('callback-btn')) {
746                    ym(97424487, 'reachGoal', 'klik_zakazat_zvonok');
747                } else if (this.classList.contains('widget-dynamic__message-btn')) {
748                    ym(97424487, 'reachGoal', 'klik_widget_poluchit_besplatno');
749                }
750
751                Fancybox.show([{ src: '#popup-trial', type: 'inline' }], {
752                    dragToClose: false,
753                    closeButton: false
754                });
755            });
756        });
757    }
758
759    if (trialForm) {
760        trialForm.addEventListener('submit', function(e) {
761            e.preventDefault();
762
763            const formData = new FormData(trialForm);
764            const submitBtn = trialForm.querySelector('.btn-submit');
765            const messageBlock = trialForm.querySelector('.form-message');
766
767            const privacyCheckbox = trialForm.querySelector('#trial-privacy');
768            if (!privacyCheckbox.checked) {
769                messageBlock.textContent = 'Пожалуйста, согласитесь с политикой конфиденциальности';
770                messageBlock.style.display = 'block';
771                messageBlock.style.color = 'red';
772                return false;
773            }
774
775            submitBtn.disabled = true;
776            submitBtn.textContent = 'Отправка...';
777
778            const name = formData.get('name');
779            const phone = formData.get('phone');
780            const email = formData.get('email');
781            const tariff = formData.get('Tariff');
782            const tipSdelki = formData.get('tip_sdelki');
783            const typelead = formData.get('typelead');
784            const title = formData.get('TITLE');
785
786            const roistatInput = trialForm.querySelector('input[name="roistat"]');
787            const roistat = roistatInput ? roistatInput.value : '';
788
789            const data = new URLSearchParams();
790            data.append('action', 'trial_week_form');
791            data.append('name', name);
792            data.append('phone', phone);
793            data.append('email', email);
794            data.append('Tariff', tariff);
795            data.append('tip_sdelki', tipSdelki);
796            data.append('typelead', typelead);
797            data.append('TITLE', title);
798            data.append('roistat', roistat);
799
800            const urlParams = new URLSearchParams(window.location.search);
801            ['utm_term', 'utm_source', 'utm_medium', 'utm_content', 'utm_campaign'].forEach(param => {
802                data.append(param, urlParams.get(param) || '');
803            });
804
805            console.group('📤 Отправка формы: Пробная неделя');
806            console.log('Время отправки:', new Date().toLocaleString());
807            console.log('URL:', '/wp-content/themes/reboot_child/ajax/ajax.php');
808            console.log('Данные формы:', Object.fromEntries(data.entries()));
809            console.groupEnd();
810
811            const xhr = new XMLHttpRequest();
812            xhr.open('POST', '/wp-content/themes/reboot_child/ajax/ajax.php');
813            xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
814            xhr.send(data);
815
816            xhr.onreadystatechange = function() {
817                if (xhr.readyState === 4) {
818                    console.group('📥 Ответ сервера: Пробная неделя');
819                    console.log('Время ответа:', new Date().toLocaleString());
820                    console.log('HTTP статус:', xhr.status);
821                    console.log('Сырой ответ:', xhr.responseText);
822
823                    if (xhr.status === 200) {
824                        try {
825                            const result = JSON.parse(xhr.responseText);
826                            console.log('Распарсенный JSON:', result);
827                            console.log('Успешно:', result.success ? '✅' : '❌');
828                            console.groupEnd();
829
830                            if (result.success) {
831                                messageBlock.textContent = 'Спасибо! Ваша заявка принята.';
832                                messageBlock.style.color = '#4CAF50';
833                                messageBlock.style.display = 'block';
834                                trialForm.reset();
835
836                                if (typeof ym !== 'undefined') {
837                                    ym(97424487, 'reachGoal', 'lead_probnayanedelya');
838                                }
839
840                                setTimeout(() => {
841                                    Fancybox.close();
842                                }, 2000);
843                            } else {
844                                messageBlock.textContent = result.message || 'Произошла ошибка. Попробуйте еще раз.';
845                                messageBlock.style.color = 'red';
846                                messageBlock.style.display = 'block';
847                            }
848                        } catch (e) {
849                            console.error('❌ Ошибка разбора ответа:', e);
850                            console.error('Проблемный текст:', xhr.responseText);
851                            console.groupEnd();
852
853                            messageBlock.textContent = 'Произошла ошибка. Попробуйте еще раз.';
854                            messageBlock.style.color = 'red';
855                            messageBlock.style.display = 'block';
856                        }
857                    } else {
858                        console.error('❌ HTTP ошибка:', xhr.status);
859                        console.groupEnd();
860
861                        messageBlock.textContent = 'Произошла ошибка. Попробуйте еще раз.';
862                        messageBlock.style.color = 'red';
863                        messageBlock.style.display = 'block';
864                    }
865
866                    submitBtn.disabled = false;
867                    submitBtn.textContent = 'Записаться';
868                }
869            };
870        });
871    }
872
873    // POPUP Тарифные формы (на главной странице)
874const tarifBtns = document.querySelectorAll('.tarif-form-btn');
875
876if (tarifBtns.length > 0) {
877    tarifBtns.forEach(btn => {
878        btn.addEventListener('click', function(event) {
879            event.preventDefault();
880
881            const tariff = this.getAttribute('data-tariff');
882            let popupId = '';
883            let goalName = '';
884
885            if (tariff === 'free') {
886                popupId = '#popup-tarif-diagnostika';
887                goalName = 'klik_tarify_diagnostika';
888            } else if (tariff === 'base') {
889                popupId = '#popup-tarif-base';
890                goalName = 'klik_tarify_base';
891            } else if (tariff === 'optimal') {
892                popupId = '#popup-tarif-optimal';
893                goalName = 'klik_tarify_optimalny';
894            }
895
896            if (typeof ym !== 'undefined' && goalName) {
897                ym(97424487, 'reachGoal', goalName);
898            }
899
900            const popup = document.querySelector(popupId);
901            if (popup) {
902                const tariffField = popup.querySelector('input[name="Tariff"]');
903                const titleField = popup.querySelector('input[name="TITLE"]');
904
905                if (tariffField) {
906                    tariffField.value = tariff;
907                }
908
909                if (titleField) {
910                    titleField.value = window.location.href;
911                }
912            }
913
914            if (popupId) {
915                Fancybox.show([{ src: popupId, type: 'inline' }], {
916                    dragToClose: false,
917                    closeButton: false
918                });
919            }
920        });
921    });
922}
923
924// Обработчик формы Диагностика
925const tarifDiagnostikaForm = document.getElementById('tarif-diagnostika-form');
926if (tarifDiagnostikaForm) {
927    tarifDiagnostikaForm.addEventListener('submit', function(e) {
928        e.preventDefault();
929        handleTarifFormSubmit(tarifDiagnostikaForm, 'lead_tarif_diagnostika');
930    });
931}
932
933// Обработчик формы Базовый
934const tarifBaseForm = document.getElementById('tarif-base-form');
935if (tarifBaseForm) {
936    tarifBaseForm.addEventListener('submit', function(e) {
937        e.preventDefault();
938        handleTarifFormSubmit(tarifBaseForm, 'lead_tarif_base');
939    });
940}
941
942// Обработчик формы Оптимальный
943const tarifOptimalForm = document.getElementById('tarif-optimal-form');
944if (tarifOptimalForm) {
945    tarifOptimalForm.addEventListener('submit', function(e) {
946        e.preventDefault();
947        handleTarifFormSubmit(tarifOptimalForm, 'lead_tarif_optimal');
948    });
949}
950
951// Общая функция обработки отправки тарифных форм
952function handleTarifFormSubmit(form, goalName) {
953    const formData = new FormData(form);
954    const submitBtn = form.querySelector('.btn-submit');
955    const messageBlock = form.querySelector('.form-message');
956
957    const privacyCheckbox = form.querySelector('input[name="privacy"]');
958    if (!privacyCheckbox.checked) {
959        messageBlock.textContent = 'Пожалуйста, согласитесь с политикой конфиденциальности';
960        messageBlock.style.display = 'block';
961        messageBlock.style.color = 'red';
962        return false;
963    }
964
965    submitBtn.disabled = true;
966    submitBtn.textContent = 'Отправка...';
967
968    const name = formData.get('name');
969    const phone = formData.get('phone');
970    const email = formData.get('email');
971    const tariff = formData.get('Tariff');
972    const tipSdelki = formData.get('tip_sdelki');
973    const typelead = formData.get('typelead');
974    const title = formData.get('TITLE');
975
976    const roistatInput = form.querySelector('input[name="roistat"]');
977    const roistat = roistatInput ? roistatInput.value : '';
978
979    const data = new URLSearchParams();
980    data.append('action', 'tarif_form');
981    data.append('name', name);
982    data.append('phone', phone);
983    data.append('email', email);
984    data.append('Tariff', tariff);
985    data.append('tip_sdelki', tipSdelki);
986    data.append('typelead', typelead);
987    data.append('TITLE', title);
988    data.append('roistat', roistat);
989
990    const urlParams = new URLSearchParams(window.location.search);
991    ['utm_term', 'utm_source', 'utm_medium', 'utm_content', 'utm_campaign'].forEach(param => {
992        data.append(param, urlParams.get(param) || '');
993    });
994
995    console.group('📤 Отправка формы: Тариф ' + tariff);
996    console.log('Время отправки:', new Date().toLocaleString());
997    console.log('URL:', '/wp-content/themes/reboot_child/ajax/ajax.php');
998    console.log('Данные формы:', Object.fromEntries(data.entries()));
999    console.groupEnd();
1000
1001    const xhr = new XMLHttpRequest();
1002    xhr.open('POST', '/wp-content/themes/reboot_child/ajax/ajax.php');
1003    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
1004    xhr.send(data);
1005
1006    xhr.onreadystatechange = function() {
1007        if (xhr.readyState === 4) {
1008            console.group('📥 Ответ сервера: Тариф ' + tariff);
1009            console.log('Время ответа:', new Date().toLocaleString());
1010            console.log('HTTP статус:', xhr.status);
1011            console.log('Сырой ответ:', xhr.responseText);
1012
1013            if (xhr.status === 200) {
1014                try {
1015                    const result = JSON.parse(xhr.responseText);
1016                    console.log('Распарсенный JSON:', result);
1017                    console.log('Успешно:', result.success ? '✅' : '❌');
1018                    console.groupEnd();
1019
1020                    if (result.success) {
1021                        messageBlock.textContent = 'Спасибо! Ваша заявка принята.';
1022                        messageBlock.style.color = '#4CAF50';
1023                        messageBlock.style.display = 'block';
1024                        form.reset();
1025
1026                        if (typeof ym !== 'undefined' && goalName) {
1027                            ym(97424487, 'reachGoal', goalName);
1028                        }
1029
1030                        setTimeout(() => {
1031                            Fancybox.close();
1032                        }, 2000);
1033                    } else {
1034                        messageBlock.textContent = result.message || 'Произошла ошибка. Попробуйте еще раз.';
1035                        messageBlock.style.color = 'red';
1036                        messageBlock.style.display = 'block';
1037                    }
1038                } catch (e) {
1039                    console.error('❌ Ошибка разбора ответа:', e);
1040                    console.error('Проблемный текст:', xhr.responseText);
1041                    console.groupEnd();
1042
1043                    messageBlock.textContent = 'Произошла ошибка. Попробуйте еще раз.';
1044                    messageBlock.style.color = 'red';
1045                    messageBlock.style.display = 'block';
1046                }
1047            } else {
1048                console.error('❌ HTTP ошибка:', xhr.status);
1049                console.groupEnd();
1050
1051                messageBlock.textContent = 'Произошла ошибка. Попробуйте еще раз.';
1052                messageBlock.style.color = 'red';
1053                messageBlock.style.display = 'block';
1054            }
1055
1056            submitBtn.disabled = false;
1057            submitBtn.textContent = form.id === 'tarif-diagnostika-form' ? 'Записаться' : 'Оплатить';
1058        }
1059    };
1060}
1061});

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.