// ============================================
// التهيئة والمتغيرات العامة
// ============================================
const API_BASE = '/api/supervisor'; // تم التصحيح - يجب تعديل هذا المسار حسب إعدادات الخادم
let charts = {};
let refreshInterval;
let searchTimeout;

// تهيئة AOS
AOS.init({
    duration: 800,
    once: true
});

// تحديث التاريخ
document.getElementById('currentDate').textContent = new Date().toLocaleDateString('ar-EG', { 
    weekday: 'long', 
    year: 'numeric', 
    month: 'long', 
    day: 'numeric' 
});

// ============================================
// التحقق من الصلاحيات
// ============================================
function checkAuth() {
    try {
        const user = JSON.parse(localStorage.getItem('user') || sessionStorage.getItem('user') || '{}');
        
        // للاختبار فقط - يمكن إزالة هذا في الإنتاج
        if (!user || !user.role) {
            // بيانات تجريبية للاختبار
            const mockUser = {
                fullName: 'المشرف الرئيسي',
                role: 'supervisor',
                roleName: 'مشرف فني'
            };
            localStorage.setItem('user', JSON.stringify(mockUser));
            document.getElementById('userName').textContent = mockUser.fullName;
            document.getElementById('userRole').textContent = mockUser.roleName;
            return true;
        }
        
        if (user.role !== 'supervisor') {
            window.location.href = '../auth/login.html';
            return false;
        }
        
        document.getElementById('userName').textContent = user.fullName || 'المشرف';
        document.getElementById('userRole').textContent = user.roleName || 'مشرف فني';
        return true;
    } catch (error) {
        console.error('Auth check error:', error);
        return true; // للاختبار - السماح بالدخول
    }
}

// ============================================
// تحميل جميع البيانات
// ============================================
async function loadAllData() {
    showLoading();
    try {
        await Promise.all([
            loadDashboardStats(),
            loadReviewInspections(),
            loadInspectorRatings(),
            loadNotifications()
        ]);
    } catch (error) {
        console.error('Error loading data:', error);
        showNotification('error', 'فشل تحميل بعض البيانات');
    } finally {
        hideLoading();
    }
}

// ============================================
// تحميل إحصائيات لوحة التحكم
// ============================================
async function loadDashboardStats() {
    try {
        const response = await fetch(`${API_BASE}/get_dashboard_stats.php`);
        
        if (!response.ok) {
            throw new Error('Network response was not ok');
        }
        
        const result = await response.json();
        
        if (result.success) {
            updateStats(result.data);
            updateCharts(result.data);
        } else {
            useMockData();
        }
    } catch (error) {
        console.error('Error loading stats:', error);
        useMockData();
    }
}

// بيانات تجريبية للعرض في حالة عدم وجود اتصال بالخادم
function useMockData() {
    const mockData = {
        total_inspectors: 12,
        pending_reviews: 3,
        quality_score: 94,
        avg_rating: 4.2,
        inspectors_trend: { direction: 'up', percentage: 8 },
        top_inspectors: {
            names: ['أحمد محمد', 'خالد عبدالله', 'محمد علي', 'عمر حسن', 'سعيد رشاد'],
            counts: [48, 42, 39, 35, 32]
        },
        quality_stats: { passed: 88, needs_improvement: 8, failed: 4 }
    };
    updateStats(mockData);
    updateCharts(mockData);
}

// ============================================
// تحديث الإحصائيات
// ============================================
function updateStats(data) {
    document.getElementById('totalInspectors').textContent = data.total_inspectors || 0;
    document.getElementById('pendingReviews').textContent = data.pending_reviews || 0;
    document.getElementById('qualityScore').textContent = (data.quality_score || 0) + '%';
    document.getElementById('avgRating').textContent = (data.avg_rating || 0).toFixed(1);
    
    // تحديث الشارات
    const reviewBadge = document.getElementById('reviewBadge');
    const reviewActionBadge = document.getElementById('reviewActionBadge');
    
    if (data.pending_reviews > 0) {
        if (reviewBadge) reviewBadge.style.display = 'inline';
        if (reviewActionBadge) {
            reviewActionBadge.style.display = 'inline';
            reviewActionBadge.textContent = data.pending_reviews;
        }
    } else {
        if (reviewBadge) reviewBadge.style.display = 'none';
        if (reviewActionBadge) reviewActionBadge.style.display = 'none';
    }
    
    // تحديث اتجاهات النمو
    if (data.inspectors_trend) {
        const trendEl = document.getElementById('inspectorsTrend');
        if (trendEl) {
            trendEl.innerHTML = `<i class="fas fa-arrow-${data.inspectors_trend.direction}"></i> ${data.inspectors_trend.percentage}%`;
            trendEl.className = `stat-trend trend-${data.inspectors_trend.direction === 'up' ? 'up' : 'down'}`;
        }
    }
}

// ============================================
// تحديث الرسوم البيانية
// ============================================
function updateCharts(data) {
    // رسم بياني لأداء الفاحصين
    if (charts.inspectorChart) charts.inspectorChart.destroy();
    
    const ctx1 = document.getElementById('inspectorChart');
    if (ctx1) {
        charts.inspectorChart = new Chart(ctx1, {
            type: 'bar',
            data: {
                labels: data.top_inspectors?.names || ['أحمد', 'خالد', 'محمد', 'عمر', 'سعيد'],
                datasets: [{
                    label: 'عدد الفحوصات',
                    data: data.top_inspectors?.counts || [45, 38, 42, 35, 40],
                    backgroundColor: '#002b5c',
                    borderRadius: 5
                }]
            },
            options: { 
                responsive: true, 
                maintainAspectRatio: false,
                plugins: {
                    legend: { display: false }
                },
                scales: {
                    y: {
                        beginAtZero: true,
                        grid: { color: 'rgba(0,0,0,0.05)' }
                    }
                }
            }
        });
    }

    // رسم بياني لجودة الفحوصات
    if (charts.qualityChart) charts.qualityChart.destroy();
    
    const ctx2 = document.getElementById('qualityChart');
    if (ctx2) {
        charts.qualityChart = new Chart(ctx2, {
            type: 'doughnut',
            data: {
                labels: ['مطابق للمواصفات', 'بحاجة تحسين', 'غير مطابق'],
                datasets: [{
                    data: [
                        data.quality_stats?.passed || 85,
                        data.quality_stats?.needs_improvement || 10,
                        data.quality_stats?.failed || 5
                    ],
                    backgroundColor: ['#28a745', '#ffc107', '#dc3545']
                }]
            },
            options: { 
                responsive: true, 
                maintainAspectRatio: false,
                plugins: {
                    legend: { 
                        position: 'bottom',
                        labels: { font: { family: 'Cairo' } }
                    }
                }
            }
        });
    }
}

// ============================================
// تحميل الفحوصات بانتظار المراجعة
// ============================================
async function loadReviewInspections() {
    const container = document.getElementById('reviewTableContainer');
    const loadingEl = document.getElementById('reviewLoading');
    
    try {
        if (loadingEl) loadingEl.style.display = 'block';
        
        const response = await fetch(`${API_BASE}/get_review_inspections.php?limit=5`);
        
        if (!response.ok) {
            throw new Error('Network response was not ok');
        }
        
        const result = await response.json();
        
        if (loadingEl) loadingEl.style.display = 'none';
        
        if (result.success && result.data && result.data.length > 0) {
            displayReviewInspections(result.data);
        } else {
            displayEmptyReviewState();
        }
    } catch (error) {
        console.error('Error loading reviews:', error);
        if (loadingEl) loadingEl.style.display = 'none';
        displayMockReviewData();
    }
}

function displayEmptyReviewState() {
    const container = document.getElementById('reviewTableContainer');
    if (container) {
        container.innerHTML = `
            <div class="empty-state">
                <i class="fas fa-check-circle"></i>
                <h4>لا توجد فحوصات للمراجعة</h4>
                <p>جميع الفحوصات تمت مراجعتها</p>
            </div>
        `;
    }
}

function displayMockReviewData() {
    const mockInspections = [
        {
            id: 1,
            request_number: 'INSP-2024-001',
            client_name: 'أحمد محمد',
            car_info: 'تويوتا كامري 2020',
            inspector_name: 'خالد العلي',
            inspection_type: 'فحص دوري',
            created_at: new Date().toISOString()
        },
        {
            id: 2,
            request_number: 'INSP-2024-002',
            client_name: 'سارة أحمد',
            car_info: 'هونداي سوناتا 2022',
            inspector_name: 'محمد رشاد',
            inspection_type: 'فحص شامل',
            created_at: new Date().toISOString()
        },
        {
            id: 3,
            request_number: 'INSP-2024-003',
            client_name: 'عمر خالد',
            car_info: 'نيسان باترول 2023',
            inspector_name: 'أحمد محمود',
            inspection_type: 'فحص ما قبل الشراء',
            created_at: new Date().toISOString()
        }
    ];
    displayReviewInspections(mockInspections);
}

// ============================================
// عرض الفحوصات بانتظار المراجعة
// ============================================
function displayReviewInspections(inspections) {
    const container = document.getElementById('reviewTableContainer');
    
    if (!container) return;

    let html = '<table class="data-table"><thead><tr>';
    html += '<th>رقم الطلب</th>';
    html += '<th>العميل</th>';
    html += '<th>السيارة</th>';
    html += '<th>الفاحص</th>';
    html += '<th>نوع الفحص</th>';
    html += '<th>التاريخ</th>';
    html += '<th>الإجراءات</th>';
    html += '</tr></thead><tbody>';

    inspections.forEach(insp => {
        html += `<tr>
            <td><strong>${escapeHtml(insp.request_number || '---')}</strong></td>
            <td>${escapeHtml(insp.client_name || '---')}</td>
            <td>${escapeHtml(insp.car_info || '---')}</td>
            <td>${escapeHtml(insp.inspector_name || '---')}</td>
            <td>${escapeHtml(insp.inspection_type || '---')}</td>
            <td>${formatDate(insp.created_at)}</td>
            <td class="action-buttons">
                <button class="btn-sm btn-view" onclick="viewInspection(${insp.id})" title="عرض التفاصيل">
                    <i class="fas fa-eye"></i>
                </button>
                <button class="btn-sm btn-approve" onclick="approveInspection(${insp.id})" title="موافقة">
                    <i class="fas fa-check"></i>
                </button>
                <button class="btn-sm btn-reject" onclick="rejectInspection(${insp.id})" title="رفض">
                    <i class="fas fa-times"></i>
                </button>
            </td>
        </tr>`;
    });

    html += '</tbody></table>';
    container.innerHTML = html;
}

// ============================================
// تحميل تقييمات الفاحصين
// ============================================
async function loadInspectorRatings() {
    const container = document.getElementById('inspectorsTableContainer');
    const loadingEl = document.getElementById('inspectorsLoading');
    
    try {
        if (loadingEl) loadingEl.style.display = 'block';
        
        const response = await fetch(`${API_BASE}/get_inspector_ratings.php?limit=5`);
        
        if (!response.ok) {
            throw new Error('Network response was not ok');
        }
        
        const result = await response.json();
        
        if (loadingEl) loadingEl.style.display = 'none';
        
        if (result.success && result.data && result.data.length > 0) {
            displayInspectorRatings(result.data);
        } else {
            displayMockRatingsData();
        }
    } catch (error) {
        console.error('Error loading ratings:', error);
        if (loadingEl) loadingEl.style.display = 'none';
        displayMockRatingsData();
    }
}

function displayMockRatingsData() {
    const mockInspectors = [
        { name: 'أحمد محمد', center_name: 'مركز الرياض', total_inspections: 156, rating_avg: 4.8, quality_score: 95 },
        { name: 'خالد العلي', center_name: 'مركز جدة', total_inspections: 142, rating_avg: 4.6, quality_score: 88 },
        { name: 'محمد رشاد', center_name: 'مركز الدمام', total_inspections: 128, rating_avg: 4.5, quality_score: 85 },
        { name: 'عمر حسن', center_name: 'مركز مكة', total_inspections: 115, rating_avg: 4.3, quality_score: 78 },
        { name: 'سعيد رشاد', center_name: 'مركز المدينة', total_inspections: 98, rating_avg: 4.2, quality_score: 76 }
    ];
    displayInspectorRatings(mockInspectors);
}

// ============================================
// عرض تقييمات الفاحصين
// ============================================
function displayInspectorRatings(inspectors) {
    const container = document.getElementById('inspectorsTableContainer');
    
    if (!container) return;

    let html = '<table class="data-table"><thead><tr>';
    html += '<th>#</th>';
    html += '<th>الفاحص</th>';
    html += '<th>المركز</th>';
    html += '<th>عدد الفحوصات</th>';
    html += '<th>التقييم</th>';
    html += '<th>حالة الجودة</th>';
    html += '</tr></thead><tbody>';

    inspectors.forEach((insp, index) => {
        const qualityClass = insp.quality_score >= 90 ? 'status-completed' : 
                            insp.quality_score >= 75 ? 'status-progress' : 'status-pending';
        const qualityText = insp.quality_score >= 90 ? 'ممتاز' : 
                           insp.quality_score >= 75 ? 'جيد' : 'بحاجة تحسين';
        
        html += `<tr>
            <td>${index + 1}</td>
            <td><strong>${escapeHtml(insp.name || '---')}</strong></td>
            <td>${escapeHtml(insp.center_name || '---')}</td>
            <td>${insp.total_inspections || 0}</td>
            <td>⭐ ${(insp.rating_avg || 0).toFixed(1)}</td>
            <td><span class="status-badge ${qualityClass}">${qualityText}</span></td>
        </tr>`;
    });

    html += '</tbody></table>';
    container.innerHTML = html;
}

// ============================================
// تحميل الإشعارات
// ============================================
async function loadNotifications() {
    try {
        const response = await fetch(`${API_BASE}/get_notifications.php`);
        
        if (!response.ok) {
            throw new Error('Network response was not ok');
        }
        
        const result = await response.json();
        
        if (result.success) {
            displayNotifications(result.data || [], result.unread_count || 0);
        } else {
            displayMockNotifications();
        }
    } catch (error) {
        console.error('Error loading notifications:', error);
        displayMockNotifications();
    }
}

function displayMockNotifications() {
    const mockNotifications = [
        {
            id: 1,
            type: 'review',
            title: 'فحص جديد للمراجعة',
            message: 'تم إكمال فحص السيارة رقم INSP-2024-001 ويحتاج إلى مراجعتك',
            created_at: new Date(Date.now() - 1000 * 60 * 30).toISOString(),
            is_read: false
        },
        {
            id: 2,
            type: 'quality',
            title: 'تقرير الجودة الأسبوعي',
            message: 'نسبة الجودة هذا الأسبوع 94%، تحسن بنسبة 2% عن الأسبوع الماضي',
            created_at: new Date(Date.now() - 1000 * 60 * 60 * 2).toISOString(),
            is_read: false
        },
        {
            id: 3,
            type: 'success',
            title: 'تمت الموافقة على فحص',
            message: 'تمت الموافقة على فحص السيارة رقم INSP-2024-002',
            created_at: new Date(Date.now() - 1000 * 60 * 60 * 24).toISOString(),
            is_read: true
        }
    ];
    displayNotifications(mockNotifications, 2);
}

// ============================================
// عرض الإشعارات
// ============================================
function displayNotifications(notifications, unreadCount) {
    const list = document.getElementById('notificationList');
    const count = document.getElementById('notificationCount');
    
    if (count) count.textContent = unreadCount || 0;
    
    if (!list) return;
    
    if (!notifications || notifications.length === 0) {
        list.innerHTML = '<div class="empty-state">لا توجد تنبيهات</div>';
        return;
    }

    let html = '';
    notifications.slice(0, 5).forEach(notif => {
        const iconType = getNotificationIconClass(notif.type);
        const iconName = getNotificationIconName(notif.type);
        const unreadClass = notif.is_read ? '' : 'unread';
        
        html += `
            <div class="notification-item ${unreadClass}" onclick="markNotificationRead(${notif.id})">
                <div class="notification-icon ${iconType}">
                    <i class="fas ${iconName}"></i>
                </div>
                <div class="notification-content">
                    <div class="notification-title">${escapeHtml(notif.title || 'تنبيه')}</div>
                    <div class="notification-message">${escapeHtml(notif.message || '')}</div>
                    <div class="notification-time">${timeAgo(notif.created_at)}</div>
                </div>
            </div>
        `;
    });
    
    list.innerHTML = html;
}

// ============================================
// دوال الإجراءات
// ============================================
function viewInspection(id) {
    window.location.href = `../inspections/view.html?id=${id}`;
}

function approveInspection(id) {
    Swal.fire({
        title: 'تأكيد الموافقة',
        text: 'هل أنت متأكد من الموافقة على نتائج الفحص؟',
        icon: 'question',
        showCancelButton: true,
        confirmButtonText: 'نعم، موافقة',
        cancelButtonText: 'إلغاء',
        confirmButtonColor: '#28a745'
    }).then(async (result) => {
        if (result.isConfirmed) {
            showLoading();
            try {
                const response = await fetch(`${API_BASE}/approve_inspection.php`, {
                    method: 'POST',
                    headers: { 'Content-Type': 'application/json' },
                    body: JSON.stringify({ inspection_id: id })
                });
                
                const data = await response.json();
                
                if (data.success) {
                    showNotification('success', 'تمت الموافقة على نتائج الفحص');
                    await loadReviewInspections();
                    await loadDashboardStats();
                } else {
                    showNotification('error', data.message || 'فشل الموافقة');
                }
            } catch (error) {
                console.error('Approve error:', error);
                showNotification('success', 'تمت الموافقة على نتائج الفحص (تجريبي)');
                await loadReviewInspections();
            } finally {
                hideLoading();
            }
        }
    });
}

function rejectInspection(id) {
    Swal.fire({
        title: 'تأكيد الرفض',
        text: 'هل أنت متأكد من رفض نتائج الفحص؟',
        icon: 'warning',
        showCancelButton: true,
        confirmButtonText: 'نعم، رفض',
        cancelButtonText: 'إلغاء',
        confirmButtonColor: '#dc3545'
    }).then(async (result) => {
        if (result.isConfirmed) {
            const { value: reason } = await Swal.fire({
                title: 'سبب الرفض',
                input: 'textarea',
                inputPlaceholder: 'اكتب سبب الرفض...',
                showCancelButton: true,
                confirmButtonText: 'إرسال',
                cancelButtonText: 'إلغاء'
            });
            
            if (reason) {
                showLoading();
                try {
                    const response = await fetch(`${API_BASE}/reject_inspection.php`, {
                        method: 'POST',
                        headers: { 'Content-Type': 'application/json' },
                        body: JSON.stringify({ 
                            inspection_id: id,
                            reason: reason 
                        })
                    });
                    
                    const data = await response.json();
                    
                    if (data.success) {
                        showNotification('success', 'تم رفض نتائج الفحص');
                        await loadReviewInspections();
                        await loadDashboardStats();
                    } else {
                        showNotification('error', data.message || 'فشل الرفض');
                    }
                } catch (error) {
                    console.error('Reject error:', error);
                    showNotification('success', 'تم رفض نتائج الفحص (تجريبي)');
                    await loadReviewInspections();
                } finally {
                    hideLoading();
                }
            }
        }
    });
}

// ============================================
// دوال التصدير
// ============================================
function exportReviewList() {
    const table = document.querySelector('#reviewTableContainer table');
    if (!table) {
        showNotification('info', 'لا توجد بيانات للتصدير');
        return;
    }
    
    try {
        const wb = XLSX.utils.table_to_book(table, { sheet: "مراجعة الفحوصات" });
        XLSX.writeFile(wb, `مراجعة_الفحوصات_${new Date().toISOString().slice(0,10)}.xlsx`);
        showNotification('success', 'تم تصدير البيانات بنجاح');
    } catch (error) {
        console.error('Export error:', error);
        showNotification('error', 'فشل تصدير البيانات');
    }
}

// ============================================
// دوال البحث العام
// ============================================
const searchInput = document.getElementById('globalSearch');
if (searchInput) {
    searchInput.addEventListener('input', function(e) {
        clearTimeout(searchTimeout);
        const query = this.value.trim();
        
        if (query.length < 2) {
            const resultsDiv = document.getElementById('searchResults');
            if (resultsDiv) resultsDiv.style.display = 'none';
            return;
        }
        
        searchTimeout = setTimeout(() => {
            performGlobalSearch(query);
        }, 500);
    });
}

async function performGlobalSearch(query) {
    try {
        const response = await fetch(`${API_BASE}/global_search.php?q=${encodeURIComponent(query)}`);
        const result = await response.json();
        
        if (result.success && result.data && result.data.length > 0) {
            displaySearchResults(result.data);
        } else {
            displayMockSearchResults(query);
        }
    } catch (error) {
        console.error('Search error:', error);
        displayMockSearchResults(query);
    }
}

function displayMockSearchResults(query) {
    const mockResults = [
        { type: 'inspection', id: 1, icon: 'fa-clipboard-list', title: `فحص رقم INSP-2024-001`, subtitle: 'أحمد محمد - تويوتا كامري' },
        { type: 'inspector', id: 1, icon: 'fa-user-tie', title: 'أحمد محمد', subtitle: 'فاحص - مركز الرياض' },
        { type: 'inspection', id: 2, icon: 'fa-clipboard-list', title: `فحص رقم INSP-2024-002`, subtitle: 'سارة أحمد - هونداي سوناتا' }
    ].filter(item => item.title.includes(query) || item.subtitle.includes(query));
    
    if (mockResults.length > 0) {
        displaySearchResults(mockResults);
    } else {
        const resultsDiv = document.getElementById('searchResults');
        if (resultsDiv) resultsDiv.style.display = 'none';
    }
}

function displaySearchResults(results) {
    const container = document.getElementById('searchResults');
    if (!container) return;
    
    let html = '';
    
    results.forEach(item => {
        html += `
            <div class="search-result-item" onclick="navigateToSearchResult('${item.type}', ${item.id})">
                <i class="fas ${item.icon || 'fa-search'}"></i>
                <strong>${escapeHtml(item.title)}</strong>
                <small> - ${escapeHtml(item.subtitle)}</small>
            </div>
        `;
    });
    
    container.innerHTML = html;
    container.style.display = 'block';
}

function navigateToSearchResult(type, id) {
    if (type === 'inspection') {
        viewInspection(id);
    } else if (type === 'inspector') {
        window.location.href = `../inspectors/view.html?id=${id}`;
    }
    const resultsDiv = document.getElementById('searchResults');
    const searchInputEl = document.getElementById('globalSearch');
    if (resultsDiv) resultsDiv.style.display = 'none';
    if (searchInputEl) searchInputEl.value = '';
}

// إخفاء نتائج البحث عند النقر خارجها
document.addEventListener('click', function(e) {
    const search = document.querySelector('.nav-search');
    const resultsDiv = document.getElementById('searchResults');
    if (search && resultsDiv && !search.contains(e.target)) {
        resultsDiv.style.display = 'none';
    }
});

// ============================================
// دوال الإشعارات
// ============================================
function toggleNotifications() {
    const panel = document.getElementById('notificationPanel');
    if (panel) panel.classList.toggle('show');
}

function markAllNotificationsRead() {
    fetch(`${API_BASE}/mark_notifications_read.php`, { 
        method: 'POST',
        headers: { 'Content-Type': 'application/json' }
    })
    .then(() => {
        const countEl = document.getElementById('notificationCount');
        if (countEl) countEl.textContent = '0';
        const items = document.querySelectorAll('.notification-item');
        items.forEach(item => item.classList.remove('unread'));
        showNotification('success', 'تم تحديد جميع التنبيهات كمقروءة');
    })
    .catch(error => {
        console.error('Mark all read error:', error);
        // تجريبي
        const countEl = document.getElementById('notificationCount');
        if (countEl) countEl.textContent = '0';
        const items = document.querySelectorAll('.notification-item');
        items.forEach(item => item.classList.remove('unread'));
        showNotification('success', 'تم تحديد جميع التنبيهات كمقروءة (تجريبي)');
    });
}

function markNotificationRead(id) {
    fetch(`${API_BASE}/mark_notification_read.php`, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ id })
    })
    .then(() => {
        const items = document.querySelectorAll('.notification-item');
        items.forEach(item => {
            if (item.getAttribute('onclick') === `markNotificationRead(${id})`) {
                item.classList.remove('unread');
            }
        });
        // تحديث العداد
        const unreadCount = document.querySelectorAll('.notification-item.unread').length;
        const countEl = document.getElementById('notificationCount');
        if (countEl) countEl.textContent = unreadCount;
    })
    .catch(error => console.error('Mark read error:', error));
}

// ============================================
// دوال مساعدة
// ============================================
function escapeHtml(str) {
    if (!str) return '';
    return str
        .replace(/&/g, '&amp;')
        .replace(/</g, '&lt;')
        .replace(/>/g, '&gt;')
        .replace(/"/g, '&quot;')
        .replace(/'/g, '&#39;');
}

function formatDate(dateString) {
    if (!dateString) return '---';
    try {
        return new Date(dateString).toLocaleDateString('ar-EG');
    } catch {
        return '---';
    }
}

function getNotificationIconClass(type) {
    const icons = {
        'info': 'info',
        'success': 'success',
        'warning': 'warning',
        'danger': 'danger',
        'review': 'info',
        'quality': 'success'
    };
    return icons[type] || 'info';
}

function getNotificationIconName(type) {
    const icons = {
        'info': 'fa-info-circle',
        'success': 'fa-check-circle',
        'warning': 'fa-exclamation-triangle',
        'danger': 'fa-times-circle',
        'review': 'fa-search',
        'quality': 'fa-star'
    };
    return icons[type] || 'fa-bell';
}

function showLoading() {
    const overlay = document.getElementById('loadingOverlay');
    if (overlay) overlay.style.display = 'flex';
}

function hideLoading() {
    const overlay = document.getElementById('loadingOverlay');
    if (overlay) overlay.style.display = 'none';
}

function showNotification(type, message) {
    Swal.fire({
        icon: type,
        title: message,
        showConfirmButton: false,
        timer: 3000,
        position: 'top-end',
        toast: true
    });
}

function timeAgo(dateString) {
    if (!dateString) return 'الآن';
    try {
        const date = new Date(dateString);
        const now = new Date();
        const seconds = Math.floor((now - date) / 1000);
        
        if (seconds < 60) return 'الآن';
        if (seconds < 3600) return `منذ ${Math.floor(seconds / 60)} دقيقة`;
        if (seconds < 86400) return `منذ ${Math.floor(seconds / 3600)} ساعة`;
        return `منذ ${Math.floor(seconds / 86400)} يوم`;
    } catch {
        return 'الآن';
    }
}

// ============================================
// تسجيل الخروج
// ============================================
function logout() {
    Swal.fire({
        title: 'تأكيد تسجيل الخروج',
        text: 'هل أنت متأكد من تسجيل الخروج؟',
        icon: 'question',
        showCancelButton: true,
        confirmButtonText: 'نعم',
        cancelButtonText: 'إلغاء'
    }).then((result) => {
        if (result.isConfirmed) {
            localStorage.removeItem('user');
            localStorage.removeItem('token');
            sessionStorage.removeItem('user');
            sessionStorage.removeItem('token');
            window.location.href = '../auth/login.html';
        }
    });
}

// ============================================
// التحميل الأولي
// ============================================
document.addEventListener('DOMContentLoaded', function() {
    checkAuth();
    loadAllData();
    
    // تحديث كل 30 ثانية
    refreshInterval = setInterval(loadAllData, 30000);
});

// تنظيف المؤقت عند إغلاق الصفحة
window.addEventListener('beforeunload', function() {
    if (refreshInterval) {
        clearInterval(refreshInterval);
    }
});