{ try { // Cookie Consent const cookieBanner = document.getElementById('cookie-consent'); const acceptCookiesBtn = document.getElementById('accept-cookies'); const privacyPolicyLink = document.getElementById('cookie-privacy-link'); if (!localStorage.getItem('cookieConsentGiven')) { cookieBanner.style.display = 'flex'; } acceptCookiesBtn.addEventListener('click', () => { localStorage.setItem('cookieConsentGiven', 'true'); cookieBanner.style.display = 'none'; }); privacyPolicyLink.addEventListener('click', (e) => { e.preventDefault(); openModal('privacy-modal'); cookieBanner.style.display = 'none'; // Hide banner temporarily }); } catch (e) { console.error('Cookie Consent Error:', e); } try { // Hamburger menu functionality const hamburger = document.querySelector('.hamburger'); const navMenu = document.querySelector('.nav-menu'); hamburger.addEventListener('click', () => { hamburger.classList.toggle('active'); navMenu.classList.toggle('active'); }); document.querySelectorAll('.nav-item a').forEach(n => n.addEventListener('click', () => { hamburger.classList.remove('active'); navMenu.classList.remove('active'); })); } catch (e) { console.error('Hamburger Menu Error:', e); } try { // Modal functionality const modals = document.querySelectorAll('.modal'); const openModalLinks = document.querySelectorAll('[data-modal-target]'); function openModal(modalId) { const modal = document.getElementById(modalId); if (modal) { modal.classList.add('active'); document.body.classList.add('modal-open'); } } function closeModal(modal) { if (modal) { modal.classList.remove('active'); document.body.classList.remove('modal-open'); } } openModalLinks.forEach(link => { link.addEventListener('click', (e) => { e.preventDefault(); const modalId = link.getAttribute('data-modal-target').substring(1); // Remove '#' openModal(modalId); }); }); modals.forEach(modal => { modal.addEventListener('click', (e) => { if (e.target.classList.contains('modal') || e.target.classList.contains('close-button')) { closeModal(modal); } }); }); document.addEventListener('keydown', (e) => { if (e.key === 'Escape') { modals.forEach(modal => closeModal(modal)); } }); // Re-attach footer links to modal functionality document.querySelectorAll('footer a[href^="#"]').forEach(link => { link.addEventListener('click', (e) => { e.preventDefault(); const modalId = link.getAttribute('href').substring(1); openModal(modalId); }); }); } catch (e) { console.error('Modal Error:', e); } try { // Contact Form Validation and Submission const contactForm = document.querySelector('.contact-form'); if (contactForm) { contactForm.addEventListener('submit', function(e) { e.preventDefault(); // Prevent default form submission const nameInput = this.querySelector('input[name="name"]'); const emailInput = this.querySelector('input[name="email"]'); const messageInput = this.querySelector('textarea[name="message"]'); let isValid = true; let errorMessage = ''; // Name validation if (!nameInput.value.trim()) { isValid = false; errorMessage += 'Il nome è obbligatorio. '; nameInput.classList.add('error'); } else { nameInput.classList.remove('error'); } // Email validation const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailInput.value.trim() || !emailPattern.test(emailInput.value.trim())) { isValid = false; errorMessage += 'Inserisci un'email valida. '; emailInput.classList.add('error'); } else { emailInput.classList.remove('error'); } // Message validation if (!messageInput.value.trim()) { isValid = false; errorMessage += 'Il messaggio è obbligatorio. '; messageInput.classList.add('error'); } else { messageInput.classList.remove('error'); } if (isValid) { // Simulate form submission alert('Grazie per il tuo messaggio! Ti contatteremo a breve.'); this.reset(); // Clear the form // In a real application, you would send data to a server here using fetch() } else { alert(`Errore di validazione: `); } }); } } catch (e) { console.error('Contact Form Error:', e); } });