(function (){
'use strict';
function initCallbackPopup(){
document.addEventListener('click', function (e){
if(e.target.closest('.header__callback')){
e.preventDefault();
var popup=document.getElementById('spb-callback-popup');
if(popup) popup.style.display='flex';
}});
document.addEventListener('click', function (e){
if(e.target.classList.contains('callback-popup__overlay')||e.target.closest('.callback-popup__close')){
var popup=document.getElementById('spb-callback-popup');
if(popup) popup.style.display='none';
}});
document.addEventListener('keydown', function (e){
if(e.key==='Escape'){
var popup=document.getElementById('spb-callback-popup');
if(popup&&popup.style.display!=='none'){
popup.style.display='none';
}}
});
var callbackForm=document.getElementById('spb-callback-form');
if(callbackForm){
var termsCheckbox=callbackForm.querySelector('input[name="terms"]');
if(termsCheckbox){
termsCheckbox.addEventListener('change', function (){
termsCheckbox.setCustomValidity('');
});
}}
document.addEventListener('submit', function (e){
var form=e.target.closest('#spb-callback-form');
if(!form) return;
e.preventDefault();
var name=form.querySelector('[name="name"]').value;
var phone=form.querySelector('[name="phone"]').value;
var submitBtn=form.querySelector('.callback-popup__submit');
var statusEl=form.parentElement.querySelector('.callback-popup__status');
var terms=form.querySelector('[name="terms"]');
if(!name||!phone){
if(statusEl){
statusEl.style.display='block';
statusEl.style.color='#FF383C';
statusEl.textContent='Пожалуйста, заполните все поля.';
}
return;
}
if(terms&&!terms.checked){
if(statusEl){
statusEl.style.display='block';
statusEl.style.color='#FF383C';
statusEl.textContent='Необходимо дать согласие на обработку персональных данных.';
}
terms.focus();
return;
}
if(submitBtn){
submitBtn.disabled=true;
submitBtn.textContent='Отправка...';
}
var fd=new FormData();
fd.append('action', 'spb_callback_request');
fd.append('nonce', (typeof spbGlobal!=='undefined' ? spbGlobal.nonce:''));
fd.append('name', name);
fd.append('phone', phone);
if(terms) fd.append('terms', terms.checked ? '1':'');
var xhr=new XMLHttpRequest();
xhr.open('POST', (typeof spbGlobal!=='undefined' ? spbGlobal.ajaxUrl:'/wp-admin/admin-ajax.php'), true);
xhr.onload=function (){
var resp;
try { resp=JSON.parse(xhr.responseText); } catch (err){ resp=null; }
if(resp&&resp.success){
if(submitBtn){
submitBtn.textContent='Отправлено!';
submitBtn.disabled=true;
}
if(statusEl){
statusEl.style.display='block';
statusEl.style.color='#16A34A';
statusEl.textContent=resp.data.message||'Мы перезвоним вам в ближайшее время!';
}
form.reset();
setTimeout(function (){
var popup=document.getElementById('spb-callback-popup');
if(popup) popup.style.display='none';
if(submitBtn){
submitBtn.disabled=false;
submitBtn.textContent='Перезвоните мне';
}
if(statusEl) statusEl.style.display='none';
}, 3000);
}else{
if(submitBtn){
submitBtn.disabled=false;
submitBtn.textContent='Перезвоните мне';
}
if(statusEl){
statusEl.style.display='block';
statusEl.style.color='#FF383C';
statusEl.textContent=(resp&&resp.data&&resp.data.message)||'Ошибка отправки. Попробуйте позвонить нам.';
}}
};
xhr.onerror=function (){
if(submitBtn){
submitBtn.disabled=false;
submitBtn.textContent='Перезвоните мне';
}
if(statusEl){
statusEl.style.display='block';
statusEl.style.color='#FF383C';
statusEl.textContent='Ошибка сети. Попробуйте позвонить нам.';
}};
xhr.send(fd);
});
}
function initMobileMenu(){
var menu=document.getElementById('spb-mobile-menu');
if(!menu) return;
var burger=document.getElementById('spb-burger');
var closeBtn=document.getElementById('spb-mobile-close');
var overlay=menu.querySelector('.mobile-menu__overlay');
function open(){
menu.classList.add('mobile-menu--open');
document.body.classList.add('mobile-menu-open');
}
function close(){
menu.classList.remove('mobile-menu--open');
document.body.classList.remove('mobile-menu-open');
}
if(burger) burger.addEventListener('click', open);
if(closeBtn) closeBtn.addEventListener('click', close);
if(overlay) overlay.addEventListener('click', close);
document.addEventListener('keydown', function (e){
if(e.key==='Escape'&&menu.classList.contains('mobile-menu--open')){
close();
}});
}
document.addEventListener('DOMContentLoaded', function (){
initCallbackPopup();
initMobileMenu();
});
})();