Contact
We reply within two business days. For urgent studio matters, call +1 (415) 555-0149.
`;
document.querySelector('header').outerHTML = headerHTML;
document.querySelector('footer').outerHTML = footerHTML;
}
function validateForm() {
const errs = [];
const name = document.getElementById('name').value.trim();
const email = document.getElementById('email').value.trim();
const message = document.getElementById('message').value.trim();
if (name.length < 2) errs.push('Name must be at least 2 characters.');
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) errs.push('Enter a valid email address.');
if (message.length < 10) errs.push('Message must be at least 10 characters.');
return errs;
}
function initAll() {
injectHeaderFooter();
const form = document.getElementById('contactForm');
const dialog = document.getElementById('errorDialog');
form.addEventListener('submit', (e) => {
const errs = validateForm();
if (errs.length) {
e.preventDefault();
const list = document.getElementById('errorList');
list.innerHTML = '';
errs.forEach(x => { const li = document.createElement('li'); li.textContent = x; list.appendChild(li); });
dialog.showModal();
}
});
document.body.addEventListener('click', (e) => {
const t = e.target;
if (t.closest('[data-close-error]')) { e.preventDefault(); if (dialog.open) dialog.close(); }
if (t.closest('[data-toggle-theme]')) { e.preventDefault(); const html = document.documentElement; const isDark = html.classList.toggle('dark'); localStorage.setItem('af_theme', isDark ? 'dark' : 'light'); }
if (t.closest('[data-open-auth="login"]')) { e.preventDefault(); const d = document.getElementById('authDialog'); if (d) { d.showModal(); d.querySelector('[data-auth-title]').textContent = 'Sign in to Armonia Flores Atelier'; } }
if (t.closest('[data-open-auth="register"]')) { e.preventDefault(); const d = document.getElementById('authDialog'); if (d) { d.showModal(); d.querySelector('[data-auth-title]').textContent = 'Create your Armonia Flores Atelier account'; } }
if (t.closest('[data-accept-cookies]')) { e.preventDefault(); localStorage.setItem('af_cookies', 'accepted'); const b = document.getElementById('cookieBanner'); if (b) b.remove(); }
if (t.closest('#mobileMenuBtn')) {
e.preventDefault();
const menu = document.getElementById('mobileMenu');
if (menu) menu.classList.toggle('hidden');
}
if (t.closest('[data-close-auth]')) { e.preventDefault(); const d = document.getElementById('authDialog'); if (d && d.open) d.close(); }
});
const authForm = document.getElementById('authForm');
if (authForm) authForm.addEventListener('submit', (e) => { e.preventDefault(); const d = document.getElementById('authDialog'); if (d) d.close(); });
if (!localStorage.getItem('af_cookies')) {
setTimeout(() => {
const b = document.getElementById('cookieBanner');
if (b) b.classList.remove('hidden');
}, 1200);
}
}
window.dismissCookieBanner = function() {
const banner = document.getElementById('cookieBanner');
if (banner) banner.classList.add('hidden');
};
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initAll);
} else {
initAll();
}
})();