// Admin Forms JavaScript
// ملف JavaScript للنماذج الإدارية

// تهيئة النماذج عند تحميل الصفحة
document.addEventListener('DOMContentLoaded', function() {
    console.log('Admin Forms JS loaded');
    
    // تهيئة جميع النماذج
    initializeForms();
    
    // تهيئة أزرار الحذف
    initializeDeleteButtons();
    
    // تهيئة أزرار التعديل
    initializeEditButtons();
});

// تهيئة النماذج
function initializeForms() {
    // البحث عن جميع النماذج
    const forms = document.querySelectorAll('form');
    
    forms.forEach(form => {
        // إضافة معالج الأحداث للنماذج
        form.addEventListener('submit', handleFormSubmit);
        
        // إضافة معالج الأحداث للحقول
        const inputs = form.querySelectorAll('input, select, textarea');
        inputs.forEach(input => {
            input.addEventListener('change', handleInputChange);
            input.addEventListener('blur', handleInputBlur);
        });
    });
}

// معالجة إرسال النماذج
function handleFormSubmit(event) {
    const form = event.target;
    const submitButton = form.querySelector('button[type="submit"]');
    
    // التحقق من صحة النموذج
    if (!form.checkValidity()) {
        event.preventDefault();
        event.stopPropagation();
        
        // إظهار رسائل الخطأ
        showFormErrors(form);
        return;
    }
    
    // تعطيل زر الإرسال
    if (submitButton) {
        submitButton.disabled = true;
        submitButton.innerHTML = '<i class="fas fa-spinner fa-spin"></i> جاري الحفظ...';
    }
    
    // إضافة class للتحقق من صحة النموذج
    form.classList.add('was-validated');
}

// معالجة تغيير الحقول
function handleInputChange(event) {
    const input = event.target;
    const form = input.closest('form');
    
    // إزالة رسائل الخطأ
    clearInputError(input);
    
    // التحقق من صحة الحقل
    if (input.checkValidity()) {
        input.classList.remove('is-invalid');
        input.classList.add('is-valid');
    } else {
        input.classList.remove('is-valid');
        input.classList.add('is-invalid');
    }
}

// معالجة فقدان التركيز
function handleInputBlur(event) {
    const input = event.target;
    
    // التحقق من صحة الحقل
    if (input.checkValidity()) {
        input.classList.remove('is-invalid');
        input.classList.add('is-valid');
    } else {
        input.classList.remove('is-valid');
        input.classList.add('is-invalid');
    }
}

// إظهار أخطاء النموذج
function showFormErrors(form) {
    const inputs = form.querySelectorAll('input, select, textarea');
    
    inputs.forEach(input => {
        if (!input.checkValidity()) {
            input.classList.add('is-invalid');
        }
    });
}

// مسح أخطاء الحقل
function clearInputError(input) {
    input.classList.remove('is-invalid', 'is-valid');
}

// تهيئة أزرار الحذف
function initializeDeleteButtons() {
    const deleteButtons = document.querySelectorAll('.btn-delete, [onclick*="delete"]');
    
    deleteButtons.forEach(button => {
        button.addEventListener('click', handleDeleteClick);
    });
}

// معالجة النقر على أزرار الحذف
function handleDeleteClick(event) {
    event.preventDefault();
    
    const button = event.target;
    const itemName = button.getAttribute('data-item-name') || 'العنصر';
    const itemId = button.getAttribute('data-item-id') || '';
    
    // تأكيد الحذف
    if (confirm(`هل أنت متأكد من حذف ${itemName}؟`)) {
        // إذا كان هناك رابط للحذف
        const deleteUrl = button.getAttribute('data-delete-url');
        if (deleteUrl) {
            deleteItem(deleteUrl, itemId);
        }
    }
}

// حذف عنصر
function deleteItem(url, itemId) {
    // إنشاء نموذج حذف
    const form = document.createElement('form');
    form.method = 'POST';
    form.action = url;
    
    // إضافة CSRF token
    const csrfToken = document.querySelector('meta[name="csrf-token"]');
    if (csrfToken) {
        const csrfInput = document.createElement('input');
        csrfInput.type = 'hidden';
        csrfInput.name = '_token';
        csrfInput.value = csrfToken.getAttribute('content');
        form.appendChild(csrfInput);
    }
    
    // إضافة method override
    const methodInput = document.createElement('input');
    methodInput.type = 'hidden';
    methodInput.name = '_method';
    methodInput.value = 'DELETE';
    form.appendChild(methodInput);
    
    // إرسال النموذج
    document.body.appendChild(form);
    form.submit();
}

// تهيئة أزرار التعديل
function initializeEditButtons() {
    const editButtons = document.querySelectorAll('.btn-edit, [onclick*="edit"]');
    
    editButtons.forEach(button => {
        button.addEventListener('click', handleEditClick);
    });
}

// معالجة النقر على أزرار التعديل
function handleEditClick(event) {
    event.preventDefault();
    
    const button = event.target;
    const editUrl = button.getAttribute('data-edit-url');
    
    if (editUrl) {
        // الانتقال إلى صفحة التعديل
        window.location.href = editUrl;
    }
}

// دالة مساعدة لعرض رسائل النجاح
function showSuccessMessage(message) {
    // إنشاء عنصر التنبيه
    const alert = document.createElement('div');
    alert.className = 'alert alert-success alert-dismissible fade show';
    alert.innerHTML = `
        ${message}
        <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
    `;
    
    // إضافة التنبيه للصفحة
    const container = document.querySelector('.main-content') || document.body;
    container.insertBefore(alert, container.firstChild);
    
    // إزالة التنبيه تلقائياً بعد 5 ثوان
    setTimeout(() => {
        if (alert.parentNode) {
            alert.remove();
        }
    }, 5000);
}

// دالة مساعدة لعرض رسائل الخطأ
function showErrorMessage(message) {
    // إنشاء عنصر التنبيه
    const alert = document.createElement('div');
    alert.className = 'alert alert-danger alert-dismissible fade show';
    alert.innerHTML = `
        ${message}
        <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
    `;
    
    // إضافة التنبيه للصفحة
    const container = document.querySelector('.main-content') || document.body;
    container.insertBefore(alert, container.firstChild);
    
    // إزالة التنبيه تلقائياً بعد 5 ثوان
    setTimeout(() => {
        if (alert.parentNode) {
            alert.remove();
        }
    }, 5000);
}

// دالة مساعدة لعرض رسائل التحذير
function showWarningMessage(message) {
    // إنشاء عنصر التنبيه
    const alert = document.createElement('div');
    alert.className = 'alert alert-warning alert-dismissible fade show';
    alert.innerHTML = `
        ${message}
        <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
    `;
    
    // إضافة التنبيه للصفحة
    const container = document.querySelector('.main-content') || document.body;
    container.insertBefore(alert, container.firstChild);
    
    // إزالة التنبيه تلقائياً بعد 5 ثوان
    setTimeout(() => {
        if (alert.parentNode) {
            alert.remove();
        }
    }, 5000);
}

// دالة مساعدة لعرض رسائل المعلومات
function showInfoMessage(message) {
    // إنشاء عنصر التنبيه
    const alert = document.createElement('div');
    alert.className = 'alert alert-info alert-dismissible fade show';
    alert.innerHTML = `
        ${message}
        <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
    `;
    
    // إضافة التنبيه للصفحة
    const container = document.querySelector('.main-content') || document.body;
    container.insertBefore(alert, container.firstChild);
    
    // إزالة التنبيه تلقائياً بعد 5 ثوان
    setTimeout(() => {
        if (alert.parentNode) {
            alert.remove();
        }
    }, 5000);
}

// دالة مساعدة لإخفاء جميع التنبيهات
function hideAllAlerts() {
    const alerts = document.querySelectorAll('.alert');
    alerts.forEach(alert => {
        alert.remove();
    });
}

// دالة مساعدة لتحميل البيانات
function loadData(url, callback) {
    fetch(url, {
        method: 'GET',
        headers: {
            'X-Requested-With': 'XMLHttpRequest',
            'Accept': 'application/json'
        }
    })
    .then(response => response.json())
    .then(data => {
        if (callback && typeof callback === 'function') {
            callback(data);
        }
    })
    .catch(error => {
        console.error('Error loading data:', error);
        showErrorMessage('حدث خطأ أثناء تحميل البيانات');
    });
}

// دالة مساعدة لحفظ البيانات
function saveData(url, data, callback) {
    fetch(url, {
        method: 'POST',
        headers: {
            'X-Requested-With': 'XMLHttpRequest',
            'Accept': 'application/json',
            'Content-Type': 'application/json',
            'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content')
        },
        body: JSON.stringify(data)
    })
    .then(response => response.json())
    .then(result => {
        if (callback && typeof callback === 'function') {
            callback(result);
        }
    })
    .catch(error => {
        console.error('Error saving data:', error);
        showErrorMessage('حدث خطأ أثناء حفظ البيانات');
    });
}

// تصدير الدوال للاستخدام العام
window.AdminForms = {
    showSuccessMessage,
    showErrorMessage,
    showWarningMessage,
    showInfoMessage,
    hideAllAlerts,
    loadData,
    saveData
};
