/**
 * ملف JavaScript لتحسين وظائف الطباعة والتصدير
 * Print and Export Enhancement Functions
 */

// تحسين وظيفة الطباعة
function enhancedPrint(elementId = null) {
    // إضافة لوجو المستشفى قبل الطباعة
    addHospitalLogo();
    
    // تحسين التنسيق للطباعة
    optimizeForPrint();
    
    // طباعة العنصر المحدد أو الصفحة كاملة
    if (elementId) {
        printElement(elementId);
    } else {
        window.print();
    }
    
    // إزالة التحسينات بعد الطباعة
    setTimeout(() => {
        removeOptimizations();
    }, 1000);
}

// إضافة لوجو المستشفى
function addHospitalLogo() {
    const headers = document.querySelectorAll('.print-header, .header');
    headers.forEach(header => {
        if (!header.querySelector('.hospital-logo-print')) {
            const logo = createHospitalLogo();
            header.insertBefore(logo, header.firstChild);
        }
    });
}

// إنشاء لوجو المستشفى
function createHospitalLogo() {
    const logoContainer = document.createElement('div');
    logoContainer.className = 'hospital-logo-print d-flex align-items-center justify-content-center mb-3';
    logoContainer.style.cssText = `
        background: linear-gradient(135deg, #0d6efd 0%, #764ba2 100%);
        color: white;
        padding: 15px;
        border-radius: 8px;
        margin-bottom: 15px;
        text-align: center;
    `;
    
    logoContainer.innerHTML = `
        <div class="d-flex align-items-center gap-3">
            <div class="logo-icon" style="
                width: 50px;
                height: 50px;
                background: rgba(255,255,255,0.2);
                border-radius: 50%;
                display: flex;
                align-items: center;
                justify-content: center;
                font-size: 1.5rem;
            ">
                <svg width="30" height="30" viewBox="0 0 40 40" fill="currentColor">
                    <rect x="15" y="5" width="10" height="30"/>
                    <rect x="5" y="15" width="30" height="10"/>
                    <circle cx="20" cy="20" r="18" fill="none" stroke="currentColor" stroke-width="2"/>
                </svg>
            </div>
            <div class="logo-text">
                <h4 style="margin: 0; font-weight: bold; font-size: 1.2rem;">مستشفى الملك فهد</h4>
                <p style="margin: 0; font-size: 0.9rem; opacity: 0.9;">King Fahd Hospital</p>
                <small style="font-size: 0.8rem; opacity: 0.8;">نظام إدارة المضادات الحيوية</small>
            </div>
        </div>
    `;
    
    return logoContainer;
}

// تحسين التنسيق للطباعة
function optimizeForPrint() {
    // إضافة CSS للطباعة
    const printStyles = document.createElement('style');
    printStyles.id = 'print-optimization';
    printStyles.innerHTML = `
        @media print {
            .hospital-logo-print {
                background: #0d6efd !important;
                -webkit-print-color-adjust: exact !important;
                color-adjust: exact !important;
            }
            
            .signature-section {
                page-break-inside: avoid;
                margin-top: 20px;
            }
            
            .monitoring-table {
                page-break-inside: auto;
            }
            
            .monitoring-table tr {
                page-break-inside: avoid;
                page-break-after: auto;
            }
            
            .footer {
                position: fixed;
                bottom: 0;
                width: 100%;
                page-break-inside: avoid;
            }
            
            .page-container {
                display: flex;
                flex-direction: column;
                min-height: 100vh;
                justify-content: space-between;
            }
        }
    `;
    document.head.appendChild(printStyles);
    
    // تحسين الجداول
    optimizeTables();
    
    // إضافة معلومات الطباعة
    addPrintInfo();
}

// تحسين الجداول للطباعة
function optimizeTables() {
    const tables = document.querySelectorAll('table');
    tables.forEach(table => {
        // إضافة فئة للطباعة
        table.classList.add('print-optimized');
        
        // تحسين عرض الأعمدة
        const ths = table.querySelectorAll('th');
        ths.forEach((th, index) => {
            if (!th.style.width) {
                const cellCount = ths.length;
                th.style.width = `${100 / cellCount}%`;
            }
        });
        
        // تحسين ارتفاع الصفوف
        const tds = table.querySelectorAll('td');
        tds.forEach(td => {
            if (!td.style.height && td.textContent.trim() === '') {
                td.style.height = '25px';
            }
        });
    });
}

// إضافة معلومات الطباعة
function addPrintInfo() {
    const printInfo = document.createElement('div');
    printInfo.className = 'print-info';
    printInfo.style.cssText = `
        position: fixed;
        bottom: 10px;
        left: 10px;
        font-size: 8px;
        color: #666;
        z-index: 1000;
    `;
    
    const now = new Date();
    printInfo.innerHTML = `
        طُبع في: ${now.toLocaleDateString('ar-SA')} ${now.toLocaleTimeString('ar-SA')}
    `;
    
    document.body.appendChild(printInfo);
}

// طباعة عنصر محدد
function printElement(elementId) {
    const element = document.getElementById(elementId);
    if (!element) {
        console.error('Element not found:', elementId);
        return;
    }
    
    const printWindow = window.open('', '_blank');
    const printDocument = printWindow.document;
    
    // إنشاء محتوى الطباعة
    printDocument.write(`
        <!DOCTYPE html>
        <html lang="ar" dir="rtl">
        <head>
            <meta charset="UTF-8">
            <title>طباعة - نظام إدارة المضادات الحيوية</title>
            <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
            <link href="assets/css/print.css" rel="stylesheet">
            <style>
                body { font-family: Arial, sans-serif; direction: rtl; }
                @media print {
                    .hospital-logo-print { background: #0d6efd !important; -webkit-print-color-adjust: exact !important; }
                }
            </style>
        </head>
        <body>
            ${element.outerHTML}
        </body>
        </html>
    `);
    
    printDocument.close();
    
    // انتظار تحميل المحتوى ثم الطباعة
    printWindow.onload = function() {
        printWindow.print();
        printWindow.close();
    };
}

// إزالة التحسينات بعد الطباعة
function removeOptimizations() {
    // إزالة CSS المؤقت
    const printStyles = document.getElementById('print-optimization');
    if (printStyles) {
        printStyles.remove();
    }
    
    // إزالة معلومات الطباعة
    const printInfo = document.querySelector('.print-info');
    if (printInfo) {
        printInfo.remove();
    }
    
    // إزالة اللوجو المؤقت
    const tempLogos = document.querySelectorAll('.hospital-logo-print');
    tempLogos.forEach(logo => {
        if (!logo.classList.contains('permanent')) {
            logo.remove();
        }
    });
}

// تحسين تصدير PDF
function enhancedPDFExport(reportType = 'general') {
    // إظهار مؤشر التحميل
    showLoadingIndicator('جاري إنشاء ملف PDF...');
    
    // إرسال طلب التصدير
    const form = document.createElement('form');
    form.method = 'POST';
    form.action = 'export/pdf_export.php';
    form.target = '_blank';
    
    // إضافة معاملات إضافية
    const params = {
        report_type: reportType,
        include_logo: 'true',
        format: 'landscape',
        timestamp: new Date().getTime()
    };
    
    Object.keys(params).forEach(key => {
        const input = document.createElement('input');
        input.type = 'hidden';
        input.name = key;
        input.value = params[key];
        form.appendChild(input);
    });
    
    document.body.appendChild(form);
    form.submit();
    document.body.removeChild(form);
    
    // إخفاء مؤشر التحميل
    setTimeout(() => {
        hideLoadingIndicator();
    }, 2000);
}

// تحسين تصدير Excel
function enhancedExcelExport(includeCharts = true) {
    // إظهار مؤشر التحميل
    showLoadingIndicator('جاري إنشاء ملف Excel...');
    
    // إرسال طلب التصدير
    const form = document.createElement('form');
    form.method = 'POST';
    form.action = 'export/excel_export.php';
    form.target = '_blank';
    
    // إضافة معاملات إضافية
    const params = {
        include_charts: includeCharts ? 'true' : 'false',
        include_logo: 'true',
        format: 'xlsx',
        timestamp: new Date().getTime()
    };
    
    Object.keys(params).forEach(key => {
        const input = document.createElement('input');
        input.type = 'hidden';
        input.name = key;
        input.value = params[key];
        form.appendChild(input);
    });
    
    document.body.appendChild(form);
    form.submit();
    document.body.removeChild(form);
    
    // إخفاء مؤشر التحميل
    setTimeout(() => {
        hideLoadingIndicator();
    }, 2000);
}

// إظهار مؤشر التحميل
function showLoadingIndicator(message = 'جاري المعالجة...') {
    // إزالة المؤشر السابق إن وجد
    hideLoadingIndicator();
    
    const loader = document.createElement('div');
    loader.id = 'export-loader';
    loader.className = 'position-fixed top-0 start-0 w-100 h-100 d-flex align-items-center justify-content-center';
    loader.style.cssText = `
        background: rgba(0,0,0,0.7);
        z-index: 9999;
        color: white;
    `;
    
    loader.innerHTML = `
        <div class="text-center">
            <div class="spinner-border text-light mb-3" role="status">
                <span class="visually-hidden">Loading...</span>
            </div>
            <div class="h5">${message}</div>
        </div>
    `;
    
    document.body.appendChild(loader);
}

// إخفاء مؤشر التحميل
function hideLoadingIndicator() {
    const loader = document.getElementById('export-loader');
    if (loader) {
        loader.remove();
    }
}

// تحسين معاينة الطباعة
function printPreview(elementId = null) {
    const content = elementId ? 
        document.getElementById(elementId).outerHTML : 
        document.body.innerHTML;
    
    const previewWindow = window.open('', '_blank', 'width=800,height=600');
    const previewDocument = previewWindow.document;
    
    previewDocument.write(`
        <!DOCTYPE html>
        <html lang="ar" dir="rtl">
        <head>
            <meta charset="UTF-8">
            <title>معاينة الطباعة</title>
            <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
            <link href="assets/css/print.css" rel="stylesheet">
            <style>
                body { 
                    font-family: Arial, sans-serif; 
                    direction: rtl; 
                    padding: 20px;
                    background: #f5f5f5;
                }
                .preview-container {
                    background: white;
                    padding: 20px;
                    border-radius: 8px;
                    box-shadow: 0 0 10px rgba(0,0,0,0.1);
                    max-width: 210mm;
                    margin: 0 auto;
                }
                .preview-controls {
                    text-align: center;
                    margin-bottom: 20px;
                    padding: 10px;
                    background: white;
                    border-radius: 5px;
                }
                .btn {
                    margin: 0 5px;
                    padding: 8px 15px;
                    border: none;
                    border-radius: 4px;
                    cursor: pointer;
                }
                .btn-primary { background: #0d6efd; color: white; }
                .btn-secondary { background: #6c757d; color: white; }
            </style>
        </head>
        <body>
            <div class="preview-controls">
                <button class="btn btn-primary" onclick="window.print()">🖨️ طباعة</button>
                <button class="btn btn-secondary" onclick="window.close()">❌ إغلاق</button>
            </div>
            <div class="preview-container">
                ${content}
            </div>
        </body>
        </html>
    `);
    
    previewDocument.close();
}

// تهيئة الأحداث عند تحميل الصفحة
document.addEventListener('DOMContentLoaded', function() {
    // إضافة أحداث للأزرار
    const printButtons = document.querySelectorAll('[data-action="print"]');
    printButtons.forEach(button => {
        button.addEventListener('click', function() {
            const elementId = this.getAttribute('data-element');
            enhancedPrint(elementId);
        });
    });
    
    const pdfButtons = document.querySelectorAll('[data-action="pdf"]');
    pdfButtons.forEach(button => {
        button.addEventListener('click', function() {
            const reportType = this.getAttribute('data-report-type') || 'general';
            enhancedPDFExport(reportType);
        });
    });
    
    const excelButtons = document.querySelectorAll('[data-action="excel"]');
    excelButtons.forEach(button => {
        button.addEventListener('click', function() {
            const includeCharts = this.getAttribute('data-include-charts') !== 'false';
            enhancedExcelExport(includeCharts);
        });
    });
    
    // إضافة اختصارات لوحة المفاتيح
    document.addEventListener('keydown', function(e) {
        // Ctrl+P للطباعة المحسنة
        if (e.ctrlKey && e.key === 'p') {
            e.preventDefault();
            enhancedPrint();
        }
        
        // Ctrl+Shift+P لمعاينة الطباعة
        if (e.ctrlKey && e.shiftKey && e.key === 'P') {
            e.preventDefault();
            printPreview();
        }
    });
});

// تصدير الوظائف للاستخدام العام
window.enhancedPrint = enhancedPrint;
window.enhancedPDFExport = enhancedPDFExport;
window.enhancedExcelExport = enhancedExcelExport;
window.printPreview = printPreview;

// تحسين الطباعة - إزالة المسافات الزائدة والصفحات الفارغة
function optimizePrintSpacing() {
    // إخفاء الأقسام الفارغة
    const emptySections = document.querySelectorAll('.section');
    emptySections.forEach(section => {
        const content = section.textContent.trim();
        if (content === '' || (content.includes('لا توجد') && section.querySelectorAll('ul, ol, table').length === 0)) {
            section.style.display = 'none';
        }
    });
    
    // تقليل المسافات الكبيرة
    const elements = document.querySelectorAll('*');
    elements.forEach(el => {
        const style = window.getComputedStyle(el);
        if (parseInt(style.marginBottom) > 20) {
            el.style.marginBottom = '8px';
        }
        if (parseInt(style.marginTop) > 20) {
            el.style.marginTop = '8px';
        }
        if (parseInt(style.paddingBottom) > 15) {
            el.style.paddingBottom = '5px';
        }
        if (parseInt(style.paddingTop) > 15) {
            el.style.paddingTop = '5px';
        }
    });
    
    // منع كسر الصفحة في الأماكن المهمة
    const importantElements = document.querySelectorAll('.header, .section, .signature-section, .notes-section');
    importantElements.forEach(el => {
        el.style.pageBreakInside = 'avoid';
    });
    
    // تقليل ارتفاع الأقسام الفارغة
    const sectionsWithNoData = document.querySelectorAll('.section');
    sectionsWithNoData.forEach(section => {
        const text = section.textContent.trim();
        if (text.includes('لا توجد') || text.includes('لا يوجد')) {
            section.style.minHeight = 'auto';
            section.style.padding = '3px';
            section.style.margin = '2px 0';
        }
    });
}

// تشغيل التحسين قبل الطباعة
window.addEventListener('beforeprint', optimizePrintSpacing);

// تشغيل التحسين عند تحميل الصفحة للمعاينة
document.addEventListener('DOMContentLoaded', optimizePrintSpacing);

// إضافة CSS إضافي لتحسين الطباعة
const additionalPrintCSS = document.createElement('style');
additionalPrintCSS.innerHTML = `
@media print {
    /* منع الصفحات الفارغة */
    body { 
        margin: 0; 
        padding: 5px; 
    }
    
    /* تقليل المسافات */
    .section:empty { 
        display: none !important; 
    }
    
    .section:has(p:contains("لا توجد")):not(:has(ul)):not(:has(ol)):not(:has(table)) {
        min-height: auto !important;
        padding: 2px !important;
        margin: 1px 0 !important;
    }
    
    /* منع كسر الصفحة غير الضروري */
    .page-break-avoid {
        page-break-inside: avoid !important;
    }
    
    /* تحسين استغلال المساحة */
    @page {
        margin: 0.5cm !important;
    }
}
`;
document.head.appendChild(additionalPrintCSS);