'use strict';
function createSlider(config){
const {
trackSelector,
slideClass,
activeClass,
prevSelector,
nextSelector,
dotClass,
dotActiveClass,
dotDataAttr,
interval=5000,
root=document,
}=config;
const track=root.querySelector(`[${trackSelector}]`);
if(!track) return null;
const slides=Array.from(track.querySelectorAll(`.${slideClass}`));
if(slides.length===0) return null;
const prevBtn=root.querySelector(`[${prevSelector}]`);
const nextBtn=root.querySelector(`[${nextSelector}]`);
const dots=root ? Array.from(root.querySelectorAll(`.${dotClass}`)):[];
let current=0;
let timer=null;
let startX=0;
function goTo(index){
slides[current].classList.remove(activeClass);
if(dots[current]) dots[current].classList.remove(dotActiveClass);
current=(index + slides.length) % slides.length;
slides[current].classList.add(activeClass);
if(dots[current]) dots[current].classList.add(dotActiveClass);
}
function next(){ goTo(current + 1); }
function prev(){ goTo(current - 1); }
function startTimer(){
if(interval <=0) return;
timer=window.setInterval(next, interval);
}
function resetTimer(){
window.clearInterval(timer);
startTimer();
}
if(prevBtn){
prevBtn.addEventListener('click', ()=> { prev(); resetTimer(); });
}
if(nextBtn){
nextBtn.addEventListener('click', ()=> { next(); resetTimer(); });
}
dots.forEach((dot, i)=> {
dot.addEventListener('click', ()=> { goTo(i); resetTimer(); });
});
track.setAttribute('tabindex', '0');
track.addEventListener('keydown', (e)=> {
if(e.key==='ArrowLeft'){ prev(); resetTimer(); }
if(e.key==='ArrowRight'){ next(); resetTimer(); }});
track.addEventListener('touchstart', (e)=> {
startX=e.touches[0].clientX;
}, { passive: true });
track.addEventListener('touchend', (e)=> {
const diff=startX - e.changedTouches[0].clientX;
if(Math.abs(diff) > 50){
diff > 0 ? next():prev();
resetTimer();
}});
track.addEventListener('mouseenter', ()=> window.clearInterval(timer));
track.addEventListener('mouseleave', startTimer);
track.addEventListener('focusin',   ()=> window.clearInterval(timer));
track.addEventListener('focusout',  startTimer);
startTimer();
return { goTo, next, prev };}
function initHeroSlider(){
const hero=document.querySelector('.ct-hero');
if(!hero) return;
createSlider({
trackSelector: 'data-slider',
slideClass:    'ct-slide',
activeClass:   'ct-slide--active',
prevSelector:  'data-prev',
nextSelector:  'data-next',
dotClass:      'ct-dots__dot',
dotActiveClass:'ct-dots__dot--active',
interval:      5000,
root:          hero,
});
}
function initTestimonials(){
const wrap=document.querySelector('[data-testimonials]');
if(!wrap) return;
const slides=Array.from(wrap.querySelectorAll('.ct-testimonial'));
if(slides.length===0) return;
const section=wrap.closest('.ct-testimonials-section')||document;
const dots=Array.from(section.querySelectorAll('.ct-dots--testimonials .ct-dots__dot'));
let current=0;
let timer=null;
let startX=0;
function goTo(index){
slides[current].classList.remove('ct-testimonial--active');
if(dots[current]) dots[current].classList.remove('ct-dots__dot--active');
current=(index + slides.length) % slides.length;
slides[current].classList.add('ct-testimonial--active');
if(dots[current]) dots[current].classList.add('ct-dots__dot--active');
}
function next(){ goTo(current + 1); }
function prev(){ goTo(current - 1); }
function startTimer(){
timer=window.setInterval(next, 6000);
}
function resetTimer(){
window.clearInterval(timer);
startTimer();
}
const prevBtn=wrap.querySelector('[data-tprev]');
const nextBtn=wrap.querySelector('[data-tnext]');
if(prevBtn) prevBtn.addEventListener('click', ()=> { prev(); resetTimer(); });
if(nextBtn) nextBtn.addEventListener('click', ()=> { next(); resetTimer(); });
dots.forEach((dot, i)=> {
dot.addEventListener('click', ()=> { goTo(i); resetTimer(); });
});
wrap.addEventListener('touchstart', (e)=> {
startX=e.touches[0].clientX;
}, { passive: true });
wrap.addEventListener('touchend', (e)=> {
const diff=startX - e.changedTouches[0].clientX;
if(Math.abs(diff) > 40){
diff > 0 ? next():prev();
resetTimer();
}});
wrap.addEventListener('mouseenter', ()=> window.clearInterval(timer));
wrap.addEventListener('mouseleave', startTimer);
startTimer();
}
function initMobileNav(){
document.addEventListener('click', (e)=> {
const openMenu=document.querySelector('.wp-block-navigation__responsive-container.is-menu-open'
);
if(!openMenu) return;
if(e.target.closest&&e.target.closest('.wp-block-navigation__responsive-container-open')){
return;
}
const inner=openMenu.querySelector('.wp-block-navigation__responsive-container-content'
);
if(inner&&!inner.contains(e.target)){
const closeBtn=document.querySelector('.wp-block-navigation__responsive-container-close'
);
if(closeBtn) closeBtn.click();
}});
}
function initSmoothScroll(){
document.querySelectorAll('a[href^="#"]').forEach((anchor)=> {
anchor.addEventListener('click', (e)=> {
const target=document.querySelector(anchor.getAttribute('href'));
if(!target) return;
e.preventDefault();
target.scrollIntoView({ behavior: 'smooth', block: 'start' });
});
});
}
function initCommentForm(){
const form=document.querySelector('.comment-form');
if(!form) return;
const authorEl=form.querySelector('p.comment-form-author');
const emailEl=form.querySelector('p.comment-form-email');
const urlEl=form.querySelector('p.comment-form-url');
if(!authorEl||!emailEl) return;
const row=document.createElement('div');
row.className='ct-comment-fields-row';
authorEl.parentNode.insertBefore(row, authorEl);
row.appendChild(authorEl);
row.appendChild(emailEl);
if(urlEl) row.appendChild(urlEl);
}
function init(){
initHeroSlider();
initTestimonials();
initMobileNav();
initSmoothScroll();
initCommentForm();
}
if(document.readyState==='loading'){
document.addEventListener('DOMContentLoaded', init);
}else{
init();
};