document.addEventListener('DOMContentLoaded', function() { // Mobile Menu Toggle const mobileMenuBtn = document.querySelector('.mobile-menu'); const navLinks = document.querySelector('.nav-links'); const navbar = document.querySelector('.navbar'); mobileMenuBtn.addEventListener('click', function() { navLinks.classList.toggle('active'); }); // Smooth Scrolling for Navigation Links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function (e) { e.preventDefault(); const target = document.querySelector(this.getAttribute('href')); if (target) { const headerOffset = 100; const elementPosition = target.getBoundingClientRect().top; const offsetPosition = elementPosition - headerOffset; window.scrollBy({ top: offsetPosition, behavior: 'smooth' }); // Close mobile menu if open navLinks.classList.remove('active'); } }); }); // تغيير الهيدر عند التمرير window.addEventListener('scroll', function() { if (window.scrollY > 50) { navbar.classList.add('scrolled'); } else { navbar.classList.remove('scrolled'); } }); // إضافة الكلاس عند تحميل الصفحة إذا كنا في منتصف الصفحة if (window.scrollY > 50) { navbar.classList.add('scrolled'); } // تفعيل الأسئلة الشائعة document.querySelectorAll('.faq-question').forEach(question => { question.addEventListener('click', () => { const faqItem = question.parentElement; faqItem.classList.toggle('active'); }); }); // معالجة النشرة البريدية document.getElementById('newsletter-form')?.addEventListener('submit', async (e) => { e.preventDefault(); const email = e.target.email.value; try { const response = await fetch('/api/newsletter-subscribe.php', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ email }) }); if (response.ok) { alert('شكراً لاشتراكك في نشرتنا البريدية!'); e.target.reset(); } else { throw new Error('حدث خطأ أثناء الاشتراك'); } } catch (error) { alert('عذراً، حدث خطأ. يرجى المحاولة مرة أخرى.'); console.error('Newsletter subscription error:', error); } }); // Enhanced Search Functionality const searchBar = document.querySelector('.search-bar'); const searchIcon = document.querySelector('.search-icon'); const voiceSearchIcon = document.querySelector('.voice-search-icon'); const searchSuggestions = document.querySelector('.search-suggestions'); const filterTags = document.querySelectorAll('.filter-tag'); const searchHistory = document.querySelector('.search-history'); // Load search history from localStorage let searchHistoryItems = JSON.parse(localStorage.getItem('searchHistory') || '[]'); updateSearchHistory(); // Search input handler let searchTimeout; searchBar.addEventListener('input', function() { clearTimeout(searchTimeout); const query = this.value.trim(); if (query.length > 0) { searchIcon.classList.add('searching'); searchTimeout = setTimeout(() => { fetchSearchSuggestions(query); }, 300); } else { searchSuggestions.classList.remove('active'); searchIcon.classList.remove('searching'); } }); // Voice search handler voiceSearchIcon.addEventListener('click', function() { if ('webkitSpeechRecognition' in window) { const recognition = new webkitSpeechRecognition(); recognition.lang = 'ar'; recognition.continuous = false; recognition.interimResults = false; recognition.onstart = function() { voiceSearchIcon.classList.add('recording'); searchBar.placeholder = 'جاري الاستماع...'; }; recognition.onresult = function(event) { const transcript = event.results[0][0].transcript; searchBar.value = transcript; searchBar.dispatchEvent(new Event('input')); }; recognition.onerror = function() { voiceSearchIcon.classList.remove('recording'); searchBar.placeholder = 'ابحث عن المنتجات...'; }; recognition.onend = function() { voiceSearchIcon.classList.remove('recording'); searchBar.placeholder = 'ابحث عن المنتجات...'; }; recognition.start(); } else { alert('عذراً، البحث الصوتي غير مدعوم في متصفحك'); } }); // Filter tags handler filterTags.forEach(tag => { tag.addEventListener('click', function() { this.classList.toggle('active'); const activeFilters = Array.from(filterTags) .filter(tag => tag.classList.contains('active')) .map(tag => tag.textContent); if (activeFilters.length > 0) { searchBar.value = activeFilters.join(' '); searchBar.dispatchEvent(new Event('input')); } }); }); // Mock function for search suggestions (replace with actual API call) async function fetchSearchSuggestions(query) { try { // Simulate API call delay await new Promise(resolve => setTimeout(resolve, 500)); // Mock suggestions (replace with actual API response) const suggestions = [ 'زيت اللافندر العطري', 'زيت الورد العطري', 'زيت اللوز الثابت', 'ماء الورد الطبيعي', 'كريم مرطب طبيعي' ].filter(item => item.includes(query)); // Update suggestions UI searchSuggestions.innerHTML = suggestions.map(item => `