try { var btnOpenMenu = document.querySelector('.burger-btn'); var headerMenu = document.querySelector('.bottom-header-row'); if (btnOpenMenu && headerMenu) { btnOpenMenu.addEventListener('click', function() { document.querySelector('html').style = "overflow: hidden;"; headerMenu.classList.add('open'); btnOpenMenu.style="opacity: 0;"; }); } } catch(e) { if (window.console) console.warn('add.js: burger-menu error', e); } const boxes = Array.from(document.querySelectorAll(".box__accordion")); boxes.forEach((box) => { box.addEventListener("click", boxHandler); }); function boxHandler(e) { e.preventDefault(); let currentBox = e.target.closest(".box__accordion"); let currentContent = currentBox.querySelector(".box__accordion_content");; currentBox.classList.toggle("active"); if (currentBox.classList.contains("active")) { currentContent.style.maxHeight = currentContent.scrollHeight + 20 + "px"; } else { currentContent.style.maxHeight = 0; } } const modalRequestForm = document.querySelector('.modal-request-form'); document.addEventListener("click", function (event) { const target = event.target; if (target.classList.contains("certificates__item_img")) { const screen = document.querySelector('.screen-certificates'); //screen.querySelector('.screen-certificates__img').innerHTML = event.target.outerHTML; document.querySelector('html').style = "overflow: hidden;" screen.classList.add('open'); return; } if (target.classList.contains("clickRemove") || event.target.classList.contains("btn-close-certificates-img")) { document.querySelector('.screen-certificates').classList.remove('open'); document.querySelector('html').style = ""; return; } if (target.classList.contains("btn-close-header-menu")) { headerMenu.classList.remove('open'); btnOpenMenu.style=""; document.querySelector('html').style = ""; return; } if (target.classList.contains("btn-write") || target.closest('.btn-write-camp')) { var campBtn = target.closest('.btn-write-camp'); if (campBtn && campBtn.tagName === 'A') event.preventDefault(); modalRequestForm.style=""; document.querySelector('html').style = "overflow: hidden;"; // Динамическая загрузка Bitrix24 (иначе не инициализируется в скрытом контейнере) var container = modalRequestForm.querySelector('.b24-form-container'); if (container && !container.querySelector('.b24-form')) { var fForm = modalRequestForm.dataset.b24Form; var fLoader = modalRequestForm.dataset.b24Loader; if (fForm && fLoader) { var s = document.createElement('script'); s.setAttribute('data-b24-form', fForm); s.setAttribute('data-skip-moving', 'true'); s.text = "(function(w,d,u){var s=d.createElement('script');s.async=true;s.src=u+'?'+(Date.now()/180000|0);var h=d.getElementsByTagName('script')[0];h.parentNode.insertBefore(s,h);})(window,document,'" + fLoader + "');"; container.appendChild(s); } } return; } if (target.classList.contains("btn-close-request-form") || target.classList.contains("btn-close-request-form-img")) { modalRequestForm.style="display: none;"; document.querySelector('html').style = ""; return; } // Клик по фону (затемнению) — закрыть модалку if (target === modalRequestForm) { modalRequestForm.style="display: none;"; document.querySelector('html').style = ""; return; } if(target.classList.contains("hover-effect")) { target.classList.remove("hover-effect"); return; } if (target.classList.contains("menu-item-has-children")) { target.parentNode.classList.add("hover-effect"); return; } }); /*(function ($) { $(document).ready(function () { $(".teachers-owl").owlCarousel({ //autoplay: true, loop: false, center: true, margin: 30, autoplayHoverPause: true, autoplayTimeout: 4000, items: 2, dots: false, nav: true, navText: ['', ''], //navText: ['', ''], responsive: { 0: { items: 1, center: true, }, 768: { items: 2, center: false, }, 992: { items: 4, center: false, margin: 36, }, } }); }); })(jQuery);*/ try { var swiperPopularSubjects = new Swiper(".swiper-popular-subjects", { spaceBetween: 10, slidesPerView: 1, speed: 400, preventInteractionOnTransition: true, keyboard: true, breakpoints: { 680: { slidesPerView: 2, speed: 400 }, 860: { slidesPerView: 3, speed: 400 } }, navigation: { nextEl: ".subject-next", prevEl: ".subject-prev" } }); } catch(e) { /* skip — swiper not on this page */ } try { var swiperFoto = new Swiper(".swiper-foto", { spaceBetween: 10, slidesPerView: 1, speed: 400, preventInteractionOnTransition: true, keyboard: true, navigation: { nextEl: ".foto-next", prevEl: ".foto-prev" }, pagination: { el: ".swiper-pagination", clickable: true } }); } catch(e) { /* skip — swiper not on this page */ } try { var swiperNews = new Swiper(".swiper-news", { spaceBetween: 10, slidesPerView: 1, speed: 400, preventInteractionOnTransition: true, keyboard: true, breakpoints: { 680: { slidesPerView: 2, speed: 400 }, 860: { slidesPerView: 3, speed: 400 } }, navigation: { nextEl: ".news-next", prevEl: ".news-prev" } }); } catch(e) { /* skip */ } try { var swiperCertificates = new Swiper(".certificates-owl", { spaceBetween: 10, slidesPerView: 1, speed: 400, loop: true, preventInteractionOnTransition: true, keyboard: true, navigation: { nextEl: ".certificates-owl-next", prevEl: ".certificates-owl-prev" } }); } catch(e) { /* skip */ } try { var swiperReviews = new Swiper(".reviews-owl", { spaceBetween: 40, speed: 400, slidesPerView: 1, keyboard: true, breakpoints: { 860: { slidesPerView: 2, speed: 400 } }, navigation: { nextEl: ".reviews-owl-next", prevEl: ".reviews-owl-prev" } }); } catch(e) { /* skip */ } try { var swiperTeachers = new Swiper(".teachers-owl", { spaceBetween: 30, speed: 400, slidesPerView: 1, keyboard: true, breakpoints: { 540: { slidesPerView: 2 }, 860: { slidesPerView: 4 }, 992: { slidesPerView: 4, spaceBetween: 36 } }, navigation: { nextEl: ".teachers-owl-next", prevEl: ".teachers-owl-prev" } }); } catch(e) { /* skip */ } setTimeout(() => { document.querySelectorAll('.b24-form-content .b24-form-btn').forEach(btn => { btn.textContent = 'записаться'; }); }, 1000); document.querySelectorAll('.header-menu').forEach(item => { item.classList.add('hover-effect'); }); /* ── "Читать ещё" (expand/collapse long reviews) ── */ (function() { 'use strict'; document.querySelectorAll('.review-card__btn-more').forEach(function(btn) { btn.addEventListener('click', function() { var textBlock = this.closest('.lw-card').querySelector('.lw-card__text'); if (textBlock) { textBlock.classList.toggle('review-card__text--expanded'); this.textContent = textBlock.classList.contains('review-card__text--expanded') ? 'Свернуть' : 'Читать ещё'; } }); }); })(); /* ── Reveal animation (IntersectionObserver) ── */ (function() { 'use strict'; var revealElements = document.querySelectorAll('.reveal'); if (revealElements.length && 'IntersectionObserver' in window) { var observer = new IntersectionObserver( function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { entry.target.classList.add('reveal--visible'); observer.unobserve(entry.target); } }); }, { threshold: 0.1 } ); revealElements.forEach(function(el) { observer.observe(el); }); } else { // Fallback: show all immediately revealElements.forEach(function(el) { el.classList.add('reveal--visible'); }); } })(); /* ── "Показать ещё" — batch load more ── */ (function() { 'use strict'; var loadMoreWrapper = document.getElementById('reviews-loadmore'); if (!loadMoreWrapper) return; var btn = loadMoreWrapper.querySelector('.reviews-loadmore__btn'); if (!btn) return; var nextBatch = 2; btn.addEventListener('click', function() { var cards = document.querySelectorAll('.lw-card[data-batch="' + nextBatch + '"]'); if (cards.length) { cards.forEach(function(card) { card.style.display = 'flex'; card.classList.add('reveal--visible'); // reveal + batch = видно }); nextBatch++; var remaining = document.querySelectorAll('.lw-card[data-batch="' + nextBatch + '"]'); if (!remaining.length) { loadMoreWrapper.style.display = 'none'; } } }); })(); /* ── Scroll Progress Bar ── */ (function() { var progressBar = document.createElement('div'); progressBar.className = 'pksh-scroll-progress'; document.body.prepend(progressBar); function updateProgress() { var scrollTop = window.pageYOffset || document.documentElement.scrollTop; var docHeight = document.documentElement.scrollHeight - document.documentElement.clientHeight; var progress = (scrollTop / docHeight) * 100; progressBar.style.width = progress + '%'; } window.addEventListener('scroll', updateProgress, { passive: true }); window.addEventListener('resize', updateProgress, { passive: true }); updateProgress(); })(); /* ── Desktop Sticky CTA — show after hero ── */ (function() { var sticky = document.querySelector('.sticky-cta-desktop'); var hero = document.querySelector('.banner'); if (!sticky || !hero) return; var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { // Show sticky CTA when hero is NOT visible (scrolled past) sticky.classList.toggle('visible', !entry.isIntersecting); }); }, { threshold: 0 }); observer.observe(hero); })(); /* ── Mobile banner padding: compensate for fixed header ── */ (function() { var banner = document.querySelector('.page-pksh .banner'); var header = document.querySelector('.header'); if (banner && header && window.innerWidth <= 860) { var headerH = header.offsetHeight || 76; banner.style.paddingTop = headerH + 'px'; banner.style.marginTop = '-' + headerH + 'px'; } })(); /* ── .open-bitrix-form → opens modal form ── */ document.querySelectorAll('.open-bitrix-form').forEach(btn => { btn.addEventListener('click', function(e) { const modal = document.querySelector('.modal-request-form'); if (modal) { modal.style = ""; // Динамическая загрузка Bitrix24 var container = modal.querySelector('.b24-form-container'); if (container && !container.querySelector('.b24-form')) { var fForm = modal.dataset.b24Form; var fLoader = modal.dataset.b24Loader; if (fForm && fLoader) { var s = document.createElement('script'); s.setAttribute('data-b24-form', fForm); s.setAttribute('data-skip-moving', 'true'); s.text = "(function(w,d,u){var s=d.createElement('script');s.async=true;s.src=u+'?'+(Date.now()/180000|0);var h=d.getElementsByTagName('script')[0];h.parentNode.insertBefore(s,h);})(window,document,'" + fLoader + "');"; container.appendChild(s); } } } }); }); // Закрытие модалки по Escape document.addEventListener("keydown", function(e) { if (e.key === "Escape") { const modal = document.querySelector('.modal-request-form'); if (modal && modal.style.display !== "none") { modal.style.display = "none"; document.querySelector('html').style = ""; } } }); /* ── FAQ Accordion (mystyle-accordion) ── */ document.querySelectorAll('.mystyle-accordion-trigger').forEach(trigger => { trigger.addEventListener('click', function(e) { const item = this.closest('.mystyle-accordion-item'); if (!item) return; const isOpen = item.classList.contains('active'); // Закрываем все другие аккордеоны в том же контейнере const parent = item.parentElement; if (parent) { parent.querySelectorAll('.mystyle-accordion-item.active').forEach(other => { if (other !== item) { other.classList.remove('active'); } }); } if (isOpen) { item.classList.remove('active'); } else { item.classList.add('active'); } }); });