// Global Tea Emporium - JavaScript Functionality

// Image Gallery Functionality
document.addEventListener('DOMContentLoaded', function() {
    console.log('Gallery script loading...');
    
    const galleryImages = [
        {
            src: 'images/green-tea-leaves.webp',
            alt: 'Premium Green Tea Leaves',
            caption: 'Premium Green Tea Leaves - Hand-picked from our finest gardens'
        },
        {
            src: 'images/Indian Black Teas.webp',
            alt: 'Indian Black Tea Selection',
            caption: 'Authentic Indian Black Teas - Rich and robust flavors from Assam and Darjeeling'
        },
        {
            src: 'images/Oolong Selections.jpg',
            alt: 'Oolong Tea Collection',
            caption: 'Traditional Oolong Selections - Complex flavors from Taiwan and China'
        }
    ];

    let currentImageIndex = 0;
    const galleryImage = document.getElementById('gallery-image');
    const galleryCaption = document.getElementById('gallery-caption');
    const prevBtn = document.getElementById('prev-btn');
    const nextBtn = document.getElementById('next-btn');
    const thumbnails = document.querySelectorAll('.thumbnail');

    // Check if gallery elements exist
    if (!galleryImage || !galleryCaption) {
        console.log('Gallery image or caption not found');
        return;
    }
    
    console.log('Gallery elements found:', {
        image: !!galleryImage,
        caption: !!galleryCaption,
        prevBtn: !!prevBtn,
        nextBtn: !!nextBtn,
        thumbnails: thumbnails.length
    });

    function updateGallery(index) {
        console.log('Updating gallery to index:', index);
        currentImageIndex = index;
        galleryImage.src = galleryImages[index].src;
        galleryImage.alt = galleryImages[index].alt;
        galleryCaption.textContent = galleryImages[index].caption;
        
        // Update active thumbnail
        thumbnails.forEach((thumb, i) => {
            thumb.classList.toggle('active', i === index);
        });
    }

    function nextImage() {
        console.log('Next image clicked');
        const newIndex = (currentImageIndex + 1) % galleryImages.length;
        updateGallery(newIndex);
    }

    function prevImage() {
        console.log('Previous image clicked');
        const newIndex = (currentImageIndex - 1 + galleryImages.length) % galleryImages.length;
        updateGallery(newIndex);
    }

    // Event listeners for gallery controls
    if (prevBtn) {
        console.log('Adding prev button listener');
        prevBtn.addEventListener('click', prevImage);
    } else {
        console.log('Prev button not found');
    }

    if (nextBtn) {
        console.log('Adding next button listener');
        nextBtn.addEventListener('click', nextImage);
    } else {
        console.log('Next button not found');
    }

    // Thumbnail click events
    thumbnails.forEach((thumbnail) => {
        thumbnail.addEventListener('click', () => {
            const index = parseInt(thumbnail.getAttribute('data-index'));
            console.log('Thumbnail clicked, index:', index);
            if (!isNaN(index)) {
                updateGallery(index);
            }
        });
    });

    // Auto-advance gallery every 5 seconds
    setInterval(nextImage, 5000);
    console.log('Gallery initialized successfully');
}); // End of DOMContentLoaded for gallery

// Enhanced Contact Form Validation
document.addEventListener('DOMContentLoaded', function() {
    const contactForm = document.querySelector('.contact-form');
    
    if (contactForm) {
        const formGroups = contactForm.querySelectorAll('.form-group');
        
        // Real-time validation function
        function validateField(field) {
            const formGroup = field.closest('.form-group');
            const errorSpan = formGroup.querySelector('.error-message');
            let isValid = true;
            let errorMessage = '';

            // Remove previous validation classes
            formGroup.classList.remove('error', 'success');

            // Validate required fields
            if (field.hasAttribute('required') && !field.value.trim()) {
                isValid = false;
                errorMessage = 'This field is required.';
            } else if (field.type === 'email' && field.value) {
                // Email validation
                const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
                if (!emailRegex.test(field.value)) {
                    isValid = false;
                    errorMessage = 'Please enter a valid email address.';
                }
            } else if (field.type === 'tel' && field.value) {
                // Phone validation (basic)
                const phoneRegex = /^[\d\s\-\+\(\)]+$/;
                if (!phoneRegex.test(field.value)) {
                    isValid = false;
                    errorMessage = 'Please enter a valid phone number.';
                }
            } else if (field.tagName === 'TEXTAREA' && field.value.length < 10 && field.hasAttribute('required')) {
                // Message length validation
                isValid = false;
                errorMessage = 'Message must be at least 10 characters long.';
            }

            // Display validation results
            if (errorSpan) {
                errorSpan.textContent = errorMessage;
            }
            
            if (isValid && field.value.trim()) {
                formGroup.classList.add('success');
            } else if (!isValid) {
                formGroup.classList.add('error');
            }

            return isValid;
        }

        // Add real-time validation to all form fields
        formGroups.forEach(group => {
            const input = group.querySelector('input, textarea');
            if (input) {
                input.addEventListener('blur', () => validateField(input));
                input.addEventListener('input', () => {
                    if (group.classList.contains('error')) {
                        validateField(input);
                    }
                });
            }
        });

        contactForm.addEventListener('submit', function(e) {
            e.preventDefault();
            
            let isFormValid = true;
            const formData = new FormData(contactForm);
            const data = Object.fromEntries(formData);
            
            // Validate all fields
            formGroups.forEach(group => {
                const input = group.querySelector('input, textarea');
                if (input && !validateField(input)) {
                    isFormValid = false;
                }
            });

            if (!isFormValid) {
                // Focus on first error field
                const firstError = contactForm.querySelector('.form-group.error input, .form-group.error textarea');
                if (firstError) {
                    firstError.focus();
                }
                return;
            }
            
            // Simulate form submission with loading state
            const submitBtn = contactForm.querySelector('.submit-btn');
            const originalText = submitBtn.textContent;
            submitBtn.textContent = 'Sending...';
            submitBtn.disabled = true;
            
            setTimeout(() => {
                alert(`Thank you for your message, ${data.name}! We'll get back to you soon at ${data.email}.`);
                contactForm.reset();
                formGroups.forEach(group => group.classList.remove('error', 'success'));
                submitBtn.textContent = originalText;
                submitBtn.disabled = false;
            }, 2000);
        });
    }
});

// FAQ Accordion Functionality
document.addEventListener('DOMContentLoaded', function() {
    const faqQuestions = document.querySelectorAll('.faq-question');
    
    faqQuestions.forEach(question => {
        question.addEventListener('click', function() {
            const answer = this.nextElementSibling;
            const toggle = this.querySelector('.faq-toggle');
            const isExpanded = this.getAttribute('aria-expanded') === 'true';
            
            // Close all other FAQ items
            faqQuestions.forEach(otherQuestion => {
                if (otherQuestion !== this) {
                    const otherAnswer = otherQuestion.nextElementSibling;
                    const otherToggle = otherQuestion.querySelector('.faq-toggle');
                    
                    otherQuestion.setAttribute('aria-expanded', 'false');
                    otherAnswer.classList.remove('active');
                    otherToggle.classList.remove('active');
                }
            });
            
            // Toggle current FAQ item
            this.setAttribute('aria-expanded', !isExpanded);
            answer.classList.toggle('active');
            toggle.classList.toggle('active');
        });
        
        // Add keyboard navigation
        question.addEventListener('keydown', function(e) {
            if (e.key === 'Enter' || e.key === ' ') {
                e.preventDefault();
                this.click();
            }
        });
    });
});

// Smooth scrolling for navigation links
document.addEventListener('DOMContentLoaded', function() {
    const navLinks = document.querySelectorAll('.main-nav a');
    
    navLinks.forEach(link => {
        link.addEventListener('click', function(e) {
            // Check if it's an internal link
            if (this.hostname === window.location.hostname) {
                // Add a subtle animation effect
                this.style.transform = 'scale(0.95)';
                setTimeout(() => {
                    this.style.transform = 'scale(1)';
                }, 150);
            }
        });
    });
});

// Add hover effects to service items
document.addEventListener('DOMContentLoaded', function() {
    const serviceItems = document.querySelectorAll('.services-list li, .value-item, .timeline-item');
    
    serviceItems.forEach(item => {
        item.addEventListener('mouseenter', function() {
            this.style.transform = 'translateY(-2px)';
            this.style.transition = 'transform 0.3s ease';
        });
        
        item.addEventListener('mouseleave', function() {
            this.style.transform = 'translateY(0)';
        });
    });
});

// Active navigation highlighting
document.addEventListener('DOMContentLoaded', function() {
    const currentPage = window.location.pathname.split('/').pop();
    const navLinks = document.querySelectorAll('.main-nav a');
    
    navLinks.forEach(link => {
        const linkPage = link.getAttribute('href');
        if (linkPage === currentPage || (currentPage === '' && linkPage === 'index.html')) {
            link.style.backgroundColor = '#daa520';
            link.style.color = '#5d4037';
        }
    });
});
