// ========================================
// اسکریپت اصلی فروشگاه کیف‌لند
// نسخه بازنویسی‌شده
// ========================================

document.addEventListener('DOMContentLoaded', function () {

    /* ==========================================
       هدر - تغییر پس‌زمینه هنگام اسکرول
    ========================================== */
    const header = document.querySelector('header, .site-header');
    if (header) {
        const onScroll = () => {
            header.classList.toggle('scrolled', window.scrollY > 60);
        };
        window.addEventListener('scroll', onScroll, { passive: true });
    }

    /* ==========================================
       منوی موبایل - همگام با سایدبار ادمین
    ========================================== */
    const mobileMenuBtn = document.getElementById('mobileMenuBtn');
    const mobileMenu    = document.getElementById('mobileMenu');
    const mobileOverlay = document.getElementById('mobileOverlay');

    function openMobileMenu() {
        mobileMenu?.classList.add('active');
        mobileOverlay?.classList.add('active');
        document.body.style.overflow = 'hidden';
    }

    function closeMobileMenu() {
        mobileMenu?.classList.remove('active');
        mobileOverlay?.classList.remove('active');
        document.body.style.overflow = '';
    }

    mobileMenuBtn?.addEventListener('click', openMobileMenu);
    mobileOverlay?.addEventListener('click', closeMobileMenu);
    document.addEventListener('keydown', e => e.key === 'Escape' && closeMobileMenu());

    // پشتیبانی از کلاس قدیمی mobile-menu-btn (بدون ID)
    document.querySelector('.mobile-menu-btn:not(#mobileMenuBtn)')?.addEventListener('click', openMobileMenu);

    /* ==========================================
       سبد خرید - اضافه کردن محصول (AJAX)
    ========================================== */
    document.querySelectorAll('[data-add-cart]').forEach(btn => {
        btn.addEventListener('click', async function (e) {
            e.preventDefault();
            const productId = this.dataset.addCart;
            const qty = this.dataset.qty || 1;
            const origHtml = this.innerHTML;

            this.disabled = true;
            this.innerHTML = '<i class="fas fa-spinner fa-spin"></i>';

            try {
                const res  = await fetch('cart-action.php', {
                    method: 'POST',
                    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                    body: `action=add&product_id=${productId}&quantity=${qty}`
                });
                const data = await res.json();

                if (data.success) {
                    this.innerHTML = '<i class="fas fa-check"></i> افزوده شد';
                    this.style.background = 'var(--primary)';
                    this.style.color = '#fff';
                    window.updateCartBadge(data.cart_count);
                    showToast('محصول به سبد خرید اضافه شد', 'success');
                    setTimeout(() => {
                        this.innerHTML = origHtml;
                        this.style.background = '';
                        this.disabled = false;
                    }, 2000);
                } else {
                    showToast(data.message || 'خطا در افزودن محصول', 'error');
                    this.innerHTML = origHtml;
                    this.disabled = false;
                }
            } catch {
                showToast('خطای شبکه، لطفاً دوباره تلاش کنید', 'error');
                this.innerHTML = origHtml;
                this.disabled = false;
            }
        });
    });

    /* ==========================================
       بروزرسانی تعداد سبد خرید در هدر
    ========================================== */
    function updateCartCount(count) {
        document.querySelectorAll('.cart-count, [data-cart-count]').forEach(el => {
            el.textContent = count;
            el.style.display = count > 0 ? 'flex' : 'none';
        });
    }

    /* ==========================================
       Toast پیام‌ها
    ========================================== */
    window.showToast = function (message, type = 'info', duration = 3500) {
        let container = document.getElementById('toast-container');
        if (!container) {
            container = document.createElement('div');
            container.id = 'toast-container';
            container.style.cssText = `
                position:fixed; bottom:24px; left:24px; z-index:9999;
                display:flex; flex-direction:column; gap:10px;
            `;
            document.body.appendChild(container);
        }

        const icons = { success: 'fa-check-circle', error: 'fa-exclamation-circle', warning: 'fa-exclamation-triangle', info: 'fa-info-circle' };
        const colors = { success: '#10B981', error: '#EF4444', warning: '#F59E0B', info: '#3B82F6' };

        const toast = document.createElement('div');
        toast.style.cssText = `
            display:flex; align-items:center; gap:10px;
            background:rgba(15,23,42,0.95); color:#fff;
            backdrop-filter:blur(20px);
            border:1px solid rgba(255,255,255,0.1);
            border-right:3px solid ${colors[type] || colors.info};
            padding:12px 18px; border-radius:10px;
            box-shadow:0 8px 32px rgba(0,0,0,0.3);
            font-size:0.9rem; min-width:260px;
            animation:slideInToast 0.35s cubic-bezier(0.34,1.56,0.64,1);
            cursor:pointer;
        `;
        toast.innerHTML = `<i class="fas ${icons[type] || icons.info}" style="color:${colors[type]};font-size:1rem;flex-shrink:0;"></i><span>${message}</span>`;
        toast.addEventListener('click', () => removeToast(toast));

        if (!document.getElementById('toast-style')) {
            const style = document.createElement('style');
            style.id = 'toast-style';
            style.textContent = `
                @keyframes slideInToast { from { opacity:0; transform:translateX(-20px); } to { opacity:1; transform:translateX(0); } }
                @keyframes slideOutToast { from { opacity:1; transform:translateX(0); } to { opacity:0; transform:translateX(-20px); } }
            `;
            document.head.appendChild(style);
        }

        container.appendChild(toast);
        setTimeout(() => removeToast(toast), duration);
    };

    function removeToast(toast) {
        toast.style.animation = 'slideOutToast 0.3s forwards';
        setTimeout(() => toast.remove(), 300);
    }

    /* ==========================================
       فیلتر محصولات (products.php)
    ========================================== */
    const filterForm = document.getElementById('filterForm');
    if (filterForm) {
        filterForm.querySelectorAll('input, select').forEach(input => {
            input.addEventListener('change', () => {
                // ساخت URL جدید با پارامترهای فیلتر
                const params = new URLSearchParams(new FormData(filterForm));
                params.delete('page');
                window.location.search = params.toString();
            });
        });
    }

    /* ==========================================
       رنج قیمت
    ========================================== */
    const priceRange = document.getElementById('priceRange');
    const priceDisplay = document.getElementById('priceDisplay');
    if (priceRange && priceDisplay) {
        priceRange.addEventListener('input', function () {
            priceDisplay.textContent = parseInt(this.value).toLocaleString('fa-IR') + ' تومان';
        });
    }

    /* ==========================================
       گالری تصاویر محصول
    ========================================== */
    const mainImg = document.getElementById('mainProductImg');
    if (mainImg) {
        document.querySelectorAll('.thumb-img').forEach(thumb => {
            thumb.addEventListener('click', function () {
                mainImg.src = this.src;
                mainImg.style.animation = 'none';
                mainImg.offsetHeight; // reflow
                mainImg.style.animation = 'fadeIn 0.3s ease';
                document.querySelectorAll('.thumb-img').forEach(t => t.classList.remove('active'));
                this.classList.add('active');
            });
        });
    }

    /* ==========================================
       ثبت نظر - امتیاز ستاره‌ای
    ========================================== */
    const starInputs = document.querySelectorAll('.star-rating input');
    const starLabels = document.querySelectorAll('.star-rating label');
    if (starInputs.length) {
        starInputs.forEach(input => {
            input.addEventListener('change', function () {
                const val = parseInt(this.value);
                starLabels.forEach((lbl, i) => {
                    lbl.style.color = (5 - i) <= val ? '#F59E0B' : 'var(--text-secondary)';
                });
            });
        });
    }

    /* ==========================================
       آدرس - انیمیشن اسکرول نرم
    ========================================== */
    document.querySelectorAll('a[href^="#"]').forEach(anchor => {
        anchor.addEventListener('click', function (e) {
            const target = document.querySelector(this.getAttribute('href'));
            if (target) {
                e.preventDefault();
                target.scrollIntoView({ behavior: 'smooth', block: 'start' });
            }
        });
    });

    /* ==========================================
       محصولات علاقه‌مندی (wishlist)
    ========================================== */
    document.querySelectorAll('[data-wishlist]').forEach(btn => {
        btn.addEventListener('click', async function (e) {
            e.preventDefault();
            const productId = this.dataset.wishlist;
            try {
                const res  = await fetch('wishlist-action.php', {
                    method: 'POST',
                    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                    body: `product_id=${productId}`
                });
                const data = await res.json();
                if (data.success) {
                    const icon = this.querySelector('i');
                    if (data.added) {
                        icon?.classList.replace('far', 'fas');
                        this.style.color = '#EF4444';
                        showToast('به علاقه‌مندی‌ها اضافه شد', 'success');
                    } else {
                        icon?.classList.replace('fas', 'far');
                        this.style.color = '';
                        showToast('از علاقه‌مندی‌ها حذف شد', 'info');
                    }
                }
            } catch { showToast('خطای شبکه', 'error'); }
        });
    });

    /* ==========================================
       فرم‌های تایید - جلوگیری از ارسال چندباره
    ========================================== */
    document.querySelectorAll('form[data-single-submit]').forEach(form => {
        form.addEventListener('submit', function () {
            const btn = this.querySelector('[type="submit"]');
            if (btn) {
                btn.disabled = true;
                btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> در حال پردازش...';
            }
        });
    });

    /* ==========================================
       لایک به نظرات
    ========================================== */
    document.querySelectorAll('[data-helpful]').forEach(btn => {
        btn.addEventListener('click', async function () {
            const reviewId = this.dataset.helpful;
            try {
                const res  = await fetch('review-action.php', {
                    method: 'POST',
                    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                    body: `action=helpful&review_id=${reviewId}`
                });
                const data = await res.json();
                if (data.success) {
                    const countEl = this.querySelector('.helpful-count');
                    if (countEl) countEl.textContent = data.count;
                    this.style.color = 'var(--primary)';
                    this.disabled = true;
                }
            } catch {}
        });
    });

    /* ==========================================
       جستجوی زنده در هدر
    ========================================== */
    const searchInput  = document.getElementById('liveSearch');
    const searchResult = document.getElementById('searchDropdown');
    if (searchInput && searchResult) {
        let timer;
        searchInput.addEventListener('input', function () {
            clearTimeout(timer);
            const q = this.value.trim();
            if (q.length < 2) { searchResult.style.display = 'none'; return; }
            timer = setTimeout(async () => {
                try {
                    const res  = await fetch(`search-ajax.php?q=${encodeURIComponent(q)}`);
                    const html = await res.text();
                    searchResult.innerHTML = html;
                    searchResult.style.display = 'block';
                } catch {}
            }, 350);
        });

        document.addEventListener('click', e => {
            if (!searchInput.contains(e.target)) searchResult.style.display = 'none';
        });
    }

});

// ========================================
// addToCart — سازگار با cart-action.php
// ========================================
window.addToCart = async function(productId, qty = 1) {
    const btn = document.querySelector(`button[onclick="addToCart(${productId})"]`)
             || document.querySelector(`button[onclick="addToCart(${productId}, 1)"]`);
    const orig = btn ? btn.innerHTML : '';

    if (btn) { btn.disabled = true; btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i>'; }

    try {
        const res  = await fetch('cart-action.php', {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify({ action: 'add', product_id: productId, quantity: qty })
        });
        const data = await res.json();

        if (data.success) {
            if (btn) {
                btn.innerHTML = '<i class="fas fa-check"></i>';
                btn.style.background = 'var(--primary)';
                btn.style.color = '#fff';
                setTimeout(() => {
                    btn.innerHTML = orig;
                    btn.style.background = '';
                    btn.style.color = '';
                    btn.disabled = false;
                }, 2000);
            }
            // آپدیت badge سبد
            window.updateCartBadge(data.cart_count);
            window.showToast && showToast('محصول به سبد اضافه شد ✓', 'success');
        } else {
            window.showToast && showToast(data.message || 'خطا در افزودن', 'error');
            if (btn) { btn.innerHTML = orig; btn.disabled = false; }
        }
    } catch (e) {
        window.showToast && showToast('خطای شبکه', 'error');
        if (btn) { btn.innerHTML = orig; btn.disabled = false; }
    }
};

// ========================================
// تم روز/شب — مجزا از DOMContentLoaded
// ========================================
(function() {
    const html      = document.documentElement;
    const saved     = localStorage.getItem('kifland_theme') || 'light';
    html.setAttribute('data-theme', saved);

    function setIcon(theme) {
        const ico = document.getElementById('themeIco') || document.getElementById('themeIcon');
        if (ico) ico.className = theme === 'dark' ? 'fas fa-sun' : 'fas fa-moon';
    }

    // اعمال فوری قبل از رندر
    setIcon(saved);

    document.addEventListener('DOMContentLoaded', function() {
        setIcon(saved);
        const btn = document.getElementById('themeToggle');
        if (btn) {
            btn.addEventListener('click', function() {
                const cur  = html.getAttribute('data-theme');
                const next = cur === 'dark' ? 'light' : 'dark';
                html.setAttribute('data-theme', next);
                localStorage.setItem('kifland_theme', next);
                setIcon(next);
            });
        }
    });
})();

// ========================================
// آپدیت badge سبد — مرکزی
// ========================================
window.updateCartBadge = function(count) {
    const els = document.querySelectorAll('#cart-count, .cart-bubble, .bn-dot, [data-cart-count]');
    els.forEach(el => {
        el.textContent = count;
        el.style.display = count > 0 ? '' : 'none';
    });
    // اگه badge اصلاً وجود نداشت و الان باید باشه، بسازش
    if (count > 0) {
        const cartBtn = document.querySelector('.cart-btn, a[href="cart.php"]');
        if (cartBtn && !cartBtn.querySelector('#cart-count')) {
            const span = document.createElement('span');
            span.id = 'cart-count';
            span.className = 'cart-bubble';
            span.textContent = count;
            cartBtn.appendChild(span);
        }
    }
};

window.updateCartCount = window.updateCartBadge;