document.addEventListener('DOMContentLoaded', function () { // Smooth scrolling for anchor links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function (e) { e.preventDefault(); const targetEl = document.querySelector(this.getAttribute('href')); if (targetEl) { targetEl.scrollIntoView({ behavior: 'smooth' }); } }); }); // Activate scrollspy const mainNav = document.body; if (mainNav) { const scrollSpy = new bootstrap.ScrollSpy(document.body, { target: '#navbarNav', offset: 100, }); } // Close mobile nav on item click const navLinks = document.querySelectorAll('.navbar-nav .nav-link'); const navbarCollapse = document.querySelector('.navbar-collapse'); navLinks.forEach(link => { link.addEventListener('click', () => { if (navbarCollapse.classList.contains('show')) { const bsCollapse = new bootstrap.Collapse(navbarCollapse, { toggle: false }); bsCollapse.hide(); } }); }); // Contact Form Submission const contactForm = document.getElementById('contactForm'); if (contactForm) { contactForm.addEventListener('submit', function (e) { e.preventDefault(); const form = e.target; const formData = new FormData(form); const submitButton = form.querySelector('button[type="submit"]'); const originalButtonText = submitButton.innerHTML; submitButton.disabled = true; submitButton.innerHTML = ' Sending...'; fetch('contact.php', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { if (data.success) { showToast('Success!', 'Your message has been sent successfully.', 'success'); form.reset(); } else { showToast('Error!', data.error || 'An unknown error occurred.', 'danger'); } }) .catch(error => { showToast('Error!', 'A network error occurred. Please try again.', 'danger'); }) .finally(() => { submitButton.disabled = false; submitButton.innerHTML = originalButtonText; }); }); } // Toast function function showToast(title, message, type) { const toastContainer = document.getElementById('toast-container'); if (!toastContainer) return; const toastEl = document.createElement('div'); toastEl.className = `toast align-items-center text-white bg-${type} border-0`; toastEl.role = 'alert'; toastEl.ariaLive = 'assertive'; toastEl.ariaAtomic = 'true'; toastEl.innerHTML = `