// Main JavaScript for ArbibStack Academy // Initialize the application document.addEventListener('DOMContentLoaded', function() { initializeApp(); setupEventListeners(); loadUserProgress(); }); // Application initialization function initializeApp() { console.log('🚀 ArbibStack Academy Initialized'); // Check if user is logged in const token = localStorage.getItem('arbibstack_token'); if (token) { updateUIForLoggedInUser(); } // Initialize tooltips if any initializeTooltips(); } // Setup event listeners function setupEventListeners() { // Mobile menu toggle const mobileMenuBtn = document.getElementById('mobile-menu-btn'); const mobileMenu = document.getElementById('mobile-menu'); if (mobileMenuBtn && mobileMenu) { mobileMenuBtn.addEventListener('click', function() { mobileMenu.classList.toggle('hidden'); }); } // Search functionality const searchInput = document.getElementById('search-input'); if (searchInput) { searchInput.addEventListener('input', debounce(handleSearch, 300)); } // Course enrollment const enrollButtons = document.querySelectorAll('.enroll-btn'); enrollButtons.forEach(button => { button.addEventListener('click', handleEnrollment); }); } // Handle course enrollment function handleEnrollment(event) { const courseId = event.target.dataset.courseId; const token = localStorage.getItem('arbibstack_token'); if (!token) { window.location.href = '/login.html'; return; } // Show loading state event.target.innerHTML = 'Enrollment'; event.target.disabled = true; // Simulate API call setTimeout(() => { enrollInCourse(courseId, token); }, 1500); } // Simulate course enrollment API call function enrollInCourse(courseId, token) { // In a real app, this would be an API call console.log(`Enrolling in course: ${courseId}`); // Update UI const button = document.querySelector(`[data-course-id="${courseId}"]`); button.innerHTML = 'Enrolled ✓'; button.classList.remove('bg-primary', 'hover:bg-red-700'); button.classList.add('bg-green-600'); // Show success message showNotification('Successfully enrolled in course!', 'success'); } // Search functionality function handleSearch(event) { const query = event.target.value.toLowerCase(); if (query.length < 2) { clearSearchResults(); return; } // Simulate search API call const results = simulateSearch(query); displaySearchResults(results); } // Simulate search results function simulateSearch(query) { const courses = [ { id: 1, title: 'MongoDB Basics', type: 'course' }, { id: 2, title: 'Express.js REST API', type: 'course' }, { id: 3, title: 'React Hooks Guide', type: 'course' }, { id: 4, title: 'Node.js Fundamentals', type: 'course' }, { id: 5, title: 'MERN Stack Project', type: 'project' } ]; return courses.filter(course => course.title.toLowerCase().includes(query) ); } // Display search results function displaySearchResults(results) { const searchResults = document.getElementById('search-results'); if (!searchResults) return; searchResults.innerHTML = ''; if (results.length === 0) { searchResults.innerHTML = '