File size: 2,074 Bytes
1fca5b4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// 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;
}