// Main JavaScript File document.addEventListener('DOMContentLoaded', function() { // Initialize animations const animateElements = document.querySelectorAll('.fade-in, .slide-up'); animateElements.forEach((el, index) => { el.style.animationDelay = `${index * 0.1}s`; }); // Language switcher functionality const langSwitcher = document.getElementById('lang-switcher'); if (langSwitcher) { langSwitcher.addEventListener('change', function() { const selectedLang = this.value; // In a real app, this would redirect to the selected language version console.log(`Language changed to: ${selectedLang}`); }); } // Theme switcher functionality const themeSwitcher = document.getElementById('theme-switcher'); if (themeSwitcher) { themeSwitcher.addEventListener('change', function() { const selectedTheme = this.value; document.body.classList.toggle('dark', selectedTheme === 'dark'); localStorage.setItem('theme', selectedTheme); }); // Check for saved theme preference const savedTheme = localStorage.getItem('theme') || 'light'; themeSwitcher.value = savedTheme; if (savedTheme === 'dark') { document.body.classList.add('dark'); } } }); // API functions async function fetchCourses() { try { const response = await fetch('/api/courses'); const data = await response.json(); return data; } catch (error) { console.error('Error fetching courses:', error); return []; } } // Form validation function validateForm(form) { let isValid = true; const inputs = form.querySelectorAll('input[required], textarea[required]'); inputs.forEach(input => { if (!input.value.trim()) { isValid = false; input.classList.add('border-red-500'); } else { input.classList.remove('border-red-500'); } }); return isValid; }