// Shared JavaScript functionality document.addEventListener('DOMContentLoaded', function() { // Mobile menu toggle functionality will be added here in components/navbar.js // Smooth scroll for anchor links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function(e) { e.preventDefault(); const targetId = this.getAttribute('href'); if (targetId === '#') return; const targetElement = document.querySelector(targetId); if (targetElement) { targetElement.scrollIntoView({ behavior: 'smooth' }); } }); }); // Animation on scroll initialization const animateOnScroll = () => { const elements = document.querySelectorAll('.animate-on-scroll'); elements.forEach(element => { const elementPosition = element.getBoundingClientRect().top; const windowHeight = window.innerHeight; if (elementPosition < windowHeight - 100) { element.classList.add('animated'); } }); }; window.addEventListener('scroll', animateOnScroll); animateOnScroll(); // Run once on load }); // Form validation for contact page const validateForm = (formId) => { const form = document.getElementById(formId); if (!form) return false; let isValid = true; const inputs = form.querySelectorAll('input[required], textarea[required]'); inputs.forEach(input => { if (!input.value.trim()) { input.classList.add('border-red-500'); isValid = false; } else { input.classList.remove('border-red-500'); } }); return isValid; };