// AzerNewMedia — Main JS document.addEventListener('DOMContentLoaded', function () { // ── Navbar scroll effect ────────────────────────────── const navbar = document.getElementById('navbar'); window.addEventListener('scroll', () => { navbar.classList.toggle('scrolled', window.scrollY > 50); }); // ── Mobile nav toggle ───────────────────────────────── const navToggle = document.getElementById('navToggle'); const navLinks = document.getElementById('navLinks'); if (navToggle && navLinks) { navToggle.addEventListener('click', () => { navLinks.classList.toggle('open'); }); navLinks.querySelectorAll('a').forEach(a => { a.addEventListener('click', () => navLinks.classList.remove('open')); }); } // ── Smooth active nav link on scroll ────────────────── const sections = document.querySelectorAll('section[id]'); const navAnchors = document.querySelectorAll('.nav-links a'); const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { navAnchors.forEach(a => { a.classList.toggle('active', a.getAttribute('href') === '#' + entry.target.id); }); } }); }, { threshold: 0.4 }); sections.forEach(s => observer.observe(s)); // ── Form tabs (Order / Contact) ─────────────────────── const formTabs = document.querySelectorAll('.form-tab'); const formType = document.getElementById('formType'); const serviceGroup = document.getElementById('serviceSelectGroup'); formTabs.forEach(tab => { tab.addEventListener('click', () => { formTabs.forEach(t => t.classList.remove('active')); tab.classList.add('active'); const type = tab.dataset.type; if (formType) formType.value = type; if (serviceGroup) { serviceGroup.style.display = (type === 'order') ? 'block' : 'none'; } }); }); // ── Service order button → pre-select in form ───────── document.querySelectorAll('.service-order-btn').forEach(btn => { btn.addEventListener('click', (e) => { e.preventDefault(); const sid = btn.dataset.serviceId; const sname = btn.dataset.serviceName; // Scroll to contact document.getElementById('contact')?.scrollIntoView({ behavior: 'smooth' }); // Pre-select service setTimeout(() => { const select = document.querySelector('select[name="service_id"]'); if (select) select.value = sid; // Switch to order tab const orderTab = document.querySelector('.form-tab[data-type="order"]'); orderTab?.click(); // Focus name field document.querySelector('input[name="name"]')?.focus(); }, 600); }); }); // ── Scroll-reveal animations ─────────────────────────── const revealElements = document.querySelectorAll( '.service-card, .portfolio-item, .about-text-col, .about-visual, .contact-info-card, .podcast-featured' ); const revealObserver = new IntersectionObserver((entries) => { entries.forEach((entry, i) => { if (entry.isIntersecting) { setTimeout(() => { entry.target.classList.add('revealed'); }, (entry.target.dataset.delay || 0)); revealObserver.unobserve(entry.target); } }); }, { threshold: 0.12 }); revealElements.forEach((el, i) => { el.classList.add('reveal-hidden'); el.dataset.delay = (i % 4) * 80; revealObserver.observe(el); }); // Add CSS for reveal const style = document.createElement('style'); style.textContent = ` .reveal-hidden { opacity:0; transform:translateY(24px); transition: opacity 0.6s ease, transform 0.6s ease; } .revealed { opacity:1 !important; transform:translateY(0) !important; } `; document.head.appendChild(style); // ── Form validation ──────────────────────────────────── const contactForm = document.getElementById('contactForm'); if (contactForm) { contactForm.addEventListener('submit', function(e) { const name = this.querySelector('[name="name"]').value.trim(); const phone = this.querySelector('[name="phone"]').value.trim(); const email = this.querySelector('[name="email"]').value.trim(); if (!name || (!phone && !email)) { e.preventDefault(); alert('Zəhmət olmasa adınızı və ən azı bir əlaqə (telefon və ya email) daxil edin.'); } }); } });