<?php
include 'db_connect.php';
if (session_status() == PHP_SESSION_NONE) { session_start(); }
include_once 'db_connect.php'; // تأكد من اسم ملف الاتصال بقاعدة البيانات لديك
require_once 'theme_lang_loader.php';

if (session_status() == PHP_SESSION_NONE) { session_start(); }
include_once 'db_connect.php'; // استدعاء ملف الاتصال الموحد لقاعدة البيانات

// 🚀 جلب جميع إعدادات النظام المركزية مرة واحدة 🚀
$system_settings = [];
try {
    $sys_res = $conn->query("SELECT setting_key, setting_value FROM system_settings");
    if ($sys_res && $sys_res->num_rows > 0) {
        while($row = $sys_res->fetch_assoc()) {
            $system_settings[$row['setting_key']] = $row['setting_value'];
        }
    }
} catch(Exception $e) {}

// استخراج الصلاحيات في متغيرات لسهولة الاستخدام أسفل الصفحة
$is_live_stream_enabled = $system_settings['teacher_live_stream'] ?? '1';
$is_live_upload_enabled = $system_settings['teacher_live_upload'] ?? '1';

// جلب إعدادات النظام
$sys_res = $conn->query("SELECT setting_value FROM system_settings WHERE setting_key = 'teacher_live_stream'");
$is_live_enabled = $sys_res->fetch_assoc()['setting_value'];

if ($is_live_enabled == '1') {
    // اعرض أيقونة البث المباشر
} else {
    // إخفاء الأيقونة أو طباعة (الميزة مقفلة حالياً)
}
// 🚀 نظام التطهير والمطابقة الحيوية: قراءة المعرف من الرابط وتحديث الهوية فوراً عند الانتقال بين المدرسين
$current_uri = $_SERVER['REQUEST_URI'];
$teacher_slug = 'مجهول'; // القيمة الافتراضية لحماية اللوحة

if (preg_match('/teacher_(\d+)/', $current_uri, $matches) || preg_match('/([A-Z]{3}-\d{2}-\d{4})/', $current_uri, $matches)) {
    $url_tid = $matches[1]; // التقاط الرقم تلقائياً من الرابط المفتوح حالياً (مهما تغير المدرس)

    // إذا تغير المدرس في الرابط عن الجلسة السابقة أو كانت الجلسة فارغة، يتم التحديث فوراً
    if (empty($_SESSION['teacher_long_id']) || $_SESSION['teacher_long_id'] !== $url_tid || empty($_SESSION['teacher_id'])) {
        
        $t_check = $conn->query("SELECT * FROM teachers WHERE teacher_name LIKE '%$url_tid%' LIMIT 1");
        if ($t_check && $t_check->num_rows > 0) {
            $t_row = $t_check->fetch_assoc();
            
            $_SESSION['loggedin'] = true;
            $_SESSION['role'] = 'teacher';
            $_SESSION['teacher_id'] = $t_row['id']; // المعرف القصير (مثل 10 أو 11)
            $_SESSION['teacher_name'] = $t_row['teacher_name']; // شحن الاسم الكامل المطلق المطلوب للوحة لمنع ظهور "مجهول"
            $_SESSION['school_name'] = $t_row['school_name']; // 🚀 أضفنا اسم المدرسة للجلسة
            $_SESSION['teacher_long_id'] = $url_tid; // حفظ المعرف الطويل الحالي لمنع تداخل الكاش
        }
    }
    
    if (!empty($_SESSION['teacher_name'])) {
        $teacher_slug = $conn->real_escape_string($_SESSION['teacher_name']);
    }
} else {
    // خط دفاع احتياطي في حال الدخول العادي
    if (isset($_SESSION['teacher_name']) && !empty($_SESSION['teacher_name'])) {
        $teacher_slug = $conn->real_escape_string($_SESSION['teacher_name']);
    }
}

// تحديث حالة التواجد للمدرس الحالي
if ($teacher_slug !== 'مجهول') {
    $conn->query("UPDATE teachers SET last_active = NOW() WHERE teacher_name = '$teacher_slug'");
}

// تحديث حالة التواجد (متصل الآن)
if (isset($_SESSION['teacher_name'])) {
    $conn->query("UPDATE teachers SET last_active = NOW() WHERE teacher_name = '" . $conn->real_escape_string($_SESSION['teacher_name']) . "'");
}

// 1. قراءة اسم المدرس بذكاء (مع فك التشفير للغة العربية لمنع ضياع الاتصال)
if (isset($_GET['u']) && !empty($_GET['u'])) {
    $teacher_slug = $conn->real_escape_string(urldecode($_GET['u']));
} elseif (isset($_SESSION['teacher_name']) && !empty($_SESSION['teacher_name'])) {
    $teacher_slug = $conn->real_escape_string(urldecode($_SESSION['teacher_name']));
} else {
    $teacher_slug = 'مجهول';
}

// 🌟 الإضافة الجديدة: جلب صلاحيات المدرس (مع إعطاء صلاحيات كاملة افتراضياً للقدامى)
$perms = [];
if ($teacher_slug !== 'مجهول') {
    $perm_q = $conn->query("SELECT * FROM teacher_permissions WHERE teacher_name = '$teacher_slug'");
    if ($perm_q && $perm_q->num_rows > 0) {
        $perms = $perm_q->fetch_assoc();
    }
}

// 3. الإحصائيات الدقيقة (النسخة المضمونة)
$stats_students = 0; // سيتم تحديثه بالجافاسكريبت ليتطابق مع الجدول 100%
$stats_lectures = 0;
$stats_success  = 0;

// استخراج معرف المدرس من الرابط (لأنه لا يخطئ أبداً)
$url_teacher_id = '';
if (preg_match('/teacher_(\d+)/', $_SERVER['REQUEST_URI'], $matches)) {
    $url_teacher_id = $matches[1];
}
$search_key = !empty($url_teacher_id) ? $url_teacher_id : ($teacher_slug ?? '');

if (!empty($search_key) && $search_key !== 'مجهول') {
    $safe_key = $conn->real_escape_string($search_key);
    
    // أ- حساب عدد المحاضرات المرفوعة (نبحث في جدول classes باستخدام المعرف)
    $q_lec = "SELECT COUNT(*) as total FROM classes WHERE teacher_name LIKE '%$safe_key%'";
    $res_lec = $conn->query($q_lec);
    if($res_lec) $stats_lectures = $res_lec->fetch_assoc()['total'] ?? 0;

    // ب- حساب متوسط نسبة النجاح لطلاب هذا المدرس
    $q_succ = "SELECT AVG(success_rate) as avg_rate FROM students WHERE teacher_name LIKE '%$safe_key%' AND success_rate > 0";
    $res_succ = $conn->query($q_succ);
    if($res_succ) {
        $avg = $res_succ->fetch_assoc()['avg_rate'] ?? 0;
        $stats_success = round($avg);
    }
}

// جلب طلبات الانضمام
$join_req_query = $conn->query("SELECT * FROM join_requests WHERE teacher_slug = '$teacher_slug' AND status = 'pending' ORDER BY request_date DESC");
$join_requests = [];
if ($join_req_query) {
    while($row = $join_req_query->fetch_assoc()) {
        $join_requests[] = $row;
    }
}
// 3. الإحصائيات (أصفار افتراضياً)
$stats_students = 0;
$stats_lectures = 0;
$stats_questions = 0; 
$stats_plans = 0;       
$stats_success = 0;

// 4. جلب البيانات والإحصائيات
if (!empty($teacher_slug) && $teacher_slug !== 'مجهول') {
    
    // أ- جلب بيانات المدرس الشخصية (الاسم، اللوجو، التخصص)
    $stmt = $conn->prepare("SELECT * FROM teachers WHERE teacher_name = ?");
    if ($stmt) {
        $stmt->bind_param("s", $teacher_slug);
        $stmt->execute();
        $result = $stmt->get_result();
        $teacher_data = $result->fetch_assoc();

        if ($teacher_data) {
            $teacher_name = $teacher_data['teacher_name']; 
            $real_teacher_name = $teacher_data['display_name']; 
            $teacher_title = !empty($teacher_data['title']) ? $teacher_data['title'] : 'أستاذ';
            $teacher_phone = $teacher_data['phone'] ?? '';
            $teacher_spec = $teacher_data['specialization'] ?? '';
            $teacher_logo = $teacher_data['logo'] ?? '';
            $school_name_for_logo = $teacher_data['school_name'] ?? 'مستقل';
        }
        $stmt->close();
    }
    
    // ========================================================
    // 🚀 ب- الحساب الدقيق للإحصائيات (المحرك الذكي الصارم) 🚀
    // ========================================================
    $safe_slug = $conn->real_escape_string($teacher_slug);
    $school_name = $_SESSION['school_name'] ?? '';
    $teacher_id_session = $_SESSION['teacher_id'] ?? 0;
    
    // 1. بناء فلتر التوزيعات الذكي لمعرفة طلاب المدرس الفعليين
    $assignment_filter = "1=0";
    if (!empty($school_name) && $school_name !== 'مستقل') {
        $assign_sql = "SELECT stage, department, section FROM teacher_assignments WHERE school_name = '$school_name' AND (teacher_id = '$teacher_id_session' OR teacher_name = '$safe_slug')";
        $assign_res = $conn->query($assign_sql);
        $conds = [];
        if ($assign_res && $assign_res->num_rows > 0) {
            while ($r = $assign_res->fetch_assoc()) {
                $stg = $conn->real_escape_string($r['stage']);
                $dept = $conn->real_escape_string($r['department']);
                $sec = $conn->real_escape_string($r['section']);
                $c = "(stage = '$stg'";
                if (!empty($dept) && $dept !== 'عام' && $dept !== 'بدون قسم (عام)') $c .= " AND department = '$dept'";
                if (!empty($sec) && $sec !== 'الكل' && $sec !== 'بدون شعبة (الكل)' && $sec !== '!') $c .= " AND branch = '$sec'";
                $c .= ")";
                $conds[] = $c;
            }
            if (!empty($conds)) $assignment_filter = "(" . implode(" OR ", $conds) . ")";
        }
    }

    // 2. حساب عدد الطلاب الفعلي بدقة 100%
    $q_std = "SELECT COUNT(student_id) as total FROM students WHERE school_name = '$school_name' AND ($assignment_filter OR teacher_name = '$safe_slug') AND (is_suspended = 0 OR is_suspended IS NULL)";
    $res_std = $conn->query($q_std);
    if($res_std) $stats_students = $res_std->fetch_assoc()['total'] ?? 0;

    // 3. حساب متوسط نسبة النجاح لطلاب هذا المدرس فقط
    $q_succ = "SELECT AVG(success_rate) as avg_rate FROM students WHERE school_name = '$school_name' AND ($assignment_filter OR teacher_name = '$safe_slug') AND success_rate > 0";
    $res_succ = $conn->query($q_succ);
    if($res_succ) $stats_success = round($res_succ->fetch_assoc()['avg_rate'] ?? 0);

    // 4. حساب عدد المحاضرات (يُحسب من جدول الدروس المرفوعة للمدرس)
    $q_lec = "SELECT COUNT(*) as total FROM classes WHERE teacher_name LIKE '%$safe_slug%'";
    $res_lec = $conn->query($q_lec);
    if($res_lec) $stats_lectures = $res_lec->fetch_assoc()['total'] ?? 0;
}
    
    // 🚀 [التعديل الذكي]: البحث عن الطلاب بالرقم الطويل ليتطابق مع قاعدة بياناتك 100%
    $search_pattern = "%" . (!empty($url_tid) ? $url_tid : $teacher_slug) . "%";

    // ب- حساب عدد الطلاب (سيعمل الآن بنجاح بسبب فك التشفير والبحث بالرقم)
    try {
        $stmt_std = $conn->prepare("SELECT COUNT(*) FROM students WHERE teacher_name LIKE ?");
        if($stmt_std) {
            $stmt_std->bind_param("s", $search_pattern);
            $stmt_std->execute();
            $stmt_std->bind_result($stats_students);
            $stmt_std->fetch();
            $stmt_std->close();
        }
    } catch (Exception $e) {}

    // ج- حساب عدد المحاضرات
    try {
        $stmt_lec = $conn->prepare("SELECT COUNT(*) FROM classes WHERE teacher_name LIKE ?");
        if($stmt_lec) {
            $stmt_lec->bind_param("s", $search_pattern);
            $stmt_lec->execute();
            $stmt_lec->bind_result($stats_lectures);
            $stmt_lec->fetch();
            $stmt_lec->close();
        }
    } catch (Exception $e) {}


// جلب الطلبات المعلقة للإشعارات
$pending_req_query = $conn->query("SELECT * FROM profile_update_requests WHERE status = 'pending' ORDER BY request_date DESC");
$pending_requests = [];
if ($pending_req_query) {
    while($row = $pending_req_query->fetch_assoc()) {
        $pending_requests[] = $row;
    }
}
$pending_count = count($pending_requests);

// 🌟🔥🔥 [إضافة منقذ اللوحة الاحتياطي والذكي لحل مشكلة مجهول وجلب إحصائيات المدرس الحالي بدقة] 🔥🔥🌟
if (($real_teacher_name == 'مجهول' || $teacher_name == 'مجهول') && !empty($url_tid)) {
    $force_stmt = $conn->prepare("SELECT * FROM teachers WHERE teacher_name LIKE ? LIMIT 1");
    if ($force_stmt) {
        $search_param = "%" . $url_tid . "%";
        $force_stmt->bind_param("s", $search_param);
        $force_stmt->execute();
        $force_res = $force_stmt->get_result();
        $force_data = $force_res->fetch_assoc();
        if ($force_data) {
            // شحن المتغيرات الأساسية فوراً بالاسم الحقيقي لتعرضه اللوحة
            $teacher_name = $force_data['teacher_name']; 
            $real_teacher_name = $force_data['display_name']; 
            $teacher_title = !empty($force_data['title']) ? $force_data['title'] : 'أستاذ';
            $teacher_phone = $force_data['phone'] ?? '';
            $teacher_spec = $force_data['specialization'] ?? '';
            $teacher_logo = $force_data['logo'] ?? '';
            $school_name_for_logo = $force_data['school_name'] ?? 'مستقل'; // 🚀 جلب اسم المدرسة
            
            // إصلاح وتثبيت الجلسة للمستقبل لمنع التداخل
            $_SESSION['loggedin'] = true;
            $_SESSION['role'] = 'teacher';
            $_SESSION['teacher_id'] = $force_data['id'];
            $_SESSION['teacher_name'] = $force_data['teacher_name'];
            $_SESSION['school_name'] = $force_data['school_name']; // 🚀 أضفنا اسم المدرسة للجلسة
            $_SESSION['teacher_long_id'] = $url_tid;

            // إعادة حساب الإحصائيات للمدرس الحالي لكي لا تظهر أصفاراً (تم إصلاح المتغير ليعمل بأمان)
            $ts_slug = $force_data['teacher_name'];
            $safe_ts_slug = $conn->real_escape_string($ts_slug);
            $conn->query("UPDATE teachers SET last_active = NOW() WHERE teacher_name = '$safe_ts_slug'");
            
            
        }
        $force_stmt->close();
    }
}

// 🚀🚀 [المنطق الجديد لمعالجة اللوجو بناءً على تبعية المدرسة] 🚀🚀
$final_logo = 'images/default_logo.png'; // افتراضي عام

if ($school_name_for_logo !== 'مستقل') {
    // إذا كان المدرس تابعاً لمدرسة، ابحث عن لوجو المدرسة في جدول schools
    $safe_sch_name = $conn->real_escape_string($school_name_for_logo);
    $logo_query = $conn->query("SELECT school_logo FROM schools WHERE school_name = '$safe_sch_name' LIMIT 1");
    if ($logo_query && $logo_query->num_rows > 0) {
        $sch_data = $logo_query->fetch_assoc();
        if (!empty($sch_data['school_logo'])) {
            $final_logo = $sch_data['school_logo']; // استخدم لوجو المدرسة
        }
    }
} else {
    // إذا كان مستقلاً، استخدم اللوجو الشخصي الخاص به (إن وجد)
    if (!empty($teacher_logo)) {
        $final_logo = $teacher_logo;
    }
}

// 🚀 هذا المتغير العالمي يضمن جلب طلاب المدرس بدقة في الجداول السفلية (مثل جدول "طلابي")
$global_teacher_filter = !empty($url_tid) ? $url_tid : $teacher_slug;

// --- إضافة حارس الصلاحيات والباقات الذكي هنا ---
require_once 'teacher_permissions_guard.php'; 
// ----------------------------------------------
?>


<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
    <meta charset="UTF-8">
    <title>لوحة تحكم المدرس الاحترافية - أكاديمية روزماري</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.8/css/intlTelInput.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.8/js/intlTelInput.min.js"></script>
<script src="https://unpkg.com/peerjs@1.4.7/dist/peerjs.min.js"></script>
<?php require_once 'theme_lang_loader.php'; ?>
    <style>
    /* 1. إعدادات الهوية البصرية (تم توحيدها وتنظيفها) */
    :root { 
        --main-bg: #1d2327; /* تم الاحتفاظ به كاحتياطي، لكن لن نستخدمه في القائمة الجانبية */
        --accent: #93003c; 
        --accent-hover: #7a0031;
        --text-light: #c3c4c7; 
        --glass-bg: rgba(255, 255, 255, 0.85);
        --glass-border: rgba(255, 255, 255, 0.4);
        --glass-shadow: 0 8px 32px 0 rgba(147, 0, 60, 0.1);
    }

    body { 
        font-family: 'Segoe UI', Tahoma, sans-serif; 
        margin: 0; 
        display: flex; 
        overflow-x: hidden; 
        /* الخلفية المتحركة الموحدة (تم إيقافها هنا لصالح حركة الفقاعات أدناه) */
        /* background: linear-gradient(-45deg, #f0f2f5, #fceef3, #ffffff, #e8f0fe) !important; */
        /* background-size: 400% 400% !important; */
        /* animation: gradientBG 15s ease infinite !important; */
        
        /* لون خلفية أساسي فاتح ليناسب الفقاعات العنابية */
        background: #f4f6f9 !important;
    }

    /* منطقة المحتوى شفافة لإظهار الخلفية */
    .main-content { 
        margin-right: 280px !important; 
        width: calc(100% - 280px) !important; 
        min-height: 100vh; 
        display: block !important; 
        position: relative; 
        overflow-y: auto; 
        padding: 30px;
        box-sizing: border-box;
        background: transparent !important; /* هذا السطر كان يسبب الشاشة الرمادية */
    }

    /* تأثير الكروت الزجاجية 3D (Glassmorphism) */
    .card { 
        background: var(--glass-bg) !important; 
        backdrop-filter: blur(10px) !important;
        -webkit-backdrop-filter: blur(10px) !important;
        border: 1px solid var(--glass-border) !important; 
        border-radius: 15px !important; 
        padding: 25px; 
        box-shadow: var(--glass-shadow) !important; 
        margin-bottom: 25px;
        transition: transform 0.3s ease, box-shadow 0.3s ease !important;
    }
    
    .card:hover {
        transform: translateY(-5px) !important;
        box-shadow: 0 12px 40px 0 rgba(147, 0, 60, 0.15) !important;
    }

/* --- 2. الهوية المعتمدة للقائمة الجانبية (السايد بار) --- */
    .sidebar { 
        width: 280px; 
        /* التدرج الموحد: يبدأ بلون لوحة الطالب (#5A002A) وينزل للأسود العنابي */
        background: linear-gradient(180deg, #5A002A 0%, #15000a 100%) !important; 
        height: 100vh; 
        color: white; 
        position: fixed; 
        right: 0; 
        top: 0;
        z-index: 1000; 
        overflow-y: auto; 
        border-left: 1px solid rgba(255,255,255,0.05);
    }    .teacher-profile { padding: 25px; text-align: center; border-bottom: 1px solid rgba(255,255,255,0.1); }
    .teacher-profile img { width: 65px; border-radius: 50%; border: 2px solid var(--accent); }
    .menu-group { border-bottom: 1px solid rgba(255,255,255,0.05); }
    .menu-item { padding: 14px 20px; display: flex; align-items: center; justify-content: space-between; color: var(--text-light); text-decoration: none; cursor: pointer; }
    
    /* تمييز الزر النشط في القائمة بخلفية شفافة وخط جانبي أبيض */
    .menu-item:hover, .menu-item.active { 
        background: rgba(255, 255, 255, 0.1) !important; 
        color: white; 
        border-right: 4px solid #fff;
    }
    
    .menu-item i.icon { margin-left: 10px; width: 20px; text-align: center; }
    .submenu { background: rgba(0,0,0,0.3); display: none; }
    .menu-group.open .submenu { display: block; }
    .submenu a { padding: 10px 45px; display: block; color: #a7aaad; text-decoration: none; font-size: 13px; cursor: pointer; }
    .submenu a:hover { color: white; background: rgba(255,255,255,0.1); }

    /* --- 3. الهوية المعتمدة للهيدر الذكي --- */
    .top-header {
        background: #5A002A !important; /* لون هيدر الطالب المعتمد */
        border: none !important;
        border-radius: 12px !important;
        box-shadow: 0 4px 15px rgba(0,0,0,0.1) !important;
    }
    .top-header h4, .top-header small, .top-header span, .top-header strong {
        color: #ffffff !important;
    }
    .top-header .fa-bell { color: #f1c40f !important; }
    .top-header div[style*="background: rgba"] {
        background: rgba(255, 255, 255, 0.1) !important; 
        border: 1px solid rgba(255, 255, 255, 0.2) !important;
    }

    /* --- 4. حركة الفقاعات في الخلفية --- */
    .bg-bubbles {
        position: fixed;
        top: 0; left: 0; width: 100%; height: 100%;
        z-index: -1; /* خلف كل شيء */
        overflow: hidden;
        margin: 0; padding: 0;
        /* هذا اللون سيتم استخدامه إذا تم إيقاف الحركة لأي سبب */
        background: #f4f6f9; 
    }
    .bg-bubbles li {
        position: absolute;
        list-style: none;
        display: block;
        width: 40px; height: 40px;
        background-color: rgba(147, 0, 60, 0.08); /* فقاعات عنابية شفافة */
        bottom: -160px;
        animation: floatUp 25s infinite linear;
        border-radius: 50%;
    }
    .bg-bubbles li:nth-child(1) { left: 10%; }
    .bg-bubbles li:nth-child(2) { left: 20%; width: 80px; height: 80px; animation-delay: 2s; animation-duration: 17s; }
    .bg-bubbles li:nth-child(3) { left: 25%; animation-delay: 4s; }
    .bg-bubbles li:nth-child(4) { left: 40%; width: 60px; height: 60px; animation-duration: 22s; background-color: rgba(147, 0, 60, 0.04); }
    .bg-bubbles li:nth-child(5) { left: 70%; }
    .bg-bubbles li:nth-child(6) { left: 80%; width: 120px; height: 120px; animation-delay: 3s; background-color: rgba(147, 0, 60, 0.06); }
    .bg-bubbles li:nth-child(7) { left: 32%; width: 160px; height: 160px; animation-delay: 7s; }
    .bg-bubbles li:nth-child(8) { left: 55%; width: 20px; height: 20px; animation-delay: 15s; animation-duration: 40s; }
    .bg-bubbles li:nth-child(9) { left: 25%; width: 10px; height: 10px; animation-delay: 2s; animation-duration: 40s; background-color: rgba(147, 0, 60, 0.1);}
    .bg-bubbles li:nth-child(10) { left: 90%; width: 160px; height: 160px; animation-delay: 11s; }

    @keyframes floatUp {
        0% { transform: translateY(0) scale(1); opacity: 1; }
        100% { transform: translateY(-1200px) scale(1.5); opacity: 0; }
    }

    /* 3. التحكم في ظهور الأقسام */
    .view-section { display: none !important; }
    .view-section.active { 
        display: block !important; 
        visibility: visible !important; 
        opacity: 1 !important; 
        animation: fadeIn 0.4s;
    }

    /* 4. الجداول والأزرار */
    table { width: 100%; border-collapse: collapse; margin-top: 15px; }
    th { background: #f8f9fa; padding: 12px; text-align: right; border-bottom: 2px solid #eee; }
    td { padding: 12px; border-bottom: 1px solid #eee; }
    .grade-input { width: 65px; padding: 5px; border: 1px solid #ddd; border-radius: 5px; text-align: center; }
    .live-badge { background: #ff0000; color: white; padding: 2px 8px; border-radius: 5px; font-size: 10px; animation: pulse 1.5s infinite; margin-right: 5px; }
    .btn-action { background: var(--accent); color: white; border: none; padding: 10px 20px; border-radius: 8px; cursor: pointer; font-weight: bold; }
    .q-type-badge { background: #555; color: white; padding: 2px 8px; border-radius: 4px; font-size: 11px; }

    @keyframes pulse { 0% { opacity: 1; } 50% { opacity: 0.5; } 100% { opacity: 1; } }
    @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }

    /* 5. حاوية الفقاعات (الأرقام) */
    .stats-floating-container { position: relative; width: 100%; height: 500px; overflow: hidden; background: transparent; }
    .bubble-3d { position: absolute; width: 160px; height: 160px; border-radius: 50%; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; background: white; cursor: pointer; transition: all 0.5s ease; box-shadow: 15px 15px 40px rgba(0,0,0,0.1), inset -8px -8px 15px rgba(0,0,0,0.05), inset 8px 8px 15px rgba(255,255,255,0.8); animation: float-animation 6s ease-in-out infinite; }
    .bubble-3d:hover { transform: scale(1.2) rotate(5deg); z-index: 100; box-shadow: 20px 20px 50px rgba(0,0,0,0.2); animation-play-state: paused; }
    .b-1 { top: 10%; right: 15%; animation-delay: 0s; border: 4px solid #2ecc71; }
    .b-2 { top: 50%; right: 40%; animation-delay: 1s; border: 4px solid #3498db; }
    .b-3 { top: 20%; right: 65%; animation-delay: 2s; border: 4px solid #9b59b6; }
    .b-4 { top: 60%; right: 10%; animation-delay: 3s; border: 4px solid #e67e22; }
    .b-5 { top: 55%; right: 75%; animation-delay: 4s; border: 4px solid #1abc9c; }
    @keyframes float-animation { 0%, 100% { transform: translateY(0px) translateX(0px); } 50% { transform: translateY(-25px) translateX(15px); } }
    .bubble-3d i { font-size: 30px; margin-bottom: 8px; color: #34495e; }
    .bubble-3d .val { font-size: 28px; font-weight: 900; color: #2c3e50; margin: 0; }
    .bubble-3d .lbl { font-size: 12px; font-weight: bold; color: #7f8c8d; }
    .bubble-3d:active { transform: scale(0.9); transition: 0.1s; }

    /* 6. المدخلات العريضة وأزرار البث */
    .wide-rating { width: 100% !important; min-width: 280px !important; height: 42px !important; border: 2px solid #3498db !important; border-radius: 8px !important; background-color: #f0f7ff !important; padding: 0 15px !important; box-sizing: border-box !important; display: block !important; }
    .date-input { width: 100% !important; max-width: 140px; height: 38px !important; border: 1px solid #ddd !important; border-radius: 6px !important; text-align: center; padding: 5px; cursor: pointer; }
    
    .live-stream-actions { width: 100%; padding: 20px 0; }
    .actions-row { display: flex; justify-content: space-between; gap: 10px; flex-wrap: nowrap; }
    .dash-btn { flex: 1; text-align: center; padding: 12px 5px; border-radius: 8px; color: white; text-decoration: none; font-weight: bold; font-size: 14px; display: flex; flex-direction: column; align-items: center; transition: 0.3s; }
    .dash-btn i { margin-bottom: 8px; font-size: 20px; }
    .btn-create-live { background-color: #2ecc71; } 
    .btn-record-only { background-color: #e74c3c; } 
    .btn-notify { background-color: #f1c40f; }      
    .btn-attendance { background-color: #3498db; }  
    .dash-btn:hover { opacity: 0.8; transform: translateY(-2px); }
    
    </style>
    <style>
    /* ========================================================= */
    /* 🚀 إصلاح شامل للخطوط البيضاء المخفية وجعلها داكنة وواضحة 🚀 */
    /* ========================================================= */

    /* 1. إجبار نصوص الجداول (الصفوف والأعمدة) على اللون الداكن */
    table th, 
    table td,
    .grade-table th,
    .grade-table td {
        color: #1e293b !important; /* لون رمادي داكن أنيق جداً */
    }

    /* 2. إجبار الروابط والنصوص البارزة (مثل أسماء الطلاب) على اللون الأسود */
    table td a, 
    table td strong,
    table td b {
        color: #0f172a !important; /* أسود صريح وواضح */
        font-weight: 900 !important;
    }

    /* 3. إصلاح مربعات الإدخال (حقول الدرجات، الغياب، والملاحظات) */
    input.grade-input, 
    textarea.grade-input, 
    select.grade-input,
    table td input[type="number"],
    table td input[type="text"] {
        color: #0f172a !important; /* نص أسود داخل المربع */
        background-color: #ffffff !important; /* خلفية بيضاء صافية للمربع */
        border: 1px solid #94a3b8 !important; /* إطار رمادي واضح */
        font-weight: bold !important;
    }

    /* 4. إصلاح التسميات (Labels) والنصوص العادية داخل الكروت البيضاء */
    .card label,
    .card p,
    .view-section label {
        color: #334155 !important;
    }

    /* ========================================================= */
    /* استثناءات ذكية: الحفاظ على الألوان المطلوبة (الأحمر والأخضر) */
    /* ========================================================= */
    
    /* إبقاء اللون الأخضر للناجحين والرسائل الإيجابية */
    table td span[style*="color:#10b981"],
    table td span[style*="color:#2ecc71"],
    table td span[style*="color: #10b981"],
    table td span[style*="color: #2ecc71"] {
        color: #10b981 !important;
    }

    /* إبقاء اللون الأحمر للراسبين والغياب */
    table td span[style*="color:#ef4444"],
    table td span[style*="color:#e74c3c"],
    table td span[style*="color:red"],
    table td input[id^="eval_abs_"] /* حقل الغياب باللون الأحمر */ {
        color: #ef4444 !important;
    }
</style>

<!-- 🚀 تمرير اللوجو من قاعدة البيانات مباشرة 🚀 -->
<script> 
    window.DB_SCHOOL_LOGO = "<?php echo isset($final_logo) ? addslashes($final_logo) : 'assets/images/default_logo.png'; ?>"; 
</script>

</head>
<body>
    <input type="hidden" id="teacher_unique_id" value="<?php echo htmlspecialchars($_SESSION['teacher_name'] ?? $_SESSION['username'] ?? 'unknown_teacher'); ?>">
    <input type="hidden" id="current_teacher_slug" value="<?php echo htmlspecialchars($_SESSION['teacher_name'] ?? ''); ?>">
    <!-- خلفية الفقاعات المتحركة المعتمدة -->
    <ul class="bg-bubbles">
        <li></li><li></li><li></li><li></li><li></li>
        <li></li><li></li><li></li><li></li><li></li>
    </ul>

<aside class="sidebar">
    <div class="sidebar-header" style="text-align: center; padding: 25px 0; border-bottom: 1px solid rgba(255,255,255,0.1); margin-bottom: 15px;">
        <!-- عرض اللوجو الخاص بالمدرس -->
        <?php 
            // إذا لم يرفع المدرس لوجو، نعرض لوجو الأكاديمية الافتراضي
            $display_logo = !empty($teacher_logo) ? $teacher_logo : 'assets/images/default_logo.png'; 
        ?>
        <img src="<?php echo htmlspecialchars($final_logo); ?>" alt="لوجو المدرس" style="width: 120px; max-height: 100px; object-fit: contain; drop-shadow: 0 4px 6px rgba(0,0,0,0.3);">
    </div> <!-- إغلاق الـ sidebar-header بشكل صحيح -->


    <div class="menu-group">
        <div class="menu-item active" onclick="showSection('stats-view')">
            <span><i class="fas fa-th-large icon"></i> <?php echo $lang['sidebar_stats']; ?></span>
        </div>
        <div class="menu-item" onclick="showSection('profile-view')">
            <span><i class="fas fa-user-edit icon"></i> <?php echo $lang['sidebar_profile']; ?></span>
        </div>
    </div>

    <div class="menu-group">
        <div class="menu-item" onclick="toggleMenu(this)">
            <span><i class="fas fa-users icon"></i> <?php echo $lang['sidebar_my_students']; ?></span><i class="fas fa-chevron-down"></i>
        </div>
        <div class="submenu">
            <a onclick="showSection('students-manage-view')"><?php echo $lang['sidebar_manage_students']; ?></a>
            <a onclick="showSection('students-eval-view')"><?php echo $lang['sidebar_students_eval']; ?></a>
        </div>
    </div>

    <div class="menu-group">
        <div class="menu-item" onclick="toggleMenu(this)">
            <span><i class="fas fa-cloud-upload-alt icon"></i> <?php echo $lang['sidebar_upload_lectures']; ?></span><i class="fas fa-chevron-down"></i>
        </div>
        <div class="submenu">
            <!-- شرط إضافة درس جديد (مربوط بلوحة الإدارة) -->
            <?php if (!isset($perms['can_upload_videos']) || $perms['can_upload_videos'] == 1): ?>
                <?php if ($is_live_upload_enabled == '1'): ?>
                    <a onclick="showSection('upload-view')"><?php echo $lang['sidebar_add_lesson']; ?></a>
                <?php else: ?>
                    <a href="javascript:void(0);" onclick="alert('ميزة رفع الدروس مقفلة من قبل الإدارة المركزية.')" style="opacity:0.6; text-decoration:line-through; cursor:not-allowed;"><?php echo $lang['sidebar_add_lesson']; ?> <i class="fas fa-lock text-danger"></i></a>
                <?php endif; ?>
            <?php endif; ?>

            <!-- 🚀 شرط البث المباشر المحدث (مربوط بلوحة الإدارة) 🚀 -->
            <?php if (!isset($perms['can_live']) || $perms['can_live'] == 1): ?>
                <?php if ($is_live_stream_enabled == '1'): ?>
                    <a onclick="showSection('live-view')"><?php echo $lang['sidebar_live_stream']; ?> <span class="live-badge">Live</span></a>
                <?php else: ?>
                    <a href="javascript:void(0);" onclick="alert('عذراً، ميزة البث المباشر مقفلة حالياً. يرجى مراجعة إدارة المنصة.')" style="opacity:0.6; text-decoration:line-through; cursor:not-allowed;">
                        <?php echo $lang['sidebar_live_stream']; ?> <i class="fas fa-lock text-danger"></i>
                    </a>
                <?php endif; ?>
            <?php endif; ?>

            <!-- شرط أرشيف الدروس -->
            <?php if (!isset($perms['can_lessons_archive']) || $perms['can_lessons_archive'] == 1): ?>
                <a onclick="showSection('archive-view')"><?php echo $lang['sidebar_lessons_archive']; ?></a>
            <?php endif; ?>

            <!-- شرط أرشيف الفيديو -->
            <?php if (!isset($perms['can_videos_archive']) || $perms['can_videos_archive'] == 1): ?>
                <a href="javascript:void(0)" onclick="showSection('live-archive-view'); renderLiveArchive();" style="text-decoration: none; color: inherit;">🎥 <?php echo $lang['sidebar_videos_archive']; ?></a>
            <?php endif; ?>
        </div>
    </div>

    <!-- شرط قسم الاختبارات والدرجات بالكامل -->
    <?php if (!isset($perms['can_create_exams']) || $perms['can_create_exams'] == 1): ?>
    <div class="menu-group">
        <div class="menu-item" onclick="toggleMenu(this)">
            <span><i class="fas fa-file-signature icon"></i> <?php echo $lang['sidebar_exams_grades']; ?></span><i class="fas fa-chevron-down"></i>
        </div>
        <div class="submenu">
            <a onclick="showSection('new-exam-view')"><?php echo $lang['sidebar_build_exam']; ?></a>
            <a onclick="showSection('grades-view')"><?php echo $lang['sidebar_grade_book']; ?></a>
            <a onclick="showSection('bank-view')"><?php echo $lang['sidebar_question_bank']; ?></a>
        </div>
    </div>
    <?php endif; ?>
    
    <!-- شرط إظهار الإعدادات للمستقلين فقط -->
    <?php 
    $current_school_check = $_SESSION['school_name'] ?? 'مستقل';
    if ($current_school_check === 'مستقل'): 
    ?>
    <div class="menu-group">
        <div class="menu-item" onclick="showSection('settings-view')" style="cursor: pointer;">
            <span><i class="fas fa-cogs icon"></i> الإعدادات والمالية</span>
        </div>
    </div>
    <?php endif; ?>
    

<!-- زر الجدول في لوحة المدرس -->
<div class="menu-group">
        <div class="menu-item" onclick="showSection('tab-schedule')" style="cursor: pointer;">
            <span><i class="fas fa-calendar-alt icon"></i> جدولي الدراسي</span>
        </div>
    </div>
        
        <!-- 🚀 زر سجل الكنترول الجديد (مع تمرير الـ ID بأمان) 🚀 -->
<div class="menu-group">
    <!-- إرسال الـ ID الموجود في الرابط، وفي حال عدم وجوده نرسل الموجود في المتغير -->
    <a href="teacher_gradebook.php?tid=<?= htmlspecialchars(!empty($url_tid) ? $url_tid : $teacher_slug) ?>" target="_blank" class="menu-item" style="text-decoration: none;">
        <span><i class="fas fa-clipboard-list icon" style="color:#ff4d79;"></i> سجل الكنترول (الدرجات)</span>
    </a>
</div>

    <!-- شرط خطة التدريس -->
    <?php if (!isset($perms['can_teaching_plan']) || $perms['can_teaching_plan'] == 1): ?>
    <div class="menu-group">
        <div class="menu-item" onclick="showSection('plan-view')">
            <span><i class="fas fa-map-signs icon"></i> <?php echo $lang['sidebar_teaching_plan']; ?></span>
        </div>
    </div>
    <?php endif; ?>

    <!-- شرط الجدول الدراسي -->
    <?php if (!isset($perms['can_manage_schedules']) || $perms['can_manage_schedules'] == 1): ?>
    <div class="menu-group">
        <div class="menu-item" onclick="showSection('schedule-view')" style="cursor: pointer;">
            <span><i class="fas fa-calendar-alt icon"></i> <?php echo $lang['sidebar_schedule']; ?></span>
        </div>
    </div>
    <?php endif; ?>


<?php 
    // التحقق بذكاء من اسم المدرسة مع تنظيف النص (trim) لضمان دقة الإخفاء
    $current_school_check = trim($teacher_data['school_name'] ?? ($force_data['school_name'] ?? ($_SESSION['school_name'] ?? '')));
    if ($current_school_check === 'مستقل'): 
    ?>
    <div class="menu-group">
        <div class="menu-item" onclick="showSection('settings-view')" style="cursor: pointer;">
            <span><i class="fas fa-cogs icon"></i> <?php echo $lang['sidebar_settings']; ?></span>
        </div>
    </div>
    <?php endif; ?>

    <a href="login.php" class="menu-item" style="color: #ffffff; font-weight: bold; margin-top: 30px;">
        <span><i class="fas fa-power-off icon" style="color: #ff4d4d;"></i> <?php echo $lang['sidebar_logout']; ?></span>
    </a>
    </aside>



<!-- ========================================== -->
    <!-- منطقة العرض الرئيسية (Main Content) -->
    <!-- ========================================== -->
    <main class="main-content">
        
        <!-- الهيدر الذكي للإشعارات والمساعد الشخصي -->
        <div class="card top-header" style="display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; padding: 15px 25px; margin-bottom: 30px; border-right: 5px solid var(--accent) !important;">
            
            <!-- القسم الأيمن: البيانات الشخصية والترحيب -->
            <div style="display: flex; align-items: center; gap: 15px;">
                <div style="width: 55px; height: 55px; border-radius: 50%; background: #93003c; color: white; display: flex; justify-content: center; align-items: center; font-weight: bold; font-size: 14px; border: 2px solid var(--glass-border); box-shadow: var(--glass-shadow);">
                    <?php echo !empty($teacher_title) ? htmlspecialchars($teacher_title) : $lang['header_title_default']; ?>
                </div>
                
                <div>
                    <div style="display: flex; align-items: center; gap: 10px;">
                        <h4 style="margin: 0; color: #2c3e50; font-weight: bold;">
                            <?php echo $lang['header_welcome']; ?> <?php echo htmlspecialchars($real_teacher_name);?> 👋
                        </h4>
                        
                        <i class="fas fa-pen" onclick="showSection('profile-view')" style="color: #93003c; cursor: pointer; font-size: 12px; background: rgba(147, 0, 60, 0.1); padding: 7px; border-radius: 50%; transition: 0.3s;" title="تعديل الملف التعريفي"></i>

                        <div style="display: inline-block; position: relative; margin-left: 20px; cursor: pointer;" onclick="document.getElementById('requestsModal').style.display='flex'" title="تعديل بيانات الطلاب">
                            <i class="fas fa-bell" style="font-size: 1.8rem; color: #fde047;"></i>
                            <?php if($pending_count > 0): ?>
                                <span style="position: absolute; top: -10px; right: -10px; background: #ef4444; color: white; border-radius: 50%; padding: 3px 8px; font-size: 0.85rem; font-weight: bold; border: 2px solid #6b1437; animation: pulse 2s infinite;">
                                    <?php echo $pending_count; ?>
                                </span>
                            <?php endif; ?>
                        </div>

                        <div style="display: inline-block; position: relative; margin-left: 15px; cursor: pointer;" onclick="document.getElementById('joinRequestsModal').style.display='flex'" title="طلبات الانضمام الجديدة">
                            <i class="fas fa-user-plus" style="font-size: 1.8rem; color: #ffffff;"></i>
                            <?php if(isset($join_count) && $join_count > 0): ?>
                                <span style="position: absolute; top: -10px; right: -10px; background: #ef4444; color: white; border-radius: 50%; padding: 3px 8px; font-size: 0.85rem; font-weight: bold; border: 2px solid #6b1437; animation: pulse 2s infinite;">
                                    <?php echo $join_count; ?>
                                </span>
                            <?php endif; ?>
                        </div>    
                    </div> 
                    
                    <small style="color: #93003c; font-weight: bold; margin-top: 5px; display: block; opacity: 0.8;">
                        <i class="fas fa-book-open"></i> <?php echo $lang['header_spec']; ?> <?php echo !empty($teacher_spec) ? htmlspecialchars($teacher_spec) : $lang['header_spec_empty']; ?>
                    </small>
                    
                    <small id="header-date" style="color: #7f8c8d; font-weight: bold; margin-top: 5px; display: block;"></small>
                </div>
            </div>

<!-- 🚀 القسم الأيسر: جرس الإشعارات المطور للمدرس -->
            <div style="background: rgba(147, 0, 60, 0.05); border: 1px solid rgba(147, 0, 60, 0.2); padding: 12px 20px; border-radius: 12px; display: flex; align-items: center; gap: 15px; position: relative; cursor: pointer; box-shadow: inset 0 2px 10px rgba(0,0,0,0.02);" onclick="openTeacherNotificationsList()" id="teacher-bell-container">
                <div style="position: relative;">
                    <i class="fas fa-bell fa-lg" id="teacher-bell-icon" style="color: var(--accent);"></i>
                    <span id="teacher-notif-badge" style="display: none; position: absolute; top: -8px; right: -8px; background: #ef4444; color: white; border-radius: 50%; padding: 2px 6px; font-size: 0.75rem; font-weight: bold; box-shadow: 0 2px 5px rgba(0,0,0,0.3);">0</span>
                </div>
                <div>
                    <span style="display: block; font-size: 11px; color: #7f8c8d; margin-bottom: 3px; font-weight: bold;">مركز الإشعارات والإدارة</span>
                    <strong style="color: var(--accent-hover); font-size: 13px;">اضغط لعرض الرسائل</strong>
                </div>
            </div>
        </div>
        
<!-- 🚀 1. نافذة قائمة الإشعارات المنبثقة الحرة 🚀 -->
        <div id="teacherNotificationsListModal" style="display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(15, 23, 42, 0.75); z-index:9999999; justify-content:center; align-items:center; backdrop-filter:blur(5px);">
            <div style="background:white; width:95%; max-width:550px; border-radius:20px; box-shadow: 0 25px 50px rgba(0,0,0,0.25); position: relative; overflow: hidden; display: flex; flex-direction: column; max-height: 85vh;">
                <div style="background: #1e293b; padding: 20px 25px; display: flex; justify-content: space-between; align-items: center;">
                    <h3 style="margin: 0; color: white; font-size: 1.2rem; display: flex; align-items: center; gap: 10px;">
                        <i class="fas fa-envelope-open-text" style="color: #3b82f6;"></i> صندوق الوارد (إشعارات الإدارة)
                    </h3>
                    <button onclick="document.getElementById('teacherNotificationsListModal').style.display='none'" style="background: rgba(239, 68, 68, 0.2); border: none; color: #ef4444; font-size: 20px; cursor: pointer; border-radius: 50%; width: 35px; height: 35px; display: flex; justify-content: center; align-items: center; transition: 0.3s;" onmouseover="this.style.background='#ef4444'; this.style.color='white';" onmouseout="this.style.background='rgba(239, 68, 68, 0.2)'; this.style.color='#ef4444';">&times;</button>
                </div>
                <div id="teacher-notif-list-container" style="padding: 0; overflow-y: auto; flex: 1; background: #f8fafc;">
                    <div style="padding: 40px; text-align: center; color: #94a3b8; font-size: 1.1rem; font-weight: bold;">
                        <i class="fas fa-spinner fa-spin fa-2x" style="margin-bottom: 15px; color: #3b82f6;"></i><br>جاري جلب الإشعارات...
                    </div>
                </div>
            </div>
        </div>
        
   <!-- 🚀 2. نافذة عرض تفاصيل الإشعار وقراءته 🚀 -->
        <div id="teacherNotifDetailModal" style="display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.85); z-index:99999999; justify-content:center; align-items:center;">
            <div style="background:white; width:90%; max-width:450px; border-radius:20px; padding:30px; text-align:center; box-shadow: 0 10px 30px rgba(0,0,0,0.3); position: relative;">
                <div style="background:#fce7f3; width:70px; height:70px; border-radius:50%; display:flex; justify-content:center; align-items:center; margin:0 auto 20px;">
                    <i class="fas fa-bullhorn" style="font-size:30px; color:#be123c;"></i>
                </div>
                <h3 id="detailNotifTitle" style="color:#1e293b; margin-top:0; font-size: 1.4rem; border-bottom: 2px solid #f1f5f9; padding-bottom: 15px;">عنوان الإشعار</h3>
                <p id="detailNotifMessage" style="color:#475569; font-size:16px; line-height:1.8; font-weight:bold; margin-top: 20px; text-align: right; background: #f8fafc; padding: 15px; border-radius: 10px; border: 1px dashed #cbd5e1;"></p>
                <button onclick="document.getElementById('teacherNotifDetailModal').style.display='none'" style="width: 100%; background:#93003c; color:white; border:none; padding:12px 25px; border-radius:10px; font-weight:bold; cursor:pointer; margin-top:25px; font-size: 1.1rem; transition: 0.3s;" onmouseover="this.style.background='#7a0031'" onmouseout="this.style.background='#93003c'">
                    إغلاق
                </button>
            </div>
        </div>

    <style>
        /* حركة جرس الإشعارات اللطيفة */
        @keyframes ringNotification { 
            0% { transform: rotate(0); } 
            10% { transform: rotate(15deg); } 
            20% { transform: rotate(-10deg); } 
            30% { transform: rotate(5deg); } 
            40% { transform: rotate(-5deg); } 
            50% { transform: rotate(0); } 
            100% { transform: rotate(0); } 
        }
    </style>

    <div id="stats-view" class="view-section active">
        
        <style>
            /* تنسيقات الإبهار البصري لكروت الإحصائيات */
            .stats-header-box { background: rgba(255,255,255,0.8); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); border: 1px solid rgba(255,77,121,0.2); border-radius: 15px; padding: 20px 25px; margin-bottom: 30px; display: flex; justify-content: space-between; align-items: center; box-shadow: 0 10px 30px rgba(0,0,0,0.05); }
            
            .dazzling-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 25px; }
            
            .dazzling-card { 
                position: relative; overflow: hidden; border-radius: 20px; padding: 30px 25px; color: white; cursor: pointer;
                transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
                display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center;
                border: 1px solid rgba(255,255,255,0.2);
            }
            
            /* تأثير الرفع والتوهج عند تمرير الماوس */
            .dazzling-card:hover { transform: translateY(-10px); box-shadow: 0 20px 40px rgba(0,0,0,0.2); }
            .dazzling-card:hover .dazz-icon { transform: scale(1.1) rotate(5deg); }
            
            /* ألوان الكروت المتدرجة الجذابة */
            .bg-grad-blue { background: linear-gradient(135deg, #3b82f6 0%, #1e3a8a 100%); box-shadow: 0 10px 20px rgba(59, 130, 246, 0.3); }
            .bg-grad-purple { background: linear-gradient(135deg, #a855f7 0%, #4c1d95 100%); box-shadow: 0 10px 20px rgba(168, 85, 247, 0.3); }
            .bg-grad-orange { background: linear-gradient(135deg, #f59e0b 0%, #78350f 100%); box-shadow: 0 10px 20px rgba(245, 158, 11, 0.3); }
            .bg-grad-rose { background: linear-gradient(135deg, #f43f5e 0%, #881337 100%); box-shadow: 0 10px 20px rgba(244, 63, 94, 0.3); }
            .bg-grad-emerald { background: linear-gradient(135deg, #10b981 0%, #064e3b 100%); box-shadow: 0 10px 20px rgba(16, 185, 129, 0.3); }

            /* تأثير الدوائر الخلفية الشفافة داخل الكرت */
            .dazzling-card::before { content: ''; position: absolute; top: -20px; right: -20px; width: 100px; height: 100px; background: rgba(255,255,255,0.1); border-radius: 50%; }
            .dazzling-card::after { content: ''; position: absolute; bottom: -30px; left: -30px; width: 120px; height: 120px; background: rgba(255,255,255,0.05); border-radius: 50%; }

            .dazz-icon { 
                width: 70px; height: 70px; background: rgba(255,255,255,0.2); backdrop-filter: blur(5px); 
                border-radius: 50%; display: flex; align-items: center; justify-content: center; 
                margin-bottom: 20px; font-size: 2rem; color: white; border: 2px solid rgba(255,255,255,0.3);
                transition: transform 0.4s; z-index: 2; position: relative;
            }
            
            .dazz-number { font-size: 3.5rem; font-weight: 900; line-height: 1; margin: 0 0 10px 0; text-shadow: 0 2px 5px rgba(0,0,0,0.3); z-index: 2; position: relative; font-family: monospace;}
            .dazz-text { font-size: 1.1rem; font-weight: bold; opacity: 0.9; margin: 0; z-index: 2; position: relative; letter-spacing: 0.5px;}
        </style>

        <div class="stats-header-box">
            <h3 style="color: var(--accent); margin: 0; font-size: 1.5rem; font-weight: 900;">
                <i class="fas fa-chart-line me-2"></i> لوحة الأداء الذكية
            </h3>
            <button class="btn-action" style="background: linear-gradient(135deg, var(--accent), #e03e65); box-shadow: 0 4px 15px rgba(255,77,121,0.4); padding: 12px 25px; border-radius: 10px;" onclick="printAcademicReport()">
                <i class="fas fa-print"></i> طباعة التقرير العام
            </button>
        </div>

        <!-- شبكة الكروت الزجاجية (3D) المبهرة -->
        <div class="dazzling-grid">
            
            <div class="dazzling-card bg-grad-blue" onclick="printSpecificStat('students')" title="اضغط لطباعة كشف الطلاب">
                <div class="dazz-icon"><i class="fas fa-user-graduate"></i></div>
                <h2 id="stat-students" class="dazz-number counter-value" data-target="<?php echo $stats_students; ?>">0</h2>
                <p class="dazz-text"><?php echo $lang['stats_active_student']; ?></p>
            </div>

            <div class="dazzling-card bg-grad-purple" onclick="printSpecificStat('lectures')" title="اضغط لطباعة سجل المحاضرات">
                <div class="dazz-icon"><i class="fas fa-play"></i></div>
                <h2 id="stat-lectures" class="dazz-number counter-value" data-target="<?php echo $stats_lectures; ?>">0</h2>
                <p class="dazz-text"><?php echo $lang['stats_lecture']; ?></p>
            </div>

            <div class="dazzling-card bg-grad-orange" onclick="printSpecificStat('success')" title="اضغط لطباعة تقرير نسب النجاح المفصل">
                <div class="dazz-icon"><i class="fas fa-star"></i></div>
                <h2 id="stat-success" class="dazz-number counter-value" data-target="<?php echo $stats_success; ?>">0</h2>
                <p class="dazz-text"><?php echo $lang['stats_success_rate']; ?> %</p>
            </div>

            <div class="dazzling-card bg-grad-rose" onclick="printSpecificStat('questions')" title="اضغط لطباعة إحصائيات الأسئلة">
                <div class="dazz-icon"><i class="fas fa-brain"></i></div>
                <h2 id="stat-questions" class="dazz-number">0</h2>
                <p class="dazz-text"><?php echo $lang['stats_question_bank']; ?></p>
            </div>

            <div class="dazzling-card bg-grad-emerald" onclick="printSpecificStat('plans')" title="اضغط لطباعة أرشيف الخطط">
                <div class="dazz-icon"><i class="fas fa-archive"></i></div>
                <h2 id="stat-plans" class="dazz-number">0</h2>
                <p class="dazz-text"><?php echo $lang['stats_saved_plan']; ?></p>
            </div>

        </div>

       <script>
    // تأثير عد الأرقام (Counter Animation)
    function animateCounters() {
        const counters = document.querySelectorAll('.counter-value');
        const speed = 100; // سرعة العداد
        
        counters.forEach(counter => {
            const updateCount = () => {
                const target = +counter.getAttribute('data-target');
                const count = +counter.innerText;
                const inc = target / speed;
                
                if (count < target && target > 0) {
                    counter.innerText = Math.ceil(count + inc);
                    setTimeout(updateCount, 15);
                } else {
                    counter.innerText = target;
                }
            };
            updateCount();
        });
    }

    // تشغيل العداد وتحديث الأرقام المحفوظة محلياً (بنك الأسئلة والخطط)
    document.addEventListener('DOMContentLoaded', () => {
        // تحديث الأسئلة والخطط من الذاكرة المحلية (بدون المساس بطلاب السيرفر)
        try {
            const savedQuestions = JSON.parse(localStorage.getItem('myQuestionsBank')) || [];
            const qEl = document.getElementById('stat-questions');
            if(qEl) {
                qEl.setAttribute('data-target', savedQuestions.length);
                qEl.classList.add('counter-value'); // تفعيل الأنيميشن له
            }
            
            const savedPlans = JSON.parse(localStorage.getItem('savedPlansList')) || savedPlans || [];
            const pEl = document.getElementById('stat-plans');
            if(pEl) {
                pEl.setAttribute('data-target', savedPlans.length);
                pEl.classList.add('counter-value'); // تفعيل الأنيميشن له
            }
        } catch(e) { console.error("Error loading local stats:", e); }

        // تشغيل حركة الأرقام بعد ثلث ثانية من فتح الصفحة
        setTimeout(animateCounters, 300); 
    });
</script>
    </div>
            <!-- ================= صفحة الملف الشخصي (تفتح من المنيو) ================= -->
<!-- ================= صفحة الملف الشخصي (تفتح من المنيو) ================= -->
<div id="profile-view" class="view-section" style="display:none; direction: rtl; text-align: right;">
    <div class="card" style="padding: 25px; border-top: 5px solid #93003c; border-radius: 12px; background: white; box-shadow: 0 5px 15px rgba(0,0,0,0.05);">
        
        <div style="display:flex; justify-content:space-between; align-items:center; margin-bottom:20px; border-bottom: 1px solid #eee; padding-bottom: 15px;">
            <h4 style="margin:0; color: #93003c; font-weight: bold;"><i class="fas fa-user-cog me-2"></i> إعدادات الملف الشخصي المتقدمة</h4>
            <span onclick="window.open('teacher_portfolio.php?u=<?php echo urlencode($teacher_name); ?>', '_blank')" style="background: #f8fafc; padding: 5px 10px; border-radius: 6px; font-size: 12px; color: #64748b; border: 1px solid #e2e8f0; cursor: pointer; transition: 0.3s;" onmouseover="this.style.background='#e2e8f0'; this.style.color='#1d2327';" onmouseout="this.style.background='#f8fafc'; this.style.color='#64748b';">
    <i class="fas fa-external-link-alt" style="margin-left: 5px;"></i> بيانات صفحتك العامة
</span>
        </div>
        
        <form id="staticProfileForm" enctype="multipart/form-data">
            <input type="hidden" id="static_slug" value="<?php echo htmlspecialchars($teacher_slug); ?>">
            
            <!-- القسم الأول: البيانات الأساسية -->
            <h5 style="color: #475569; margin-bottom: 15px;"><i class="fas fa-id-card text-primary"></i> البيانات الأساسية</h5>
            <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 15px;">
                <div>
                    <label style="display: block; margin-bottom: 5px; font-weight: bold; color: #475569;">اسم الدخول (لا يمكن تغييره)</label>
                    <input type="text" id="static_name" value="<?php echo $real_teacher_name; ?>" style="width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 5px; background: #f1f5f9; font-family: inherit; color: #64748b;" readonly title="هذا هو المعرف الخاص بك في النظام">
                </div>
                <div>
                    <label style="display: block; margin-bottom: 5px; font-weight: bold; color: #475569;">الصفة (اللقب)</label>
                    <input list="static_titles" id="static_title" value="<?php echo htmlspecialchars($teacher_title); ?>" style="width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 5px; font-family: inherit;">
                    <datalist id="static_titles"><option value="أستاذ"><option value="دكتور"><option value="مهندس"><option value="معلم"></datalist>
                </div>
            </div>

            <div style="display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 20px; margin-bottom: 25px;">
                <div>
                    <label style="display: block; margin-bottom: 5px; font-weight: bold; color: #475569;">دولة الإقامة</label>
                    <select id="static_country" style="width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 5px; font-family: inherit;" onchange="updateCountryCode()">
                        <option value="العراق" data-code="+964">🇮🇶 العراق</option>
                        <option value="السعودية" data-code="+966">🇸🇦 السعودية</option>
                        <option value="الإمارات" data-code="+971">🇦🇪 الإمارات</option>
                        <option value="مصر" data-code="+20">🇪🇬 مصر</option>
                        <option value="الأردن" data-code="+962">🇯🇴 الأردن</option>
                    </select>
                </div>
                <div>
                    <label style="display: block; margin-bottom: 5px; font-weight: bold; color: #475569;">رقم الموبايل (واتساب)</label>
                    <input type="tel" id="static_phone" value="<?php echo htmlspecialchars($teacher_phone); ?>" style="width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 5px; font-family: inherit; text-align: left; direction: ltr;" placeholder="اختر الدولة أولاً..." required>
                </div>
                <div>
                    <label style="display: block; margin-bottom: 5px; font-weight: bold; color: #475569;">التخصص (المادة)</label>
                    <input type="text" id="static_spec" value="<?php echo htmlspecialchars($teacher_spec); ?>" style="width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 5px; font-family: inherit;">
                </div>
            </div>

            <!-- القسم الثاني: السيرة الذاتية -->
            <h5 style="color: #475569; border-top: 1px dashed #eee; padding-top: 15px; margin-bottom: 15px;"><i class="fas fa-briefcase text-success"></i> السيرة الذاتية والإنجازات</h5>
            <div style="margin-bottom: 15px;">
                <label style="display: block; margin-bottom: 5px; font-weight: bold; color: #475569;">نبذة تعريفية (Bio)</label>
                <textarea id="static_bio" style="width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 5px; font-family: inherit; min-height: 80px;" placeholder="اكتب نبذة جذابة عن نفسك وأسلوبك في التدريس..."></textarea>
            </div>
            
            <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 25px;">
                <div>
                    <label style="display: block; margin-bottom: 5px; font-weight: bold; color: #475569;">مسيرة العمل والمدارس</label>
                    <textarea id="static_experience" style="width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 5px; font-family: inherit; min-height: 80px;" placeholder="مثال: مدرس في ثانوية المتميزين (2015-2023)..."></textarea>
                </div>
                <div>
                    <label style="display: block; margin-bottom: 5px; font-weight: bold; color: #475569;">الإنجازات والشهادات</label>
                    <textarea id="static_achievements" style="width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 5px; font-family: inherit; min-height: 80px;" placeholder="مثال: دكتوراه في طرائق التدريس، مؤلف كتاب..."></textarea>
                </div>
            </div>

            <!-- القسم الثالث: الصور والميديا -->
            <h5 style="color: #475569; border-top: 1px dashed #eee; padding-top: 15px; margin-bottom: 15px;"><i class="fas fa-images text-warning"></i> الصور والميديا</h5>
            <div style="display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 15px; margin-bottom: 25px; background: #f8fafc; padding: 15px; border-radius: 8px; border: 1px solid #e2e8f0;">
                <?php if ($school_name_for_logo === 'مستقل'): ?>
    <!-- إذا كان المدرس مستقلاً: نظهر له حقل الرفع -->
    <div>
        <label style="display: block; margin-bottom: 5px; font-weight: bold; color: #475569;">شعارك (اللوجو)</label>
        <input type="file" id="static_logo" name="teacher_logo" accept="image/*" style="width: 100%; padding: 7px; border: 1px solid #ccc; border-radius: 5px; font-family: inherit; direction: ltr; background: white;">
        <small style="color: #94a3b8;">للفواتير والقوائم</small>
    </div>
<?php else: ?>
    <!-- إذا كان المدرس تابعاً لمدرسة: نخفي الحقل ونظهر رسالة تنبيه -->
    <div style="background: rgba(59, 130, 246, 0.1); padding: 10px; border-radius: 8px; border: 1px dashed #3b82f6; text-align: center; color: #3b82f6; font-size: 0.9rem; font-weight: bold;">
        <i class="fas fa-info-circle"></i> أنت تابع لـ (<?php echo htmlspecialchars($school_name_for_logo); ?>). يتم استخدام شعار المدرسة تلقائياً.
    </div>
<?php endif; ?>
                <div>
                    <label style="display: block; margin-bottom: 5px; font-weight: bold; color: #475569;">صورتك الشخصية</label>
                    <input type="file" id="static_photo" accept="image/*" style="width: 100%; padding: 7px; border: 1px solid #ccc; border-radius: 5px; font-family: inherit; direction: ltr; background: white;">
                    <small style="color: #94a3b8;">لصفحتك العامة</small>
                </div>
                <div>
                    <label style="display: block; margin-bottom: 5px; font-weight: bold; color: #475569;">صور المعرض</label>
                    <input type="file" id="static_gallery" accept="image/*" multiple style="width: 100%; padding: 7px; border: 1px solid #ccc; border-radius: 5px; font-family: inherit; direction: ltr; background: white;">
                    <small style="color: #94a3b8;">اختر عدة صور معاً</small>
                </div>
            </div>

            <div style="background: #fff1f2; padding: 15px; border-radius: 8px; border: 1px solid #fecdd3; margin-bottom: 25px;">
                <label style="display: block; margin-bottom: 5px; font-weight: bold; color: #be123c;">تغيير كلمة المرور (أمان الحساب)</label>
                <input type="password" id="static_password" placeholder="اتركه فارغاً إذا لم ترد التغيير" style="width: 100%; max-width: 400px; padding: 10px; border: 1px solid #ccc; border-radius: 5px; font-family: inherit;">
            </div>

            <div style="text-align: left; margin-top: 10px;">
                <button type="button" onclick="saveStaticProfile(this)" style="background: #93003c; color: white; border: none; padding: 12px 25px; border-radius: 8px; font-weight: bold; font-size: 1rem; cursor: pointer; transition: 0.3s; display: inline-flex; align-items: center; gap: 8px;">
                    <i class="fas fa-save"></i> حفظ التحديثات
                </button>
            </div>
        </form>
    </div>
</div>

    <div id="students-manage-view" class="view-section" style="display:none;">
    <div class="card" style="padding: 20px; border-radius: 12px; background: #fff; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);">
        
        <!-- الهيدر العلوي -->
        <div style="display:flex; justify-content:space-between; align-items:center; margin-bottom:20px;">
            <h4 style="margin:0; color: var(--accent);"><i class="fas fa-user-shield me-2"></i> إدارة التسجيل والصلاحيات</h4>
            <div style="display:flex; gap:8px;">
                <button class="btn-action" style="background: #34495e; padding: 8px 15px;" onclick="generateLinkFromTable()"><i class="fas fa-link"></i> رابط التسجيل</button>
                <button class="btn-action" style="background: #2ecc71; padding: 8px 15px;" onclick="document.getElementById('studentModal').style.display='flex'"><i class="fas fa-user-plus"></i> طالب جديد</button>
            </div>
        </div>

        <!-- مركز الإشعارات المطور -->
<div style="margin-bottom: 25px; border-right: 5px solid #2ecc71; background: #fdfdfd; padding: 15px; border-radius: 10px; border: 1px solid #eee;">
    <h3 style="color: #27ae60; margin-top: 0; font-size: 1.1rem;"><i class="fab fa-whatsapp"></i> مركز الإشعارات السريعة</h3>
    
    <textarea id="notif-message" placeholder="اكتب الرسالة هنا ليتم إرسالها للطلاب المحددين في الجدول..." style="width: 100%; height: 60px; padding: 10px; border: 1px solid #ddd; border-radius: 8px; margin-bottom: 10px; resize: none;"></textarea>
    
    <div style="display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 15px;">
        <span id="selected-count" style="font-weight: bold; color: #64748b; font-size: 0.85rem;">المحددين: 0</span>
        
        <div style="display: flex; gap: 20px; align-items: center;">
            <label style="cursor: pointer; display: flex; align-items: center; gap: 8px;">
                <span style="color: #3b82f6; font-weight: bold; font-size: 14px;"><i class="fas fa-bell"></i> منصة</span>
                <input type="checkbox" id="chk_quick_platform" checked style="width: 18px; height: 18px; accent-color: #3b82f6;">
            </label>
            
            <label style="cursor: pointer; display: flex; align-items: center; gap: 8px;">
                <span style="color: #2ecc71; font-weight: bold; font-size: 14px;"><i class="fab fa-whatsapp"></i> واتساب</span>
                <input type="checkbox" id="chk_quick_whatsapp" style="width: 18px; height: 18px; accent-color: #2ecc71;">
            </label>

            <button onclick="sendQuickNotification(event)" style="background: #1e293b; color: white; border: none; padding: 8px 20px; border-radius: 6px; cursor: pointer; font-weight: bold; transition: 0.3s; box-shadow: 0 4px 6px rgba(0,0,0,0.1);" onmouseover="this.style.background='#334155'" onmouseout="this.style.background='#1e293b'">
                <i class="fas fa-paper-plane"></i> إرسال الآن
            </button>
        </div>
    </div>
</div>

<!-- منطقة الفلترة الذكية -->
<div class="filter-area" style="background: rgba(0,0,0,0.05); padding: 15px; border-radius: 10px; margin-bottom: 20px; display: flex; gap: 10px; align-items: center; flex-wrap: wrap; border: 1px solid #cbd5e1;">
    
    <div style="flex: 1; min-width: 250px; position: relative;">
        <i class="fas fa-search" style="position: absolute; right: 15px; top: 50%; transform: translateY(-50%); color: #64748b;"></i>
        <input type="text" id="teacher-student-search" placeholder="ابحث عن طالب بالاسم أو المعرف..." class="custom-input" style="width: 100%; padding-right: 40px; border: 1px solid #cbd5e1; background: #fff; color: #1e293b; font-weight: bold; border-radius: 8px;" onkeyup="loadTeacherStudents()">
    </div>
    
    <select id="teacher-stage-filter" class="custom-input dynamic-stage-filter" style="width: auto; min-width: 150px; border: 1px solid #cbd5e1; background: #fff; color: #1e293b; font-weight: bold; border-radius: 8px;" onchange="loadTeacherStudents()">
        <option value="">كل المراحل</option>
    </select>
    
    <select id="teacher-dept-filter" class="custom-input dynamic-dept-filter" style="width: auto; min-width: 150px; border: 1px solid #cbd5e1; background: #fff; color: #1e293b; font-weight: bold; border-radius: 8px;" onchange="loadTeacherStudents()">
        <option value="">كل الأقسام</option>
    </select>

    <select id="teacher-section-filter" class="custom-input dynamic-branch-filter" style="width: auto; min-width: 150px; border: 1px solid #cbd5e1; background: #fff; color: #1e293b; font-weight: bold; border-radius: 8px;" onchange="loadTeacherStudents()">
        <option value="">كل الشعب</option>
    </select>
    
    <button onclick="loadTeacherStudents()" class="btn-action" style="padding: 10px 20px; display: flex; gap: 8px; align-items: center; background-color: var(--primary); color: white; border: none; border-radius: 8px; font-weight: bold; cursor: pointer; transition: 0.3s;" onmouseover="this.style.filter='brightness(1.1)'" onmouseout="this.style.filter='brightness(1)'">
        <i class="fas fa-sync-alt"></i> تحديث
    </button>
</div>

<!-- جدول الطلاب -->
<div style="background: #fff; border-radius: 12px; border: 1px solid #e2e8f0; overflow: hidden; overflow-x: auto; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05);">
    <table style="width: 100%; border-collapse: collapse; text-align: right;">
        <thead>
            <tr style="background: #f1f5f9; border-bottom: 2px solid #cbd5e1;">
                <th style="padding: 15px; width: 40px; text-align: center;">
                    <input type="checkbox" id="select-all-teacher-students" onclick="toggleAllTeacherStudents(this)" style="cursor: pointer; width: 16px; height: 16px; accent-color: var(--primary);">
                </th>
                <th style="padding: 15px; color: #0f172a; font-weight: 900; font-size: 1.1rem;">اسم الطالب</th>
                <th style="padding: 15px; color: #0f172a; font-weight: 900; font-size: 1.1rem;">المعرف (ID)</th>
                <th style="padding: 15px; color: #0f172a; font-weight: 900; font-size: 1.1rem;">المرحلة والقسم</th>
                <th style="padding: 15px; color: #0f172a; font-weight: 900; font-size: 1.1rem;">الشعبة</th>
                <th style="padding: 15px; color: #0f172a; font-weight: 900; font-size: 1.1rem; text-align: center;">الإجراءات</th>
            </tr>
        </thead>
        <!-- 🔴 هنا السر: الـ tbody يجب أن يكون خاليًا من أي كود PHP 🔴 -->
        <tbody id="manage-students-tbody">
            <tr>
                <td colspan="6" style="text-align: center; padding: 50px; color: #64748b;">
                    <i class="fas fa-spinner fa-spin fa-3x mb-3" style="color: var(--primary);"></i><br>
                    <span style="font-size: 1.2rem; font-weight: bold; color: #1e293b;">جاري جلب قائمة الطلاب المخصصين لك...</span>
                </td>
            </tr>
        </tbody>
    </table>
</div>

<!-- ================= 1. نافذة التحكم بصلاحيات الطالب (Modal) ================= -->
<div id="permissionsModal" style="display:none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.6); z-index: 10000; justify-content: center; align-items: center; backdrop-filter: blur(5px);">
    <div class="card" style="width: 90%; max-width: 420px; background: white; position: relative; padding: 25px; border-radius: 15px; box-shadow: 0 20px 40px rgba(0,0,0,0.3); font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;">
        
        <span onclick="document.getElementById('permissionsModal').style.display='none'" style="position: absolute; left: 20px; top: 15px; color: #94a3b8; cursor: pointer; font-size: 28px; transition: 0.3s;" onmouseover="this.style.color='#ef4444'" onmouseout="this.style.color='#94a3b8'">&times;</span>
        
        <h3 style="color: #93003c; margin-top: 0; margin-bottom: 20px; display: flex; align-items: center; gap: 12px; font-size: 1.4rem; border-bottom: 2px solid #f1f5f9; padding-bottom: 15px;">
            <i class="fas fa-user-shield"></i> <?php echo $lang['std_manage_title']; ?>
        </h3>
        
        <p id="perm-student-name" style="font-weight: 600; margin-bottom: 20px; color: #1e293b; font-size: 1.1rem; background: #eff6ff; padding: 10px; border-radius: 8px; border-right: 4px solid #3b82f6;"></p>
        
        <input type="hidden" id="perm_student_id">
        
        <div style="background: #ffffff; border-radius: 10px; display: flex; flex-direction: column; gap: 12px;">
            
            <label style="display: flex; align-items: center; justify-content: space-between; padding: 12px 15px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px; cursor: pointer; transition: 0.2s;" onmouseover="this.style.borderColor='#3b82f6'">
                <div style="display: flex; align-items: center; gap: 12px; color: #334155; font-size: 15px; font-weight: 500;">
                    <i class="fas fa-broadcast-tower" style="color: #3b82f6; width: 20px; text-align: center;"></i>
                    <span>حجب البث المباشر</span>
                </div>
                <input type="checkbox" id="perm-live-check" style="width: 20px; height: 20px; accent-color: #93003c;">
            </label>
            
            <label style="display: flex; align-items: center; justify-content: space-between; padding: 12px 15px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px; cursor: pointer; transition: 0.2s;" onmouseover="this.style.borderColor='#3b82f6'">
                <div style="display: flex; align-items: center; gap: 12px; color: #334155; font-size: 15px; font-weight: 500;">
                    <i class="fas fa-file-signature" style="color: #f59e0b; width: 20px; text-align: center;"></i>
                    <span>حجب الاختبارات</span>
                </div>
                <input type="checkbox" id="perm-exams-check" style="width: 20px; height: 20px; accent-color: #93003c;">
            </label>
            
            <label style="display: flex; align-items: center; justify-content: space-between; padding: 12px 15px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px; cursor: pointer; transition: 0.2s;" onmouseover="this.style.borderColor='#3b82f6'">
                <div style="display: flex; align-items: center; gap: 12px; color: #334155; font-size: 15px; font-weight: 500;">
                    <i class="fas fa-folder-open" style="color: #64748b; width: 20px; text-align: center;"></i>
                    <span>حجب أرشيف الدروس</span>
                </div>
                <input type="checkbox" id="perm-archive-check" style="width: 20px; height: 20px; accent-color: #93003c;">
            </label>

            <label style="display: flex; align-items: center; justify-content: space-between; padding: 12px 15px; background: #fff1f2; border: 1px solid #fecdd3; border-radius: 10px; cursor: pointer; transition: 0.2s;" onmouseover="this.style.borderColor='#be123c'">
                <div style="display: flex; align-items: center; gap: 12px; color: #be123c; font-size: 15px; font-weight: 600;">
                    <i class="fas fa-play-circle" style="color: #be123c; width: 20px; text-align: center;"></i>
                    <span>حجب الفيديوهات</span>
                </div>
                <input type="checkbox" id="perm-videos-check" style="width: 20px; height: 20px; accent-color: #be123c;">
            </label>

        </div>
        
<button class="btn-action" style="width: 100%; margin-top: 25px; background: #2ecc71; color: white; border: none; padding: 14px; border-radius: 10px; cursor: pointer; font-size: 17px; font-weight: 600; display: flex; align-items: center; justify-content: center; gap: 10px; transition: 0.3s; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);" onclick="savePermissions(this)" onmouseover="this.style.background='#27ae60'" onmouseout="this.style.background='#2ecc71'">
            <i class="fas fa-check-double"></i> اعتماد الصلاحيات الجديدة
        </button>
        
    </div>
</div>
</div> <!-- إغلاق الـ Card الخاص بالطلاب -->
</div> <!-- إغلاق القسم طلابي بالكامل -->

<div id="students-eval-view" class="view-section" style="display:none;">
    <div class="card" style="padding: 20px; border-radius: 12px; background: #fff;">
        <h4 style="margin:0 0 20px 0; color: var(--accent);"><i class="fas fa-clipboard-list me-2"></i> <?php echo $lang['sidebar_students_eval']; ?></h4>
        <div class="table-responsive">
            <table class="grade-table" style="width: 100%; border-collapse: collapse;">
                <thead> 
                    <tr style="background: #f8f9fa;">
                        <th style="text-align: right; padding: 12px;"><?php echo $lang['std_tbl_name']; ?></th>
                        <th style="text-align: center; padding: 12px;">المرحلة/القسم</th>
                        <th style="text-align: center; padding: 12px;">التقييم الشهري</th>
                        <th style="text-align: center; padding: 12px;">نسبة النجاح</th>
                        <th style="text-align: center; padding: 12px;">الغياب</th>
                        <th style="text-align: right; padding: 12px;">ملاحظات المدرس</th>
                    </tr>
                </thead> 
                <tbody id="eval-students-tbody">
                    </tbody> 
                <div style="text-align: left; margin-top: 20px;">
    <button class="btn-action" style="background: #93003c; width: auto; padding: 12px 30px;" onclick="saveAllEvaluations()">
        <i class="fas fa-sync-alt"></i> اعتماد ومزامنة البيانات مع الطلاب
    </button>
</div>
            </table>
        </div>
    </div>
</div>

<div id="studentModal" style="display:none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(15, 23, 42, 0.7); z-index: 10000; justify-content: center; align-items: center; backdrop-filter: blur(5px);">
    <div class="card" style="width: 95%; max-width: 550px; background: white; position: relative; padding: 35px; border-radius: 20px; box-shadow: 0 25px 50px rgba(0,0,0,0.2); box-sizing: border-box;">
        
        <span onclick="document.getElementById('studentModal').style.display='none'" style="position: absolute; left: 25px; top: 25px; color: #94a3b8; cursor: pointer; font-size: 28px; transition: 0.3s; line-height: 1;" onmouseover="this.style.color='#ef4444'" onmouseout="this.style.color='#94a3b8'">&times;</span>
        
        <h3 style="color: #6b1437; margin-top: 0; margin-bottom: 25px; font-size: 1.6rem; border-bottom: 2px solid #f1f5f9; padding-bottom: 15px;">
            <i class="fas fa-user-graduate"></i> <?php echo $lang['std_new_student']; ?>
        </h3>
        
        <div style="margin-top: 20px;">
            
            <label style="font-weight: bold; font-size: 14px; color: #1e293b; margin-bottom: 8px; display: block;"><i class="far fa-id-badge" style="color: #6b1437;"></i> الاسم الكامل:</label>
            <input type="text" id="new-std-name" class="grade-input" style="width: 100%; margin-bottom: 20px; padding: 12px 15px; border: 1px solid #cbd5e1; border-radius: 10px; box-sizing: border-box; font-size: 15px; transition: 0.3s;" placeholder="اكتب اسم الطالب الثلاثي...">
            
            <div style="margin-bottom: 20px;">
    <label style="font-weight: bold; font-size: 14px; color: #1e293b; margin-bottom: 8px; display: block;">
        <i class="fab fa-whatsapp" style="color: #10b981;"></i> <?php echo $lang['profile_phone']; ?>:
    </label>
    <input type="tel" id="new-std-phone" class="grade-input" style="width: 100%; padding: 12px 15px; border: 1px solid #cbd5e1; border-radius: 10px; box-sizing: border-box; font-size: 15px; direction: ltr; text-align: left;">
</div>

<style>
    /* تنسيق خاص ليتوافق مربع العلم مع تصميمك */
    .iti { width: 100%; }
    .iti__selected-flag { border-radius: 10px 0 0 10px; border-right: 1px solid #cbd5e1; background: #f8fafc; }
    .iti--separate-dial-code .iti__selected-dial-code { font-weight: bold; color: #1e293b; }
</style>
            <div style="display: flex; gap: 15px; margin-bottom: 25px; flex-wrap: wrap;">
    <div style="flex: 1; min-width: 140px;">
        <label style="font-weight: bold; font-size: 13px; color: #1e293b; margin-bottom: 8px; display: block;">المرحلة أو المجموعة:</label>
        <select id="new-std-stage" class="grade-input dynamic-taxonomy-select" data-type="stage" data-filter="false" style="width: 100%; padding: 10px; border: 1px solid #cbd5e1; border-radius: 10px; background: #f8fafc; color: #334155;">
        </select>
    </div>
    
    <div style="flex: 1; min-width: 100px;">
        <label style="font-weight: bold; font-size: 13px; color: #1e293b; margin-bottom: 8px; display: block;">القسم أو المسار:</label>
        <select id="new-std-dept" class="grade-input dynamic-taxonomy-select" data-type="dept" data-filter="false" style="width: 100%; padding: 10px; border: 1px solid #cbd5e1; border-radius: 10px; background: #f8fafc; color: #334155;">
        </select>
    </div>

    <div style="flex: 1; min-width: 100px;">
        <label style="font-weight: bold; font-size: 13px; color: #1e293b; margin-bottom: 8px; display: block;">الشعبة (اختياري):</label>
        <select id="new-std-section" class="grade-input dynamic-taxonomy-select" data-type="section" data-filter="false" style="width: 100%; padding: 10px; border: 1px solid #cbd5e1; border-radius: 10px; background: #f8fafc; color: #334155;">
        </select>
    </div>
</div>
 

            <div style="background: rgba(107, 20, 55, 0.04); border: 1px dashed #6b1437; padding: 20px; border-radius: 12px; margin-bottom: 25px; text-align: center;">
                <label style="font-weight: bold; font-size: 14px; display: block; margin-bottom: 15px; color: #6b1437;"><i class="fas fa-fingerprint"></i> <?php echo $lang['std_tbl_syncid']; ?>:</label>
                <div style="display: flex; gap: 10px;">
                    <input type="text" id="new-std-syncid" class="grade-input" style="width: 100%; font-weight: bold; color: #6b1437; text-align: center; font-size: 18px; letter-spacing: 3px; background: white; border: 1px solid #cbd5e1; border-radius: 10px; padding: 12px; box-sizing: border-box;" readonly placeholder="لم يتم التوليد بعد">
                    <button class="btn-action" style="background: #1e293b; color: white; width: auto; padding: 0 20px; border: none; border-radius: 10px; cursor: pointer; font-weight: bold; transition: 0.3s; box-shadow: 0 4px 6px rgba(0,0,0,0.1);" onclick="generateSyncID()" onmouseover="this.style.background='#334155'" onmouseout="this.style.background='#1e293b'">
                        <i class="fas fa-random"></i> توليد
                    </button>
                </div>
                <small style="color: #64748b; margin-top: 10px; display: block;">استخدم هذا المعرف لربط الطالب بالبث والدروس.</small>
            </div>

            <button class="btn-action" style="width: 100%; font-size: 1.1rem; padding: 15px; background: linear-gradient(135deg, #10b981, #059669); color: white; border: none; border-radius: 12px; font-weight: bold; cursor: pointer; transition: 0.3s; box-shadow: 0 10px 20px rgba(16, 185, 129, 0.2);" onclick="saveNewStudent()" onmouseover="this.style.transform='translateY(-2px)'" onmouseout="this.style.transform='translateY(0)'">
                <i class="fas fa-check-circle"></i> حفظ وإضافة الطالب
            </button>
        </div>
    </div>
</div>
<div id="grades-view" class="view-section" style="display:none;">
    <div class="card" style="direction: rtl;">
    <h4 style="margin-bottom: 20px; color: #1e293b;">
        <i class="fas fa-file-signature me-2" style="color: #6b1437;"></i> <?php echo $lang['sidebar_grade_book']; ?>
    </h4>
    
    <div style="display: flex; flex-wrap: wrap; gap: 20px; margin-bottom: 25px; background: #f8fafc; padding: 20px; border-radius: 12px; align-items: center; border: 1px solid #e2e8f0;">
        
        <div style="display: flex; align-items: center; gap: 10px; flex-grow: 1;">
            <label style="font-size: 13px; font-weight: bold; white-space: nowrap; color: #475569;">تصفية حسب:</label>
            
            <select id="grade-filter-stage" class="dynamic-taxonomy-select" data-type="stage" data-filter="true" style="flex: 1; min-width: 120px; padding: 8px; border-radius: 8px; border: 1px solid #cbd5e1; outline: none;">
                <option value="all">كل المراحل</option>
            </select>

            <select id="grade-filter-dept" class="dynamic-taxonomy-select" data-type="dept" data-filter="true" style="flex: 1; min-width: 120px; padding: 8px; border-radius: 8px; border: 1px solid #cbd5e1; outline: none;">
                <option value="all">كل الأقسام</option>
            </select>

            <select id="grade-filter-section" class="dynamic-taxonomy-select" data-type="section" data-filter="true" style="flex: 1; min-width: 120px; padding: 8px; border-radius: 8px; border: 1px solid #cbd5e1; outline: none;">
                <option value="all">كل الشعب</option>
            </select>

            <button class="btn-action" style="background:#34495e; color: white; padding: 8px 25px; border-radius: 8px; border: none; cursor: pointer; display: flex; align-items: center; gap: 8px;" onclick="renderGradesTable()">
                <i class="fas fa-search"></i> <?php echo $lang['btn_search']; ?>
            </button>
        </div>

        <div style="border-right: 2px solid #e2e8f0; height: 40px; margin: 0 5px;" class="hide-mobile"></div>

        <div style="display: flex; flex-wrap: wrap; gap: 15px; align-items: center;">
            <div style="display: flex; align-items: center; gap: 5px;">
                <label style="font-size: 13px; white-space: nowrap;">الشهر (20):</label>
                <input type="number" id="maxMonth" value="20" class="grade-input" oninput="syncMax()" style="width: 55px; padding: 5px; border: 1px solid #cbd5e1; border-radius: 5px; text-align: center;">
            </div>
            
            <div style="display: flex; align-items: center; gap: 5px;">
                <label style="font-size: 13px; white-space: nowrap;">النشاط (10):</label>
                <input type="number" id="maxActivity" value="10" class="grade-input" oninput="syncMax()" style="width: 55px; padding: 5px; border: 1px solid #cbd5e1; border-radius: 5px; text-align: center;">
            </div>

            <div style="display: flex; align-items: center; gap: 5px;">
                <label style="font-size: 13px; white-space: nowrap;">الفصل:</label> 
                <div style="display: flex; align-items: center; gap: 5px;">
    <label style="font-size: 13px; white-space: nowrap;">نوع التقييم:</label> 
    <input type="text" id="termSelect" list="termOptions" class="grade-input" placeholder="اختر أو اكتب التقييم" style="padding: 5px 10px; border: 1px solid #cbd5e1; border-radius: 5px; background: white; width: 150px;">
    <datalist id="termOptions">
        <option value="امتحان الشهر الأول"></option>
        <option value="امتحان نصف السنة"></option>
        <option value="تقييم شفوي"></option>
        <option value="مشاركة يومية"></option>
    </datalist>
</div>
        </div>
    </div>
</div>

        <div class="table-responsive">
            <table class="grade-table" style="width: 100%; border-collapse: collapse;">
                <thead>
                    <tr>
                        <th style="width: 15%; text-align: right;"><?php echo $lang['std_tbl_name']; ?></th>
                        <th id="hMonth" style="width: 10%; text-align: center;">الشهر (20)</th>
                        <th id="hAct" style="width: 10%; text-align: center;">النشاط (10)</th>
                        <th style="width: 10%; text-align: center;">الغياب</th>
                        <th style="width: auto; min-width: 300px; text-align: right;">التقييم والملاحظات</th>
                    </tr>
                </thead>
                <tbody id="grades-table-edit"></tbody>
            </table>
        </div>
        
        <div style="display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; justify-content: flex-end;">
    
    <button class="btn-action" style="background:#2ecc71; width: auto;" onclick="saveAdvancedGrades(this)">
        <i class="fas fa-save"></i> حفظ واعتماد الدرجات
    </button>
    
    <button class="btn-action" style="background:#3498db; width: auto;" onclick="alert('✅ تم نشر الدرجات بنجاح وستظهر في حسابات الطلاب فوراً.')">
        <i class="fas fa-bullhorn"></i> نشر الدرجات للطلاب
    </button>
    
    <button class="btn-action" style="background:#e67e22; width: auto;" onclick="alert('✅ تم إرسال نسخة من السجل إلى الإدارة بنجاح.')">
        <i class="fas fa-paper-plane"></i> إرسال السجل للإدارة
    </button>
    
</div>
</div>
</div>

    <div id="upload-view" class="view-section">
    <div class="card">
        <h4><i class="fas fa-pen-nib"></i> إضافة محتوى الدرس والشرح</h4>
        
        <input type="text" placeholder="عنوان الدرس المكتوب" class="grade-input" style="width:100%; margin-bottom:15px; font-weight:bold;">

        <div style="background: #f8f9fa; border: 1px solid #ddd; border-bottom: none; padding: 10px; border-top-left-radius: 8px; border-top-right-radius: 8px; display: flex; gap: 8px; flex-wrap: wrap;">
            <button class="btn-tool" onclick="execCmd('bold')" title="خط سميك"><i class="fas fa-bold"></i></button>
            <button class="btn-tool" onclick="execCmd('italic')" title="خط مائل"><i class="fas fa-italic"></i></button>
            <button class="btn-tool" onclick="execCmd('underline')" title="تحته خط"><i class="fas fa-underline"></i></button>
            <div style="width:1px; background:#ccc; margin:0 5px;"></div>
            <select class="btn-tool" onchange="execParamCmd('fontSize', this.value)">
                <option value="3">حجم متوسط</option>
                <option value="5">حجم كبير</option>
                <option value="7">عنوان ضخم</option>
            </select>
            <input type="color" class="btn-tool" onchange="execParamCmd('foreColor', this.value)" title="لون الخط">
            <div style="width:1px; background:#ccc; margin:0 5px;"></div>
            <button class="btn-tool" onclick="execCmd('insertUnorderedList')" title="قائمة نقطية"><i class="fas fa-list-ul"></i></button>
            <button class="btn-tool" onclick="execCmd('insertOrderedList')" title="قائمة رقمية"><i class="fas fa-list-ol"></i></button>
            <button class="btn-tool" onclick="insertSymbol('؟')" title="علامة استفهام">؟</button>
            <button class="btn-tool" onclick="insertSymbol('!')" title="علامة تعجب">!</button>
            <button class="btn-tool" onclick="insertSymbol('-')" title="شرطة">-</button>
        </div>

        <div id="editor" contenteditable="true" style="min-height: 200px; border: 1px solid #ddd; padding: 20px; border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; background: #fff; margin-bottom: 25px; outline: none; text-align: right;">
            اكتب شرح الدرس أو الملاحظات التعليمية هنا...
        </div>

        <h4 style="margin-bottom: 15px;"><i class="fas fa-paperclip"></i> المرفقات (اختياري)</h4>
        <div style="display: flex; gap: 15px; margin-bottom: 20px;">
            <div style="flex:1; border: 2px dashed #ddd; padding: 20px; text-align: center; border-radius: 12px; cursor: pointer;" onclick="handleFileUpload('video')">
                <i class="fas fa-video fa-2x" style="color:var(--accent)"></i><br>
                <small id="video-status">إرفاق فيديو</small>
            </div>
            <div style="flex:1; border: 2px dashed #ddd; padding: 20px; text-align: center; border-radius: 12px; cursor: pointer;" onclick="handleFileUpload('file')">
                <i class="fas fa-file-pdf fa-2x" style="color:#2ecc71"></i><br>
                <small id="file-status">إرفاق ملف (PDF/Office)</small>
            </div>
            <div style="margin-top: 15px; margin-bottom: 15px; text-align: right;">
    <label style="display:block; font-size:13px; font-weight:bold; margin-bottom:5px; color:#475569;">
        <i class="fas fa-link"></i> أو ضع رابط فيديو خارجي (يوتيوب / درايف):
    </label>
    <input type="url" id="video-url-input" class="grade-input" style="width: 100%; text-align: left; direction: ltr; padding: 10px; border-radius: 8px;" placeholder="https://...">
</div>
        </div>

        <h4 style="margin-top: 25px; margin-bottom: 15px;"><i class="fas fa-users-cog"></i> تحديد المستهدفين من الدرس</h4>
<div class="card" style="background: #f0f7ff; border: 1px solid #cfe2ff; margin-bottom: 20px;">
    <div style="display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 15px;">
        <div>
            <label style="display:block; font-size:12px; margin-bottom:5px; font-weight:bold;">المرحلة الدراسية:</label>
            <select id="lesson-target-level" class="grade-input dynamic-taxonomy-select" data-type="stage" data-filter="false" style="width:100%;">
                <option value="all">🚀 نشر لكل المراحل</option>
            </select>
        </div>

        <div>
            <label style="display:block; font-size:12px; margin-bottom:5px; font-weight:bold;">القسم / المسار:</label>
            <select id="lesson-target-track" class="grade-input dynamic-taxonomy-select" data-type="dept" data-filter="false" style="width:100%;">
                <option value="all">كل الأقسام</option>
            </select>
        </div>

        <div>
            <label style="display:block; font-size:12px; margin-bottom:5px; font-weight:bold;">الشعبة:</label>
            <select id="lesson-target-section" class="grade-input dynamic-taxonomy-select" data-type="section" data-filter="false" style="width:100%;">
                <option value="all">جميع الشعب</option>
            </select>
        </div>
    </div>
</div>

<button type="button" class="btn-action" style="width:100%; font-size: 18px; background: #27ae60; margin-top: 20px;" onclick="publishLessonWithTargets(); return false;">
    <i class="fas fa-rocket"></i> نشر الدرس وحفظه في الأرشيف
</button>
    </div>
</div>
<div id="archive-view" class="view-section" style="display:none;">
    <div class="card">
        <div style="display:flex; justify-content:space-between; align-items:center; margin-bottom:20px; flex-wrap: wrap; gap: 15px;">
            <h4 style="margin:0;"><i class="fas fa-archive me-2"></i> <?php echo $lang['sidebar_lessons_archive']; ?></h4>
            <div style="display: flex; gap: 10px; align-items: center; flex-wrap: wrap;">
                <select id="archive-filter-stage" class="grade-input dynamic-taxonomy-select" data-type="stage" data-filter="true" style="width: 130px; margin-bottom:0;" onchange="renderLessonsArchive()">
                    <option value="all">كل المراحل</option>
                </select>
                <select id="archive-filter-dept" class="grade-input dynamic-taxonomy-select" data-type="dept" data-filter="true" style="width: 110px; margin-bottom:0;" onchange="renderLessonsArchive()">
                    <option value="all">كل الأقسام</option>
                </select>
                <select id="archive-filter-branch" class="grade-input dynamic-taxonomy-select" data-type="section" data-filter="true" style="width: 100px; margin-bottom:0;" onchange="renderLessonsArchive()">
                    <option value="all">كل الشعب</option>
                </select>
                <button class="btn-action" style="background: #9b1b4b;" onclick="showSection('upload-view')">
                    <i class="fas fa-plus"></i> إضافة درس جديد
                </button>
            </div>
        </div>
        
        <div class="table-responsive">
            <table class="grade-table">
                <thead>
                    <tr>
                        <th style="width: 40px; text-align: center;"><input type="checkbox" id="select-all-lessons" onclick="toggleAllLessons(this)"></th>
                        <th>عنوان الدرس</th>
                        <th>المرحلة</th>
                        <th>التاريخ</th>
                        <th>الحالة</th>
                        <th>إجراءات</th>
                    </tr>
                </thead>
                <tbody id="archive-list-body">
                    </tbody>
            </table>
        </div>

        <div style="margin-top: 25px; padding-top: 20px; border-top: 2px dashed #e2e8f0;">
    <h5 style="margin-top:0; color:#475569; margin-bottom:15px;"><i class="fas fa-paper-plane"></i> خيارات إعادة النشر للدروس المحددة:</h5>
    <div style="display: flex; gap: 10px; align-items: flex-start; flex-wrap: wrap; background: #f8fafc; padding: 15px; border-radius: 10px; border: 1px solid #e2e8f0; margin-bottom: 15px;">
        
        <select id="republish-stage" class="grade-input dynamic-taxonomy-select" data-type="stage" data-filter="false" style="flex:1; min-width:120px;"></select>
        <select id="republish-dept" class="grade-input dynamic-taxonomy-select" data-type="dept" data-filter="false" style="flex:1; min-width:100px;"></select>
        <select id="republish-branch" class="grade-input dynamic-taxonomy-select" data-type="section" data-filter="false" style="flex:1; min-width:100px;"></select>
        
        <div style="position:relative; flex:1; min-width:200px;">
            <div style="padding: 10px; border: 1px solid #cbd5e1; border-radius: 8px; background: white; cursor: pointer; display:flex; justify-content:space-between; align-items:center;" onclick="let list = document.getElementById('student-checkbox-list'); list.style.display = list.style.display === 'none' ? 'block' : 'none';">
                <span style="color:#475569; font-weight:bold; font-size:13px;"><i class="fas fa-users"></i> تحديد طلاب معينين</span>
                <i class="fas fa-chevron-down" style="color:#94a3b8;"></i>
            </div>
            <div id="student-checkbox-list" style="display:none; position:absolute; top:100%; left:0; right:0; background:white; border:1px solid #cbd5e1; border-radius:8px; max-height:200px; overflow-y:auto; z-index:100; box-shadow:0 10px 15px rgba(0,0,0,0.1); padding:10px; margin-top:5px;">
                </div>
        </div>

    </div>

    <div style="display: flex; gap: 15px; justify-content: flex-end;">
        <button class="dash-btn" style="background:#34495e; color:white; border:none; width: auto; padding: 12px 25px;" onclick="printSelectedLessons()">
            <i class="fas fa-print"></i> طباعة الدروس المحددة
        </button>
        <button class="dash-btn" style="background:#22c55e; color:white; border:none; width: auto; padding: 12px 25px;" onclick="publishSelectedLessons()">
            <i class="fas fa-rocket"></i> إعادة نشر
        </button>
    </div>
</div>
</div>
</div>
<input type="file" id="video-input" style="display:none" accept="video/*">
<input type="file" id="file-input" style="display:none" accept=".pdf,.doc,.docx,.ppt,.pptx">
<div id="live-archive-view" class="view-section" style="display:none;">
    <div class="card">
        
        <div style="display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:20px; flex-wrap: wrap; gap: 15px;">
            
            <div style="display: flex; align-items: center; gap: 15px;">
                <h4 style="margin:0;"><i class="fas fa-video me-2"></i> <?php echo $lang['sidebar_videos_archive']; ?></h4>
                
                <input type="file" id="upload-edited-video" accept="video/mp4, video/webm" style="display:none;" onchange="uploadVideoFile(this)">
                <button class="btn-action" style="background: #3b82f6; padding: 6px 12px; font-size: 13px;" onclick="document.getElementById('upload-edited-video').click()">
                    <i class="fas fa-cloud-upload-alt"></i> رفع فيديو
                </button>
                <span id="upload-status" style="font-size:12px; font-weight:bold; display:none;"></span>
            </div>
            
            <div style="display: flex; gap: 10px; align-items: flex-start; flex-wrap: wrap;">
                <label style="font-size: 12px; font-weight: bold; margin-top: 10px;">نشر إلى:</label>
                
                <select id="publish-stage" class="grade-input dynamic-taxonomy-select" data-type="stage" data-filter="true" style="width: 120px; margin-bottom:0;">
                    <option value="all">كل المراحل</option>
                </select>
                
                <select id="publish-dept" class="grade-input dynamic-taxonomy-select" data-type="dept" data-filter="true" style="width: 110px; margin-bottom:0;">
                    <option value="all">كل الأقسام</option>
                </select>

                <select id="publish-section" class="grade-input dynamic-taxonomy-select" data-type="section" data-filter="true" style="width: 110px; margin-bottom:0;">
                    <option value="all">كل الشعب</option>
                </select>
                
                <div style="position:relative; min-width:180px;">
                    <div id="vid-student-dropdown-btn" class="grade-input" style="width: 100%; padding: 8px 10px; background: white; border: 1px solid #cbd5e1; border-radius: 8px; cursor: pointer; display: flex; justify-content: space-between; align-items: center;" onclick="toggleVidStudentList()">
                        <span id="vid-student-dropdown-text" style="font-size: 12px; font-weight: bold; color: #475569;">طالب محدد (اختياري)</span>
                        <i class="fas fa-chevron-down text-muted"></i>
                    </div>
                    
                    <div id="vid-student-checkbox-list" style="display: none; position: absolute; top: 100%; left: 0; right: 0; background: white; border: 1px solid #cbd5e1; border-radius: 8px; margin-top: 5px; max-height: 200px; overflow-y: auto; z-index: 1000; box-shadow: 0 10px 25px rgba(0,0,0,0.1);">
                        <div style="padding: 10px; border-bottom: 1px solid #f1f5f9;">
                            <input type="text" id="vid-student-search" placeholder="بحث عن طالب..." style="width: 100%; padding: 5px; border: 1px solid #e2e8f0; border-radius: 5px; font-size: 12px;" onkeyup="filterVidStudentList()">
                        </div>
                        <div id="vid-students-container" style="padding: 5px 0;">
                            </div>
                    </div>
                </div>

                <button class="btn-action" style="background: #22c55e;" onclick="publishVideos()">
                    <i class="fas fa-paper-plane"></i> نشر المختار
                </button>
            </div>
            
        </div>

        <table style="width: 100%; border-collapse: collapse; background: white; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 10px rgba(0,0,0,0.05);">
            <thead style="background: #1e293b; color: white;">
                <tr>
                    <th style="padding: 15px; width: 50px; text-align: center;"><input type="checkbox" id="select-all-live"></th>
                    <th style="padding: 15px; text-align: right;">عنوان الحصة</th>
                    <th style="padding: 15px; text-align: center;">المرحلة</th>
                    <th style="padding: 15px; text-align: center;">القسم</th>
                    <th style="padding: 15px; text-align: center;">التاريخ</th>
                    <th style="padding: 15px; text-align: center;">الإجراءات</th>
                </tr>
            </thead>
            <tbody id="live-archive-table-body">
                </tbody>
        </table>
    </div>
</div>

<div id="videoModal" style="display:none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.9); z-index: 10000; justify-content: center; align-items: center;">
    <div style="width: 90%; max-width: 800px; position: relative;">
        <span onclick="closeVideoModal()" style="position: absolute; left: 15px; top: -35px; color: white; cursor: pointer; font-size: 25px;">&times; إغلاق</span>
        <video id="archiveVideoPlayer" controls style="width: 100%; border-radius: 8px;">
            <source src="" type="video/mp4">
        </video>
    </div>
</div>
<style>
    .btn-tool { background: white; border: 1px solid #ddd; padding: 5px 10px; border-radius: 4px; cursor: pointer; color: #555; }
    .btn-tool:hover { background: #eee; }
    .editor:focus { border-color: var(--accent); box-shadow: 0 0 5px rgba(147, 0, 60, 0.2); }
</style>

  <div id="new-exam-view" class="view-section">
    <div class="card" style="background: #fff; border: 1px solid var(--accent); margin-bottom: 20px; box-shadow: 0 2px 10px rgba(0,0,0,0.05);">
        <h4 style="color: var(--primary); border-bottom: 2px solid #f1f5f9; padding-bottom: 15px; margin-bottom: 20px;"><i class="fas fa-file-signature"></i> بناء ورقة امتحانية رسمية (للطباعة والإدارة)</h4>
        
        <!-- الترويسة الأساسية -->
        <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 15px; margin-bottom: 15px;">
            <div>
                <label style="display:block; font-size:13px; font-weight:bold; margin-bottom:5px;">عنوان الامتحان:</label>
                <input type="text" id="exam-main-title" class="grade-input" style="width:100%;" placeholder="مثلاً: امتحان نصف السنة - الدور الأول">
            </div>
            <div>
                <label style="display:block; font-size:13px; font-weight:bold; margin-bottom:5px;">المادة الدراسية:</label>
                <input type="text" id="exam-subject" class="grade-input" style="width:100%;" placeholder="مثلاً: اللغة العربية">
            </div>
        </div>

        <div style="display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 15px; margin-bottom: 25px; padding-bottom: 20px; border-bottom: 1px dashed #cbd5e1;">
            <div>
                <label style="display:block; font-size:13px; font-weight:bold; margin-bottom:5px;">المرحلة / الصف:</label>
                <select id="exam-stage" class="grade-input dynamic-stage-filter" style="width:100%;">
                    <option value="">اختر المرحلة...</option>
                </select>
            </div>
            <div>
                <label style="display:block; font-size:13px; font-weight:bold; margin-bottom:5px;">الزمن (اختياري):</label>
                <input type="text" id="exam-duration" class="grade-input" style="width:100%;" placeholder="مثلاً: ساعتان">
            </div>
            <div>
                <label style="display:block; font-size:13px; font-weight:bold; margin-bottom:5px;">الدرجة الكلية (للعرض):</label>
                <input type="number" id="exam-total-marks" class="grade-input" style="width:100%;" placeholder="مثلاً: 100">
            </div>
        </div>

        <!-- 💡 منطقة إضافة الأسئلة 💡 -->
        <h5 style="color: #334155; margin-bottom: 15px;"><i class="fas fa-plus-circle"></i> إضافة سؤال جديد للورقة</h5>
        <div style="background: #f8fafc; padding: 15px; border-radius: 8px; border: 1px solid #e2e8f0; margin-bottom: 25px;">
            <div style="display: grid; grid-template-columns: 1fr 150px; gap: 15px; margin-bottom: 15px;">
                <div>
                    <label style="display:block; font-size:13px; font-weight:bold; margin-bottom:5px;">منطوق / نوع السؤال:</label>
                    <input type="text" id="q-type" class="grade-input" style="width:100%;" placeholder="مثلاً: السؤال الأول / أجب عن فرعين فقط">
                </div>
                <div>
                    <label style="display:block; font-size:13px; font-weight:bold; margin-bottom:5px;">درجة السؤال:</label>
                    <input type="number" id="q-marks" class="grade-input" style="width:100%;" placeholder="مثال: 20">
                </div>
            </div>
            
            <div style="margin-bottom: 15px;">
                <label style="display:block; font-size:13px; font-weight:bold; margin-bottom:5px;">نص السؤال (التفاصيل):</label>
                
                <!-- 🚀 شريط الأدوات السريع 🚀 -->
                <div style="display:flex; gap:8px; margin-bottom:8px; flex-wrap: wrap;">
                    <span style="font-size:12px; font-weight:bold; color:#64748b; margin-top:5px;">إدراج سريع:</span>
                    <button type="button" onclick="insertExamTemplate('blank')" style="background:#f1f5f9; border:1px solid #cbd5e1; padding:3px 10px; border-radius:4px; font-size:12px; cursor:pointer; font-weight:bold; color:#0f172a;"><i class="fas fa-minus"></i> فراغ</button>
                    <button type="button" onclick="insertExamTemplate('tf')" style="background:#f1f5f9; border:1px solid #cbd5e1; padding:3px 10px; border-radius:4px; font-size:12px; cursor:pointer; font-weight:bold; color:#0f172a;"><i class="fas fa-check-double"></i> (صح / خطأ)</button>
                    <button type="button" onclick="insertExamTemplate('mcq')" style="background:#f1f5f9; border:1px solid #cbd5e1; padding:3px 10px; border-radius:4px; font-size:12px; cursor:pointer; font-weight:bold; color:#0f172a;"><i class="fas fa-list-ul"></i> خيارات (أ، ب، ج)</button>
                    <button type="button" onclick="insertExamTemplate('newline')" style="background:#f1f5f9; border:1px solid #cbd5e1; padding:3px 10px; border-radius:4px; font-size:12px; cursor:pointer; font-weight:bold; color:#0f172a;"><i class="fas fa-level-down-alt"></i> سطر جديد</button>
                </div>
                
                <textarea id="q-text" class="grade-input" style="width:100%; min-height: 100px; padding: 10px; line-height: 1.8; font-size:16px;" placeholder="اكتب نص السؤال هنا..."></textarea>
            </div>
            
            <!-- 🚀 تم إصلاح الكارثة هنا: تنظيف الأوسام المكررة والمفتوحة بالخطأ 🚀 -->
            <div style="text-align: left;">
                <button id="add-q-btn" onclick="addQuestionToPaper()" style="background: #e11d48; color: white; border: none; padding: 10px 20px; border-radius: 6px; font-weight: bold; cursor: pointer; transition: 0.3s;">
                    <i class="fas fa-plus"></i> إضافة للمسودة
                </button>
            </div>
        </div> <!-- نهاية صندوق إضافة الأسئلة -->

        <!-- 📋 المسودة التفاعلية 📋 -->
        <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px;">
            <h5 style="margin: 0; color: #334155;"><i class="fas fa-list-ol"></i> مسودة الأسئلة المضافة للورقة</h5>
            <span id="marks-counter" style="background: #10b981; color: white; padding: 5px 15px; border-radius: 20px; font-size: 13px; font-weight: bold; box-shadow: 0 2px 5px rgba(16,185,129,0.3);">الدرجات الموزعة: 0</span>
        </div>
        
        <div id="exam-draft-area" style="background: #f1f5f9; min-height: 150px; border: 1px solid #cbd5e1; border-radius: 8px; padding: 15px; margin-bottom: 25px;">
            <div style="text-align:center; color:#94a3b8; padding:20px;">لم تقم بإضافة أي سؤال للورقة حتى الآن.</div>
        </div>

        <!-- 🚀 الإجراءات النهائية (المعاينة والإرسال) 🚀 -->
        <div style="display: flex; gap: 15px; justify-content: center; border-top: 1px solid #cbd5e1; padding-top: 20px;">
            <button onclick="previewExamBeforeSend()" style="background: #3b82f6; color: white; border: none; padding: 12px 30px; border-radius: 8px; font-size: 16px; font-weight: bold; cursor: pointer; display: flex; align-items: center; gap: 8px; box-shadow: 0 4px 6px rgba(59,130,246,0.3);">
                <i class="fas fa-search"></i> معاينة وتدقيق الورقة
            </button>
            <button onclick="buildAndSendExam()" style="background: #10b981; color: white; border: none; padding: 12px 30px; border-radius: 8px; font-size: 16px; font-weight: bold; cursor: pointer; display: flex; align-items: center; gap: 8px; box-shadow: 0 4px 6px rgba(16,185,129,0.3);">
                <i class="fas fa-paper-plane"></i> اعتماد وإرسال للإدارة
            </button>
        </div>
    </div> <!-- إغلاق الكارت -->
</div> <!-- إغلاق قسم new-exam-view بالكامل -->


<!-- ========================================== -->
<!-- 🔴 قسم البث المباشر (تم تنظيفه وهيكلته) 🔴 -->
<!-- ========================================== -->
<div id="live-view" class="view-section" style="display: none;">
    <div class="card">
        <h4><i class="fas fa-broadcast-tower" style="color:red;"></i> <?php echo $lang['live_setup_title']; ?></h4>
        <div style="margin-top: 15px;">
            <input type="text" id="live-title" placeholder="<?php echo $lang['live_title_placeholder']; ?>" class="grade-input" style="width:100%; padding:12px; margin-bottom:15px; border-radius:8px;">
            <input type="text" id="live-link" placeholder="<?php echo $lang['live_link_placeholder']; ?>" class="grade-input" style="width:100%; padding:12px; margin-bottom:15px; border-radius:8px;">
            
            <div style="display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; margin-bottom: 15px;">
                <select id="live-target-level" class="grade-input dynamic-taxonomy-select" data-type="stage" data-filter="false" style="width:80%;">
                    <option value="all">إرسال للجميع</option>
                </select>
                <select id="live-target-track" class="grade-input dynamic-taxonomy-select" data-type="dept" data-filter="false" style="width:80%;">
                    <option value="all">كل الأقسام</option>
                </select>
                <select id="live-target-branch" class="grade-input dynamic-taxonomy-select" data-type="section" data-filter="false" style="width:80%;">
                    <option value="all">كل الشعب</option>
                </select>
            </div>

            <div style="background: #fff5f5; padding: 15px; border-radius: 10px; border: 1px solid #ff000022; margin-bottom: 15px;">
                <label style="display:block; font-size:13px; margin-bottom:10px; font-weight:bold; color: #d63031;">
                    <i class="fas fa-clock"></i> <?php echo $lang['live_start_time']; ?>
                </label>
                <div style="display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px;">
                    <div>
                        <small style="display:block; text-align:center; color: #666;">أيام</small>
                        <input type="number" id="live-days" class="grade-input" style="width:100%;" value="0" min="0">
                    </div>
                    <div>
                        <small style="display:block; text-align:center; color: #666;">ساعات</small>
                        <input type="number" id="live-hours" class="grade-input" style="width:100%;" value="0" min="0" max="23">
                    </div>
                    <div>
                        <small style="display:block; text-align:center; color: #666;">دقائق</small>
                        <input type="number" id="live-minutes" class="grade-input" style="width:100%;" value="0" min="0" max="59">
                    </div>
                </div>
            </div>
            
            <div class="actions-row">
                <a href="live_v2/index.php?tid=<?php echo !empty($url_tid) ? $url_tid : ($_SESSION['teacher_long_id'] ?? ''); ?>" class="dash-btn btn-create-live">
                    <i class="fas fa-chalkboard-teacher"></i> فتح السبورة الذكية
                </a>

                <a href="javascript:void(0);" onclick="openSmartLink('live_room.html?role=1&mode=record')" class="dash-btn btn-record-only">
                    <i class="fas fa-dot-circle"></i> تسجيل الدرس
                </a>

                <button type="button" style="width: 25%; padding: 15px; font-size: 18px; border-radius: 8px; font-weight: bold; border: none; background-color: #f1c40f; color: white; cursor: pointer; transition: 0.3s;" onclick="showNotificationModal()" onmouseover="this.style.opacity='0.8'" onmouseout="this.style.opacity='1'">
                    <i class="fas fa-bell"></i> إرسال إشعارات
                </button>

                <!-- نافذة الإشعارات -->
                <div id="notifyModal" style="display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.6); z-index:9999; justify-content:center; align-items:center;">
                    <div style="background:#fff; width:380px; padding:25px; border-radius:15px; text-align:center; box-shadow:0 10px 25px rgba(0,0,0,0.2);">
                        <h4 style="color:#93003c; margin-bottom:20px; font-weight:bold;"><i class="fas fa-paper-plane"></i> خيارات إرسال الإشعار</h4>
                        
                        <label style="display:flex; align-items:center; gap:10px; background:#f8fafc; padding:15px; border-radius:8px; margin-bottom:10px; cursor:pointer; border:1px solid #e2e8f0;">
                            <input type="checkbox" id="chkPlatform" checked style="width:20px; height:20px; accent-color:#93003c;">
                            <span style="font-weight:bold; color:#1e293b;"><i class="fas fa-globe text-primary"></i> إشعار داخل المنصة للطلاب (وميض)</span>
                        </label>
                        
                        <label style="display:flex; align-items:center; gap:10px; background:#f8fafc; padding:15px; border-radius:8px; margin-bottom:25px; cursor:pointer; border:1px solid #e2e8f0;">
                            <input type="checkbox" id="chkWhatsapp" style="width:20px; height:20px; accent-color:#25D366;">
                            <span style="font-weight:bold; color:#1e293b;"><i class="fab fa-whatsapp" style="color:#25D366; font-size:18px;"></i> رسالة جاهزة لجروب الواتساب</span>
                        </label>

                        <div style="display:flex; gap:10px;">
                            <button onclick="sendLiveNotification()" style="flex:1; background:#2ecc71; color:white; border:none; padding:12px; border-radius:8px; font-weight:bold; cursor:pointer; font-size:16px;">إرسال <i class="fas fa-rocket"></i></button>
                            <button onclick="document.getElementById('notifyModal').style.display='none'" style="background:#e74c3c; color:white; border:none; padding:12px 20px; border-radius:8px; font-weight:bold; cursor:pointer; font-size:16px;">إلغاء</button>
                        </div>
                    </div>
                </div>

                <a href="javascript:void(0);" onclick="openSmartLink('attendance.php')" class="dash-btn btn-attendance">
                    <i class="fas fa-users"></i> الحضور
                </a>
            </div> <!-- إغلاق actions-row -->
        </div> <!-- إغلاق margin-top: 15px -->
    </div> <!-- إغلاق كارت البث الأساسي -->

    <!-- 🚀 قائمة حضور البث المباشر (تم إدخالها داخل القسم لتظهر معه) 🚀 -->
    <div id="attendance-list" style="display:none; margin-top:20px; border-radius:12px; overflow:hidden; border: 1px solid #ddd; background: white; animation: fadeIn 0.4s;">
        <div style="background: #f8f9fa; padding: 15px; border-bottom: 1px solid #eee; display: flex; justify-content: space-between; align-items: center;">
            <h6 style="margin:0;"><i class="fas fa-clipboard-check text-success"></i> سجل استجابة الطلاب (قبول الدعوة)</h6>
        </div>
        <div style="max-height: 250px; overflow-y: auto;">
            <table style="width: 100%; border-collapse: collapse; font-size: 13px;">
                <thead style="background: #eee;">
                    <tr>
                        <th style="padding:10px; text-align:right;">الاسم</th>
                        <th style="padding:10px; text-align:center;">المرحلة</th>
                        <th style="padding:10px; text-align:center;">القسم</th>
                        <th style="padding:10px; text-align:center;">الحالة</th>
                    </tr>
                </thead>
                <tbody id="live-attendance-body">
                    <tr style="border-bottom: 1px solid #f2f2f2;">
                        <td style="padding:10px;">زيدان خالد</td>
                        <td style="padding:10px; text-align:center;">الأول الثانوي</td>
                        <td style="padding:10px; text-align:center;">علمي</td>
                        <td style="padding:10px; text-align:center;"><span style="color:#2ecc71;"><i class="fas fa-check-circle"></i> سأحضر</span></td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div> <!-- إغلاق attendance-list -->

</div> <!-- إغلاق قسم live-view بالكامل -->


    <div id="bank-view" class="view-section" style="display:none;">
    <div class="card" style="background: #fff; border: 1px solid var(--accent); min-height: 500px; box-shadow: 0 4px 15px rgba(0,0,0,0.03); border-radius: 12px;">
        
        <!-- ترويسة البنك -->
        <div style="display: flex; justify-content: space-between; align-items: center; border-bottom: 2px solid #f1f5f9; padding-bottom: 20px; margin-bottom: 25px;">
            <div>
                <h3 style="color: var(--primary); margin: 0; font-weight: 900;"><i class="fas fa-university me-2"></i> بنك الأسئلة وأرشيف الامتحانات</h3>
                <p style="color: #64748b; font-size: 14px; margin: 8px 0 0 0;">هنا يتم حفظ جميع أوراقك الامتحانية. يمكنك استعراضها، طباعتها، أو تعديلها وإعادة إرسالها.</p>
            </div>
            
            <!-- زر النقل الذكي لقسم البناء -->
            <button onclick="document.querySelectorAll('.view-section').forEach(el => el.style.display = 'none'); document.getElementById('new-exam-view').style.display = 'block';" style="background: #3b82f6; color: white; border: none; padding: 10px 20px; border-radius: 8px; font-weight: bold; cursor: pointer; font-size: 15px; box-shadow: 0 4px 10px rgba(59,130,246,0.3); transition: 0.3s;">
                <i class="fas fa-magic me-2"></i> بناء امتحان جديد
            </button>
        </div>

        <!-- جدول الأرشيف الاحترافي -->
        <div class="table-responsive" style="overflow-x: auto;">
            <table class="grade-table" style="width: 100%; border-collapse: separate; border-spacing: 0; text-align: center;">
                <thead style="background: #f8fafc;">
                    <tr>
                        <th style="padding: 15px; color: #1e293b; border-bottom: 2px solid #cbd5e1; font-weight: 900; width: 50px;">#</th>
                        <th style="padding: 15px; color: #1e293b; border-bottom: 2px solid #cbd5e1; font-weight: 900;">عنوان الامتحان والمادة</th>
                        <th style="padding: 15px; color: #1e293b; border-bottom: 2px solid #cbd5e1; font-weight: 900;">تاريخ الإنشاء</th>
                        <th style="padding: 15px; color: #1e293b; border-bottom: 2px solid #cbd5e1; font-weight: 900;">حالة الإدارة</th>
                        <th style="padding: 15px; color: #1e293b; border-bottom: 2px solid #cbd5e1; font-weight: 900; width: 220px;">الإجراءات</th>
                    </tr>
                </thead>
                <!-- هذا الـ ID هو الذي يربط الجدول بقاعدة البيانات -->
                <tbody id="bank-archive-tbody">
                    <tr><td colspan="5" style="padding: 40px; color: #64748b; font-size: 16px;"><i class="fas fa-spinner fa-spin fa-2x mb-3"></i><br>جاري مزامنة بنك الأسئلة...</td></tr>
                </tbody>
            </table>
        </div>

    </div>
</div>

    <div id="plan-view" class="view-section">
    <div class="card" style="margin-bottom: 25px;">
        <h4 style="margin-bottom: 20px;"><i class="fas fa-calendar-alt" style="color: #e11d48;"></i> خطة التدريس الأسبوعية</h4>
        
        <div style="margin-top: 15px;">
            <input type="text" id="planTitle" class="grade-input" style="width: 100%; margin-bottom: 15px; padding: 12px; border-radius: 8px; border: 1px solid #cbd5e1; font-weight: bold;" placeholder="عنوان الخطة أو رقم الأسبوع (مثلاً: خطة الأسبوع الأول - اللغة العربية)">

            <textarea id="planContent" class="grade-input" style="width: 100%; min-height: 150px; padding: 15px; border-radius: 8px; border: 1px solid #cbd5e1; margin-bottom: 15px; line-height: 1.6;" placeholder="اكتب تفاصيل ومحتوى الخطة هنا..."></textarea>

            <div style="display: flex; gap: 10px; margin-bottom: 30px;">
                <button class="btn-action" style="background:#e11d48; width: 100%; font-size: 16px; padding: 12px;" onclick="sendPlanToAdmin(this)">
                    <i class="fas fa-paper-plane"></i> إرسال الخطة للإدارة لاعتمادها
                </button>
            </div>

            <!-- جدول الأرشيف المرتبط بالداتابيز -->
            <h4 style="border-top: 2px dashed #cbd5e1; padding-top: 20px; margin-bottom: 15px; color: #334155;"><i class="fas fa-archive"></i> أرشيف الخطط المرسلة وحالتها</h4>
            <div class="table-responsive" style="overflow-x: auto;">
                <table class="grade-table" style="width: 100%; border-collapse: collapse; text-align: center;">
                    <thead style="background: #f1f5f9; border-bottom: 2px solid #cbd5e1;">
                        <tr>
                            <th style="padding: 12px; color: #1e293b;">عنوان الخطة</th>
                            <th style="padding: 12px; color: #1e293b;">تاريخ الإرسال</th>
                            <th style="padding: 12px; color: #1e293b;">حالة الاعتماد</th>
                            <th style="padding: 12px; color: #1e293b;">الإجراءات</th>
                        </tr>
                    </thead>
                    <tbody id="plans-tbody">
                        <tr><td colspan="4" style="padding: 20px; color: #64748b;"><i class="fas fa-spinner fa-spin"></i> جاري جلب الخطط...</td></tr>
                    </tbody>
                </table>
            </div>
        </div> 
    </div> 
</div>

<div id="schedule-view" class="view-section" style="display:none; animation: fadeIn 0.5s ease;">
    
    <div class="card" style="border-top: 5px solid var(--accent, #6b1437); box-shadow: 0 10px 20px rgba(0,0,0,0.05); border-radius: 15px; margin-bottom: 25px;">
        <h3 style="color: var(--accent, #6b1437); margin-top: 0; display: flex; align-items: center; gap: 10px;">
            <i class="fas fa-calendar-alt" style="font-size: 1.5rem;"></i> <?php echo $lang['schedule_wizard_title']; ?>
        </h3>
        <p style="color: #64748b; font-size: 0.9rem;">قم بتحديد الأبعاد لإنشاء جدول دراسي... (انقر على الحقول العلوية للجدول لكتابة وقت الحصة).</p>
        
        <div style="display: flex; gap: 15px; align-items: flex-end; background: #f8fafc; padding: 20px; border-radius: 12px; flex-wrap: wrap; border: 1px solid #e2e8f0; margin-top: 20px;">
            <div>
                <label style="display: block; margin-bottom: 8px; color: #1e293b; font-weight: bold; font-size: 0.9rem;"><i class="fas fa-arrows-alt-v"></i> عدد الأيام / الأسطر</label>
                <input type="number" id="schedule-rows" value="5" min="1" max="10" style="padding: 10px 15px; border: 1px solid #cbd5e1; border-radius: 8px; width: 120px; text-align: center; font-size: 1.1rem;">
            </div>
            <div>
                <label style="display: block; margin-bottom: 8px; color: #1e293b; font-weight: bold; font-size: 0.9rem;"><i class="fas fa-arrows-alt-h"></i> عدد الحصص / الأعمدة</label>
                <input type="number" id="schedule-cols" value="4" min="1" max="8" style="padding: 10px 15px; border: 1px solid #cbd5e1; border-radius: 8px; width: 120px; text-align: center; font-size: 1.1rem;">
            </div>
            <div>
                <label style="display: block; margin-bottom: 8px; color: #1e293b; font-weight: bold; font-size: 0.9rem;">عنوان الجدول</label>
                <input type="text" id="schedule-title" placeholder="اكتب عنوان الجدول هنا..." style="padding: 10px 15px; border: 1px solid #cbd5e1; border-radius: 8px; width: 250px;">
            </div>
            <button onclick="generateInteractiveTable()" style="background: linear-gradient(135deg, var(--accent, #6b1437), #9b1b4b); color: white; border: none; padding: 12px 25px; border-radius: 8px; font-weight: bold; cursor: pointer; box-shadow: 0 4px 6px rgba(107, 20, 55, 0.3); transition: transform 0.2s;">
                <i class="fas fa-magic"></i> توليد الجدول
            </button>
        </div>
    </div>

    <div id="generated-table-container" class="card" style="display: none; box-shadow: 0 10px 30px rgba(0,0,0,0.08); border-radius: 15px; border: 1px solid #e2e8f0; margin-bottom: 20px; overflow-x: auto;">
    </div>

    <div id="schedule-publish-panel" class="card" style="display: none; background: #fffbfa; border: 1px dashed var(--accent, #6b1437); border-radius: 15px; margin-bottom: 25px; text-align: left;">
        <div style="display: flex; gap: 15px; justify-content: flex-end; flex-wrap: wrap;">
            <button onclick="cancelScheduleDraft()" style="background: #ef4444; color: white; border: none; padding: 12px 20px; border-radius: 8px; font-weight: bold; cursor: pointer; box-shadow: 0 4px 6px rgba(239,68,68,0.2);">
                <i class="fas fa-times"></i> إلغاء وحذف مسودة الجدول
            </button>
            <button onclick="printDraftSchedule()" style="background: #34495e; color: white; border: none; padding: 12px 20px; border-radius: 8px; font-weight: bold; cursor: pointer; box-shadow: 0 4px 6px rgba(0,0,0,0.1);">
                <i class="fas fa-print"></i> طباعة A4
            </button>
            <button onclick="openPublishModal()" style="background: #10b981; color: white; border: none; padding: 12px 30px; border-radius: 8px; font-weight: bold; cursor: pointer; box-shadow: 0 4px 6px rgba(16, 185, 129, 0.3);">
                <i class="fas fa-share-square"></i> تحديد المستهدفين والنشر
            </button>
        </div>
    </div>

    <div class="card" style="border-radius: 15px;">
        <h4 style="color: #1e293b; margin-top: 0; margin-bottom: 20px;"><i class="fas fa-history text-primary"></i> الجداول والمواعيد السابقة</h4>
        <div class="table-responsive">
            <table class="grade-table" style="width: 100%;">
                <thead style="background: #f1f5f9;">
                    <tr>
                        <th style="padding: 12px; border-bottom: 2px solid #e2e8f0;">عنوان الجدول</th>
                        <th style="padding: 12px; border-bottom: 2px solid #e2e8f0;">المستهدفون</th>
                        <th style="padding: 12px; border-bottom: 2px solid #e2e8f0;">تاريخ النشر</th>
                        <th style="padding: 12px; border-bottom: 2px solid #e2e8f0; text-align: center;">إجراءات</th>
                    </tr>
                </thead>
                <tbody id="schedules-archive-body">
                    </tbody>
            </table>
        </div>
    </div>
</div>

<div id="publishScheduleModal" style="display:none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(15, 23, 42, 0.8); z-index: 10000; justify-content: center; align-items: center; backdrop-filter: blur(5px);">
    <div class="card" style="width: 90%; max-width: 500px; background: white; padding: 30px; border-radius: 20px; position: relative; box-shadow: 0 25px 50px rgba(0,0,0,0.3); overflow: visible;">
        <span onclick="closePublishModal()" style="position: absolute; left: 20px; top: 20px; font-size: 28px; cursor: pointer; color: #94a3b8; transition: 0.3s;" onmouseover="this.style.color='#ef4444'">&times;</span>
        
        <h3 style="color: var(--accent, #6b1437); margin-top: 0; border-bottom: 2px solid #f1f5f9; padding-bottom: 15px; margin-bottom: 20px;">
            <i class="fas fa-bullseye"></i> تحديد الفئات المستهدفة
        </h3>
        
        <div style="display: flex; flex-direction: column; gap: 15px;">
            <div>
                <label style="font-weight: bold; font-size: 13px; margin-bottom: 5px; display: block;">المرحلة الدراسية:</label>
                <select id="modal-sch-stage" class="grade-input dynamic-taxonomy-select" data-type="stage" data-filter="true" style="width: 100%;">
    <option value="all">كل المراحل</option>
</select>
            </div>
            <div style="display: flex; gap: 15px;">
                <div style="flex: 1;">
                    <label style="font-weight: bold; font-size: 13px; margin-bottom: 5px; display: block;">القسم / المسار:</label>
                    <select id="modal-sch-dept" class="grade-input dynamic-taxonomy-select" data-type="dept" data-filter="true" style="width: 100%;">
    <option value="all">كل الأقسام</option>
</select>
                </div>
                <div style="flex: 1;">
                    <label style="font-weight: bold; font-size: 13px; margin-bottom: 5px; display: block;">الشعبة:</label>
                    <select id="modal-sch-branch" class="grade-input dynamic-taxonomy-select" data-type="section" data-filter="true" style="width: 100%;">
    <option value="all">كل الشعب</option>
</select>
                </div>
            </div>
            
            <div style="position: relative;">
                <label style="font-weight: bold; font-size: 13px; margin-bottom: 5px; display: block;">طالب محدد (اختياري):</label>
                <div id="sch-student-dropdown-btn" class="grade-input" style="width: 100%; padding: 10px; background: white; border: 1px solid #cbd5e1; border-radius: 8px; cursor: pointer; display: flex; justify-content: space-between; align-items: center;" onclick="toggleSchStudentList()">
                    <span id="sch-student-dropdown-text">إرسال لجميع الطلاب المحددين أعلاه</span>
                    <i class="fas fa-chevron-down text-muted"></i>
                </div>
                
                <div id="sch-student-checkbox-list" style="display: none; position: absolute; top: 100%; left: 0; right: 0; background: white; border: 1px solid #cbd5e1; border-radius: 8px; margin-top: 5px; max-height: 200px; overflow-y: auto; z-index: 1000; box-shadow: 0 10px 25px rgba(0,0,0,0.1);">
                    <div style="padding: 10px; border-bottom: 1px solid #f1f5f9;">
                        <input type="text" id="sch-student-search" placeholder="بحث عن طالب..." style="width: 100%; padding: 5px; border: 1px solid #e2e8f0; border-radius: 5px; font-size: 12px;" onkeyup="filterSchStudentList()">
                    </div>
                    <div id="sch-students-container" style="padding: 5px 0;">
                        <div style="padding: 10px; text-align: center; color: #94a3b8; font-size: 12px;">جاري جلب الطلاب...</div>
                    </div>
                </div>
            </div>

        </div>
        
        <button onclick="confirmAndSaveSchedule()" style="width: 100%; margin-top: 25px; padding: 15px; background: #10b981; color: white; border: none; border-radius: 10px; font-size: 16px; font-weight: bold; cursor: pointer; box-shadow: 0 4px 15px rgba(16,185,129,0.3);">
            <i class="fas fa-check-circle"></i> اعتماد النشر والحفظ بالأرشيف
        </button>
    </div>
</div>
 
 
            
<div id="viewScheduleModal" style="display:none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.8); z-index: 10000; justify-content: center; align-items: center;">
    <div class="card" style="width: 95%; max-width: 900px; background: white; padding: 25px; border-radius: 15px; position: relative;">
        <span onclick="document.getElementById('viewScheduleModal').style.display='none'" style="position: absolute; left: 20px; top: 15px; font-size: 30px; cursor: pointer; color: #e74c3c;">&times;</span>
        <h3 id="view-sch-title" style="color: var(--accent, #6b1437); margin-top: 0; text-align: center; border-bottom: 2px solid #eee; padding-bottom: 10px;">معاينة الجدول</h3>
        <div id="view-sch-content" style="margin-top: 20px; overflow-x: auto;"></div>
    </div>
</div>
<div id="settings-view" class="view-section" style="display: none;">
    <?php include 'teacher_settings.php'; ?>
</div>

<!-- ========================================== -->
        <!-- 🚀 قسم الجدول الدراسي الخاص بالمدرس 🚀 -->
        <!-- ========================================== -->
        <div id="tab-schedule" class="section-container tab-content" style="display: none; animation: fadeIn 0.4s;">
            <div style="background-color: #ffffff; padding: 25px; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); margin-top: 20px;">
                
                <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 25px; border-bottom: 2px solid #f3f4f6; padding-bottom: 15px;">
                    <h2 style="font-size: 1.5rem; font-weight: bold; margin: 0; color: #1e293b;">
                        <i class="fas fa-calendar-alt" style="color: #ff4d79; margin-left: 10px;"></i> جدولي الدراسي
                    </h2>
                    <button onclick="printTeacherSchedule()" style="background: #ff4d79; color: #fff; border: none; padding: 10px 20px; border-radius: 8px; font-weight: bold; cursor: pointer; transition: 0.3s;" onmouseover="this.style.background='#e03e65'" onmouseout="this.style.background='#ff4d79'">
                        <i class="fas fa-print"></i> طباعة الجدول
                    </button>
                </div>

                <?php
                $current_school_name = isset($_SESSION['school_name']) ? $conn->real_escape_string($_SESSION['school_name']) : '';
                $my_teacher_id = isset($_SESSION['teacher_id']) ? $conn->real_escape_string($_SESSION['teacher_id']) : '';
                
                $t_name_query = @$conn->query("SELECT teacher_name, display_name FROM teachers WHERE id = '$my_teacher_id' OR teacher_name = '$my_teacher_id' LIMIT 1");
                $t_real_name = '';
                $t_display_name = '';
                
                if($t_name_query && $t_name_query->num_rows > 0){
                    $t_row = $t_name_query->fetch_assoc();
                    $t_real_name = trim($t_row['teacher_name']);
                    $t_display_name = trim($t_row['display_name']);
                }

                $my_schedule_matrix = [];
                $days = ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس'];
                $has_published_schedule = false;

                $q_sched = "SELECT * FROM generated_schedules 
                            WHERE school_name = '$current_school_name' 
                            AND is_published = 1 
                            AND (TRIM(teacher_name) = '$t_real_name' OR TRIM(teacher_name) = '$t_display_name')";
                
                $res_sched = @$conn->query($q_sched);
                
                if ($res_sched && $res_sched->num_rows > 0) {
                    $has_published_schedule = true;
                    while($row = $res_sched->fetch_assoc()) {
                        $p_num = (int)$row['period_number'];
                        
                        $day_db = str_replace(['أ', 'إ', 'آ', 'ة'], ['ا', 'ا', 'ا', 'ه'], trim($row['day_of_week']));
                        if (strpos($day_db, 'احد') !== false) $day_key = 'الأحد';
                        elseif (strpos($day_db, 'اثنين') !== false) $day_key = 'الاثنين';
                        elseif (strpos($day_db, 'ثلاثاء') !== false) $day_key = 'الثلاثاء';
                        elseif (strpos($day_db, 'اربعاء') !== false) $day_key = 'الأربعاء';
                        elseif (strpos($day_db, 'خميس') !== false) $day_key = 'الخميس';
                        else $day_key = trim($row['day_of_week']);

                        $my_schedule_matrix[$day_key][$p_num] = $row;
                    }
                }
                ?>

<!-- منطقة الطباعة المخصصة -->
                <div id="printable-teacher-schedule">
                    
                    <div style="background: #fff1f2; border: 1px dashed #ff4d79; padding: 15px; border-radius: 12px; margin-bottom: 20px; color: #9f1239; font-weight: bold; display: inline-block;">
                        <i class="fas fa-info-circle"></i> يتم عرض الحصص المخصصة للأستاذ: <?= htmlspecialchars($t_display_name ?: $t_real_name) ?>
                    </div>

                    <?php if(!$has_published_schedule): ?>
                        <div style="background: #f8fafc; border: 1px dashed #cbd5e1; border-radius: 15px; padding: 40px; text-align: center; margin-top: 10px;">
                            <i class="fas fa-calendar-times" style="font-size: 4rem; color: #94a3b8; margin-bottom: 15px;"></i>
                            <h3 style="color: #334155; font-size: 1.5rem; margin-bottom: 10px;">لا يوجد جدول حالياً</h3>
                            <p style="color: #64748b;">لم تقم الإدارة بإسناد أو نشر أي حصص دراسية لك حتى الآن.</p>
                        </div>
                    <?php else: ?>
                        <div style="overflow-x: auto; border-radius: 8px; border: 1px solid #cbd5e1;">
                            <table style="width: 100%; border-collapse: collapse; text-align: center; font-family: 'Tajawal', sans-serif; background: #fff;">
                                <thead>
                                    <tr style="background-color: #f1f5f9; color: #1e293b; font-size: 1.1rem; font-weight: bold;">
                                        <th style="padding: 15px; border: 1px solid #cbd5e1; width: 14%;">اليوم / الحصة</th>
                                        <?php for($i=1; $i<=6; $i++): ?>
                                        <th style="padding: 15px; border: 1px solid #cbd5e1; width: 14%;">الحصة <?= $i ?></th>
                                        <?php endfor; ?>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php foreach($days as $day): ?>
                                        <tr style="transition: 0.2s;" onmouseover="this.style.background='#fcfcfc'" onmouseout="this.style.background='transparent'">
                                            <td style="padding: 15px; font-weight: bold; color: #ff4d79; background: #fff1f2; border: 1px solid #cbd5e1;"><?= $day ?></td>
                                            <?php for($p=1; $p<=6; $p++): ?>
                                                <td style="padding: 15px; border: 1px solid #cbd5e1; vertical-align: top;">
                                                    <?php if(isset($my_schedule_matrix[$day][$p])): 
                                                        $cell = $my_schedule_matrix[$day][$p]; 
                                                    ?>
                                                        <div style="font-weight: bold; font-size: 1.2rem; color: #ff4d79; margin-bottom: 5px;"><?= htmlspecialchars($cell['subject_name']) ?></div>
                                                        <div style="font-size: 0.85rem; color: #475569; font-weight: bold; background: #f1f5f9; padding: 4px; border-radius: 4px; display: inline-block;">
                                                            <?= htmlspecialchars(trim($cell['stage_name'])) ?> 
                                                            <?= !empty($cell['department_name']) ? '<br><span style="color:#94a3b8; font-size:0.75rem;">' . htmlspecialchars(trim($cell['department_name'])) . '</span>' : '' ?>
                                                            <?= !empty($cell['section_name']) ? '<span style="color:#94a3b8; font-size:0.75rem;"> - شعبة ' . htmlspecialchars(trim($cell['section_name'])) . '</span>' : '' ?>
                                                        </div>
                                                    <?php else: ?>
                                                        <span style="color: #cbd5e1; font-size: 1.2rem;">---</span>
                                                    <?php endif; ?>
                                                </td>
                                            <?php endfor; ?>
                                        </tr>
                                    <?php endforeach; ?>
                                </tbody>
                            </table>
                        </div>
                    <?php endif; ?>
                </div> <!-- نهاية منطقة الطباعة -->

            </div> <!-- نهاية الخلفية البيضاء -->
        </div> <!-- نهاية tab-schedule -->

    <!-- إغلاق منطقة الـ Main Content الرئيسية -->
    </main>
    <script>
        function printTeacherSchedule() {
            var printContents = document.getElementById('printable-teacher-schedule').innerHTML;
            var schoolName = "<?= htmlspecialchars($current_school_name) ?>";
            
            var printWindow = window.open('', '', 'height=600,width=1000');
            printWindow.document.write('<html dir="rtl"><head><title>طباعة الجدول الأسبوعي</title>');
            
            // إضافة التنسيقات الخاصة بالطباعة فقط
            printWindow.document.write('<style>');
            printWindow.document.write('@import url("https://fonts.googleapis.com/css2?family=Tajawal:wght@400;700;900&display=swap");');
            printWindow.document.write('body { font-family: "Tajawal", sans-serif; padding: 20px; color: #000; }');
            printWindow.document.write('h2.print-title { text-align: center; color: #1e293b; margin-bottom: 20px; font-weight: 900; }');
            printWindow.document.write('table { width: 100%; border-collapse: collapse; text-align: center; margin-top: 15px; }');
            printWindow.document.write('th, td { border: 2px solid #000; padding: 12px; }');
            printWindow.document.write('th { background-color: #f1f5f9 !important; font-weight: bold; font-size: 1.2rem; -webkit-print-color-adjust: exact; }');
            printWindow.document.write('td { font-size: 1.1rem; }');
            printWindow.document.write('.text-primary { color: #ff4d79 !important; font-weight: bold; }');
            printWindow.document.write('.info-box { background: #f8fafc !important; border: 2px dashed #000; padding: 15px; text-align: center; font-size: 1.2rem; font-weight: bold; margin-bottom: 20px; -webkit-print-color-adjust: exact; }');
            printWindow.document.write('@page { size: landscape; margin: 1cm; }'); // إجبار الطباعة بالعرض
            printWindow.document.write('</style>');
            
            printWindow.document.write('</head><body>');
            printWindow.document.write('<h2 class="print-title">الجدول الدراسي - ' + schoolName + '</h2>');
            
            // تنظيف محتوى الطباعة من تأثيرات الهوفر وغيرها
            let cleanContents = printContents.replace(/style="[^"]*"/g, ''); 
            
            // استبدال كلاسات و ألوان الطباعة بدلاً من العرض
            cleanContents = cleanContents.replace(/<div[^>]*>.*?يتم عرض الحصص.*?<\/div>/, '<div class="info-box">يتم عرض الحصص المخصصة للأستاذ: <?= htmlspecialchars($t_display_name ?: $t_real_name) ?></div>');
            
            printWindow.document.write(cleanContents);
            printWindow.document.write('</body></html>');
            
            printWindow.document.close();
            printWindow.focus();
            
            setTimeout(function() {
                printWindow.print();
                printWindow.close();
            }, 500);
        }
        </script>
        

<script>
document.addEventListener('input', function(e) {
    // يلتقط أي نص تكتبه في مربعات النص ويحفظه كعنوان للدرس
    if (e.target.tagName === 'INPUT' && e.target.type === 'text') {
        localStorage.setItem('roozmari_lesson_title', e.target.value);
    }
});
// 1. حفظ اسم ومعرف المدرس تلقائياً بمجرد فتح الصفحة (بدون انتظار ضغطة زر)
(function() {
    let currentUrl = decodeURIComponent(window.location.pathname);
    let match = currentUrl.match(/teacher_(\d+)_(.*?)\.php/);
    if (match) {
        localStorage.setItem('roozmari_teacher_id', match[1]);
        localStorage.setItem('roozmari_teacher_name', match[2].replace(/_/g, ' '));
    }
})();

// 2. الرادار الذي يلتقط عنوان الدرس (مثل: اهلا وسهلا) بمجرد كتابته ويحفظه للبث
document.addEventListener('input', function(e) {
    if (e.target.tagName === 'INPUT' && e.target.type === 'text') {
        localStorage.setItem('roozmari_lesson_title', e.target.value);
    }
});
</script>
<script src="https://unpkg.com/peerjs@1.4.7/dist/peerjs.min.js"></script>

<script src="live-connection.js"></script>

<script>
function openSmartLink(baseUrl) {
    let tName = 'مدرس غير معروف';
    let tId = '0';
    
    // 1. استخراج المعرف والاسم من الرابط
    let currentUrl = decodeURIComponent(window.location.pathname);
    let match = currentUrl.match(/teacher_(\d+)_(.*?)\.php/);
    
    if (match) {
        tId = match[1];
        tName = match[2].replace(/_/g, ' '); 
    } 
    
    // 2. سحب عنوان الدرس وحفظه
    let lessonTitleInput = document.querySelector('input[placeholder="اهلا وسهلا"]') || document.querySelector('input[placeholder="عنوان الدرس"]');
    if (lessonTitleInput && lessonTitleInput.value) {
        localStorage.setItem('roozmari_lesson_title', lessonTitleInput.value);
    }
    
    // 3. حفظ البيانات في الذاكرة
    localStorage.setItem('roozmari_teacher_id', tId);
    localStorage.setItem('roozmari_teacher_name', tName);
    
    // 4. الانتقال للغرفة بمسارها الأصلي (لتجنب خطأ 404)
    window.location.href = baseUrl;
}
</script>
<script>

let demoStudents = [
    {id: 1, name: "زيدان خالد", month: 18, activity: 9, absentDates: [], note: "بانتظار تقييمك"},
    {id: 2, name: "عمر الفاروق", month: 15, activity: 8, absentDates: [], note: "بانتظار تقييمك"},
    {id: 3, name: "سارة الأحمد", month: 19, activity: 10, absentDates: [], note: "بانتظار تقييمك"},
    {id: 4, name: "عبد الله محمود", month: 20, activity: 10, absentDates: [], note: "بانتظار تقييمك"}
];
// استرجاع البيانات من ذاكرة المتصفح عند فتح الصفحة، أو إنشاء مصفوفة فارغة إذا لم توجد بيانات
let questionsList = [];
try {
    const savedData = localStorage.getItem('myQuestionsBank');
    if (savedData) {
        questionsList = JSON.parse(savedData);
    }
} catch (e) {
    console.warn("فشل استعادة بنك الأسئلة، تم البدء بمصفوفة فارغة");
    questionsList = [];
}

// ==========================================
// المحرك الموحد والوحيد للتنقل
// ==========================================

// المحرك الموحد والوحيد للتنقل (تم التحديث لإخفاء جميع الأقسام بقوة)
function showSection(id) {
    try {
        // 1. إخفاء كل الأقسام فوراً مهما كان الكلاس الخاص بها
        const allSections = document.querySelectorAll('.view-section, .section-container, .tab-content');
        allSections.forEach(s => {
            s.style.display = 'none';
            s.classList.remove('active');
        });

        // 2. إزالة لون التفعيل من جميع أزرار القائمة الجانبية
        document.querySelectorAll('.menu-item, .submenu a').forEach(item => {
            item.classList.remove('active');
        });

        // 3. إظهار القسم المطلوب
        const target = document.getElementById(id);
        if (target) {
            target.style.display = 'block';
            target.classList.add('active');

            // 4. تشغيل جلب البيانات لكل قسم (لحل مشكلة اختفاء البيانات)
            if (id === 'students-manage-view' && typeof loadTeacherStudents === 'function') {
                loadTeacherStudents(); // 👈 غيرناها للدالة الجديدة الذكية
            }
            if (id === 'students-eval-view' && typeof renderEvalStudentsTable === 'function') {
                renderEvalStudentsTable();
            }
            if (id === 'grades-view' && typeof initData === 'function') {
                initData();
            }
            if (id === 'archive-view' && typeof syncLessonsArchive === 'function') {
                syncLessonsArchive();
            }
            if (id === 'schedule-view' && typeof syncSchedulesArchive === 'function') {
                syncSchedulesArchive();
            }

            window.scrollTo(0, 0);
        }

        // 5. تفعيل لون الزر الذي تم ضغطه في القائمة
        if (event && event.currentTarget) {
            event.currentTarget.classList.add('active');
        } else {
            const targetBtn = document.querySelector(`[onclick*="${id}"]`);
            if(targetBtn) targetBtn.classList.add('active');
        }

    } catch (error) {
        console.error("خطأ في التنقل:", error);
    }
}

function toggleMenu(el) { 
    if (el && el.parentElement) {
        el.parentElement.classList.toggle('open'); 
    }
}

async function initData() {
    try {
        const syncTable = document.getElementById('students-table-sync');
        const editTable = document.getElementById('grades-table-edit');
        const teacherSlug = document.getElementById('static_slug') ? document.getElementById('static_slug').value : '';

        if (syncTable) syncTable.innerHTML = '<tr><td colspan="5" style="text-align:center;"><i class="fas fa-spinner fa-spin"></i> جاري المزامنة...</td></tr>';
        if (editTable) editTable.innerHTML = '<tr><td colspan="5" style="text-align:center;"><i class="fas fa-spinner fa-spin"></i> جاري المزامنة...</td></tr>';

        const response = await fetch(`eval_sync.php?teacher=${teacherSlug}`);
        const result = await response.json();

        if (result.status === 'success') {
            const students = result.data;

            // جدول العرض والمتابعة (مع خاصية مرور الماوس على الغياب)
            if (syncTable) {
                syncTable.innerHTML = students.map(st => `
                    <tr>
                        <td style="font-weight:bold;">${st.student_name}</td>
                        <td>${st.month_grade || 0}</td>
                        <td>${st.success_rate || 0}%</td>
                        <td title="تواريخ الغياب:\n${st.absence_dates ? st.absence_dates : 'لا توجد غيابات سجلت'}" style="color:#ef4444; font-weight:bold; cursor:help; text-decoration: underline dotted;">
                            ${st.absence_days || 0} يوم
                        </td>
                        <td>${st.teacher_note || '---'}</td>
                    </tr>`).join('');
            }
            
            // جدول التعديل (مع زر 📅 لإضافة تاريخ غياب جديد للنافذة المنبثقة)
            if (editTable) {
                editTable.innerHTML = students.map(st => `
                    <tr>
                        <td style="font-weight:bold;">
                            <a href="student_profile.php?id=${st.student_id}" target="_blank" style="text-decoration:none; color:inherit;">
                                ${st.student_name}
                            </a>
                        </td>
                        <td><input type="number" class="grade-input" id="m_${st.student_id}" value="${st.month_grade || ''}" placeholder="الدرجة"></td>
                        <td><input type="number" class="grade-input" id="a_${st.student_id}" value="${st.success_rate || ''}" placeholder="النسبة"></td>
                        
                        <td style="display:flex; justify-content:center; align-items:center; gap:5px; border:none; margin-top: 5px;">
                            <input type="number" class="grade-input" id="ab_${st.student_id}" value="${st.absence_days || ''}" placeholder="أيام" style="width: 60px; text-align: center;">
                            <button onclick="if(typeof addAbsenceDate === 'function') addAbsenceDate('${st.student_id}')" style="background:#ef4444; color:white; border:none; border-radius:4px; padding:8px 10px; cursor:pointer;" title="إضافة تاريخ غياب جديد">
                                <i class="far fa-calendar-plus"></i>
                            </button>
                        </td>
                        
                        <td><input type="text" id="n_${st.student_id}" value="${st.teacher_note || ''}" class="grade-input" placeholder="ملاحظات المدرس"></td>
                    </tr>`).join('');
            }
        } else {
            console.error("خطأ من السيرفر:", result.message);
        }
    } catch (e) {
        console.error("خطأ في المزامنة:", e);
    }
}
async function saveAdvancedGrades(btnElement) {
    // 1. تغيير شكل الزر ليظهر أنه قيد التحميل
    const originalText = btnElement.innerHTML;
    btnElement.innerHTML = '<i class="fas fa-spinner fa-spin"></i> جاري الحفظ...';
    btnElement.disabled = true;

    try {
        const updates = [];
        // جلب نوع التقييم من حقل الفصل/التقييم
        const termSelect = document.getElementById('termSelect');
        const evaluationType = termSelect ? termSelect.value : 'تقييم عام';

        // 2. جلب جميع حقول "التقييم" لمعرفة أرقام الطلاب المعروضين
        const monthInputs = document.querySelectorAll('input[id^="m_"]');
        
        monthInputs.forEach(input => {
            const studentId = input.id.split('_')[1]; // استخراج معرف الطالب
            
            // جلب القيم من باقي الحقول الخاصة بنفس الطالب
            const monthGrade = input.value;
            const successRate = document.getElementById(`a_${studentId}`) ? document.getElementById(`a_${studentId}`).value : 0;
            const absenceDays = document.getElementById(`ab_${studentId}`) ? document.getElementById(`ab_${studentId}`).value : 0;
            const note = document.getElementById(`n_${studentId}`) ? document.getElementById(`n_${studentId}`).value : '';

            updates.push({
                student_id: studentId,
                month_grade: monthGrade,
                success_rate: successRate, // أصبح يمثل درجة النشاط الآن
                absence_days: absenceDays,
                teacher_note: note,
                evaluation_type: evaluationType // اللمسة السحرية: إرسال نوع التقييم للسيرفر
            });
        });

        if(updates.length === 0) {
            alert("لا يوجد بيانات لحفظها.");
            btnElement.innerHTML = originalText;
            btnElement.disabled = false;
            return;
        }

        // 3. إرسال البيانات إلى ملف PHP الموحد (يجب أن نتأكد أن eval_sync.php يستقبل evaluation_type)
        const response = await fetch('eval_sync.php', {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify({ updates: updates })
        });

        const result = await response.json();

        if (result.status === 'success') {
            alert("✅ تم حفظ واعتماد جميع الدرجات والتقييمات بنجاح!");
        } else {
            alert("❌ حدث خطأ أثناء الحفظ: " + result.message);
        }

    } catch (error) {
        console.error("خطأ في حفظ الدرجات:", error);
        alert("❌ تعذر الاتصال بقاعدة البيانات. يرجى المحاولة لاحقاً.");
    }

    // 4. إعادة الزر لحالته الطبيعية
    btnElement.innerHTML = originalText;
    btnElement.disabled = false;
}

function updateQuestionUI(type) {
    const preview = document.getElementById('preview-zone');
    const mcSetup = document.getElementById('mc_options_setup');
    if(mcSetup) mcSetup.style.display = (type === 'mc') ? 'block' : 'none';

    if (type === 'tf') {
        preview.innerHTML = `<label><input type="radio" name="tf"> صح</label> <label><input type="radio" name="tf"> خطأ</label>`;
    } else if (type === 'mc') {
        let num = document.getElementById('opts_count').value || 4;
        let html = '';
        for(let i=1; i<=num; i++) html += `<div style="display:flex; gap:5px; margin-bottom:5px;"><input type="radio" name="correct"><input type="text" class="grade-input" style="width:100%" placeholder="خيار ${i}"></div>`;
        preview.innerHTML = html;
    } else {
        preview.innerHTML = `<p class="text-muted">واجهة السؤال جاهزة</p>`;
    }
}

function addNewQuestionToQueue() {
    const titleEl = document.getElementById('exam-title');
    const qTextEl = document.getElementById('mainQuestionInput');
    const qTypeEl = document.getElementById('qTypeSelector');
    const catEl = document.getElementById('exam-category');

    // تأمين: إذا لم تكن في قسم الأسئلة، اخرج ولا تعطل السكربت
    if (!titleEl || !qTextEl) return;

    if (!titleEl.value || !qTextEl.value) {
        alert("يا عمار، يرجى كتابة العنوان ونص السؤال!");
        return;
    }

    const newQuestion = {
        title: titleEl.value,
        category: catEl ? catEl.value : '',
        text: qTextEl.value,
        answerType: qTypeEl.options[qTypeEl.selectedIndex].text,
        typeVal: qTypeEl.value
    };

    questionsList.push(newQuestion);
    
    // --- هذا هو السطر المسؤول عن الحفظ في بنك الأسئلة الدائم ---
    localStorage.setItem('myQuestionsBank', JSON.stringify(questionsList));
    
    updateQueueUI();
    qTextEl.value = ''; // تصفير حقل السؤال فقط
}

function updateQueueUI() {
    const tbody = document.getElementById('questions-table-body');
    const container = document.getElementById('questions-queue-container');
    
    // إذا لم يجد الجدول (لأنك في الأرشيف أو قسم آخر) يخرج بسلام ولا يعطل السكريبت
    if (!tbody || !container) return; 

    tbody.innerHTML = ''; 
    container.style.display = (questionsList.length > 0) ? 'block' : 'none';

    questionsList.forEach((q, index) => {
        tbody.innerHTML += `
            <tr style="border-bottom: 1px solid #eee;">
                <td style="text-align:center; padding:12px;">
                    <input type="checkbox" class="print-selector" value="${index}" checked>
                </td>
                <td style="text-align:right; padding:12px; font-weight:bold;">${q.title || ''}</td>
                <td style="text-align:right; padding:12px;">${q.text || ''}</td>
                <td style="text-align:center; padding:12px;">
                    <span style="background:#eef2ff; color:#4f46e5; padding:4px 8px; border-radius:6px; font-size:11px;">
                        ${q.category || ''}
                    </span>
                </td>
                <td style="text-align:center; padding:12px;">
                    <span style="background:#555; color:white; padding:3px 8px; border-radius:4px; font-size:11px;">
                        ${q.answerType || 'نصي'}
                    </span>
                </td>
                <td style="text-align:center; padding:12px;">
                    <div style="display:flex; justify-content:center; gap:8px;">
                        <i class="fas fa-eye text-success" style="cursor:pointer;" onclick="previewForStudent(${index})"></i>
                        <i class="fas fa-edit text-primary" style="cursor:pointer;" onclick="editQuestion(${index})"></i>
                        <i class="fas fa-trash text-danger" style="cursor:pointer;" onclick="removeQuestion(${index})"></i>
                    </div>
                </td>
            </tr>`;
    });
}


function addAbsenceDate(id, date) {
    let st = demoStudents.find(s => s.id === id);
    if(st && !st.absentDates.includes(date)) {
        st.absentDates.push(date);
        initData();
    }
}

function showAbsenceHistory(id) {
    let st = demoStudents.find(s => s.id === id);
    alert(st.absentDates.length > 0 ? st.absentDates.join('\n') : "لا غياب");
}

function saveGrades() {
    demoStudents.forEach(st => {
        st.month = document.getElementById(`m_${st.id}`).value;
        st.activity = document.getElementById(`a_${st.id}`).value;
        st.note = document.getElementById(`n_${st.id}`).value;
    });
    initData();
    alert('تم الحفظ بنجاح');
}

initData();
// وظيفة المعاينة (العين) - تظهر كيف يرى الطالب السؤال
function previewForStudent(index) {
    const q = questionsList[index];
    let layout = "";
    if(q.typeVal === 'tf') layout = "\n( ) صح \n( ) خطأ";
    else if(q.typeVal === 'mc') layout = "\n( ) الخيار الأول \n( ) الخيار الثاني...";
    else layout = "\n..................................";

    alert(`📋 معاينة السؤال للطالب:\n\nالسؤال: ${q.text}\nالنوع: ${q.typeText}\n${layout}`);
}

// وظيفة التعديل (القلم) - تعيد السؤال للحقول للتصحيح
function editQuestion(index) {
    const q = questionsList[index];
    if (q) {
        // يجلب بيانات السؤال للحقول في الأعلى
        document.getElementById('mainQuestionInput').value = q.text || '';
        // يظهر الرسالة الخاصة بالأسئلة فقط هنا
        alert("تم جلب بيانات السؤال للتعديل في الأعلى");
        window.scrollTo(0, 0); 
    }
}

// وظيفة الحذف (السلة)
function removeQuestion(index) {
    if (confirm("هل أنت متأكد من حذف هذا السؤال من بنك الأسئلة؟")) {
        questionsList.splice(index, 1); // حذف من المصفوفة
        
        // تحديث الذاكرة الدائمة بعد الحذف
        localStorage.setItem('myQuestionsBank', JSON.stringify(questionsList));
        
        updateQueueUI();
    }
}
// وظيفة نشر الامتحان النهائي
function publishAllQuestions() {
    if(questionsList.length === 0) {
        alert("لا يوجد أسئلة لنشرها!");
        return;
    }
    alert(`🚀 تم بنجاح نشر الامتحان المكون من (${questionsList.length}) أسئلة لجميع الطلاب.`);
}
function toggleAttendance() {
    const list = document.getElementById('attendance-list');
    // تبديل الظهور (إخفاء/إظهار)
    if (list.style.display === 'none' || list.style.display === '') {
        list.style.display = 'block';
    } else {
        list.style.display = 'none';
    }
}
function scheduleLiveStream() {
    const title = document.getElementById('live-title').value;
    const days = parseInt(document.getElementById('live-days').value) || 0;
    const hours = parseInt(document.getElementById('live-hours').value) || 0;
    const minutes = parseInt(document.getElementById('live-minutes').value) || 0;

    if (!title || (days === 0 && hours === 0 && minutes === 0)) {
        alert("يا عمار، يرجى إدخال عنوان البث وتحديد الوقت (أيام أو ساعات أو دقائق)!");
        return;
    }

    // حساب الوقت الإجمالي بالدقائق لإدارة التنبيهات
    const totalMinutes = (days * 1440) + (hours * 60) + minutes;

    alert(`✅ تم جدولة البث: "${title}"
⏰ سيبدأ بعد: ${days} يوم و ${hours} ساعة و ${minutes} دقيقة.

📢 سيتم إرسال إشعار الآن للطلاب.
🔔 تنبيهات تلقائية مبرمجة: (قبل ساعة، 30 دقيقة، و5 دقائق).`);

    // هنا يتم استدعاء وظيفة الخلفية لإرسال الإشعارات بناءً على totalMinutes
    console.log("إجمالي وقت الانتظار بالدقائق:", totalMinutes);
}
// 1. وظائف محرر النصوص
// 1. استبدل/أضف دوال المحرر
function execCmd(cmd) { document.execCommand(cmd, false, null); }
function execParamCmd(cmd, param) { document.execCommand(cmd, false, param); }
function insertSymbol(symbol) { 
    document.getElementById('editor').focus(); 
    document.execCommand('insertText', false, symbol); 
}

// 2. استبدل دالة الرفع
window.handleFileUpload = function(type) {
    const fileInput = document.createElement('input');
    fileInput.type = 'file';
    
    fileInput.onchange = (e) => {
        const file = e.target.files[0];
        if (file) {
            if (type === 'video') {
                window.actualVideoFile = file; // تخزين الملف للرفع
                document.getElementById('video-status').innerText = "✅ تم إرفاق الفيديو";
                document.getElementById('video-status').style.color = "#27ae60";
            } else {
                window.actualDocFile = file; // تخزين الملف للرفع
                document.getElementById('file-status').innerText = "✅ تم إرفاق الملف";
                document.getElementById('file-status').style.color = "#27ae60";
            }
        }
    };
    fileInput.click();
};

// ==========================================
// حماية المتغيرات العامة لكي لا تتضارب مع أكوادك الأخرى
// ==========================================
const myStudentsList = [
    { name: "زيدان خالد", stage: "الأول الثانوي", section: "أ", monthGrade: 18, activity: 9, absence: 0, rating: "بانتظار تقييمك" }
];

// ==========================================
// 1. دالة النشر (المدمجة والآمنة)
// ==========================================
// ==========================================
// دالة النشر الاحترافية (مزامنة DB + أرشيف محلي)
// ==========================================
async function publishLessonWithTargets() {
    // 1. جمع البيانات من الواجهة
    const titleInput = document.querySelector('input[placeholder*="عنوان الدرس"]');
    const editor = document.getElementById('editor') || document.querySelector('.rich-text-editor');
    const title = titleInput ? titleInput.value.trim() : "";
    const content = editor ? editor.innerHTML : "";

    // جلب المستهدفين
    const stage = document.getElementById('lesson-target-level')?.value || 'عام';
    const dept = document.getElementById('lesson-target-track')?.value || 'عام';
    const branch = document.getElementById('lesson-target-section')?.value || 'الكل';
    const teacherSlug = document.getElementById('static_slug')?.value || '';
    
    // سحب رابط الفيديو الخارجي
    const videoUrlInput = document.getElementById('video-url-input');
    const videoUrl = videoUrlInput ? videoUrlInput.value.trim() : '';

    if (!title || content === "") {
        alert("يا هندسة، العنوان ومحتوى الدرس مطلوبان للنشر!");
        return;
    }

    // 2. استخدام FormData لدعم رفع الملفات الحقيقية
    const formData = new FormData();
    formData.append('title', title);
    formData.append('content', content); 
    formData.append('class_name', stage); 
    formData.append('department', dept);
    formData.append('branch', branch);
    formData.append('teacher_name', teacherSlug);
    formData.append('video_url', videoUrl); 

    // 🔥 ميزة التعديل: التحقق إذا كان المدرس يعدل درساً عبر "أيقونة القلم"
    const editIdField = document.getElementById('edit_active_lesson_id');
    if (editIdField && editIdField.value) {
        formData.append('edit_lesson_id', editIdField.value);
    }

    // إضافة الملفات الحقيقية إذا تم اختيارها
    if (window.actualVideoFile) {
        formData.append('video_file', window.actualVideoFile); 
    }
    if (window.actualDocFile) {
        formData.append('pdf_file', window.actualDocFile); 
    }

    const publishBtn = document.querySelector('.btn-action[onclick="publishLessonWithTargets(); return false;"]');
    const originalBtnHTML = publishBtn ? publishBtn.innerHTML : 'نشر';
    if(publishBtn) publishBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> جاري النشر والرفع...';

    try {
        // 🔥 المسار المطلق والآمن لعدم ظهور صفحة HTML 404
        let response = await fetch('/academy/save_lesson.php', {
            method: 'POST',
            body: formData
        });
        
        let rawResponse = await response.text();
        let result;
        
        try {
            result = JSON.parse(rawResponse);
        } catch(e) {
            if (rawResponse.trim() === "success") {
                result = { status: 'success' };
            } else {
                result = { status: 'error', message: rawResponse.substring(0, 150) };
            }
        }

        if (result.status === 'success') {
            alert("✅ تم حفظ الدرس بنجاح!");
            
            // تنظيف الحقول للدرس القادم
            if(titleInput) titleInput.value = "";
            if(editor) editor.innerHTML = "";
            if(editIdField) editIdField.value = ""; // تصفير الـ ID لكي لا يعدل بالخطأ مرة أخرى
            window.actualVideoFile = null;
            window.actualDocFile = null;
            
            // تصفير أيقونات الرفع
            if(typeof resetUploadStatus === 'function') resetUploadStatus();
            
            // 🔥 الحل الذكي: تحديث جدول الأرشيف فوراً بجلب أحدث نسخة من قاعدة البيانات
            if(typeof syncLessonsArchive === 'function') syncLessonsArchive();
            
        } else {
            alert("❌ فشل المزامنة. تأكد من حجم الملفات أو إعدادات السيرفر.\n" + (result.message || ""));
        }
    } catch (error) {
        console.error("Error:", error);
        alert("حدث خطأ في الاتصال بالشبكة.");
    } finally {
        if(publishBtn) publishBtn.innerHTML = originalBtnHTML;
    }
}
// ==========================================
// 2. دالة عرض الأرشيف (بشكل آمن)
// ==========================================
window.renderLessonsArchive = function() {
    const tbody = document.getElementById('archive-list-body');
    if (!tbody) return;
    let data = window.globalLessonsArchive || [];
    
    const stageFilter = document.getElementById('archive-filter-stage')?.value;
    const deptFilter = document.getElementById('archive-filter-dept')?.value;
    const branchFilter = document.getElementById('archive-filter-branch')?.value;

    const filtered = data.filter(lesson => {
        const matchStage = (!stageFilter || stageFilter === 'all' || stageFilter === 'الكل' || lesson.stage === stageFilter);
        const matchDept = (!deptFilter || deptFilter === 'all' || deptFilter === 'الكل' || lesson.dept === deptFilter);
        const matchBranch = (!branchFilter || branchFilter === 'all' || branchFilter === 'الكل' || lesson.branch === branchFilter);
        return matchStage && matchDept && matchBranch;
    });

    if (filtered.length === 0) {
        tbody.innerHTML = '<tr><td colspan="6" style="text-align:center; padding:30px; color:#999;">لا توجد دروس مطابقة.</td></tr>'; return;
    }

    tbody.innerHTML = filtered.map((lesson, index) => {
        let fullTaxonomy = `( ${lesson.stage} - ${lesson.dept} - شعبة ${lesson.branch} )`;
        let attachIcons = '';
        if(lesson.pdf_file) attachIcons += '<i class="fas fa-file-pdf text-danger" title="مرفق PDF"></i> ';
        if(lesson.video_file || (lesson.video_url && lesson.video_url !== '#')) attachIcons += '<i class="fas fa-video text-primary" title="مرفق فيديو"></i>';

        return `<tr>
            <td style="text-align:center;"><input type="checkbox" class="lesson-check" value="${lesson.id}"></td>
            <td style="padding:12px; font-weight:bold;">${lesson.title} <br><small>${attachIcons}</small></td>
            <td style="text-align:center; font-size: 12px; color: #475569;">
                <span style="background: #f1f5f9; padding: 4px 8px; border-radius: 6px; border: 1px solid #e2e8f0; font-weight: bold;">${fullTaxonomy}</span>
            </td>
            <td style="text-align:center;">${lesson.date}</td>
            <td style="text-align:center;"><span style="background:#d4edda; color:#155724; padding:3px 8px; border-radius:4px; font-size:12px;">منشور</span></td>
            <td style="text-align:center;">
                <div style="display:flex; justify-content:center; gap:10px;">
                    <i class="fas fa-eye text-success" style="cursor:pointer;" onclick="previewLesson('${lesson.id}')" title="معاينة"></i>
                    <i class="fas fa-edit text-primary" style="cursor:pointer;" onclick="editLessonFromArchive('${lesson.id}')" title="تعديل"></i>
                    <i class="fas fa-trash text-danger" style="cursor:pointer;" onclick="deleteLesson('${lesson.id}')" title="حذف"></i>
                </div>
            </td>
        </tr>`;
    }).join('');
};

// ==========================================
// 1. تعديل دالة رسم الجدول (لتستخدم الـ ID بدلاً من Index)
// (قم باستبدال الجزء الخاص بأزرار الإجراءات داخل دالة renderLessonsArchive بهذا السطر)
// ==========================================
// <i class="fas fa-eye text-success" style="cursor:pointer;" onclick="previewLesson(${lesson.id})"></i>
// <i class="fas fa-edit text-primary" style="cursor:pointer;" onclick="editLessonFromArchive(${lesson.id})"></i>
// <i class="fas fa-trash text-danger" style="cursor:pointer;" onclick="deleteLesson(${lesson.id})"></i>

window.toggleAllLessons = function(source) {
    const checkboxes = document.querySelectorAll('.lesson-check');
    checkboxes.forEach(cb => cb.checked = source.checked);
};

// ==========================================
// 2. دالة المعاينة (بنافذة غنية تدعم الـ HTML)
// ==========================================
window.previewLesson = function(id) {
    const lesson = window.globalLessonsArchive.find(l => String(l.id) === String(id));
    if (!lesson) { alert("لم يتم العثور على بيانات هذا الدرس!"); return; }
    
    // تجهيز أزرار المرفقات لتظهر في نافذة المعاينة
    let attachmentsHtml = '<div style="margin-top:20px; padding:15px; background:#f8fafc; border-radius:8px; border:1px dashed #cbd5e1;"><strong>المرفقات المتوفرة: </strong><br><br>';
    let hasAttachments = false;
    if (lesson.pdf_file) { attachmentsHtml += `<a href="/academy/uploads/docs/${lesson.pdf_file}" target="_blank" style="background:#ef4444; color:white; padding:8px 15px; text-decoration:none; border-radius:5px; margin-left:10px;">📄 عرض ملف الـ PDF</a>`; hasAttachments = true; }
    if (lesson.video_file) { attachmentsHtml += `<a href="/academy/uploads/videos/${lesson.video_file}" target="_blank" style="background:#3b82f6; color:white; padding:8px 15px; text-decoration:none; border-radius:5px; margin-left:10px;">🎬 تشغيل الفيديو المرفوع</a>`; hasAttachments = true; }
    if (lesson.video_url && lesson.video_url !== '#') { attachmentsHtml += `<a href="${lesson.video_url}" target="_blank" style="background:#f59e0b; color:white; padding:8px 15px; text-decoration:none; border-radius:5px;">🔗 فتح الرابط الخارجي</a>`; hasAttachments = true; }
    if(!hasAttachments) attachmentsHtml += '<span style="color:#94a3b8;">لا توجد مرفقات لهذا الدرس</span>';
    attachmentsHtml += '</div>';

    const previewWin = window.open('', '_blank', 'width=900,height=700');
    previewWin.document.write(`
        <html dir="rtl"><head><title>معاينة: ${lesson.title}</title>
        <style>body{font-family:'Segoe UI',sans-serif; padding:40px; line-height:1.8; background:#f4f6f9;} .card{background:#fff; padding:30px; border-radius:10px; box-shadow:0 4px 10px rgba(0,0,0,0.1);} .badge{background:#e2e8f0; padding:5px 10px; border-radius:5px; font-size:14px; margin-left:10px;}</style>
        </head><body><div class="card">
        <h1 style="color:#93003c; margin-top:0;">${lesson.title}</h1>
        <p><span class="badge">المرحلة: ${lesson.stage}</span> <span class="badge">القسم: ${lesson.dept}</span> <span class="badge">التاريخ: ${lesson.date}</span></p>
        <hr style="border:0; border-top:1px solid #eee; margin:20px 0;">
        <div style="font-size:18px;">${lesson.content}</div>
        ${attachmentsHtml}
        
        </div></body></html>
    `);
};

// ==========================================
// 3. دالة التعديل
// ==========================================
window.editLessonFromArchive = function(id) {
    const lesson = window.globalLessonsArchive.find(l => String(l.id) === String(id));
    if (!lesson) return;
    
    showSection('upload-view'); 
    setTimeout(() => {
        const titleInput = document.querySelector('input[placeholder*="عنوان الدرس"]');
        const editor = document.getElementById('editor');
        if (titleInput) titleInput.value = lesson.title;
        if (editor) editor.innerHTML = lesson.content;
        
        // 🔥 زرع ID الدرس في حقل مخفي لكي يعرف السيرفر أنه "تعديل"
        let hiddenIdField = document.getElementById('edit_active_lesson_id');
        if(!hiddenIdField) {
            hiddenIdField = document.createElement('input');
            hiddenIdField.type = 'hidden';
            hiddenIdField.id = 'edit_active_lesson_id';
            document.getElementById('upload-view').appendChild(hiddenIdField);
        }
        hiddenIdField.value = lesson.id;
        
        window.scrollTo({ top: 0, behavior: 'smooth' });
        alert("✅ تم جلب الدرس للمحرر. عند الحفظ سيتم تحديث الدرس المرفوع مسبقاً مع الحفاظ على مرفقاته الأصلية بأمان!");
    }, 300);
};

// ==========================================
// 4. دالة الحذف (ترسل لملف PHP)
// ==========================================
window.deleteLesson = async function(id) {
    if (!confirm("⚠️ هل أنت متأكد من حذف هذا الدرس نهائياً؟")) return;
    try {
        let formData = new FormData();
        formData.append('lesson_id', id);
        formData.append('action', 'delete'); // نخبر الملف الموثوق أننا نريد الحذف
        
        let response = await fetch('/academy/save_lesson.php', { method: 'POST', body: formData });
        let rawText = await response.text();
        
        try {
            let result = JSON.parse(rawText);
            if (result.status === 'success') {
                window.globalLessonsArchive = window.globalLessonsArchive.filter(l => String(l.id) !== String(id));
                renderLessonsArchive(); 
                alert("🗑️ تم الحذف بنجاح.");
            } else {
                alert("❌ فشل الحذف: " + result.message);
            }
        } catch(e) {
            alert("❌ فشل الحذف. استجابة السيرفر غير متوقعة: " + rawText.substring(0,100));
        }
    } catch (e) {
        alert("خطأ في الاتصال بالشبكة. تأكد من الاتصال بالإنترنت.");
    }
};

// ==========================================
// 5. نظام الطباعة الاحترافي
// ==========================================
window.printSelectedLessons = function() {
    const checkboxes = document.querySelectorAll('.lesson-check:checked');
    if (checkboxes.length === 0) { alert("حدد الدروس التي تريد طباعتها!"); return; }

    const selectedIds = Array.from(checkboxes).map(cb => cb.value);
    const lessonsToPrint = window.globalLessonsArchive.filter(l => selectedIds.includes(String(l.id)));

    let teacherLogo = ''; const logoEl = document.querySelector('.sidebar-header img'); if(logoEl) teacherLogo = logoEl.src;
    let teacherName = 'دكتور عمار'; const nameEl = document.getElementById('static_slug'); if(nameEl) teacherName = nameEl.value;
    let teacherSpec = 'التخصص: عربي'; const specEl = document.querySelector('.top-header small'); if(specEl) teacherSpec = specEl.innerText;

    const printWindow = window.open('', '_blank');
    
    // 🔥 CSS مطور جداً للطباعة يجبر المتصفح على عدم التداخل (display: block و page-break)
    let printDoc = `<html dir="rtl" lang="ar"><head><title>طباعة الدروس</title>
    <style>
        @import url('https://fonts.googleapis.com/css2?family=Tajawal:wght@400;700&display=swap');
        * { box-sizing: border-box; }
        body { font-family: 'Tajawal', sans-serif; padding: 0; color: #000; background: #fff; margin: 0; }
        .lesson-container { 
            display: block; 
            width: 100%; 
            page-break-after: always; /* إجبار صفحة جديدة بعد كل درس */
            page-break-inside: avoid;
            padding: 20px;
            margin-bottom: 20px;
        }
        .header { display: flex; justify-content: space-between; align-items: center; border-bottom: 3px solid #93003c; padding-bottom: 15px; margin-bottom: 30px; }
        .header img { max-height: 80px; }
        .header h2 { margin:0; color:#93003c; font-size: 24px; }
        .lesson-title { text-align: center; color: #000; text-decoration: underline; margin-bottom:20px; font-size: 28px;}
        .lesson-meta { background: #f8fafc; padding: 15px; border-radius: 8px; margin-bottom: 30px; text-align: center; font-size: 16px; border:2px solid #e2e8f0; font-weight: bold;}
        .lesson-content { font-size: 18px; line-height: 2.2; display: block; width: 100%; clear: both; }
        @media print {
            body { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
            .lesson-container:last-child { page-break-after: auto; } /* لمنع صفحة فارغة في النهاية */
        }
    </style></head><body onload="setTimeout(()=>{window.print(); window.close();}, 1000)">`;

    lessonsToPrint.forEach(lesson => {
        printDoc += `
        <div class="lesson-container">
            <div class="header">
                <div><h2>${teacherName}</h2><strong>${teacherSpec}</strong></div>
                ${teacherLogo ? `<img src="${teacherLogo}">` : ''}
            </div>
            <h1 class="lesson-title">${lesson.title}</h1>
            <div class="lesson-meta">
                المرحلة: <span style="color:#93003c;">${lesson.stage}</span> | 
                القسم: <span style="color:#93003c;">${lesson.dept}</span> | 
                الشعبة: <span style="color:#93003c;">${lesson.branch}</span> | 
                التاريخ: <span style="color:#93003c;">${lesson.date}</span>
            </div>
            <div class="lesson-content">
                ${lesson.content}
            </div>
        </div>`;
    });

    printDoc += `</body></html>`;
    printWindow.document.write(printDoc);
    printWindow.document.close();
};

// ==========================================
// 5. دالة إعادة النشر (المربوطة بالسيرفر والعزل التام)
// ==========================================
window.publishSelectedLessons = async function() {
    const selected = document.querySelectorAll('.lesson-check:checked');
    if (selected.length === 0) { alert("حدد درساً واحداً على الأقل من الجدول!"); return; }

    const stage = document.getElementById('republish-stage')?.value;
    const dept = document.getElementById('republish-dept')?.value || 'عام';
    const branch = document.getElementById('republish-branch')?.value || 'الكل';

    // سحب الطلاب المحددين
    const selectedStudents = document.querySelectorAll('.republish-student-cb:checked');
    let studentNames = [];
    selectedStudents.forEach(cb => studentNames.push(cb.getAttribute('data-name')));

    // 🔥 الشرط الذكي
    const hasStage = stage && stage !== '' && stage !== 'all' && stage !== 'الكل';
    const hasStudents = selectedStudents.length > 0;

    if (!hasStage && !hasStudents) {
        alert("⚠️ يرجى تحديد (المرحلة الدراسية) لإعادة النشر لفئة كاملة، أو تحديد (طلاب معينين).");
        return;
    }

    // جمع معرفات الدروس المحددة (IDs)
    let lessonIds = [];
    selected.forEach(cb => lessonIds.push(cb.value));

    // إرسال البيانات للسيرفر لكي يتم التحديث فعلياً في قاعدة البيانات
    try {
        let formData = new FormData();
        formData.append('lesson_ids', JSON.stringify(lessonIds));
        formData.append('stage', stage || 'عام');
        formData.append('dept', dept);
        formData.append('branch', branch);

        let response = await fetch('api_republish.php', {
            method: 'POST',
            body: formData
        });

        let result = await response.json();

        if (result.status === 'success') {
            // بناء رسالة النجاح
            let targetMsg = "";
            if (hasStudents && !hasStage) targetMsg = "للطلاب المحددين:\n" + studentNames.join("، ");
            else if (hasStage && !hasStudents) targetMsg = `للفئة المحددة:\nالمرحلة: ${stage}\nالقسم: ${dept}\nالشعبة: ${branch}`;
            else targetMsg = `للفئة: (المرحلة ${stage})\nبالإضافة للطلاب: ` + studentNames.join("، ");

            alert(`🚀 تم إعادة نشر (${selected.length}) دروس بنجاح!\n\n${targetMsg}`);
            
            // إغلاق القائمة وتصفير الاختيارات بعد النشر
            const list = document.getElementById('student-checkbox-list');
            if(list) list.style.display = 'none';
            selectedStudents.forEach(cb => cb.checked = false);
            selected.forEach(cb => cb.checked = false);
            
            // تحديث الصفحة لإظهار التغييرات
            location.reload();
        } else {
            alert("❌ حدث خطأ أثناء النشر: " + result.message);
        }
    } catch (error) {
        console.error(error);
        alert("حدث خطأ في الاتصال بالسيرفر.");
    }
};

// ==========================================
// 7. ملء قائمة الطلاب في صندوق إعادة النشر
// ==========================================
async function populateRepublishStudents() {
    // 1. التقاط اسم المدرس بدقة من الرابط أو الحقل المخفي
    let teacherSlug = document.getElementById('static_slug')?.value || '';
    if (!teacherSlug) {
        let pathname = window.location.pathname.replace(/\/$/, "");
        let pathArray = pathname.split('/');
        teacherSlug = decodeURIComponent(pathArray[pathArray.length - 1]); 
    }
    
    const listContainer = document.getElementById('student-checkbox-list');
    if(!listContainer) return;

    try {
        // 2. إرسال اسم المدرس للسيرفر كفلتر (نفس ملف جلب الجدول)
        const res = await fetch(`get_students_list.php?teacher=${encodeURIComponent(teacherSlug)}`);
        const data = await res.json();
        
        if(data.status === 'success' && data.students && data.students.length > 0) {
            let html = '';
            data.students.forEach(s => {
                let displayName = s.student_name || 'طالب غير معروف';
                html += `<label style="display:block; padding:8px 10px; border-bottom:1px solid #f1f5f9; cursor:pointer; font-weight:bold; color:#1e293b; transition:0.2s;" onmouseover="this.style.background='#f8fafc'" onmouseout="this.style.background='transparent'">
                            <input type="checkbox" class="republish-student-cb" value="${s.student_id}" data-name="${displayName}" style="margin-left:8px; width: 14px; height: 14px; accent-color: #e11d48; cursor: pointer;"> ${displayName}
                         </label>`;
            });
            listContainer.innerHTML = html;
        } else {
            listContainer.innerHTML = '<div style="padding:15px; color:#ef4444; text-align:center; font-weight:bold;">لا يوجد طلاب مسجلين في فصولك حالياً.</div>';
        }
    } catch(e) { 
        listContainer.innerHTML = '<div style="padding:15px; color:#ef4444; text-align:center;">خطأ في الاتصال بقاعدة البيانات.</div>';
    }
}
// تأكد من استدعاء الدالة عند فتح الصفحة
document.addEventListener('DOMContentLoaded', populateRepublishStudents);

let savedPlans = []; // مصفوفة لتخزين الخطط



// 2. تحديث جدول الأرشيف
function renderPlansTable() {
    const tbody = document.getElementById('plans-archive-body');
    tbody.innerHTML = '';

    plansArchive.forEach((plan, index) => {
        tbody.innerHTML += `
            <tr style="border-bottom: 1px solid #eee;">
                <td style="padding:12px;">${plan.title} <br><small style="color:#888;">${plan.date}</small></td>
                <td style="padding:12px; text-align:center;">
                    <i class="fas fa-eye text-info me-2" style="cursor:pointer;" title="معاينة" onclick="previewPlan(${index})"></i>
                    <i class="fas fa-print text-secondary me-2" style="cursor:pointer;" title="طباعة" onclick="printPlan(${index})"></i>
                    <i class="fas fa-edit text-primary me-2" style="cursor:pointer;" title="تعديل" onclick="editPlan(${index})"></i>
                    <i class="fas fa-trash text-danger" style="cursor:pointer;" title="حذف" onclick="deletePlan(${index})"></i>
                </td>
            </tr>
        `;
    });
}

// 3. وظائف الإجراءات الأربعة
function previewPlan(index) {
    alert("📋 معاينة الخطة:\n\n" + plansArchive[index].title + "\n\n" + plansArchive[index].content);
}

function printPlan(index) {
    const plan = plansArchive[index];
    
    // إنشاء نافذة طباعة جديدة في الخلفية
    const printWindow = window.open('', '_blank');
    
    // بناء محتوى صفحة الطباعة
    printWindow.document.write(`
        <html dir="rtl">
        <head>
            <title>طباعة الخطة: ${plan.title}</title>
            <style>
                body { font-family: 'Segoe UI', Tahoma, sans-serif; padding: 40px; line-height: 1.6; }
                .header { text-align: center; border-bottom: 2px solid #333; margin-bottom: 30px; padding-bottom: 10px; }
                .title { color: #93003c; font-size: 24px; }
                .meta { color: #666; font-size: 14px; margin-bottom: 20px; }
                .content { font-size: 18px; white-space: pre-wrap; }
                @media print { .no-print { display: none; } }
            </style>
        </head>
        <body>
            <div class="header">
                <h1 class="title">أكاديمية روزماري التعليمية</h1>
                <h2>خطة المدرس: ${plan.title}</h2>
                <div class="meta">تاريخ الحفظ: ${plan.date}</div>
            </div>
            <div class="content">
                ${plan.content}
            </div>
            <script>
                // تشغيل أمر الطباعة فور تحميل الصفحة
                window.onload = function() {
                    window.print();
                    // إغلاق النافذة بعد الانتهاء من الطباعة (اختياري)
                    // window.close();
                };
            <\/script>
        </body>
        </html>
    `);
    
    printWindow.document.close();
}

function editPlan(index) {
    const plan = plansArchive[index];
    document.getElementById('plan-title').value = plan.title;
    document.getElementById('plan-content').value = plan.content;
    
    // حذفها من الأرشيف لإعادة حفظها بعد التعديل
    plansArchive.splice(index, 1);
    renderPlansTable();
    window.scrollTo({ top: 0, behavior: 'smooth' });
}

function deletePlan(index) {
    if (confirm("هل أنت متأكد من حذف هذه الخطة نهائياً؟")) {
        plansArchive.splice(index, 1);
        renderPlansTable();
    }
}

// =========================================================================
// 🚀 نظام إرسال واستقبال الخطط الأسبوعية (متصل بالـ API والإدارة) 🚀
// =========================================================================

// 1. إرسال الخطة للإدارة
function sendPlanToAdmin(btnElement) {
    const titleInput = document.getElementById('planTitle');
    const contentInput = document.getElementById('planContent');

    if (!titleInput.value.trim()) { alert("يرجى إدخال عنوان الخطة!"); return; }
    if (!contentInput.value.trim()) { alert("يرجى كتابة تفاصيل الخطة!"); return; }

    // استخراج اسم المدرس من أعلى الصفحة
    let rawName = document.querySelector('.top-header h4')?.innerText || '';
    const teacherName = rawName.replace('مرحباً بك يا', '').replace('! 👋', '').trim() || 'أستاذ';

    const fd = new FormData();
    fd.append('action', 'submit_request');
    fd.append('teacher_name', teacherName);
    fd.append('req_type', 'خطة أسبوعية'); 
    fd.append('subject_class', titleInput.value.trim()); // وضعنا العنوان هنا
    fd.append('content', contentInput.value.trim());

    // تغيير شكل الزر لمنع التكرار
    const origText = btnElement.innerHTML;
    btnElement.innerHTML = '<i class="fas fa-spinner fa-spin"></i> جاري الإرسال...';
    btnElement.disabled = true;

    fetch('api_academic_requests.php', { method: 'POST', body: fd })
    .then(res => res.json())
    .then(data => {
        alert(data.message);
        if (data.status === 'success') {
            titleInput.value = ''; 
            contentInput.value = '';
            fetchTeacherPlans(); // تحديث الجدول فوراً ليرى المدرس خطته (قيد المراجعة)
        }
    })
    .catch(err => alert("حدث خطأ في الاتصال بالسيرفر!"))
    .finally(() => { 
        btnElement.innerHTML = origText; 
        btnElement.disabled = false; 
    });
}

// 2. جلب الخطط الخاصة بالمدرس وعرضها في الجدول مع حالتها
function fetchTeacherPlans() {
    const tbody = document.getElementById('plans-tbody');
    if (!tbody) return;

    let rawName = document.querySelector('.top-header h4')?.innerText || '';
    const teacherName = rawName.replace('مرحباً بك يا', '').replace('! 👋', '').trim();

    fetch(`api_academic_requests.php?action=get_teacher_plans&teacher_name=${encodeURIComponent(teacherName)}`)
    .then(res => res.json())
    .then(data => {
        if (data.status === 'success') {
            if (data.data.length === 0) {
                tbody.innerHTML = '<tr><td colspan="4" style="text-align:center; padding:20px; color:#94a3b8;">لا توجد خطط مرسلة حتى الآن.</td></tr>';
                return;
            }

            tbody.innerHTML = data.data.map(plan => {
                // شارة الحالة (أصفر: قيد المراجعة، أخضر: معتمد، أحمر: مرفوض)
                let badge = '';
                if(plan.status === 'pending') badge = '<span style="background:#fef08a; color:#854d0e; padding:6px 12px; border-radius:6px; font-weight:bold; font-size:13px;"><i class="fas fa-clock"></i> قيد المراجعة</span>';
                else if(plan.status === 'approved') badge = '<span style="background:#dcfce7; color:#166534; padding:6px 12px; border-radius:6px; font-weight:bold; font-size:13px;"><i class="fas fa-check-circle"></i> معتمد</span>';
                else if(plan.status === 'rejected') badge = '<span style="background:#fee2e2; color:#991b1b; padding:6px 12px; border-radius:6px; font-weight:bold; font-size:13px;"><i class="fas fa-times-circle"></i> مرفوض</span>';

                let dateOnly = plan.created_at ? plan.created_at.split(' ')[0] : '-';
                let safeContent = plan.content ? plan.content.replace(/'/g, "\\'").replace(/\n/g, '<br>') : '';

                return `
                <tr style="border-bottom: 1px solid #e2e8f0; transition: 0.2s;" onmouseover="this.style.background='#f8fafc'" onmouseout="this.style.background='transparent'">
                    <td style="padding:15px; font-weight:bold; color:#1e293b;">${plan.subject_class}</td>
                    <td style="padding:15px; color:#64748b;">${dateOnly}</td>
                    <td style="padding:15px;">${badge}</td>
                    <td style="padding:15px;">
                        <button onclick="previewPlanContent('${plan.subject_class}', '${safeContent}')" style="background:#3b82f6; color:white; border:none; padding:6px 12px; border-radius:6px; font-weight:bold; cursor:pointer;"><i class="fas fa-eye"></i> عرض</button>
                        <button onclick="deletePlanDb(${plan.id})" style="background:#ef4444; color:white; border:none; padding:6px 12px; border-radius:6px; font-weight:bold; cursor:pointer; margin-right:5px;"><i class="fas fa-trash"></i></button>
                    </td>
                </tr>`;
            }).join('');
        }
    });
}

// 3. عرض محتوى الخطة في نافذة منبثقة للطباعة والمعاينة
function previewPlanContent(title, content) {
    const win = window.open('', '_blank', 'width=700,height=700');
    win.document.write(`<html dir="rtl"><body style="font-family:Arial; padding:30px; line-height:1.8; color:#1e293b; background:#fff;">
        <h2 style="color:#e11d48; border-bottom:3px double #cbd5e1; padding-bottom:15px; text-align:center;">${title}</h2>
        <div style="font-size:18px; margin-top:20px; white-space: pre-wrap;">${content}</div>
        <div style="margin-top:50px; text-align:center;">
            <button onclick="window.print()" style="background:#10b981; color:white; padding:10px 20px; border:none; border-radius:8px; cursor:pointer; font-size:16px; font-weight:bold; margin-left:10px;"><i class="fas fa-print"></i> طباعة</button>
            <button onclick="window.close()" style="background:#334155; color:white; padding:10px 20px; border:none; border-radius:8px; cursor:pointer; font-size:16px; font-weight:bold;">إغلاق</button>
        </div>
    </body></html>`);
    win.document.close();
}

// 4. حذف الخطة من قاعدة البيانات
function deletePlanDb(id) {
    if(!confirm("هل أنت متأكد من حذف هذه الخطة من السجلات؟")) return;
    const fd = new FormData();
    fd.append('action', 'delete_plan'); 
    fd.append('request_id', id);
    
    fetch('api_academic_requests.php', { method: 'POST', body: fd })
    .then(res => res.json())
    .then(data => {
        if(data.status === 'success') fetchTeacherPlans(); // تحديث الجدول بعد الحذف
    });
}

// 🚀 تشغيل دالة الجلب فوراً عند فتح صفحة المدرس 🚀
document.addEventListener('DOMContentLoaded', fetchTeacherPlans);



function printSelectedQuestions() {
    try {
        const checkboxes = document.querySelectorAll('.print-selector:checked');
        if (checkboxes.length === 0) {
            alert("يا عمار، يرجى تحديد الأسئلة أولاً!");
            return;
        }

        const selectedIndexes = Array.from(checkboxes).map(cb => parseInt(cb.value));
        const questionsToPrint = selectedIndexes.map(i => questionsList[i]);

        // ترتيب الأسئلة حسب النوع (صح وخطأ، اختيارات، إلخ)
        const grouped = questionsToPrint.reduce((acc, q) => {
            const type = q.answerType || q.type || 'أسئلة متنوعة';
            if (!acc[type]) acc[type] = [];
            acc[type].push(q);
            return acc;
        }, {});

        const printWindow = window.open('', '_blank');
        
        let htmlContent = `
            <html dir="rtl">
            <head>
                <title>ورقة الأسئلة</title>
                <style>
                    /* ضبط الهوامش العلوية لتكون قريبة من الحافة */
                    @page { 
                        size: A4; 
                        margin: 10mm 15mm 15mm 15mm; /* صعدنا الهامش العلوي لـ 10 ملم فقط */
                    }
                    body { 
                        font-family: 'Arial', sans-serif; 
                        margin: 0; 
                        padding: 0; 
                        direction: rtl; 
                    }
                    .header-table { 
                        width: 100%; 
                        border-bottom: 2px solid #000; 
                        margin-bottom: 15px; 
                        padding-bottom: 5px; 
                    }
                    .school-name { font-size: 18px; font-weight: bold; }
                    .center-logo { text-align: center; }
                    .teacher-info { text-align: left; font-size: 14px; }
                    .logo-img { width: 70px; height: auto; }
                    
                    /* تنسيق القسم والأسئلة */
                    .q-section { margin-top: 15px; }
                    .q-type-header { 
                        background: #f2f2f2; 
                        padding: 5px 10px; 
                        font-weight: bold; 
                        border-right: 4px solid #000;
                        margin-bottom: 10px;
                        font-size: 16px;
                    }
                    .q-item { margin-bottom: 15px; page-break-inside: avoid; }
                    .q-text { font-size: 16px; font-weight: bold; margin-bottom: 5px; }
                    
                    /* الإضافات الرسومية للإجابة */
                    .box { display: inline-block; width: 12px; height: 12px; border: 1px solid #000; margin-left: 5px; }
                    .line { border-bottom: 1px solid #000; display: inline-block; min-width: 200px; margin-top: 10px; }
                </style>
            </head>
            <body>
                <table class="header-table">
                    <tr>
                        <td width="35%" class="school-name">
                            أكاديمية روزماري التعليمية<br>
                            <span style="font-size:14px; font-weight:normal;">مدرس المادة: ${questionsToPrint[0].instructorName || 'أستاذ المادة'}</span>
                        </td>
                        <td width="30%" class="center-logo">
                            <img src="https://roozmari.com/logo.png" class="logo-img"><br>
                            <strong style="font-size:18px;">${questionsToPrint[0].title || ''}</strong>
                        </td>
                        <td width="35%" class="teacher-info">
                            الزمن: 60 دقيقة<br>
                            المرحلة: ${questionsToPrint[0].category || ''}
                        </td>
                    </tr>
                </table>
        `;

        let globalCounter = 1; // عداد عام لضمان تسلسل الأرقام عبر كل الأقسام والصفحات

        for (let type in grouped) {
            htmlContent += `
                <div class="q-section">
                    <div class="q-type-header">س: ${type}</div>
            `;
            
            grouped[type].forEach((q) => {
                htmlContent += `
                    <div class="q-item">
                        <div class="q-text">${globalCounter}- ${q.text}</div>`;
                
                // ذكاء التنسيق حسب النوع
                if (type.includes("صح") || type.includes("خطأ")) {
                    htmlContent += `<div>( ) صح &nbsp;&nbsp;&nbsp;&nbsp; ( ) خطأ</div>`;
                } else if (type.includes("خيار") || type.includes("متعدد")) {
                    htmlContent += `<div><span class="box"></span> ........ &nbsp;&nbsp; <span class="box"></span> ........</div>`;
                } else if (type.includes("فراغ")) {
                    htmlContent += `<div class="line"></div>`;
                } else if (type.includes("مقال") || type.includes("بختصار")) {
                    htmlContent += `<div style="height:50px; border-bottom:1px dashed #ccc;"></div>`;
                }

                htmlContent += `</div>`;
                globalCounter++; // زيادة العداد لكل سؤال بغض النظر عن نوعه
            });
            htmlContent += `</div>`;
        }

        htmlContent += `
                <div style="text-align:center; margin-top:30px; font-size:12px;">
                    انتهت الأسئلة - بالتوفيق للجميع
                </div>
            </body>
            </html>
        `;

        printWindow.document.write(htmlContent);
        printWindow.document.close();
        
        // تأكيد طباعة كل الصفحات
        setTimeout(() => { 
            printWindow.focus();
            printWindow.print(); 
        }, 500);

    } catch (error) {
        console.error("خطأ:", error);
    }
}
window.onload = function() {
    // جرب تحديث الجدول فقط إذا كان موجوداً، وإلا لن يحدث خطأ
    try { updateQueueUI(); } catch(e) {}
     if (document.getElementById('questions-table-body')) {
        updateQueueUI();
    }
};

// 1. مصفوفة الطلاب
let allStudents = [
    { name: "زيدان خالد", stage: "الأول الثانوي", section: "أ", monthGrade: 18, activity: 9, absence: 0, rating: "بانتظار تقييمك" }
];

// 2. دالة عرض جدول الطلاب (سجل المتابعة)
// ج. دالة فتح نافذة الحجب والصلاحيات
// قمنا بحفظ رقم الـ Index لنعرف أي طالب نعدل صلاحياته عند الضغط على حفظ
let currentEditStudentIndex = -1;
function openPermissionsModal(index) {
    currentEditStudentIndex = index;
    document.getElementById('perm-student-name').innerText = "الطالب: " + allStudents[index].name;
    document.getElementById('permissionsModal').style.display = 'flex';
}

// دالة رسم جدول الإدارة (الصلاحيات والمعرف)
// 3. رسم جداول الإدارة بالبيانات والأزرار الحقيقية
// ==============================================================




// 4. دالة نشر الدرجات
function publishToStudent() {
    alert("📢 تم بنجاح نشر الدرجات لجميع طلاب المرحلة المحددة.");
}

// 5. دالة الإرسال للإدارة
function sendToAdmin() {
    const stageElement = document.getElementById('grade-filter-stage');
    const stage = stageElement ? stageElement.value : 'all';
    if(stage === 'all') { alert("يرجى اختيار المرحلة أولاً"); return; }
    if(confirm("هل تريد إرسال هذا السجل رسمياً للإدارة؟")) {
        alert("🚀 تم إرسال السجل للإدارة بنجاح.");
    }
}
function sendGradesToAdmin() {
    // 1. جمع البيانات من الجدول
    const rows = document.querySelectorAll('#grades-table-edit tr');
    let reportData = [];

    rows.forEach(row => {
        reportData.push({
            name: row.cells[0].innerText,
            month: row.querySelector('input[type="number"]:nth-of-type(1)')?.value,
            activity: row.querySelector('input[type="number"]:nth-of-type(2)')?.value,
            rating: row.querySelector('textarea')?.value
        });
    });

    if (reportData.length === 0) {
        alert("⚠️ الجدول فارغ، لا يوجد شيء لإرساله.");
        return;
    }

    // 2. التأكيد قبل الإرسال
    if (!confirm("هل أنت متأكد من إرسال السجل رسمياً للإدارة؟")) return;

    // 3. الإرسال الفعلي للسيرفر (لوحة الإدارة)
    // ملاحظة: يجب أن يكون لديك ملف اسمه save_to_admin.php يستقبل هذه البيانات
    fetch('api/save_to_admin.php', { 
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({
            teacher_name: "الأستاذ أحمد علي",
            report: reportData,
            date: new Date().toISOString()
        })
    })
    .then(response => {
        if(response.ok) {
            alert("🚀 تم الإرسال بنجاح! السجل الآن يظهر عند المدير في لوحة التحكم.");
        } else {
            alert("❌ حدث خطأ في الاتصال بالسيرفر.");
        }
    })
    .catch(err => {
        // إذا كنت تجرب الآن على جهازك الشخصي بدون سيرفر، ستظهر لك هذه الرسالة:
        alert("✅ تم محاكاة الإرسال: البيانات جاهزة للإرسال بمجرد ربطها بملف الـ PHP الخاص بالإدارة.");
    });
}
// مصفوفة لتخزين الأسئلة برمجياً
let myQuestionsBank = [
    { id: 1, text: "ما هو تعريف الفاعل في اللغة العربية؟", subject: "النحو", level: "سهل" },
    { id: 2, text: "اشرح معلقة امرؤ القيس بإيجاز؟", subject: "الأدب", level: "صعب" }
];

// دالة عرض الأسئلة في الجدول
function renderBank() {
    const tbody = document.getElementById('bank-tbody');
    if (!tbody) return;

    if (myQuestionsBank.length === 0) {
        tbody.innerHTML = '<tr><td colspan="3" style="text-align:center; padding:20px;">لا توجد أسئلة في البنك حالياً</td></tr>';
        return;
    }

    tbody.innerHTML = myQuestionsBank.map((q, index) => `
        <tr>
            <td style="padding:12px; font-weight:bold; text-align:right;">${q.text} <small style="display:block; color:#7f8c8d; font-weight:normal;">المستوى: ${q.level}</small></td>
            <td style="text-align:center;"><span style="background:#e1f5fe; padding:4px 10px; border-radius:5px;">${q.subject}</span></td>
            <td style="text-align:center;">
                <button class="btn-action" style="background:#e74c3c; width:auto; padding:5px 10px;" onclick="deleteFromBank(${index})">
                    <i class="fas fa-trash"></i>
                </button>
            </td>
        </tr>
    `).join('');
}

// دالة إضافة سؤال جديد
function addNewQuestion() {
    const text = document.getElementById('new-q-text').value;
    const subject = document.getElementById('new-q-subject').value;
    const level = document.getElementById('new-q-level').value;

    if (!text.trim()) {
        alert("يرجى كتابة السؤال أولاً");
        return;
    }

    myQuestionsBank.push({
        id: Date.now(),
        text: text,
        subject: subject || "عام",
        level: level
    });

    // مسح الحقول وتحديث الجدول
    document.getElementById('new-q-text').value = '';
    renderBank();
    alert("✅ تم حفظ السؤال في البنك");
}

// دالة الحذف
function deleteFromBank(index) {
    if(confirm("هل تريد حذف هذا السؤال؟")) {
        myQuestionsBank.splice(index, 1);
        renderBank();
    }
}

// تشغيل الدالة عند تحميل الصفحة للتأكد من ظهور البيانات القديمة
document.addEventListener('DOMContentLoaded', renderBank);
function exportQuestionsToAdmin() {
    if (myQuestionsBank.length === 0) {
        alert("⚠️ لا توجد أسئلة لإرسالها!");
        return;
    }

    // معلومات المدرسة والمدرس (يمكنك تغييرها)
    const schoolName = "اسم مدرستك النموذجية";
    const teacherName = "الأستاذ عمار"; // اسمك
    const subjectName = myQuestionsBank[0].subject; // يأخذ اسم المادة من أول سؤال

    // إنشاء نافذة جديدة للطباعة
    const printWindow = window.open('', '_blank');
    
    let questionsHtml = myQuestionsBank.map((q, i) => `
        <div style="margin-bottom: 15px; border-bottom: 1px dashed #ccc; padding-bottom: 10px;">
            <strong>س ${i + 1}:</strong> ${q.text} 
            <span style="float: left; font-size: 12px; color: #666;">[المستوى: ${q.level}]</span>
        </div>
    `).join('');

    printWindow.document.write(`
        <html dir="rtl">
        <head>
            <title>نموذج أسئلة رسمي - ${schoolName}</title>
            <style>
                body { font-family: 'Arial', sans-serif; padding: 40px; line-height: 1.6; }
                .header { text-align: center; border: 2px solid #000; padding: 15px; margin-bottom: 30px; }
                .info-table { width: 100%; margin-bottom: 20px; border-collapse: collapse; }
                .info-table td { border: 1px solid #000; padding: 8px; text-align: right; }
                .footer { margin-top: 50px; text-align: left; font-weight: bold; }
                @media print { .no-print { display: none; } }
            </style>
        </head>
        <body>
            <div class="header">
                <h2>${schoolName}</h2>
                <h3>بنك الأسئلة الرسمي</h3>
            </div>
            
            <table class="info-table">
                <tr>
                    <td><strong>اسم المدرس:</strong> ${teacherName}</td>
                    <td><strong>المادة:</strong> ${subjectName}</td>
                </tr>
                <tr>
                    <td><strong>التاريخ:</strong> ${new Date().toLocaleDateString('ar-EG')}</td>
                    <td><strong>العام الدراسي:</strong> 2025 - 2026</td>
                </tr>
            </table>

            <div class="questions-section">
                ${questionsHtml}
            </div>

            <div class="footer">
                توقيع المدرس: ...........................
            </div>

            <div class="no-print" style="text-align:center; margin-top:30px;">
                <button onclick="window.print()" style="padding:10px 20px; background:#2ecc71; color:white; border:none; cursor:pointer; border-radius:5px;">إرسال للأمر بالطباعة الآن</button>
            </div>
        </body>
        </html>
    `);

    printWindow.document.close();
    
    // محاكاة الإرسال للإدارة
    console.log("إرسال البيانات لوحة الإدارة...", myQuestionsBank);
    alert("🚀 تم إرسال نسخة رقمية للإدارة، وتم فتح نموذج الطباعة الرسمي.");
}


// =========================================================================
// 🚀 دالة طباعة التقرير الأكاديمي العام (الموحدة مع تصميم الـ VIP) 🚀
// =========================================================================
function printAcademicReport() {
    // 1. التقاط البيانات الحقيقية من واجهة المدرس
    let rawTeacherName = document.querySelector('.top-header h4')?.innerText || 'أستاذ المادة';
    const teacherName = rawTeacherName.replace('مرحباً بك يا', '').replace('! 👋', '').trim();
    const schoolName = document.querySelector('.topbar div:first-child')?.innerText.trim() || 'أكاديمية روزماري التعليمية';
    const logoSrc = document.querySelector('.sidebar-header img')?.src || '';
    
    // 2. التقاط جميع الأرقام من الكروت
    const numStudents = document.getElementById('stat-students')?.innerText || "0";
    const numLectures = document.getElementById('stat-lectures')?.innerText || "0";
    const numSuccess = document.getElementById('stat-success')?.innerText || "0";
    const numQuestions = document.getElementById('stat-questions')?.innerText || "0";
    const numPlans = document.getElementById('stat-plans')?.innerText || "0";
    
    const today = new Date().toLocaleDateString('ar-EG', { year: 'numeric', month: 'long', day: 'numeric' });

    // 3. بناء جدول يحتوي على الخلاصة الشاملة
    const reportTitle = "التقرير الأكاديمي الشامل";
    const tableContent = `
        <thead>
            <tr>
                <th>المؤشر الأكاديمي / الإحصائية</th>
                <th>العدد / النسبة</th>
                <th>ملاحظات النظام</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td style="font-weight:bold;">إجمالي الطلاب المسجلين النشطين</td>
                <td style="color:#2563eb; font-weight:900; font-size:18px;">${numStudents} طالب</td>
                <td>مطابق للسجلات</td>
            </tr>
            <tr>
                <td style="font-weight:bold;">متوسط نسبة النجاح العامة</td>
                <td style="color:#10b981; font-weight:900; font-size:18px;">${numSuccess} %</td>
                <td>مؤشر إيجابي</td>
            </tr>
            <tr>
                <td style="font-weight:bold;">المحاضرات والدروس المرفوعة</td>
                <td style="color:#8b5cf6; font-weight:900; font-size:18px;">${numLectures} محاضرة</td>
                <td>مؤرشفة</td>
            </tr>
            <tr>
                <td style="font-weight:bold;">بنك الأسئلة المنهجي</td>
                <td style="color:#f59e0b; font-weight:900; font-size:18px;">${numQuestions} سؤال</td>
                <td>جاهزة للاستخدام</td>
            </tr>
            <tr>
                <td style="font-weight:bold;">الخطط الدراسية المعتمدة</td>
                <td style="color:#e83e8c; font-weight:900; font-size:18px;">${numPlans} خطة</td>
                <td>مؤرشفة</td>
            </tr>
        </tbody>
    `;

    // 4. بناء هيكل الـ HTML والـ CSS للطباعة الاحترافية
    const printWindow = window.open('', '_blank');
    const printHTML = `
    <html dir="rtl" lang="ar">
    <head>
        <title>طباعة - ${reportTitle}</title>
        <style>
            @import url('https://fonts.googleapis.com/css2?family=Tajawal:wght@400;700;900&display=swap');
            
            @page { size: A4; margin: 15mm; }
            * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
            
            body { font-family: 'Tajawal', sans-serif; color: #0f172a; background: white; margin: 0; padding: 20px; }
            
            .header-container { display: flex; justify-content: space-between; align-items: center; border-bottom: 4px solid #93003c; padding-bottom: 20px; margin-bottom: 30px; }
            .header-info h1 { margin: 0; color: #93003c; font-size: 28px; font-weight: 900; }
            .header-info h2 { margin: 5px 0 0 0; color: #475569; font-size: 20px; }
            .logo { max-width: 100px; max-height: 100px; object-fit: contain; }
            
            .meta-box { background: #f8fafc; border: 2px solid #e2e8f0; border-radius: 12px; padding: 15px 25px; margin-bottom: 30px; display: flex; justify-content: space-between; }
            .meta-item { display: flex; flex-direction: column; }
            .meta-label { color: #64748b; font-size: 14px; font-weight: bold; margin-bottom: 5px; }
            .meta-value { color: #1e293b; font-size: 18px; font-weight: 900; }
            
            table { width: 100%; border-collapse: collapse; margin-bottom: 40px; }
            th { background-color: #93003c !important; color: white !important; padding: 15px; text-align: right; font-size: 16px; border: 1px solid #7a0031; }
            td { padding: 15px; border: 1px solid #cbd5e1; font-size: 15px; }
            tr:nth-child(even) td { background-color: #f1f5f9 !important; }
            
            .signatures { display: flex; justify-content: space-between; margin-top: 50px; padding-top: 30px; border-top: 2px dashed #cbd5e1; }
            .sign-box { text-align: center; width: 30%; }
            .sign-title { font-weight: bold; color: #475569; margin-bottom: 40px; }
            .sign-line { border-bottom: 1px solid #1e293b; }
            
            .watermark { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%) rotate(-45deg); font-size: 8rem; color: rgba(147, 0, 60, 0.05); font-weight: 900; z-index: -1; pointer-events: none; }
        </style>
    </head>
    <body>
        <div class="watermark">معتمد</div>
        <div class="header-container">
            <div class="header-info">
                <h1>${schoolName}</h1>
                <h2>${reportTitle}</h2>
            </div>
            ${logoSrc ? `<img src="${logoSrc}" class="logo" alt="شعار الأكاديمية">` : ''}
        </div>
        <div class="meta-box">
            <div class="meta-item"><span class="meta-label">المدرس المسؤول</span><span class="meta-value">${teacherName}</span></div>
            <div class="meta-item"><span class="meta-label">تاريخ الإصدار</span><span class="meta-value">${today}</span></div>
            <div class="meta-item"><span class="meta-label">العام الدراسي</span><span class="meta-value">2025 / 2026</span></div>
        </div>
        <table>
            ${tableContent}
        </table>
        <div class="signatures">
            <div class="sign-box"><div class="sign-title">توقيع المدرس</div><div class="sign-line"></div></div>
            <div class="sign-box"><div class="sign-title">اعتماد الإدارة / الختم</div><div class="sign-line"></div></div>
        </div>
    </body>
    </html>
    `;

    printWindow.document.write(printHTML);
    printWindow.document.close();
    
    // إعطاء أمر الطباعة من النافذة الرئيسية لمنع كسر الأكواد
    setTimeout(() => {
        printWindow.print();
    }, 800);
}


// =========================================================================
// 🚀 دالة الطباعة الاحترافية الشاملة (VIP Print) للمدرس 🚀
// =========================================================================
function printSpecificStat(type) {
    // 1. التقاط البيانات الحقيقية من واجهة المدرس مباشرة
    let rawTeacherName = document.querySelector('.top-header h4')?.innerText || 'أستاذ المادة';
    const teacherName = rawTeacherName.replace('مرحباً بك يا', '').replace('! 👋', '').trim();
    const schoolName = document.querySelector('.topbar div:first-child')?.innerText.trim() || 'أكاديمية روزماري التعليمية';
    const logoSrc = document.querySelector('.sidebar-header img')?.src || '';
    
    // 2. التقاط الأرقام الحقيقية من الكروت الذكية
    const numStudents = document.getElementById('stat-students')?.innerText || "0";
    const numLectures = document.getElementById('stat-lectures')?.innerText || "0";
    const numSuccess = document.getElementById('stat-success')?.innerText || "0";
    const numQuestions = document.getElementById('stat-questions')?.innerText || "0";
    const numPlans = document.getElementById('stat-plans')?.innerText || "0";
    
    const today = new Date().toLocaleDateString('ar-EG', { year: 'numeric', month: 'long', day: 'numeric' });

    // 3. تحديد عنوان التقرير والمحتوى بناءً على الزر المضغوط
    let reportTitle = "";
    let tableContent = "";

    if (type === 'students') {
        reportTitle = "التقرير الإحصائي الشامل للطلاب";
        tableContent = `
            <thead>
                <tr>
                    <th>البيان</th>
                    <th>العدد الفعلي</th>
                    <th>ملاحظات الإدارة</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td style="font-weight:bold;">إجمالي الطلاب المسجلين النشطين</td>
                    <td style="color:#2563eb; font-weight:900; font-size:18px;">${numStudents} طالب</td>
                    <td>تمت المطابقة مع سجلات النظام</td>
                </tr>
            </tbody>
        `;
    } else if (type === 'success') {
        reportTitle = "تقرير مؤشرات الأداء ونسب النجاح";
        tableContent = `
            <thead>
                <tr>
                    <th>المؤشر الأكاديمي</th>
                    <th>النسبة المئوية</th>
                    <th>التقييم العام</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td style="font-weight:bold;">متوسط نسبة النجاح العامة للطلاب</td>
                    <td style="color:#10b981; font-weight:900; font-size:18px;">${numSuccess} %</td>
                    <td style="color:#10b981; font-weight:bold;">مؤشر إيجابي</td>
                </tr>
            </tbody>
        `;
    } else if (type === 'lectures') {
        reportTitle = "سجل الإنجاز للمحاضرات والدروس";
        tableContent = `
            <thead>
                <tr>
                    <th>نوع الإنجاز</th>
                    <th>العدد الإجمالي</th>
                    <th>الحالة</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td style="font-weight:bold;">الدروس المرفوعة (المحاضرات)</td>
                    <td style="color:#8b5cf6; font-weight:900; font-size:18px;">${numLectures} محاضرة</td>
                    <td>مؤرشفة في النظام</td>
                </tr>
            </tbody>
        `;
    } else if (type === 'questions') {
        reportTitle = "تقرير بنك الأسئلة المنهجي";
        tableContent = `
            <thead>
                <tr>
                    <th>العنصر</th>
                    <th>العدد الإجمالي</th>
                    <th>الحالة</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td style="font-weight:bold;">الأسئلة المحفوظة في البنك</td>
                    <td style="color:#f59e0b; font-weight:900; font-size:18px;">${numQuestions} سؤال</td>
                    <td>جاهزة للاستخدام</td>
                </tr>
            </tbody>
        `;
    } else if (type === 'plans') {
        reportTitle = "أرشيف الخطط الدراسية";
        tableContent = `
            <thead>
                <tr>
                    <th>العنصر</th>
                    <th>العدد الإجمالي</th>
                    <th>الحالة</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td style="font-weight:bold;">الخطط الدراسية المعتمدة</td>
                    <td style="color:#10b981; font-weight:900; font-size:18px;">${numPlans} خطة</td>
                    <td>مؤرشفة</td>
                </tr>
            </tbody>
        `;
    } else {
        reportTitle = "تقرير الأداء الأكاديمي العام";
        tableContent = `
            <thead>
                <tr>
                    <th>العنصر</th>
                    <th>العدد</th>
                    <th>العنصر</th>
                    <th>العدد</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td style="font-weight:bold;">إجمالي الطلاب</td>
                    <td style="color:#2563eb; font-weight:900; font-size:16px;">${numStudents}</td>
                    <td style="font-weight:bold;">متوسط النجاح</td>
                    <td style="color:#10b981; font-weight:900; font-size:16px;">${numSuccess} %</td>
                </tr>
                <tr>
                    <td style="font-weight:bold;">المحاضرات المنجزة</td>
                    <td style="color:#8b5cf6; font-weight:900; font-size:16px;">${numLectures}</td>
                    <td style="font-weight:bold;">أسئلة البنك والخطط</td>
                    <td style="color:#f59e0b; font-weight:900; font-size:16px;">${parseInt(numQuestions) + parseInt(numPlans)}</td>
                </tr>
            </tbody>
        `;
    }

    // 4. بناء هيكل الـ HTML والـ CSS للطباعة الاحترافية
    const printWindow = window.open('', '_blank');
    const printHTML = `
    <html dir="rtl" lang="ar">
    <head>
        <title>طباعة - ${reportTitle}</title>
        <style>
            @import url('https://fonts.googleapis.com/css2?family=Tajawal:wght@400;700;900&display=swap');
            
            /* إعدادات الطباعة الأساسية لإجبار الألوان */
            @page { size: A4; margin: 15mm; }
            * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
            
            body { 
                font-family: 'Tajawal', sans-serif; 
                color: #0f172a; 
                background: white; 
                margin: 0; 
                padding: 20px; 
            }
            
            /* الترويسة الرسمية */
            .header-container {
                display: flex;
                justify-content: space-between;
                align-items: center;
                border-bottom: 4px solid #93003c;
                padding-bottom: 20px;
                margin-bottom: 30px;
            }
            .header-info h1 { margin: 0; color: #93003c; font-size: 28px; font-weight: 900; }
            .header-info h2 { margin: 5px 0 0 0; color: #475569; font-size: 20px; }
            .logo { max-width: 100px; max-height: 100px; object-fit: contain; }
            
            /* معلومات التقرير والمدرس */
            .meta-box {
                background: #f8fafc;
                border: 2px solid #e2e8f0;
                border-radius: 12px;
                padding: 15px 25px;
                margin-bottom: 30px;
                display: flex;
                justify-content: space-between;
            }
            .meta-item { display: flex; flex-direction: column; }
            .meta-label { color: #64748b; font-size: 14px; font-weight: bold; margin-bottom: 5px; }
            .meta-value { color: #1e293b; font-size: 18px; font-weight: 900; }
            
            /* تصميم الجدول الاحترافي */
            table {
                width: 100%;
                border-collapse: collapse;
                margin-bottom: 40px;
            }
            th {
                background-color: #93003c !important;
                color: white !important;
                padding: 15px;
                text-align: right;
                font-size: 16px;
                border: 1px solid #7a0031;
            }
            td {
                padding: 15px;
                border: 1px solid #cbd5e1;
                font-size: 15px;
            }
            tr:nth-child(even) td { background-color: #f1f5f9 !important; }
            
            /* التوقيعات */
            .signatures {
                display: flex;
                justify-content: space-between;
                margin-top: 50px;
                padding-top: 30px;
                border-top: 2px dashed #cbd5e1;
            }
            .sign-box { text-align: center; width: 30%; }
            .sign-title { font-weight: bold; color: #475569; margin-bottom: 40px; }
            .sign-line { border-bottom: 1px solid #1e293b; }
            
            .watermark {
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%) rotate(-45deg);
                font-size: 8rem;
                color: rgba(147, 0, 60, 0.05);
                font-weight: 900;
                z-index: -1;
                pointer-events: none;
            }
        </style>
    </head>
    <body>
        <!-- العلامة المائية للورقة -->
        <div class="watermark">معتمد</div>

        <div class="header-container">
            <div class="header-info">
                <h1>${schoolName}</h1>
                <h2>${reportTitle}</h2>
            </div>
            ${logoSrc ? `<img src="${logoSrc}" class="logo" alt="شعار الأكاديمية">` : ''}
        </div>

        <div class="meta-box">
            <div class="meta-item">
                <span class="meta-label">المدرس المسؤول</span>
                <span class="meta-value">${teacherName}</span>
            </div>
            <div class="meta-item">
                <span class="meta-label">تاريخ الإصدار</span>
                <span class="meta-value">${today}</span>
            </div>
            <div class="meta-item">
                <span class="meta-label">العام الدراسي</span>
                <span class="meta-value">2025 / 2026</span>
            </div>
        </div>

        <table>
            ${tableContent}
        </table>

       <div class="signatures">
            <div class="sign-box">
                <div class="sign-title">توقيع المدرس</div>
                <div class="sign-line"></div>
            </div>
            <div class="sign-box">
                <div class="sign-title">اعتماد الإدارة / الختم</div>
                <div class="sign-line"></div>
            </div>
        </div>
    </body>
    </html>
    `;

    // طباعة الكود داخل النافذة الجديدة
    printWindow.document.write(printHTML);
    printWindow.document.close();
    
    // 🚀 الحل الآمن: إعطاء أمر الطباعة من النافذة الرئيسية (الخارجية) لكي لا نكسر الأكواد
    setTimeout(() => {
        printWindow.print();
    }, 800);
}

// =========================================================================
// إعدادات البث (موجودة مسبقاً في كودك وتم الحفاظ عليها لكي لا يتعطل شيء)
// =========================================================================
const config = { 
    config: { 
        'iceServers': [
            { url: 'stun:stun.l.google.com:19302' }, 
            { url: 'stun:stun1.l.google.com:19302' }
        ] 
    } 
};

    // إنشاء الاتصال بالمعرف الثابت مع الإعدادات الجديدة
   
    let localStream;

    // 2. تشغيل الكاميرا والميكروفون
    function startWebcam() {
        navigator.mediaDevices.getUserMedia({ video: true, audio: true })
        .then(stream => {
            localStream = stream;
            const videoElement = document.getElementById('localVideo');
            if(videoElement) {
                videoElement.srcObject = stream;
                videoElement.muted = true; // صامت للمدرس فقط
            }
            console.log("الكاميرا جاهزة والقناة مفتوحة");
        }).catch(err => console.error("الكاميرا لا تعمل:", err));
    }

    
    // 3. الاستجابة لاتصالات الطلاب (بشكل آمن)
    document.addEventListener("DOMContentLoaded", function() {
        if (typeof peer !== 'undefined') {
            peer.on('call', (call) => {
                console.log("طالب يحاول الدخول... جاري إرسال البث");
                if (typeof localStream !== 'undefined' && localStream) {
                    call.answer(localStream);
                } else {
                    navigator.mediaDevices.getUserMedia({ video: true, audio: true }).then(stream => {
                        localStream = stream;
                        call.answer(stream);
                    }).catch(e => console.error("الكاميرا لا تستجيب للاتصال:", e));
                }
            });
        }
    });

    // دالة توليد الرابط (تأكد أن المسار academy بحرف صغير)
    function openInviteModal() {
        const modal = document.getElementById('inviteModal');
        if (modal) modal.style.display = 'flex';

        // جلب التوكن من الرابط لضمان عمل زر المشاركة للطلاب
        const urlParams = new URLSearchParams(window.location.search);
        const token = urlParams.get('token');
        const domain = window.location.origin;
        
        if (token) {
            document.getElementById('live-link-input').value = domain + "/academy/zoom_api/student_live.php?token=" + token;
        } else {
            document.getElementById('live-link-input').value = domain + "/academy/zoom_api/student_live.php";
        }
    }

    function closeInviteModal() {
        const modal = document.getElementById('inviteModal');
        if (modal) modal.style.display = 'none';
    }

    function copyLiveLink() {
        const copyText = document.getElementById('live-link-input');
        if (copyText) {
            copyText.select();
            document.execCommand('copy');
            alert("✅ تم نسخ رابط الطالب بنجاح!");
        }
    }

    // دالة إرسال الإشعارات للمرحلة والقسم (التي طلبتموها)
    function sendInvitesToGroup() {
        const grade = document.getElementById('invite-grade').value;
        const dept = document.getElementById('invite-dept').value;
        const link = document.getElementById('live-link-input').value;

        fetch('zoom_api/send_notifications.php', {
            method: 'POST',
            headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
            body: `grade=${grade}&dept=${dept}&link=${encodeURIComponent(link)}`
        })
        .then(response => response.text())
        .then(data => {
            if(data.trim() === "success") {
                alert("🚀 تم إرسال الرابط بنجاح للمجموعة المختارة!");
                closeInviteModal();
            } else {
                alert("✅ تم الإرسال (محاكاة): الرابط جاهز للإرسال لقاعدة البيانات.");
            }
        });
    }
    //
    function renderLiveArchive() {
    const tbody = document.getElementById('live-archive-table-body');
    if (!tbody) return;

    tbody.innerHTML = '<tr><td colspan="6" style="text-align:center; padding:20px;"><i class="fas fa-spinner fa-spin"></i> جاري جلب الفيديوهات...</td></tr>';

    // 1. 🚀 اصطياد المعرف الرقمي الطويل للمدرس الحالي مباشرة من رابط الصفحة العلوي
    const match = window.location.href.match(/teacher_(\d+)/);
    const url_tid = match ? match[1] : '';

    // 2. 🚀 استدعاء ملف الأرشيف الموحد والمفلتر بالكامل بناءً على رقم صندوق المدرس الحالي
    fetch(`archive_live.php?api=json&tid=${url_tid}`)
    .then(res => res.json())
    .then(data => {
        // ضمان قراءة البيانات بنجاح سواء عادت كمصفوفة مباشرة أو كائن يحتوي على مفتاح data
        const videos = Array.isArray(data) ? data : (data.data || []);

        if (videos.length === 0) {
            tbody.innerHTML = '<tr><td colspan="6" style="text-align:center; padding:20px; color:#94a3b8;">الأرشيف فارغ حالياً، أو لا توجد فيديوهات خاصة بك.</td></tr>';
            return;
        }

        tbody.innerHTML = videos.map(v => {
            // 🌟 القراءة المباشرة من الأعمدة المنفصلة التي ربطناها بذكاء في السيرفر (المرحلة والقسم)
            let stage = v.class_name || 'الكل';
            let dept = v.dept || 'عام';

            // مسار الفيديو الآمن والقادم كاملاً من السيرفر
            let vidUrl = v.video_url || v.path || '';
            
            // حماية العنوان من علامات الاقتباس لكي لا يكسر دالة التعديل
            let safeTitle = v.title ? v.title.replace(/'/g, "\\'") : 'بدون عنوان';

            return `
            <tr style="border-bottom: 1px solid #eee; transition: 0.3s;" onmouseover="this.style.background='#f8fafc'" onmouseout="this.style.background='white'">
                <td style="text-align:center; padding:12px;">
                    <input type="checkbox" class="live-check" value="${v.id}" style="width:16px; height:16px; accent-color:#22c55e; cursor:pointer;">
                </td>
                <td style="padding:12px; font-weight:bold; text-align:right; color:#1e293b;">${v.title}</td>
                <td style="text-align:center; padding:12px; color:#475569;">${stage}</td>
                <td style="text-align:center; padding:12px; color:#475569;">${dept}</td>
                <td style="text-align:center; padding:12px; color:#64748b;">${v.date}</td>
                <td style="text-align:center; padding:12px;">
                    <div style="display:flex; justify-content:center; gap:15px; align-items:center;">
                        <i class="fas fa-eye text-success" style="cursor:pointer; font-size: 16px; transition: 0.2s;" onmouseover="this.style.transform='scale(1.2)'" onmouseout="this.style.transform='scale(1)'" title="مشاهدة" onclick="playVideo('${vidUrl}')"></i>
                        <i class="fas fa-pen text-primary" style="cursor:pointer; font-size: 16px; transition: 0.2s;" onmouseover="this.style.transform='scale(1.2)'" onmouseout="this.style.transform='scale(1)'" title="تعديل العنوان" onclick="editVideoTitle(${v.id}, '${safeTitle}')"></i>
                        <i class="fas fa-trash text-danger" style="cursor:pointer; font-size: 16px; transition: 0.2s;" onmouseover="this.style.transform='scale(1.2)'" onmouseout="this.style.transform='scale(1)'" title="حذف" onclick="deleteVideo(${v.id})"></i>
                    </div>
                </td>
            </tr>
            `;
        }).join('');
    })
    .catch(err => {
        console.error("عطل في جلب فيديوهات الأرشيف:", err);
        tbody.innerHTML = '<tr><td colspan="6" style="text-align:center; color:red; padding:20px;">خطأ في الاتصال بقاعدة البيانات.</td></tr>';
    });
}

// 2. دالة تشغيل الفيديو (فتح مباشر في تبويب جديد لضمان عمل webm)
function playVideo(url) {
    if (!url || url.includes('undefined')) {
        alert("عذراً، مسار الفيديو غير صحيح.");
        return;
    }
    window.open(url, '_blank');
}

// 3. دالة الحذف (إصلاح السلة)
function deleteVideo(id) {
    if (confirm("هل أنت متأكد من حذف هذا الفيديو نهائياً؟")) {
        fetch(`archive_live.php?api=delete&id=${id}`)
        .then(res => res.json())
        .then(res => {
            if (res.success) {
                renderLiveArchive(); // تحديث الجدول فوراً بعد الحذف
            } else {
                alert("حدث خطأ أثناء الحذف.");
            }
        });
    }
}
// ==========================================
// 🚀 نظام قائمة الطلاب التفاعلية (لنافذة أرشيف الفيديو)
// ==========================================

// دالة لفتح/إغلاق القائمة المنسدلة للطلاب في الفيديو
function toggleVidStudentList() {
    const list = document.getElementById('vid-student-checkbox-list');
    const icon = document.querySelector('#vid-student-dropdown-btn i');
    if (list.style.display === 'none') {
        list.style.display = 'block';
        icon.classList.replace('fa-chevron-down', 'fa-chevron-up');
        
        // سنستخدم نفس المصفوفة (schStudentsList) التي جلبناها مسبقاً في الجداول لنوفر وقت الاتصال بالسيرفر!
        // إذا لم تكن موجودة أو فارغة، سنجلبها من جديد.
        if(typeof schStudentsList === 'undefined' || schStudentsList.length === 0) {
            fetchVidStudents();
        } else {
            renderVidStudents(schStudentsList);
        }
    } else {
        list.style.display = 'none';
        icon.classList.replace('fa-chevron-up', 'fa-chevron-down');
    }
}

// إغلاق القائمة عند النقر في أي مكان فارغ بالشاشة
document.addEventListener('click', function(event) {
    const dropdownBtn = document.getElementById('vid-student-dropdown-btn');
    const checkboxList = document.getElementById('vid-student-checkbox-list');
    if (dropdownBtn && checkboxList) {
        if (!dropdownBtn.contains(event.target) && !checkboxList.contains(event.target)) {
            checkboxList.style.display = 'none';
            const icon = document.querySelector('#vid-student-dropdown-btn i');
            if(icon) icon.classList.replace('fa-chevron-up', 'fa-chevron-down');
        }
    }
});

// الدالة لجلب الطلاب إذا لزم الأمر
// 🚀 دالة جلب طلاب المدرس الحالي فقط (للقائمة المنسدلة في الفيديو) 🚀
function fetchVidStudents() {
    const container = document.getElementById('vid-students-container'); // أو الـ ID الذي تستخدمه للقائمة
    if (!container) return;

    // الحصول على معرف المدرس الفعلي من حقل مخفي (تأكد أن ID الحقل هو static_slug)
    let teacherSlug = document.getElementById('static_slug') ? document.getElementById('static_slug').value : '';
    
    // إرسال الطلب مع تمرير اسم المدرس كفلتر (teacher=...)
    fetch(`get_students_list.php?teacher=${encodeURIComponent(teacherSlug)}`)
    .then(res => res.json())
    .then(data => {
        if (data.status === 'success') {
            // هنا الفلترة الحقيقية: إذا كان هناك طلاب، سنعرضهم، وإذا لا، سنعرض رسالة
            renderVidStudents(data.students); 
        } else {
            container.innerHTML = '<div style="padding:10px; color:red;">خطأ: ' + data.message + '</div>';
        }
    })
    .catch(err => {
        console.error("عطل في الاتصال:", err);
    });
}

// رسم مربعات الاختيار في قائمة الفيديو
function renderVidStudents(students) {
    const container = document.getElementById('vid-students-container');
    let html = '';
    students.forEach(s => {
        let displayName = s.student_name || 'غير معروف';
        let studentId = s.student_id;
        html += `
            <label style="display: flex; align-items: center; justify-content: space-between; padding: 8px 10px; border-bottom: 1px solid #f1f5f9; cursor: pointer; transition: 0.2s;" onmouseover="this.style.background='#f8fafc'" onmouseout="this.style.background='white'">
                <span style="font-size: 13px; color: #334155;">${displayName}</span>
                <input type="checkbox" class="vid-student-cb" value="${studentId}" data-name="${displayName}" onchange="updateVidStudentSelection()" style="width: 14px; height: 14px; accent-color: #3b82f6; cursor: pointer;">
            </label>
        `;
    });
    container.innerHTML = html;
}

// البحث والتصفية في قائمة الفيديو
function filterVidStudentList() {
    const searchTerm = document.getElementById('vid-student-search').value.toLowerCase();
    const filtered = (typeof schStudentsList !== 'undefined' ? schStudentsList : []).filter(s => {
        let name = s.student_name || '';
        return name.toLowerCase().includes(searchTerm);
    });
    renderVidStudents(filtered);
}


// تحديث النص بعد الاختيار
function updateVidStudentSelection() {
    const selected = document.querySelectorAll('.vid-student-cb:checked');
    const textSpan = document.getElementById('vid-student-dropdown-text');
    
    if (selected.length === 0) {
        textSpan.innerHTML = 'طالب محدد (اختياري)';
        textSpan.style.color = '#475569';
    } else if (selected.length === 1) {
        textSpan.innerHTML = '<i class="fas fa-user text-primary"></i> ' + selected[0].getAttribute('data-name');
        textSpan.style.color = '#3b82f6';
    } else {
        textSpan.innerHTML = `<i class="fas fa-users text-primary"></i> (${selected.length}) طلاب محددين`;
        textSpan.style.color = '#3b82f6';
    }
}

// ⚠️ تعديل حيوي لدالة publishVideos() الخاصة بك:
// يجب أن تسحب الطلاب المحددين هكذا:
/* const selectedStudentCBs = document.querySelectorAll('.vid-student-cb:checked');
   let student = 'all';
   if (selectedStudentCBs.length > 0) {
       let studentIds = [];
       selectedStudentCBs.forEach(cb => studentIds.push(cb.value));
       student = studentIds.join(',');
   }
*/

// 4. دالة تعديل الاسم (القلم)
function editVideoTitle(id, oldTitle) {
    const newTitle = prompt("أدخل العنوان الجديد للحصة:", oldTitle);
    if (newTitle && newTitle !== oldTitle) {
        fetch(`archive_live.php?api=update&id=${id}&title=${encodeURIComponent(newTitle)}`)
        .then(res => res.json())
        .then(res => {
            if (res.success) {
                renderLiveArchive(); // تحديث الجدول فوراً بعد التعديل
            } else {
                alert("حدث خطأ أثناء التعديل.");
            }
        });
    }
}

// استدعاء دالة العرض عند تحميل الصفحة
document.addEventListener("DOMContentLoaded", renderLiveArchive);

function publishVideos() {
    const selected = document.querySelectorAll('.live-check:checked');
    const stage = document.getElementById('publish-stage').value;
    const dept = document.getElementById('publish-dept').value;

    if (selected.length === 0) {
        alert("يرجى اختيار فيديو واحد على الأقل من الجدول للنشر.");
        return;
    }

    alert(`🚀 جاري نشر الفيديوهات المختارة لـ: \n المرحلة: ${stage} \n القسم: ${dept}`);
    
    // هنا يمكنك إضافة كود الـ Fetch لإرسال البيانات للسيرفر فعلياً
}
// دالة رفع الفيديو من الجهاز
function uploadVideoFile(input) {
    const file = input.files[0];
    if (!file) return;

    const title = prompt("🎬 أدخل عنواناً لهذا الفيديو:", file.name.split('.')[0]);
    if (!title) { input.value = ''; return; }

    // جلب المرحلة التي اختارها المدرس قبل الرفع
    const stage = document.getElementById('publish-stage')?.options[document.getElementById('publish-stage').selectedIndex].text || "عام";

    const formData = new FormData();
    formData.append('api', 'upload');
    formData.append('video_file', file);
    formData.append('title', title);
    formData.append('class_name', stage); // إضافة المرحلة الجديدة
    formData.append('status', 'published'); // إضافة حالة النشر

    const statusSpan = document.getElementById('upload-status');
    statusSpan.style.display = 'inline';
    statusSpan.style.color = '#f59e0b';
    statusSpan.innerHTML = '<i class="fas fa-spinner fa-spin"></i> جاري الرفع... يرجى الانتظار';

    fetch('archive_live.php', {
        method: 'POST',
        body: formData
    })
    .then(res => res.json())
    .then(res => {
        if (res.success) {
            statusSpan.style.color = '#22c55e';
            statusSpan.innerHTML = '<i class="fas fa-check"></i> تم الرفع بنجاح!';
            renderLiveArchive(); 
            setTimeout(() => statusSpan.style.display = 'none', 4000);
        } else {
            statusSpan.style.color = '#ef4444';
            statusSpan.innerHTML = '❌ فشل الرفع: ' + (res.message || 'خطأ غير معروف');
        }
        input.value = '';
    })
    .catch(err => {
        statusSpan.style.color = '#ef4444';
        statusSpan.innerHTML = '❌ خطأ في الاتصال بالسيرفر.';
        input.value = '';
    });
}
// --- تشغيل الهيدر الذكي والمساعد الشخصي ---
function updateSmartHeader() {
    // 1. جلب تاريخ اليوم باللغة العربية
    const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
    const todayDate = new Date().toLocaleDateString('ar-EG', options);
    const dateEl = document.getElementById('header-date');
    if(dateEl) dateEl.innerText = todayDate;

    // 2. تحديث الإشعار بناءً على الخطط المحفوظة
    const notifyEl = document.getElementById('daily-notification-text');
    if(notifyEl) {
        // إذا كان هناك خطط محفوظة في مصفوفة savedPlans
        if (typeof savedPlans !== 'undefined' && savedPlans.length > 0) {
            // جلب أحدث خطة تم إضافتها
            const latestPlan = savedPlans[savedPlans.length - 1];
            notifyEl.innerText = "📌 تذكير: لديك خطة مجدولة بعنوان (" + latestPlan.title + ")";
            notifyEl.style.color = "#93003c";
        } else {
            // في حال عدم وجود خطط
            notifyEl.innerText = "✅ لا توجد مهام أو دروس مجدولة لهذا اليوم.";
            notifyEl.style.color = "#2ecc71"; // لون أخضر للراحة
            
            // إيقاف حركة الجرس المزعجة إذا لم يكن هناك شيء
            const bell = document.querySelector('.fa-bell');
            if (bell) bell.style.animation = 'none';
        }
    }
}

// دالة نربطها بزر "حفظ الخطة" لكي يتحدث الهيدر فوراً عند كتابة خطة جديدة
const originalSavePlan = window.savePlanToArchive;
if (typeof originalSavePlan === "function") {
    window.savePlanToArchive = function() {
        originalSavePlan(); // ينفذ حفظ الخطة القديم
        updateSmartHeader(); // يحدّث الهيدر ليظهر الخطة التي حفظناها للتو!
        
        // تشغيل الجرس مجدداً
        const bell = document.querySelector('.fa-bell');
        if (bell) bell.style.animation = 'ringNotification 2s infinite';
    };
}

// تشغيل الهيدر بمجرد فتح الصفحة
document.addEventListener('DOMContentLoaded', updateSmartHeader);
// --- دوال قسم الطلاب والمزامنة الجديدة ---

function generateSyncID() {
    const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    let result = 'RM-26-';
    for (let i = 0; i < 4; i++) {
        result += chars.charAt(Math.floor(Math.random() * chars.length));
    }
    // وضع الكود المولد في المستطيل المخصص له
    const syncInput = document.getElementById('new-std-syncid');
    if(syncInput) syncInput.value = result;
}

// --- دالة حفظ الطالب الجديد (مربوطة بقاعدة البيانات + نظام العزل) ---
async function saveNewStudent() {
    const name = document.getElementById('new-std-name') ? document.getElementById('new-std-name').value.trim() : '';
    const phoneInput = document.getElementById('new-std-phone');
    const phone = phoneInput ? phoneInput.value.trim() : '';
    const syncId = document.getElementById('new-std-syncid') ? document.getElementById('new-std-syncid').value : '';

    // ==========================================
    // سحب المرحلة، القسم، والشعبة بدقة تامة
    // ==========================================
    const stage = document.getElementById('new-std-stage') ? document.getElementById('new-std-stage').value : 'عام';
    const department = document.getElementById('new-std-dept') ? document.getElementById('new-std-dept').value : 'عام';
    const branch = document.getElementById('new-std-section') ? document.getElementById('new-std-section').value : 'الكل';

    if(!name || !syncId || syncId === "لم يتم التوليد بعد") {
        alert("يا هندسة، يرجى كتابة اسم الطالب والضغط على زر 'توليد' المعرف أولاً!");
        return;
    }

    // إصلاح الخطأ: دمج المرحلة مع الشعبة للعرض في الجدول (إذا لم تكن الشعبة "الكل")
    let finalStage = stage;
    if(branch && branch !== 'الكل' && branch !== 'all') {
        finalStage += " - شعبة " + branch;
    }

   // --- (جلب اسم المدرس بذكاء من الرابط لضمان الختم وفك تشفير اللغة العربية) ---
let teacherSlug = document.getElementById('static_slug') ? document.getElementById('static_slug').value : "";
if (!teacherSlug) {
    let pathname = window.location.pathname.replace(/\/$/, "");
    let pathArray = pathname.split('/');
    // فك التشفير هنا يضمن حفظ الاسم بالعربي الصافي في قاعدة البيانات
    teacherSlug = decodeURIComponent(pathArray[pathArray.length - 1]); 
}
// ---------------------------------------------------------------

    // 2. تجهيز البيانات كـ Form لكي يستقبلها الـ PHP عبر $_POST بنجاح
    const formData = new FormData();
    formData.append('student_id', syncId);
    formData.append('student_name', name); 
    formData.append('phone', phone);

    // إرسال البيانات الثلاثة لضمان المزامنة الكاملة
    formData.append('stage', stage);        
    formData.append('department', department); 
    formData.append('branch', branch);      

    formData.append('teacher_name', teacherSlug);

    try {
        // 3. توجيه الطلب إلى ملفك المدمج (add_student.php)
        let response = await fetch('add_student.php', {
            method: 'POST',
            body: formData 
        });
        
        let result = await response.json();
        
        if(result.status === 'success') {
            // إغلاق النافذة وتفريغ الحقول
            document.getElementById('studentModal').style.display = 'none';
            document.getElementById('new-std-name').value = '';
            if(phoneInput) phoneInput.value = '';
            document.getElementById('new-std-syncid').value = 'لم يتم التوليد بعد';

            let tbody = document.getElementById('manage-students-tbody');
            if (tbody) {
                // اسم آمن للجافاسكربت
                let safeName = name.replace(/'/g, "\\'");
                
                // بناء السطر بـ 5 أعمدة مطابقة تماماً لجدول العرض الرئيسي
                let newRow = `
                <tr style="border-bottom: 1px solid #eee; background-color: #f0fdf4;">
                    <td style="text-align: right; padding: 15px;">
                        <input type="checkbox" class="student-cb" value="${syncId}" data-phone="${phone}" onchange="updateSelectedCount()" style="margin-left: 10px; cursor: pointer;"> ${name}
                    </td>
                    <td style="text-align: center;"><span style="background: #f1f5f9; padding: 5px 10px; border-radius: 5px; font-family: monospace; font-weight: bold;">${syncId}</span></td>
                    <td style="text-align: center; color:#2ecc71; font-weight:bold;"><i class="fab fa-whatsapp"></i> ${phone}</td>
                    <td style="text-align: center;"><span style="background: #e0e7ff; color: #3730a3; padding: 4px 8px; border-radius: 4px; font-size: 0.85rem;">${finalStage}</span></td>
                    <td style="text-align: center;">
                        <div style="display: flex; gap: 10px; justify-content: center;">
                    <button onclick="editStudent('${syncId}', '${safeName}', '${finalStage}')" style="background:none; border:none; color:#3b82f6; cursor:pointer;" title="تعديل"><i class="fas fa-pen"></i></button>
                    
                    <button onclick="editPermissions('${syncId}', '${safeName}')" style="background:none; border:none; color:#eab308; cursor:pointer;" title="الصلاحيات"><i class="fas fa-lock"></i></button>
                    
                    <button onclick="resetStudentPassword('${syncId}', '${safeName}')" style="background:none; border:none; color:#8b5cf6; cursor:pointer;" title="إعادة ضبط كلمة المرور"><i class="fas fa-key"></i></button>

                    <button onclick="pauseStudent('${syncId}', this)" style="background:none; border:none; color:#2ecc71; cursor:pointer;" title="إيقاف"><i class="fas fa-pause-circle"></i></button>
                    
                    <button onclick="deleteStudent('${syncId}', this)" style="background:none; border:none; color:#ef4444; cursor:pointer;" title="حذف"><i class="fas fa-user-times"></i></button>
                </div>
                    </td>
                </tr>`;
                
                // إضافة الطالب الجديد في أعلى القائمة
                tbody.insertAdjacentHTML('afterbegin', newRow);
                
                // وميض خفيف لإشعارك بمكان الإضافة
                setTimeout(() => { if(tbody.firstChild) tbody.firstChild.style.backgroundColor = ""; }, 2000);
            }

            alert("✅ تم تسجيل الطالب وحفظه في قاعدة البيانات بنجاح!");
            
            // تحديث الصفحة فوراً لكي ينعكس الرقم الجديد في الإحصائيات (من 0 إلى 1)
            location.reload(); 
            
        } else {
            alert("❌ فشل التسجيل: " + result.message);
        }
    } catch (e) {
        console.error(e);
        alert("خطأ في الاتصال بالخادم.");
    }
}

// دالة مساعدة لتحديث كل الجداول في وقت واحد
function refreshAllTables() {
    if(typeof renderManageStudentsTable === 'function') renderManageStudentsTable();
    if(typeof renderEvalStudentsTable === 'function') renderEvalStudentsTable();
    if(typeof renderGradesTable === 'function') renderGradesTable();
}


// ==============================================================
// 2. نظام الإجراءات الحقيقية (الحجب، الإيقاف، الطرد)
// ==============================================================

// أ. دالة الإيقاف المؤقت
function toggleSuspendStudent(index) {
    // عكس حالة الطالب (إذا كان موقوف يرجع نشط، والعكس)
    allStudents[index].isSuspended = !allStudents[index].isSuspended;
    alert(allStudents[index].isSuspended ? `⛔ تم إيقاف حساب الطالب (${allStudents[index].name}) مؤقتاً.` : `✅ تم إعادة تفعيل حساب الطالب (${allStudents[index].name}).`);
    refreshAllTables(); // تحديث الجدول لتغيير لون الطالب الموقوف
}

// ب. دالة الطرد النهائي
function kickStudent(index) {
    if(confirm(`⚠️ تحذير: هل أنت متأكد من طرد الطالب (${allStudents[index].name}) نهائياً وحذفه من الكلاس الخاص بك؟`)) {
        allStudents.splice(index, 1); // حذف الطالب من المصفوفة
        alert("🗑️ تم حذف الطالب بنجاح.");
        refreshAllTables(); // تحديث الجدول لاختفاء الطالب
    }
}

// ميزة توليد رابط التسجيل للطلاب
// ميزة توليد الرابط الاحترافي (اسم المدرس / register)
function generateRegistrationLink() {
    // جلب معرف المدرس من الرابط الحالي
    const urlParams = new URLSearchParams(window.location.search);
    const teacherSlug = urlParams.get('u') || 'ammar'; // افتراضي إذا لم يوجد
    const domain = window.location.origin;
    
    // بناء الرابط الاحترافي الذي طلبته
    const registerLink = `${domain}/academy/${teacherSlug}/register`;
    
    // نسخ الرابط
    navigator.clipboard.writeText(registerLink).then(() => {
        alert("🔗 تم نسخ الرابط بنجاح!\n\nأرسل هذا الرابط للطلاب ليسجلوا بأنفسهم في قائمتك:\n" + registerLink);
    }).catch(err => {
        prompt("انسخ الرابط التالي وأرسله للطلاب:", registerLink);
    });
}
// --- دالة توليد ونسخ رابط الطالب ---
function generateLinkFromTable() {
    // الان يبحث فقط عن المربعات التي تحمل الكلاس student-cb
    let selectedCheckboxes = document.querySelectorAll('.student-cb:checked');
    
    if(selectedCheckboxes.length === 0) {
        alert("يرجى وضع علامة في المربع الصغير أمام اسم الطالب أولاً!");
        return;
    }
    if(selectedCheckboxes.length > 1) {
        alert("يرجى تحديد طالب واحد فقط في كل مرة لنسخ رابطه.");
        return;
    }

    let syncId = selectedCheckboxes[0].value;
    let joinLink = window.location.origin + "/academy/join/" + syncId;

    navigator.clipboard.writeText(joinLink).then(() => {
        alert("✅ تم نسخ رابط التسجيل بنجاح!\n\nالرابط: " + joinLink);
    }).catch(err => {
        prompt("يرجى نسخ الرابط التالي يدوياً:", joinLink);
    });
}
</script>
<input type="file" id="hidden-video-input" style="display:none" accept="video/*" onchange="addVideoToTable(this)">
<input type="file" id="hidden-file-input" style="display:none" accept=".pdf,.doc,.docx" onchange="addFileToTable(this)">
<!-- ========================================== -->
<!-- 1. نافذة التعديل المنبثقة (تضاف قبل /body) -->
<!-- ========================================== -->
<div id="editStudentModal" style="display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.6); z-index:9999; justify-content:center; align-items:center;">
    <div style="background:#fff; padding:25px; border-radius:12px; width:400px; max-width:90%; text-align:right; box-shadow: 0 10px 25px rgba(0,0,0,0.2);">
        <h3 style="margin-top:0; color:#1e293b; border-bottom:2px solid #f1f5f9; padding-bottom:10px;">
            <i class="fas fa-user-edit text-primary"></i> تعديل بيانات الطالب
        </h3>
        </div>
        
        <!-- حقل مخفي لحفظ المعرف القديم -->
        <input type="hidden" id="edit_old_id">

        <!-- حقل الاسم -->
        <label style="display:block; margin-top:15px; font-weight:bold; color:#475569;">اسم الطالب:</label>
        <input type="text" id="edit_name" style="width:100%; padding:10px; margin-top:5px; border:1px solid #cbd5e1; border-radius:6px; box-sizing:border-box;">

        <!-- حقل المرحلة -->
        <div style="margin-top:15px;">
    <label style="display:block; margin-top:15px; font-weight:bold; color:#475569;">اسم الطالب:</label>
<input type="text" id="edit_name" class="edit-name" style="width:100%; padding:10px; margin-top:5px; border:1px solid #cbd5e1; border-radius:6px; box-sizing:border-box;">

<div style="margin-top:15px;">
    <label style="display:block; font-weight:bold; color:#475569;">المرحلة أو المجموعة:</label>
    <select id="edit_stage" class="edit-stage dynamic-taxonomy-select" data-type="stage" data-filter="false" style="width:100%; padding:10px; margin-top:5px; border:1px solid #cbd5e1; border-radius:6px; box-sizing:border-box;">
    </select>
</div>

<div style="margin-top:15px;">
    <label style="display:block; font-weight:bold; color:#475569;">القسم أو المسار:</label>
    <select id="edit_dept" class="edit-dept dynamic-taxonomy-select" data-type="dept" data-filter="false" style="width:100%; padding:10px; margin-top:5px; border:1px solid #cbd5e1; border-radius:6px; box-sizing:border-box;">
    </select>
</div>

<div style="margin-top:15px;">
    <label style="display:block; font-weight:bold; color:#475569;">الشعبة (اختياري):</label>
    <select id="edit_branch" class="edit-branch dynamic-taxonomy-select" data-type="section" data-filter="false" style="width:100%; padding:10px; margin-top:5px; border:1px solid #cbd5e1; border-radius:6px; box-sizing:border-box;">
    </select>
</div>
</div>

        <!-- حقل الموبايل (تم تعديل الـ ID ليتطابق مع الدالة) -->
        <div style="margin-top: 15px;">
            <label style="display: block; margin-bottom: 5px; font-weight: bold; color: #475569;">رقم الموبايل:</label>
            <input type="text" id="edit_phone" style="width: 100%; padding: 10px; border: 1px solid #cbd5e1; border-radius: 6px; box-sizing:border-box;">
        </div>

        <!-- الأزرار -->
        <div style="margin-top:25px; display:flex; gap:10px; justify-content:flex-end;">
            <button onclick="closeEditModal()" style="padding:10px 20px; background:#94a3b8; color:#fff; border:none; border-radius:6px; cursor:pointer; font-weight:bold;">إلغاء</button>
            <button onclick="saveStudentChanges(this)" style="padding:10px 20px; background:#3b82f6; color:#fff; border:none; border-radius:6px; cursor:pointer; font-weight:bold;">حفظ التعديلات</button>
        </div>
    </div>
</div>
<script>

// ==========================================
// 2. إدارة الطلاب (تعديل، حذف، صلاحيات، إيقاف)
// ==========================================

// دالة فتح نافذة التعديل وتعبئة البيانات (بما فيها الموبايل)
function editStudent(id, name, stage, dept, branch, phone, btnRef) {
    
    // 💡 الوصول للصف 100%
    let tr = null;
    if (btnRef) {
        tr = btnRef.closest('tr'); 
    } else {
        tr = document.getElementById('row-' + id) || document.querySelector(`tr[data-id="${id}"]`); 
    }
    
    if (!tr) {
        alert("خطأ: لم يتم العثور على صف الطالب.");
        return;
    }

    if (!tr.hasAttribute('data-old-html')) {
        tr.setAttribute('data-old-html', tr.innerHTML);
    }

    // ==========================================
    // اللمسة السحرية: استنساخ الخيارات المحملة مسبقاً في الصفحة 
    // (من قوائم الفلترة أو نافذة الإضافة) لتجنب بطء الاتصال بالسيرفر
    // ==========================================
    let stageOpts = document.getElementById('new-std-stage') ? document.getElementById('new-std-stage').innerHTML : '';
    let deptOpts = document.getElementById('new-std-dept') ? document.getElementById('new-std-dept').innerHTML : '';
    let branchOpts = document.getElementById('new-std-section') ? document.getElementById('new-std-section').innerHTML : '';

    let editHtml = `
    <td colspan="6" style="padding: 25px; background: #f8fafc; border: 2px dashed #cbd5e1; border-radius: 12px; box-shadow: inset 0 2px 10px rgba(0,0,0,0.05);">
        <div style="display: flex; flex-direction: column; gap: 20px;">
            
            <div style="display: flex; gap: 15px; flex-wrap: wrap;">
                <input type="hidden" class="edit-id" value="${id}">
                
                <div style="flex: 2; min-width: 200px;">
                    <label style="font-size: 13px; font-weight: bold; color: #1e293b; margin-bottom: 5px; display: block;">الاسم الكامل:</label>
                    <input type="text" id="edit-name-${id}" class="edit-name" value="${name}" style="width: 100%; padding: 10px; border: 1px solid #cbd5e1; border-radius: 8px;">
                </div>
                <div style="flex: 1; min-width: 150px;">
                    <label style="font-size: 13px; font-weight: bold; color: #1e293b; margin-bottom: 5px; display: block;">رقم الهاتف:</label>
                    <input type="text" id="edit-phone-${id}" class="edit-phone" value="${phone}" style="width: 100%; padding: 10px; border: 1px solid #cbd5e1; border-radius: 8px; direction: ltr; text-align: right;">
                </div>
                <div style="flex: 1; min-width: 150px;">
                    <label style="font-size: 13px; font-weight: bold; color: #1e293b; margin-bottom: 5px; display: block;">المرحلة:</label>
                    <select id="edit-stage-${id}" class="edit-stage" style="width: 100%; padding: 10px; border: 1px solid #cbd5e1; border-radius: 8px;">
                        ${stageOpts}
                    </select>
                </div>
            </div>
            
            <div style="display: flex; gap: 15px; flex-wrap: wrap; align-items: flex-end;">
                <div style="flex: 1; min-width: 120px;">
                    <label style="font-size: 13px; font-weight: bold; color: #1e293b; margin-bottom: 5px; display: block;">القسم:</label>
                    <select id="edit-dept-${id}" class="edit-dept" style="width: 100%; padding: 10px; border: 1px solid #cbd5e1; border-radius: 8px;">
                        ${deptOpts}
                    </select>
                </div>
                <div style="flex: 1; min-width: 120px;">
                    <label style="font-size: 13px; font-weight: bold; color: #1e293b; margin-bottom: 5px; display: block;">الشعبة:</label>
                    <select id="edit-branch-${id}" class="edit-branch" style="width: 100%; padding: 10px; border: 1px solid #cbd5e1; border-radius: 8px;">
                        ${branchOpts}
                    </select>
                </div>
                
                    <div style="display: flex; gap: 10px; flex: 2; justify-content: flex-end; min-width: 250px;">
                    <button onclick="cancelEdit('${id}')" style="background: #94a3b8; color: white; border: none; padding: 10px 20px; border-radius: 8px; cursor: pointer; font-weight: bold;"><i class="fas fa-times"></i> إلغاء</button>
                    <button onclick="saveStudentChanges(this)" style="background: #3b82f6; color: white; border: none; padding: 10px 25px; border-radius: 8px; cursor: pointer; font-weight: bold; box-shadow: 0 4px 6px rgba(59, 130, 246, 0.3);"><i class="fas fa-save"></i> حفظ التعديلات</button>
                </div>
            </div>
        </div>
    </td>
    `;
    
    if(tr) {
        tr.innerHTML = editHtml;
        
        // 💡 اختيار الوسوم الحالية للطالب فوراً بعد رسم السطر
        setTimeout(() => {
            if (tr.querySelector('.edit-stage')) tr.querySelector('.edit-stage').value = stage;
            if (tr.querySelector('.edit-dept')) tr.querySelector('.edit-dept').value = dept;
            if (tr.querySelector('.edit-branch')) tr.querySelector('.edit-branch').value = branch;
        }, 50);
    }
}

// دالة الإلغاء لكي يعمل الزر الذي في تصميمك
function cancelEdit(id) {
    let input = document.getElementById('edit-name-' + id);
    if(input) {
        let tr = input.closest('tr');
        if (tr && tr.hasAttribute('data-old-html')) {
            tr.innerHTML = tr.getAttribute('data-old-html');
        }
    }
}

function closeEditModal() {
    document.getElementById('editStudentModal').style.display = 'none';
}

async function deleteStudent(id, btnElement) {
    if(!confirm("⚠️ تحذير أمني:\nهل أنت متأكد من حذف هذا الطالب نهائياً؟")) return;
    let originalIcon = btnElement.innerHTML;
    btnElement.innerHTML = "⏳";
    btnElement.disabled = true;
    try {
        let response = await fetch('api_delete_student.php', {
            method: 'POST',
            headers: {'Content-Type': 'application/json'},
            body: JSON.stringify({ student_id: id })
        });
        let result = await response.json();
        if(result.status === 'success') {
            let row = btnElement.closest('tr');
            row.style.transition = "all 0.5s";
            row.style.opacity = "0";
            setTimeout(() => row.remove(), 500);
        } else {
            alert('فشل الحذف: ' + result.message);
            btnElement.innerHTML = originalIcon;
            btnElement.disabled = false;
        }
    } catch(e) {
        alert('خطأ في الاتصال.');
        btnElement.innerHTML = originalIcon;
        btnElement.disabled = false;
    }
}

async function editPermissions(id, name = '') {
    // وضع المعرف والاسم في النافذة
    document.getElementById('perm_student_id').value = id;
    document.getElementById('perm-student-name').innerText = name ? "الطالب: " + name : "";
    
    try {
        // جلب البيانات من السيرفر
        let res = await fetch(`api_permissions.php?action=get&id=${id}`);
        let data = await res.json();
        
        if(data.status === 'success') {
            // تحديث مربعات الاختيار (0 يعني حجب، لذا يكون المربع مفعل Checked)
            document.getElementById('perm-live-check').checked = (data.perms.can_live == 0);
            document.getElementById('perm-exams-check').checked = (data.perms.can_exams == 0);
            document.getElementById('perm-archive-check').checked = (data.perms.can_archive == 0);
            
            // إضافة حالة قسم الفيديوهات الجديد
            if(document.getElementById('perm-videos-check')) {
                document.getElementById('perm-videos-check').checked = (data.perms.can_videos == 0);
            }
            
            // إظهار النافذة
            document.getElementById('permissionsModal').style.display = 'flex';
        } else {
            alert("لم يتم العثور على صلاحيات لهذا الطالب.");
        }
    } catch(e) { 
        console.error(e);
        alert("خطأ في الاتصال أثناء جلب البيانات."); 
    }
}

async function savePermissions(btn) {
    let id = document.getElementById('perm_student_id').value;
    
    // تأثير التحميل على الزر
    let originalText = btn.innerHTML;
    btn.innerHTML = "<i class='fas fa-spinner fa-spin'></i> جاري الحفظ...";
    btn.disabled = true;

    // تجهيز البيانات (المربع مفعل = 0 حجب | المربع فارغ = 1 متاح)
    let perms = {
        action: 'update',
        id: id,
        can_live: document.getElementById('perm-live-check').checked ? 0 : 1,
        can_exams: document.getElementById('perm-exams-check').checked ? 0 : 1,
        can_archive: document.getElementById('perm-archive-check').checked ? 0 : 1,
        // إرسال قيمة قسم الفيديوهات الجديد
        can_videos: document.getElementById('perm-videos-check').checked ? 0 : 1
    };

    try {
        let res = await fetch('api_permissions.php', {
            method: 'POST',
            headers: {'Content-Type': 'application/json'},
            body: JSON.stringify(perms)
        });
        
        let data = await res.json();
        
        if(data.status === 'success') {
            alert("✅ تم تحديث صلاحيات الطالب بنجاح!");
            document.getElementById('permissionsModal').style.display = 'none';
        } else {
            alert("❌ فشل الحفظ: " + data.message);
        }
    } catch(e) { 
        console.error(e);
        alert("خطأ في الاتصال بالخادم أثناء الحفظ."); 
    }
    
    // إعادة الزر لحالته الطبيعية
    btn.innerHTML = originalText;
    btn.disabled = false;
}

async function pauseStudent(id, btn) {
    if(!confirm("تغيير حالة الطالب؟")) return;
    let originalHtml = btn.innerHTML;
    btn.innerHTML = "<i class='fas fa-spinner fa-spin'></i>";
    try {
        let res = await fetch('api_toggle_suspend.php', {
            method: 'POST',
            headers: {'Content-Type': 'application/json'},
            body: JSON.stringify({ student_id: id })
        });
        let data = await res.json();
        if(data.status === 'success') {
            if(data.new_status == 1) {
                btn.style.color = '#ef4444'; btn.innerHTML = "<i class='fas fa-play-circle'></i>";
            } else {
                btn.style.color = '#2ecc71'; btn.innerHTML = "<i class='fas fa-pause-circle'></i>";
            }
        }
    } catch(e) { btn.innerHTML = originalHtml; }
}

async function saveStudentChanges(btnRef) {
    let tr = btnRef.closest('tr'); 
    
    let oldId = tr.querySelector('.edit-id') ? tr.querySelector('.edit-id').value : '';
    let newName = tr.querySelector('.edit-name') ? tr.querySelector('.edit-name').value.trim() : '';
    let newPhone = tr.querySelector('.edit-phone') ? tr.querySelector('.edit-phone').value.trim() : ''; 
    
    // ==========================================
    // التعديل هنا: سحب الأقسام من الكلاسات بدقة
    // ==========================================
    let newStage = tr.querySelector('.edit-stage') ? tr.querySelector('.edit-stage').value : 'عام';
    let newDept = tr.querySelector('.edit-dept') ? tr.querySelector('.edit-dept').value : 'عام';
    let newBranch = tr.querySelector('.edit-branch') ? tr.querySelector('.edit-branch').value : 'الكل';

    if(!newName) { alert("الاسم مطلوب."); return; }
    if(!newPhone) { alert("رقم الموبايل مطلوب."); return; }

    let originalText = btnRef.innerHTML;
    btnRef.innerHTML = "<i class='fas fa-spinner fa-spin'></i> جاري الحفظ...";
    btnRef.disabled = true;

    try {
        let response = await fetch('api_edit_student.php', {
            method: 'POST', 
            headers: {'Content-Type': 'application/json'},
            body: JSON.stringify({ 
                old_id: oldId, 
                name: newName, 
                stage: newStage, 
                department: newDept,  
                branch: newBranch,    
                phone: newPhone
            })
        });
        
        let result = await response.json();
        
        if(result.status === 'success') {
            // 🔥 إعادة رسم السطر وتعديل الرابط ليفتح لوحة الطالب
            tr.innerHTML = `
                <td style="width: 5%; text-align: center; padding: 15px; vertical-align: middle;">
                    <input type='checkbox' class='student-cb wa-checkbox' value='${newPhone}' data-id='${oldId}' onchange='updateSelectedCount()' style="cursor: pointer; transform: scale(1.1);"> 
                </td>
                
                <td style="width: 20%; text-align: right; padding: 15px; font-weight: bold; vertical-align: middle;">
                    <a href="student_dashboard.php?sid=${oldId}" target="_blank" style="text-decoration:none; color:#1e293b; display: flex; align-items: center; gap: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
                        <i class="fas fa-user-circle" style="color: #94a3b8; flex-shrink: 0;"></i>
                        <span style="overflow: hidden; text-overflow: ellipsis;">${newName}</span>
                        <i class="fas fa-external-link-alt" style="font-size:0.7rem; color:#cbd5e1; flex-shrink: 0;"></i>
                    </a>
                </td>

                <td style="width: 15%; text-align: center; padding: 15px; vertical-align: middle;">
                    <span style='background: #f1f5f9; color: #475569; padding: 5px 12px; border-radius: 6px; font-family: monospace; font-weight: bold; border: 1px solid #e2e8f0; display: inline-block;'>${oldId}</span>
                </td>

                <td style="width: 15%; text-align: center; padding: 15px; vertical-align: middle; color:#10b981; font-weight: bold;">
                    <div style="display: flex; align-items: center; justify-content: center; gap: 6px; white-space: nowrap;">
                        <i class='fab fa-whatsapp' style="font-size: 1.1rem;"></i> <span dir="ltr">${newPhone}</span>
                    </div>
                </td>

                <td style="width: 25%; text-align: center; padding: 15px; vertical-align: middle;">
                    <div style="background: #fff1f2; color: #93003c; padding: 6px 12px; border-radius: 20px; border: 1px solid #fecdd3; display: inline-block; font-size: 13px; font-weight: bold; white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis;">
                        ( ${newStage} - ${newDept} - شعبة ${newBranch} )
                    </div>
                </td>

                <td style="width: 20%; text-align: center; padding: 15px; vertical-align: middle;">
                    <div style='display: flex; gap: 12px; justify-content: center; align-items: center;'>
                        <button onclick="editStudent('${oldId}', '${newName.replace(/'/g, "\\'")}', '${newStage}', '${newDept}', '${newBranch}', '${newPhone}', this)" style='background:none; border:none; color:#3b82f6; cursor:pointer; font-size: 16px;' title="تعديل"><i class='fas fa-pen'></i></button>
                        
                        <button onclick="editPermissions('${oldId}', '${newName.replace(/'/g, "\\'")}')" style='background:none; border:none; color:#eab308; cursor:pointer; font-size: 16px;' title="صلاحيات"><i class='fas fa-lock'></i></button>
                        
                        <button onclick="resetStudentPassword('${oldId}', '${newName.replace(/'/g, "\\'")}')" style='background:none; border:none; color:#8b5cf6; cursor:pointer; font-size: 16px;' title="إعادة ضبط كلمة المرور"><i class='fas fa-key'></i></button>
                        
                        <button onclick="pauseStudent('${oldId}', this)" style='background:none; border:none; color:#2ecc71; cursor:pointer; font-size: 16px;' title="إيقاف"><i class='fas fa-pause-circle'></i></button>
                        
                        <button onclick="deleteStudent('${oldId}', this)" style='background:none; border:none; color:#ef4444; cursor:pointer; font-size: 16px;' title="حذف"><i class='fas fa-user-times'></i></button>
                    </div>
                </td>
            `;
            
            tr.setAttribute('data-old-html', tr.innerHTML);
            tr.style.backgroundColor = "#dcfce7";
            setTimeout(() => tr.style.backgroundColor = "", 1500);
            
            alert("✅ تم التحديث والمزامنة بنجاح.");
        } else {
            alert("❌ فشل التحديث: " + result.message);
            btnRef.innerHTML = originalText; btnRef.disabled = false;
        }
    } catch(e) { 
        console.error(e);
        alert("خطأ اتصال بالسيرفر."); 
        btnRef.innerHTML = originalText; btnRef.disabled = false;
    }
}
// ==========================================
// 3. وظائف الواتساب والتحديد
// ==========================================

function updateSelectedCount() {
    const count = document.querySelectorAll('.student-cb:checked').length;
    const span = document.getElementById('selected-count');
    if (span) span.innerText = "الطلاب المحددين: " + count;
}

function toggleAllStudents(source) {
    document.querySelectorAll('.student-cb').forEach(cb => cb.checked = source.checked);
    updateSelectedCount();
}


</script>
<!-- ========================================== -->
<!-- نافذة الملف التعريفي للمدرس (Profile Modal) -->
<!-- ========================================== -->
<style>
    .profile-modal-overlay {
        position: fixed; top: 0; left: 0; width: 100%; height: 100%;
        background: rgba(0, 0, 0, 0.6); backdrop-filter: blur(5px);
        display: none; justify-content: center; align-items: center;
        z-index: 9999; opacity: 0; transition: opacity 0.3s ease;
    }
    .profile-modal-overlay.active { display: flex; opacity: 1; }
    
    .profile-modal-content {
        background: #fff; width: 90%; max-width: 600px;
        border-radius: 15px; overflow: hidden;
        box-shadow: 0 10px 30px rgba(0,0,0,0.2);
        transform: translateY(-20px); transition: transform 0.3s ease;
        direction: rtl;
    }
    .profile-modal-overlay.active .profile-modal-content { transform: translateY(0); }
    
    .profile-modal-header {
        background: #93003c; color: white; padding: 20px 25px;
        display: flex; justify-content: space-between; align-items: center;
    }
    .profile-modal-header h3 { margin: 0; font-size: 1.2rem; font-weight: bold; display: flex; align-items: center; gap: 10px; }
    .close-modal-btn { background: none; border: none; color: white; font-size: 1.5rem; cursor: pointer; transition: 0.2s; }
    .close-modal-btn:hover { color: #fca5a5; transform: scale(1.1); }
    
    .profile-modal-body { padding: 25px; }
    .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; }
    @media (max-width: 600px) { .form-grid { grid-template-columns: 1fr; } }
    
    .input-group { display: flex; flex-direction: column; gap: 5px; margin-bottom: 15px;}
    .input-group label { font-size: 0.9rem; color: #475569; font-weight: bold; }
    .input-group input, .input-group select {
        padding: 10px 15px; border: 1px solid #cbd5e1; border-radius: 8px;
        font-family: inherit; font-size: 0.95rem; transition: border 0.2s;
    }
    .input-group input:focus, .input-group select:focus { border-color: #93003c; outline: none; box-shadow: 0 0 0 3px rgba(147, 0, 60, 0.1); }
    
    .profile-modal-footer {
        padding: 15px 25px; background: #f8fafc; border-top: 1px solid #e2e8f0;
        display: flex; justify-content: flex-end; gap: 10px;
    }
    .btn-save-profile {
        background: #93003c; color: white; border: none; padding: 10px 20px;
        border-radius: 8px; font-weight: bold; cursor: pointer; transition: 0.2s;
        display: flex; align-items: center; gap: 8px;
    }
    .btn-save-profile:hover { background: #7a0032; }
    .btn-cancel {
        background: #e2e8f0; color: #475569; border: none; padding: 10px 20px;
        border-radius: 8px; font-weight: bold; cursor: pointer; transition: 0.2s;
    }
    .btn-cancel:hover { background: #cbd5e1; }
</style>

<div id="teacherProfileModal" class="profile-modal-overlay">
    <div class="profile-modal-content">
        <div class="profile-modal-header">
            <h3><i class="fas fa-user-tie"></i> إعدادات الملف التعريفي</h3>
            <button class="close-modal-btn" onclick="closeTeacherProfile()">&times;</button>
        </div>
        <div class="profile-modal-body">
            <form id="teacherProfileForm">
                <!-- إرسال المعرف القديم مخفياً للبحث عنه في قاعدة البيانات -->
                <input type="hidden" id="prof_teacher_slug" value="<?php echo htmlspecialchars($teacher_slug); ?>">
                
                <div class="form-grid">
                    <div class="input-group">
                        <label>الصفة (اللقب)</label>
                        <select id="prof_title">
                            <option value="أستاذ" <?php echo ($teacher_title == 'أستاذ') ? 'selected' : ''; ?>>أستاذ</option>
                            <option value="دكتور" <?php echo ($teacher_title == 'دكتور') ? 'selected' : ''; ?>>دكتور</option>
                            <option value="مهندس" <?php echo ($teacher_title == 'مهندس') ? 'selected' : ''; ?>>مهندس</option>
                            <option value="معلم" <?php echo ($teacher_title == 'معلم') ? 'selected' : ''; ?>>معلم</option>
                        </select>
                    </div>
                    <div class="input-group">
                        <label>الاسم الكامل</label>
                        <input type="text" id="prof_name" value="<?php echo htmlspecialchars($teacher_name); ?>" required>
                    </div>
                </div>

                <div class="form-grid">
                    <div class="input-group">
                        <label>رقم الموبايل (مربوط بالواتساب)</label>
                        <input type="tel" id="prof_phone" value="<?php echo htmlspecialchars($teacher_phone); ?>" placeholder="مثال: 07800000000" required>
                    </div>
                    <div class="input-group">
                        <label>التخصص (المادة)</label>
                        <input type="text" id="prof_spec" value="<?php echo htmlspecialchars($teacher_spec); ?>" placeholder="مثال: الرياضيات، الفيزياء...">
                    </div>
                </div>
                
                <div class="input-group" style="margin-bottom: 0;">
                    <label>تغيير كلمة المرور (اتركه فارغاً إذا لم ترد التغيير)</label>
                    <input type="password" id="prof_password" placeholder="كلمة المرور الجديدة...">
                </div>
            </form>
        </div>
        <div class="profile-modal-footer">
            <button class="btn-cancel" onclick="closeTeacherProfile()">إلغاء</button>
            <button class="btn-save-profile" onclick="saveTeacherProfile(this)">
                <i class="fas fa-save"></i> حفظ التعديلات
            </button>
        </div>
    </div>
</div>

<script>
    // دوال فتح وإغلاق النافذة
    function openTeacherProfile() {
        document.getElementById('teacherProfileModal').classList.add('active');
    }
    
    function closeTeacherProfile() {
        document.getElementById('teacherProfileModal').classList.remove('active');
    }

    // دالة حفظ البيانات وإرسالها للسيرفر
    async function saveTeacherProfile(btn) {
        const slug = document.getElementById('prof_teacher_slug').value;
        const title = document.getElementById('prof_title').value;
        const name = document.getElementById('prof_name').value.trim();
        const phone = document.getElementById('prof_phone').value.trim();
        const spec = document.getElementById('prof_spec').value.trim();
        const password = document.getElementById('prof_password').value.trim();

        if (name === '' || phone === '') {
            alert('يرجى ملء الاسم ورقم الموبايل على الأقل.');
            return;
        }

        let originalText = btn.innerHTML;
        btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> جاري الحفظ...';
        btn.disabled = true;

        try {
            let response = await fetch('/academy/api_update_teacher_profile.php', {
                method: 'POST',
                headers: { 'Content-Type': 'application/json' },
                body: JSON.stringify({
                    slug: slug, title: title, name: name, 
                    phone: phone, spec: spec, password: password
                })
            });

            let result = await response.json();
            if (result.status === 'success') {
                alert('تم تحديث الملف التعريفي بنجاح!');
                // تحديث الصفحة لرؤية التغييرات في الهيدر فوراً
                window.location.reload(); 
            } else {
                alert('خطأ: ' + result.message);
            }
        } catch (error) {
            console.error('Error:', error);
            alert('حدث خطأ في الاتصال بالخادم.');
        }

        btn.innerHTML = originalText;
        btn.disabled = false;
    }
</script>
<script>
async function saveStaticProfile(btn) {
    const slug = document.getElementById('static_slug').value;
    if(!slug || slug === 'مجهول') {
        alert('خطأ: يرجى الدخول من الرابط الصحيح للمدرس'); return;
    }

    let formData = new FormData();
    formData.append('slug', slug);
    formData.append('title', document.getElementById('static_title').value);
    formData.append('name', document.getElementById('static_name').value);
    formData.append('phone', document.getElementById('static_phone').value);
    formData.append('spec', document.getElementById('static_spec').value);
    formData.append('password', document.getElementById('static_password').value);
    
    // الحقول الجديدة
    formData.append('country', document.getElementById('static_country').value);
    formData.append('bio', document.getElementById('static_bio').value);
    formData.append('experience', document.getElementById('static_experience').value);
    formData.append('achievements', document.getElementById('static_achievements').value);

    // رفع اللوجو (القديم)
    let logoFile = document.getElementById('static_logo').files[0];
    if (logoFile) {
        formData.append('logo', logoFile);
    }

    // رفع الصورة الشخصية (الجديدة)
    let photoFile = document.getElementById('static_photo').files[0];
    if (photoFile) {
        formData.append('personal_photo', photoFile);
    }

    // رفع صور المعرض (تعدد الصور)
    let galleryFiles = document.getElementById('static_gallery').files;
    for (let i = 0; i < galleryFiles.length; i++) {
        formData.append('gallery[]', galleryFiles[i]);
    }

    let originalText = btn.innerHTML;
    btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> جاري الحفظ والرفع...';
    btn.disabled = true;

    try {
        let response = await fetch('api_update_teacher_profile.php', { method: 'POST', body: formData });
        let result = await response.json();
        
        if (result.status === 'success') {
            alert('✅ تم حفظ بياناتك الشاملة بنجاح!');
            window.location.reload(); 
        } else {
            alert('خطأ: ' + result.message);
        }
    } catch (error) {
        alert('حدث خطأ في الاتصال بالسيرفر.');
    }
    btn.innerHTML = originalText;
    btn.disabled = false;
}
</script>
<script>
// 1. تحديث عداد الطلاب المحددين تلقائياً
document.addEventListener('change', function(e) {
    if(e.target.classList.contains('wa-checkbox')) {
        let count = document.querySelectorAll('.wa-checkbox:checked').length;
        document.getElementById('selected-count').innerText = "المحددين: " + count;
    }
});

// كود الواتساب النهائي والنظيف
// 🚀 دالة الإرسال الشاملة (واتساب + منصة) من جدول المدرس 🚀
async function sendQuickNotification(event) {
    const sendToPlatform = document.getElementById('chk_quick_platform').checked;
    const sendToWhatsapp = document.getElementById('chk_quick_whatsapp').checked;
    
    let message = document.getElementById('notif-message').value.trim();
    let checkedBoxes = document.querySelectorAll('.student-cb:checked'); // كلاس التحديد المعتمد لديك

    // 1. الفحوصات الأساسية
    if (!sendToPlatform && !sendToWhatsapp) {
        alert("⚠️ يرجى اختيار طريقة إرسال واحدة على الأقل (منصة أو واتساب).");
        return;
    }
    if (message === "") {
        alert("⚠️ يرجى كتابة نص الرسالة في المربع أولاً!");
        return;
    }
    if (checkedBoxes.length === 0) { 
        alert("⚠️ يرجى تحديد طالب واحد على الأقل من الجدول!"); 
        return; 
    }

    let btn = event.currentTarget;
    let originalText = btn.innerHTML;
    btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> جاري الإرسال...';
    btn.disabled = true;

    // 2. إرسال للمنصة (إذا كان الخيار مفعلاً)
    if (sendToPlatform) {
        let studentIds = [];
        checkedBoxes.forEach(box => studentIds.push(box.value)); // أخذ الـ Sync ID

        try {
            let response = await fetch('api_send_platform_notif.php', {
                method: 'POST',
                headers: { 'Content-Type': 'application/json' },
                body: JSON.stringify({ message: message, student_ids: studentIds })
            });
            let result = await response.json();
            if (result.status !== 'success') {
                alert("❌ فشل إرسال إشعار المنصة: " + result.message);
            }
        } catch (error) {
            console.error("Platform Notification Error:", error);
            alert("⚠️ خطأ في الاتصال بسيرفر المنصة.");
        }
    }

    // 3. إرسال للواتساب (إذا كان الخيار مفعلاً)
    if (sendToWhatsapp) {
        let encodedMessage = encodeURIComponent(message);
        let count = 0;
        
        checkedBoxes.forEach(function(box, index) {
            // سحب رقم الهاتف من الخاصية التي برمجناها لك مسبقاً data-phone
            let phone = box.getAttribute('data-phone');
            
            if (phone && phone !== '---' && phone !== '') {
                let cleanNumber = phone.replace(/[\s\-\+]/g, ''); 
                if (cleanNumber.startsWith('00')) cleanNumber = cleanNumber.substring(2);
                else if (cleanNumber.startsWith('0') && cleanNumber.length === 11) cleanNumber = '964' + cleanNumber.substring(1);
                else if (cleanNumber.length < 10 && !cleanNumber.startsWith('964')) cleanNumber = '964' + cleanNumber;

                let waUrl = `https://api.whatsapp.com/send?phone=${cleanNumber}&text=${encodedMessage}`;
                // فتح المحادثات بتأخير بسيط لمنع المتصفح من حجبها
                setTimeout(() => { window.open(waUrl, '_blank'); }, index * 1000);
                count++;
            }
        });

        if (count === 0) {
            alert("⚠️ لم يتم العثور على أرقام هواتف صالحة للطلاب المحددين.");
        }
    }

    // 4. إنهاء العملية
    btn.innerHTML = originalText;
    btn.disabled = false;
    document.getElementById('notif-message').value = ""; // تفريغ الحقل
    
    if (sendToPlatform && !sendToWhatsapp) alert("✅ تم إرسال الإشعار للمنصة بنجاح.");
    else if (sendToWhatsapp && sendToPlatform) alert("✅ تم الإرسال للمنصة، وجاري فتح نوافذ الواتساب الآن...");
}

async function sendPlatformNotif(event) {
    // 1. التقاط نص الرسالة
    let message = "";
    document.querySelectorAll('textarea').forEach(ta => { 
        if(ta.value.trim().length > 0) message = ta.value.trim(); 
    });

    if (message === "") {
        alert("⚠️ يرجى كتابة نص الرسالة في المربع أولاً!");
        return;
    }

    // 2. التقاط معرفات الطلاب المحددين (Sync ID)
    let checkedBoxes = document.querySelectorAll('.student-cb:checked');
    if (checkedBoxes.length === 0) { 
        alert("⚠️ يرجى تحديد طالب واحد على الأقل من الجدول!"); 
        return; 
    }

    let studentIds = [];
    checkedBoxes.forEach(box => {
        studentIds.push(box.value);
    });

    // 3. إضافة تأثير التحميل على الزر أثناء الإرسال
    let btn = event.currentTarget;
    let originalText = btn.innerHTML;
    btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> جاري الإرسال...';
    btn.disabled = true;

    try {
        // 4. إرسال البيانات إلى السيرفر (تأكد أن اسم الملف يطابق الملف الذي أنشأته)
        let response = await fetch('api_send_platform_notif.php', {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify({ message: message, student_ids: studentIds })
        });

        let result = await response.json();
        
        if (result.status === 'success') {
            alert("✅ تم إرسال الإشعار إلى منصات الطلاب المحددين بنجاح!");
            // تفريغ مربع النص بعد الإرسال الناجح
            document.querySelectorAll('textarea').forEach(ta => ta.value = "");
        } else {
            alert("❌ فشل الإرسال: " + result.message);
        }
    } catch (error) {
        console.error(error);
        alert("⚠️ خطأ في الاتصال بالخادم. يرجى التأكد من مسار الملف.");
    }

    // 5. إعادة الزر لشكله الطبيعي
    btn.innerHTML = originalText;
    btn.disabled = false;
}

// وظيفة تحديد/إلغاء تحديد الكل
function toggleAllStudents(masterCheckbox) {
    const checkboxes = document.querySelectorAll('.wa-checkbox');
    checkboxes.forEach(cb => cb.checked = masterCheckbox.checked);
    updateSelectedCount();
}

// تحديث العداد (المحددين: X)
function updateSelectedCount() {
    const count = document.querySelectorAll('.wa-checkbox:checked').length;
    const counterElement = document.getElementById('selected-count');
    if(counterElement) counterElement.innerText = "المحددين: " + count;
}

// مراقبة التغييرات في المربعات (حتى المحملة ديناميكياً)
// مراقبة التغييرات في المربعات بشكل آمن
const manageStudentsTable = document.getElementById('manage-students-tbody');
if (manageStudentsTable) {
    manageStudentsTable.addEventListener('change', function(e) {
        if(e.target.classList.contains('wa-checkbox')) {
            updateSelectedCount();
        }
    });
}
// مصفوفة لتتبع الطلاب الذين تم تعديل درجاتهم فقط
let changedEvals = new Set();

// ==========================================
// دالة رسم جدول التقييمات والمتابعة (النسخة المدمجة والذكية)
// ==========================================
// دالة رسم جدول التقييمات والمتابعة (بألوان واضحة وتصميم متناسق)
async function renderEvalStudentsTable() {
    const tbody = document.getElementById('eval-students-tbody');
    if (!tbody) return;

    const teacherSlug = document.getElementById('static_slug') ? document.getElementById('static_slug').value : '';
    
    // تغيير عناوين الجدول لتصبح باللون الداكن الواضح
    const theadTr = document.querySelector('#students-eval-view thead tr');
    if(theadTr) {
        theadTr.style.background = '#f1f5f9';
        const ths = theadTr.querySelectorAll('th');
        ths.forEach(th => th.style.color = '#1e293b'); // لون رمادي داكن مائل للأسود
    }

    try {
        let response;
        try {
            response = await fetch(`../eval_sync.php?teacher=${encodeURIComponent(teacherSlug)}`);
            if (!response.ok) throw new Error("Fallback");
        } catch (err) {
            response = await fetch(`eval_sync.php?teacher=${encodeURIComponent(teacherSlug)}`);
        }
        
        const result = await response.json();

        if (result.status === 'success') {
            let html = '';
            result.data.forEach(st => {
                let stage = st.stage || "غير محدد";
                let dept = st.department || st.dept || "عام";
                let branch = st.branch || "الكل";
                let fullTaxonomy = `( ${stage} - ${dept} - شعبة ${branch} )`;

                html += `
                <tr style="border-bottom: 1px solid #e2e8f0; transition: 0.3s;" onmouseover="this.style.background='#f8fafc'" onmouseout="this.style.background='transparent'">
                    <td style="padding:15px; text-align:right; font-weight:900; color:#0f172a; font-size:1.1rem;">
                        ${st.student_name}
                    </td>
                    
                    <td style="padding:15px; text-align:center; font-size: 13px; font-weight: bold; color: #475569;">
                        <span style="background: #f1f5f9; padding: 6px 12px; border-radius: 6px; border: 1px solid #cbd5e1; display: inline-block; white-space: nowrap; color: #334155;">
                            ${fullTaxonomy}
                        </span>
                    </td>
                    
                    <td style="padding:15px; text-align:center;">
                        <input type="number" id="eval_m_${st.student_id}" value="${st.month_grade}" class="grade-input" style="width:70px; text-align:center; border: 1px solid #cbd5e1; border-radius: 6px; padding: 5px; color: #0f172a; font-weight: bold;" onchange="changedEvals.add('${st.student_id}')">
                    </td>
                    <td style="padding:15px; text-align:center;">
                        <span style="color:${st.success_rate >= 50 ? '#10b981' : '#ef4444'}; font-weight:900; font-size:1.1rem;">${st.success_rate}%</span>
                    </td>
                    <td style="padding:15px; text-align:center;">
                        <input type="number" id="eval_abs_${st.student_id}" value="${st.absence_days}" class="grade-input" style="width:60px; text-align:center; color:#ef4444; font-weight:bold; border: 1px solid #fca5a5; border-radius: 6px; padding: 5px;" onchange="changedEvals.add('${st.student_id}')">
                    </td>
                    <td style="padding:15px; text-align:right;">
                        <input type="text" id="eval_note_${st.student_id}" value="${st.teacher_note}" class="grade-input" style="width:100%; border: 1px solid #cbd5e1; border-radius: 6px; padding: 8px; color: #334155; font-weight:bold;" placeholder="اكتب ملاحظة..." onchange="changedEvals.add('${st.student_id}')">
                    </td>
                </tr>`;
            });
            tbody.innerHTML = html;
        } else {
            tbody.innerHTML = `<tr><td colspan="6" style="text-align:center; color:#ef4444; font-weight:bold; padding:20px;">خطأ من السيرفر: ${result.message}</td></tr>`;
        }
    } catch (error) {
        tbody.innerHTML = `<tr><td colspan="6" style="text-align:center; color:#ef4444; font-weight:bold; padding:20px;">عطل في الاتصال.. تأكد من مسار الملف.</td></tr>`;
    }
}
// دالة حفظ التغييرات وإرسالها لقاعدة البيانات
async function saveAllEvaluations() {
    if (changedEvals.size === 0) {
        alert("لم يتم إجراء أي تعديلات.");
        return;
    }

    const updates = [];
    changedEvals.forEach(id => {
        updates.push({
            student_id: id,
            month_grade: document.getElementById(`eval_m_${id}`).value,
            absence_days: document.getElementById(`eval_abs_${id}`).value,
            teacher_note: document.getElementById(`eval_note_${id}`).value
        });
    });

    const response = await fetch('eval_sync.php', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ updates: updates })
    });

    const result = await response.json();
    if (result.status === 'success') {
        alert("تمت المزامنة مع صفحات الطلاب بنجاح!");
        changedEvals.clear();
    }
}
async function addAbsenceDate(studentId) {
    // 1. جلب تاريخ اليوم بالصيغة الصحيحة (YYYY-MM-DD)
    const today = new Date().toISOString().split('T')[0];
    
    // 2. إظهار النافذة وبداخلها تاريخ اليوم كقيمة افتراضية مسبقة
    const dateStr = prompt("الرجاء إدخال تاريخ الغياب بالصيغة الصحيحة (سنة-شهر-يوم):", today);
    
    // إذا ضغط المدرس 'إلغاء' أو أدخل قيمة فارغة، نوقف العملية
    if (!dateStr || dateStr.trim() === '') return; 

    // 3. درع حماية: التحقق من صحة صيغة التاريخ قبل إرساله للقاعدة
    const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
    if (!dateRegex.test(dateStr)) {
        alert("❌ صيغة التاريخ خاطئة! الرجاء كتابته هكذا: 2026-05-06");
        return;
    }

    // جلب معرف المدرس
    const teacherSlug = document.getElementById('static_slug') ? document.getElementById('static_slug').value : '';

    try {
        const response = await fetch('save_absence.php', {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify({ 
                student_id: studentId, 
                teacher_name: teacherSlug, 
                date: dateStr 
            })
        });

        const result = await response.json();

        if (result.status === 'success') {
            alert("✅ تم تسجيل غياب الطالب بالتاريخ المحدد بنجاح!");
            initData(); // تحديث الجدول فوراً
        } else {
            alert("❌ حدث خطأ: " + result.message);
        }
    } catch (e) {
        console.error("خطأ:", e);
        alert("تعذر الاتصال بقاعدة البيانات.");
    }
}
</script>
<div id="requestsModal" style="display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.7); z-index:99999; justify-content:center; align-items:center; backdrop-filter: blur(4px);">
    <div style="background:white; width:95%; max-width:700px; border-radius:20px; padding:30px; max-height:85vh; overflow-y:auto; box-shadow: 0 25px 50px rgba(0,0,0,0.25);">
        
        <div style="display:flex; justify-content:space-between; align-items:center; border-bottom:2px solid #f1f5f9; padding-bottom:15px; margin-bottom:20px;">
            <h2 style="color:#6b1437; margin:0;"><i class="fas fa-user-shield"></i> طلبات تعديل بيانات الطلاب</h2>
            <i class="fas fa-times" style="font-size:1.5rem; color:#94a3b8; cursor:pointer;" onclick="document.getElementById('requestsModal').style.display='none'"></i>
        </div>
        
        <div id="requestsContainer">
            <?php if($pending_count === 0): ?>
                <div style="text-align:center; padding:40px;">
                    <i class="fas fa-check-circle" style="font-size: 4rem; color: #10b981; margin-bottom: 15px;"></i>
                    <h3 style="color:#475569; margin:0;">كل شيء على ما يرام!</h3>
                    <p style="color:#94a3b8;">لا توجد طلبات تعديل معلقة حالياً.</p>
                </div>
            <?php else: ?>
                <?php foreach($pending_requests as $req): ?>
                    <div id="req-<?php echo $req['id']; ?>" style="border:1px solid #e2e8f0; border-radius:15px; padding:20px; margin-bottom:20px; background:#f8fafc; transition: 0.3s;">
                        <p style="margin-top:0; color:#475569; font-weight:bold;"><i class="fas fa-fingerprint"></i> رقم الطالب: <span style="color:#6b1437;"><?php echo $req['student_id']; ?></span></p>
                        
                        <div style="display:flex; gap:20px; margin-bottom:20px;">
                            <div style="flex:1; background:#fee2e2; padding:15px; border-radius:10px; border:1px dashed #f87171;">
                                <p style="margin:0 0 10px 0; color:#991b1b; font-weight:bold;"><i class="fas fa-history"></i> البيانات الحالية:</p>
                                <div style="color:#450a0a;"><strong>الاسم:</strong> <?php echo htmlspecialchars($req['old_name']); ?></div>
                                <div style="color:#450a0a; margin-top:5px;"><strong>المرحلة:</strong> <?php echo htmlspecialchars($req['old_stage']); ?></div>
                            </div>
                            <div style="flex:1; background:#dcfce7; padding:15px; border-radius:10px; border:1px dashed #34d399;">
                                <p style="margin:0 0 10px 0; color:#166534; font-weight:bold;"><i class="fas fa-pen-nib"></i> التعديل المطلوب:</p>
                                <div style="color:#052e16;"><strong>الاسم:</strong> <?php echo htmlspecialchars($req['new_name']); ?></div>
                                <div style="color:#052e16; margin-top:5px;"><strong>المرحلة:</strong> <?php echo htmlspecialchars($req['new_stage']); ?></div>
                            </div>
                        </div>
                        
                        <div style="display:flex; gap:15px;">
                            <button onclick="handleStudentRequest(<?php echo $req['id']; ?>, 'approve')" style="flex:1; background:#10b981; color:white; border:none; padding:12px; border-radius:10px; cursor:pointer; font-weight:bold; font-size:1.1rem; transition:0.3s;"><i class="fas fa-check"></i> موافقة وتحديث</button>
                            <button onclick="handleStudentRequest(<?php echo $req['id']; ?>, 'reject')" style="flex:1; background:#ef4444; color:white; border:none; padding:12px; border-radius:10px; cursor:pointer; font-weight:bold; font-size:1.1rem; transition:0.3s;"><i class="fas fa-times"></i> رفض الطلب</button>
                        </div>
                    </div>
                <?php endforeach; ?>
            <?php endif; ?>
        </div>
    </div>
</div>

<script>
async function handleStudentRequest(requestId, action) {
    if(!confirm(action === 'approve' ? 'هل أنت متأكد من موافقتك على تحديث بيانات هذا الطالب؟' : 'هل أنت متأكد من رفضك لهذا التعديل؟')) return;

    try {
        let response = await fetch('api_handle_update_request.php', {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify({ request_id: requestId, action: action })
        });
        
        let result = await response.json();
        
        if(result.status === 'success') {
            alert(result.message);
            // إخفاء كارت الطلب من النافذة بسلاسة
            let reqDiv = document.getElementById('req-' + requestId);
            if(reqDiv) {
                reqDiv.style.opacity = '0';
                setTimeout(() => reqDiv.remove(), 300);
            }
            // إعادة تحميل الصفحة لتحديث الجداول والأرقام
            setTimeout(() => location.reload(), 500);
        } else {
            alert("خطأ: " + result.message);
        }
    } catch (error) {
        alert("حدث خطأ في الاتصال بالسيرفر.");
    }
}
// دالة إعادة ضبط كلمة المرور للطالب
async function resetStudentPassword(studentId, studentName) {
    // رسالة تأكيد للمدرس قبل التنفيذ
    let confirmReset = confirm(`هل أنت متأكد أنك تريد إعادة ضبط كلمة المرور للطالب ( ${studentName} ) إلى 123456 ؟`);
    
    if (!confirmReset) return; // إذا ضغط إلغاء، تتوقف الدالة

    try {
        let response = await fetch('api_reset_password.php', {
            method: 'POST',
            headers: {'Content-Type': 'application/json'},
            body: JSON.stringify({ student_id: studentId })
        });

        let result = await response.json();

        if (result.status === 'success') {
            alert(`✅ تم إعادة ضبط كلمة المرور للطالب ${studentName} بنجاح.\nكلمة المرور الجديدة هي: 123456`);
        } else {
            alert("❌ حدث خطأ: " + result.message);
        }
    } catch (error) {
        console.error(error);
        alert("❌ خطأ في الاتصال بالسيرفر.");
    }
}

// --- اضافة متغيرات عامة لمنع الأخطاء ---
let activeRepublishIndex = null;
let activeDbId = null; // الاحتفاظ برقم الجدول في قاعدة البيانات
window.activeEditIndex = null; // 🚀 متغير جديد: لتتبع مكان الجدول أثناء التعديل

// دالة سحب اسم المدرس
function getCurrentTeacherName() {
    let teacherName = 'مدرس غير معروف';
    const nameEl = document.querySelector('.top-header h4');
    if(nameEl) {
        teacherName = nameEl.innerText.replace('مرحباً بك يا', '').replace('! 👋', '').trim();
    }
    return teacherName;
}

// 1. توليد الجدول
function generateInteractiveTable() {
    const rows = document.getElementById('schedule-rows').value;
    const cols = document.getElementById('schedule-cols').value;
    const title = document.getElementById('schedule-title').value;
    const container = document.getElementById('generated-table-container');
    const publishPanel = document.getElementById('schedule-publish-panel');
    
    if(!title) { alert("يرجى كتابة عنوان الجدول أولاً!"); document.getElementById('schedule-title').focus(); return; }
    if(rows < 1 || cols < 1) { alert("يرجى إدخال أرقام صحيحة"); return; }

    let tableHTML = `<table style="width: 100%; border-collapse: collapse; min-width: 600px; text-align: center;">`;
    tableHTML += `<thead style="background: #f1f5f9; color: #0f172a;"><tr>`;
    tableHTML += `<th contenteditable="true" style="padding: 15px; border: 1px solid #cbd5e1; width: 100px; color: #0f172a;" title="انقر لتعديل النص">اليوم / الوقت</th>`;
    for(let c = 1; c <= cols; c++) {
        tableHTML += `<th contenteditable="true" style="padding: 15px; border: 1px solid #cbd5e1; outline: none; color: #0f172a; transition: background 0.3s;" onfocus="this.style.background='#e2e8f0'" onblur="this.style.background='transparent'" title="انقر لتعديل الوقت">الحصة ${c}</th>`;
    }
    tableHTML += `</tr></thead><tbody>`;

    const days = ["الأحد", "الإثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت"];
    for(let r = 0; r < rows; r++) {
        let dayName = days[r] || `يوم ${r+1}`;
        tableHTML += `<tr>`;
        tableHTML += `<td contenteditable="true" style="padding: 15px; border: 1px solid #e2e8f0; background: #f8fafc; font-weight: bold; color: #1e293b; outline: none;">${dayName}</td>`;
        for(let c = 1; c <= cols; c++) {
            tableHTML += `<td contenteditable="true" style="padding: 15px; border: 1px solid #e2e8f0; color: #1e293b; outline: none; transition: background 0.3s;" onfocus="this.style.background='#fff5f8'" onblur="this.style.background='transparent'">اضغط للكتابة...</td>`;
        }
        tableHTML += `</tr>`;
    }
    tableHTML += `</tbody></table>`;
    
    container.innerHTML = tableHTML;
    container.style.display = 'block';
    publishPanel.style.display = 'block';
    
    // تصفير المتغيرات
    activeDbId = null; 
    activeRepublishIndex = null;
    window.activeEditIndex = null;
}

// 2. إلغاء ومسح مسودة الجدول
function cancelScheduleDraft() {
    if(confirm("هل أنت متأكد من إلغاء هذا الجدول ومسحه؟")) {
        document.getElementById('generated-table-container').style.display = 'none';
        document.getElementById('schedule-publish-panel').style.display = 'none';
        document.getElementById('generated-table-container').innerHTML = '';
        document.getElementById('schedule-title').value = '';
        
        activeDbId = null; 
        activeRepublishIndex = null;
        window.activeEditIndex = null;
    }
}

function openPublishModal(index = null) { 
    activeRepublishIndex = index; 
    document.getElementById('publishScheduleModal').style.display = 'flex'; 
}
function closePublishModal() { 
    document.getElementById('publishScheduleModal').style.display = 'none'; 
    activeRepublishIndex = null; 
}

// 4. تأكيد الحفظ والتعديل في قاعدة البيانات
function confirmAndSaveSchedule() {
    const stage = document.getElementById('modal-sch-stage').value;
    const dept = document.getElementById('modal-sch-dept').value;
    const branch = document.getElementById('modal-sch-branch').value;
    const studentEl = document.getElementById('modal-sch-student');
    const student = studentEl ? studentEl.value : 'all';
    const targetString = `${stage} | ${dept} | ${branch}`;
    const currentTeacher = getCurrentTeacherName();

    let schedules = JSON.parse(localStorage.getItem('mySchedulesArchive')) || [];

    // ================== حالة إعادة النشر السريع من الأرشيف ==================
    if (activeRepublishIndex !== null && document.getElementById('generated-table-container').style.display === 'none') {
        schedules[activeRepublishIndex].stage = stage;
        schedules[activeRepublishIndex].dept = dept;
        schedules[activeRepublishIndex].branch = branch;
        schedules[activeRepublishIndex].targetStr = targetString;
        schedules[activeRepublishIndex].date = new Date().toLocaleDateString('ar-EG');
        
        localStorage.setItem('mySchedulesArchive', JSON.stringify(schedules));
        
        if(schedules[activeRepublishIndex].db_id) {
            const fd = new FormData();
            fd.append('action', 'update');
            fd.append('db_id', schedules[activeRepublishIndex].db_id);
            fd.append('teacher_name', currentTeacher);
            fd.append('title', schedules[activeRepublishIndex].title);
            fd.append('table_html', schedules[activeRepublishIndex].html);
            fd.append('stage', stage);
            fd.append('dept', dept);
            fd.append('branch', branch);
            fd.append('student', student);
            fetch('save_schedule.php', { method: 'POST', body: fd });
        }

        alert("✅ تم إعادة النشر للفئات الجديدة وتحديث بيانات الجدول بنجاح!");
        closePublishModal();
        renderSchedulesArchive(); 
    } 
    // ================== حالة حفظ مسودة أو تعديل جدول ==================
    else {
        const title = document.getElementById('schedule-title').value;
        const tableHTML = document.getElementById('generated-table-container').innerHTML;
        if(!tableHTML || tableHTML.trim() === "") { alert("⚠️ لا يوجد جدول لحفظه!"); return; }

        const cleanTableHTML = tableHTML.replace(/contenteditable="true"/g, 'contenteditable="false"');

        const formData = new FormData();
        formData.append('action', activeDbId ? 'update' : 'save');
        if(activeDbId) formData.append('db_id', activeDbId);
        formData.append('teacher_name', currentTeacher);
        formData.append('title', title);
        formData.append('table_html', cleanTableHTML);
        formData.append('stage', stage);
        formData.append('dept', dept);
        formData.append('branch', branch);
        formData.append('student', student);

        const saveBtn = document.querySelector('#publishScheduleModal button');
        const originalBtnText = saveBtn.innerHTML;
        saveBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> جاري المزامنة مع قاعدة البيانات...';
        saveBtn.disabled = true;

        fetch('save_schedule.php', { method: 'POST', body: formData })
        .then(response => response.json())
        .then(data => {
            saveBtn.innerHTML = originalBtnText; saveBtn.disabled = false;

            if(data.status === 'success') {
                // 🚀 هنا نعالج مشكلة التحديث: إذا كان تعديلاً، نحدث السجل القديم ولا نبني جديد
                if(activeDbId && window.activeEditIndex !== null) {
                    schedules[window.activeEditIndex].title = title;
                    schedules[window.activeEditIndex].html = cleanTableHTML;
                    schedules[window.activeEditIndex].stage = stage;
                    schedules[window.activeEditIndex].dept = dept;
                    schedules[window.activeEditIndex].branch = branch;
                    schedules[window.activeEditIndex].targetStr = targetString;
                    schedules[window.activeEditIndex].date = new Date().toLocaleDateString('ar-EG');
                    alert("✅ تم تعديل الجدول وتحديثه في قاعدة البيانات بنجاح!");
                } else {
                    const newSchedule = {
                        id: Date.now(),
                        db_id: data.db_id, // رقم القاعدة الجديد
                        title: title,
                        html: cleanTableHTML,
                        stage: stage,
                        dept: dept,
                        branch: branch,
                        targetStr: targetString,
                        date: new Date().toLocaleDateString('ar-EG')
                    };
                    schedules.push(newSchedule);
                    alert("✅ تم حفظ الجدول الجديد في قاعدة البيانات والأرشيف!");
                }

                localStorage.setItem('mySchedulesArchive', JSON.stringify(schedules));
                
                document.getElementById('generated-table-container').style.display = 'none';
                document.getElementById('schedule-publish-panel').style.display = 'none';
                document.getElementById('schedule-title').value = '';
                
                activeDbId = null;
                window.activeEditIndex = null;
                
                closePublishModal();
                renderSchedulesArchive();
            } else {
                alert("❌ حدث خطأ من السيرفر: " + data.message);
            }
        })
        .catch(error => {
            saveBtn.innerHTML = originalBtnText; saveBtn.disabled = false;
            alert("⚠️ خطأ في الاتصال بالخادم.");
        });
    }
}

// 5. عرض الجداول في الأرشيف
function renderSchedulesArchive() {
    const tbody = document.getElementById('schedules-archive-body');
    if(!tbody) return;
    
    let schedules = JSON.parse(localStorage.getItem('mySchedulesArchive')) || [];
    
    if(schedules.length === 0) {
        tbody.innerHTML = '<tr><td colspan="4" style="text-align:center; padding:20px; color:#999;">لا توجد جداول محفوظة في الأرشيف حالياً.</td></tr>'; 
        return;
    }
    
    tbody.innerHTML = schedules.map((sch, index) => `
        <tr style="border-bottom: 1px solid #f1f5f9;">
            <td style="padding: 12px; font-weight: bold; color: var(--accent, #6b1437);">${sch.title}</td>
            <td style="padding: 12px; color: #64748b; font-size: 13px;">${sch.targetStr}</td>
            <td style="padding: 12px; color: #64748b;">${sch.date}</td>
            <td style="padding: 12px; text-align: center;">
                <div style="display: flex; justify-content: center; gap: 8px;">
                    <button class="btn-action" style="background: #10b981; padding: 6px 12px;" onclick="openPublishModal(${index})" title="إعادة النشر"><i class="fas fa-share-square"></i></button>
                    <button class="btn-action" style="background: #3498db; padding: 6px 12px;" onclick="viewSavedSchedule(${index})" title="معاينة الجدول"><i class="fas fa-eye"></i></button>
                    <button class="btn-action" style="background: #f39c12; padding: 6px 12px;" onclick="editSavedSchedule(${index})" title="تعديل الجدول"><i class="fas fa-edit"></i></button>
                    <button class="btn-action" style="background: #34495e; padding: 6px 12px;" onclick="printArchiveSchedule(${index})" title="طباعة A4"><i class="fas fa-print"></i></button>
                    <button class="btn-action" style="background: #e74c3c; padding: 6px 12px;" onclick="deleteSavedSchedule(${index})" title="حذف نهائي"><i class="fas fa-trash"></i></button>
                </div>
            </td>
        </tr>
    `).join('');
}
// ==========================================
// 🚀 نظام قائمة الطلاب التفاعلية (لنافذة نشر الجداول)
// ==========================================

// ==========================================
// 🚀 نظام قائمة الطلاب التفاعلية (لنافذة نشر الجداول) - النسخة النهائية
// ==========================================

let schStudentsList = []; // مصفوفة لتخزين الطلاب

// 1. دالة لفتح/إغلاق القائمة المنسدلة للطلاب
function toggleSchStudentList() {
    const list = document.getElementById('sch-student-checkbox-list');
    const icon = document.querySelector('#sch-student-dropdown-btn i');
    if (list.style.display === 'none') {
        list.style.display = 'block';
        icon.classList.replace('fa-chevron-down', 'fa-chevron-up');
        // إذا كانت القائمة فارغة، قم بجلب الطلاب
        if(schStudentsList.length === 0) fetchSchStudents();
    } else {
        list.style.display = 'none';
        icon.classList.replace('fa-chevron-up', 'fa-chevron-down');
    }
}

// 2. إغلاق القائمة عند النقر في أي مكان فارغ بالشاشة
document.addEventListener('click', function(event) {
    const dropdownBtn = document.getElementById('sch-student-dropdown-btn');
    const checkboxList = document.getElementById('sch-student-checkbox-list');
    if (dropdownBtn && checkboxList) {
        if (!dropdownBtn.contains(event.target) && !checkboxList.contains(event.target)) {
            checkboxList.style.display = 'none';
            const icon = document.querySelector('#sch-student-dropdown-btn i');
            if(icon) icon.classList.replace('fa-chevron-up', 'fa-chevron-down');
        }
    }
});

// 3. 🚀 الدالة الخارقة لجلب الطلاب (مأخوذة من نظامك المضمون)
async function fetchSchStudents() {
    const container = document.getElementById('sch-students-container');
    container.innerHTML = '<div style="padding: 10px; text-align: center; color: #94a3b8; font-size: 12px;"><i class="fas fa-spinner fa-spin"></i> جاري جلب بيانات الطلاب...</div>';

    // الحصول على معرف المدرس بذكاء وفك تشفيره (نفس طريقتك المضمونة)
    let teacherSlug = document.getElementById('static_slug') ? document.getElementById('static_slug').value : '';
    if (!teacherSlug) {
        const urlParams = new URLSearchParams(window.location.search);
        teacherSlug = urlParams.get('u') || '';
    }
    
    // خط دفاع إضافي
    if(!teacherSlug && typeof currentTeacher !== 'undefined') {
        teacherSlug = currentTeacher;
    }

    let cleanSlug = decodeURIComponent(teacherSlug);

    if(!cleanSlug) {
         container.innerHTML = '<div style="padding: 10px; text-align: center; color: red; font-size: 12px;">تعذر التعرف على هوية المدرس.</div>';
         return;
    }

    try {
        // نستخدم get_students_list.php المضمون لديك
        const response = await fetch(`get_students_list.php?teacher=${encodeURIComponent(cleanSlug)}`);
        if (!response.ok) throw new Error("السيرفر لا يستجيب");

        const data = await response.json();

        if (data.status === 'success') {
            if (data.students && data.students.length > 0) {
                schStudentsList = data.students; // استلام مصفوفة الطلاب
                renderSchStudents(schStudentsList);
            } else {
                container.innerHTML = '<div style="padding: 10px; text-align: center; color: #94a3b8; font-size: 12px;">لا يوجد طلاب مسجلين لديك حالياً.</div>';
            }
        } else {
            container.innerHTML = `<div style="padding: 10px; text-align: center; color: red; font-size: 12px;">خطأ: ${data.message}</div>`;
        }
    } catch (e) {
        console.error("عطل في جلب الطلاب للجدول:", e);
        container.innerHTML = '<div style="padding: 10px; text-align: center; color: red; font-size: 12px;">عطل في الاتصال بالسيرفر.</div>';
    }
}

// 4. دالة رسم مربعات الاختيار للطلاب بأسماء نظيفة
function renderSchStudents(students) {
    const container = document.getElementById('sch-students-container');
    let html = '';
    
    students.forEach(s => {
        let displayName = s.student_name || 'طالب غير معروف';
        let studentId = s.student_id;

        html += `
            <label style="display: flex; align-items: center; justify-content: space-between; padding: 10px; border-bottom: 1px solid #f1f5f9; cursor: pointer; transition: 0.2s;" onmouseover="this.style.background='#f8fafc'" onmouseout="this.style.background='white'">
                <span style="font-size: 13px; color: #334155; font-weight: bold;">${displayName}</span>
                <input type="checkbox" class="sch-student-cb" value="${studentId}" data-name="${displayName}" onchange="updateSchStudentSelection()" style="width: 16px; height: 16px; accent-color: #10b981; cursor: pointer;">
            </label>
        `;
    });
    container.innerHTML = html;
}

// 5. دالة تصفية/بحث الطلاب داخل القائمة
function filterSchStudentList() {
    const searchTerm = document.getElementById('sch-student-search').value.toLowerCase();
    const filtered = schStudentsList.filter(s => {
        let name = s.student_name || '';
        return name.toLowerCase().includes(searchTerm);
    });
    renderSchStudents(filtered);
}

// 6. دالة تحديث النص الخارجي بناءً على اختيار الطلاب
function updateSchStudentSelection() {
    const selected = document.querySelectorAll('.sch-student-cb:checked');
    const textSpan = document.getElementById('sch-student-dropdown-text');
    
    if (selected.length === 0) {
        textSpan.innerHTML = 'إرسال لجميع الطلاب المحددين أعلاه';
        textSpan.style.color = 'inherit';
    } else if (selected.length === 1) {
        textSpan.innerHTML = '<i class="fas fa-user text-primary"></i> ' + selected[0].getAttribute('data-name');
        textSpan.style.color = '#10b981';
    } else {
        textSpan.innerHTML = `<i class="fas fa-users text-primary"></i> تم تحديد (${selected.length}) طلاب`;
        textSpan.style.color = '#10b981';
    }
}

// 🔥 التعديل في دالة confirmAndSaveSchedule() لاستخراج الطلاب المحددين
// (تأكد من تعديل دالتك الحالية لتبدو هكذا في الجزء الخاص بجمع بيانات الطلاب)
/* ... كودك القديم ...
    const stage = document.getElementById('modal-sch-stage').value;
    const dept = document.getElementById('modal-sch-dept').value;
    const branch = document.getElementById('modal-sch-branch').value;
    
    // سحب الطلاب المحددين من القائمة الجديدة
    const selectedStudentCBs = document.querySelectorAll('.sch-student-cb:checked');
    let student = 'all';
    if (selectedStudentCBs.length > 0) {
        let studentIds = [];
        selectedStudentCBs.forEach(cb => studentIds.push(cb.value));
        student = studentIds.join(','); // تحويلهم إلى نص مفصول بفواصل للحفظ
    }
    ... باقي الكود ...
*/

function viewSavedSchedule(index) {
    let schedules = JSON.parse(localStorage.getItem('mySchedulesArchive')) || [];
    if(schedules[index]) {
        document.getElementById('view-sch-title').innerText = schedules[index].title;
        document.getElementById('view-sch-content').innerHTML = schedules[index].html;
        document.getElementById('viewScheduleModal').style.display = 'flex';
    }
}

// 🚀 دالة الحذف المُصلحة (تنتظر رد السيرفر قبل الإخفاء)
function deleteSavedSchedule(index) {
    if(confirm("⚠️ هل أنت متأكد من حذف هذا الجدول نهائياً من قاعدة البيانات والأرشيف؟")) {
        let schedules = JSON.parse(localStorage.getItem('mySchedulesArchive')) || [];
        
        if(schedules[index] && schedules[index].db_id) {
            const fd = new FormData();
            fd.append('action', 'delete');
            fd.append('db_id', schedules[index].db_id);
            
            fetch('save_schedule.php', { method: 'POST', body: fd })
            .then(res => res.json())
            .then(data => {
                if(data.status === 'success') {
                    // السيرفر أكد الحذف، الآن نحذفه من الواجهة
                    schedules.splice(index, 1);
                    localStorage.setItem('mySchedulesArchive', JSON.stringify(schedules));
                    renderSchedulesArchive();
                    alert("🗑️ تم الحذف من قاعدة البيانات والأرشيف بنجاح!");
                } else { alert("❌ فشل الحذف: " + data.message); }
            });
        } else {
            // الجداول القديمة التي لا تملك ID
            schedules.splice(index, 1);
            localStorage.setItem('mySchedulesArchive', JSON.stringify(schedules));
            renderSchedulesArchive();
        }
    }
}

// 🚀 دالة التعديل المُصلحة (لا تمسح الجدول من الأرشيف بل تحتفظ برقمه)
function editSavedSchedule(index) {
    let schedules = JSON.parse(localStorage.getItem('mySchedulesArchive')) || [];
    let sch = schedules[index];
    if(sch) {
        document.getElementById('schedule-title').value = sch.title;
        document.getElementById('generated-table-container').innerHTML = sch.html.replace(/contenteditable="false"/g, 'contenteditable="true"');
        
        document.getElementById('generated-table-container').style.display = 'block';
        document.getElementById('schedule-publish-panel').style.display = 'block';
        
        activeDbId = sch.db_id;
        window.activeEditIndex = index; // 👈 احتفظنا بمكانه بدلاً من حذفه
        
        window.scrollTo({ top: 0, behavior: 'smooth' });
    }
}

function printDraftSchedule() {
    executePrint(document.getElementById('generated-table-container').innerHTML, document.getElementById('schedule-title').value || "مسودة جدول دراسي", "غير محدد", "غير محدد", "غير محدد");
}
function printArchiveSchedule(index) {
    let schedules = JSON.parse(localStorage.getItem('mySchedulesArchive')) || [];
    if(schedules[index]) executePrint(schedules[index].html, schedules[index].title, schedules[index].stage, schedules[index].dept, schedules[index].branch);
}

function executePrint(tableHTML, title, stage, dept, branch) {
    if(!tableHTML || tableHTML.trim() === "") return;
    let teacherLogo = ''; const logoEl = document.querySelector('.sidebar-header img'); if(logoEl) teacherLogo = logoEl.src;
    let teacherName = getCurrentTeacherName(); 
    let teacherSpec = 'التخصص غير محدد'; const specEl = document.querySelector('.top-header small'); if(specEl && specEl.innerText.includes('التخصص')) teacherSpec = specEl.innerText;
    const cleanTableHTML = tableHTML.replace(/contenteditable="true"/g, '');
    const printWindow = window.open('', '_blank');
    const printDoc = `<html dir="rtl" lang="ar"><head><title>طباعة - ${title}</title><style>@import url('https://fonts.googleapis.com/css2?family=Tajawal:wght@400;700&display=swap');@page { size: A4 landscape; margin: 15mm; } body { font-family: 'Tajawal', sans-serif; color: #333; background: white; margin: 0; padding: 0; } .print-header { display: flex; justify-content: space-between; align-items: center; border-bottom: 4px solid #6b1437; padding-bottom: 15px; margin-bottom: 25px; } .teacher-info h2 { color: #6b1437; margin: 0; font-size: 26px; font-weight: bold; } .teacher-info p { color: #555; margin: 5px 0 0; font-size: 16px; font-weight: bold; } .print-logo { max-height: 90px; object-fit: contain; } .schedule-title { text-align: center; color: #1e293b; font-size: 28px; margin-bottom: 20px; text-decoration: underline; text-decoration-color: #6b1437; text-underline-offset: 10px; } .meta-box { display: flex; justify-content: space-around; background: #f8fafc; border: 2px solid #e2e8f0; border-radius: 12px; padding: 15px; margin-bottom: 30px; } .meta-item { text-align: center; } .meta-item span { display: block; color: #64748b; font-size: 14px; margin-bottom: 5px; } .meta-item strong { display: block; color: #0f172a; font-size: 18px; } table { width: 100%; border-collapse: collapse; text-align: center; font-size: 16px; } th { background-color: #f1f5f9 !important; color: #0f172a !important; padding: 15px; border: 2px solid #cbd5e1; -webkit-print-color-adjust: exact; print-color-adjust: exact; font-size: 18px;} td { padding: 15px; border: 2px solid #cbd5e1; font-weight: bold; color: #1e293b; } tr:nth-child(even) td { background-color: #f8fafc !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; } .print-footer { margin-top: 50px; text-align: center; font-size: 14px; color: #94a3b8; border-top: 1px solid #e2e8f0; padding-top: 15px; }</style></head><body onload="window.print(); window.close();"><div class="print-header"><div class="teacher-info"><h2>${teacherName}</h2><p>${teacherSpec}</p></div>${teacherLogo ? `<img src="${teacherLogo}" class="print-logo" alt="Logo">` : ''}</div><h1 class="schedule-title">${title}</h1><div class="meta-box"><div class="meta-item"><span>المرحلة الدراسية</span><strong>${stage}</strong></div><div class="meta-item"><span>القسم / المسار</span><strong>${dept}</strong></div><div class="meta-item"><span>الشعبة</span><strong>${branch}</strong></div><div class="meta-item"><span>تاريخ الإصدار</span><strong>${new Date().toLocaleDateString('ar-EG')}</strong></div></div>${cleanTableHTML}<div class="print-footer">تم إنشاء وطباعة هذا الجدول بواسطة نظام الأكاديمية الذكي © ${new Date().getFullYear()}</div></body></html>`;
    printWindow.document.write(printDoc); printWindow.document.close();
}

document.addEventListener('DOMContentLoaded', renderSchedulesArchive);

// 🚀 دالة سحرية آمنة جداً (لا توقف باقي الأكواد أبداً)
function populateAllTaxonomySelects() {
    try {
        // سحب المعرف مباشرة من الرابط لتجنب أي أخطاء في المتغيرات
        const pathArray = window.location.pathname.split('/').filter(p => p !== '');
        let teacherSlug = pathArray[pathArray.length - 1]; 
        teacherSlug = teacherSlug.split('#')[0].split('?')[0];

        fetch(`api_manage_tags.php?action=fetch&slug=${teacherSlug}`)
        .then(response => response.json())
        .then(data => {
            if (data.status === 'success') {
                const tags = data.data;
                const allSelects = document.querySelectorAll('.dynamic-taxonomy-select');
                
                allSelects.forEach(select => {
                    // الحفاظ على الخيار الأول الافتراضي
                    const firstOption = select.options[0] ? select.options[0].outerHTML : '<option value="">اختر...</option>';
                    select.innerHTML = firstOption; 
                    
                    tags.forEach(tag => {
                        const prefix = tag.parent_id == 0 ? '' : '— '; 
                        select.innerHTML += `<option value="${tag.tag_name}">${prefix}${tag.tag_name}</option>`;
                    });
                });
            }
        })
        .catch(error => console.error('خطأ صامت في جلب التصنيفات ولن يؤثر على النظام:', error));
    } catch (e) {
        console.error('تم تجاوز خطأ لكي لا تتجمد الصفحة:', e);
    }
}

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

// 🚀 دالة مركزية لجلب المجموعات وتوزيعها على كل قوائم المنصة (طلاب، دروس، اختبارات)
function populateGlobalDropdowns() {
    try {
        // الاعتماد على الحقل المخفي الآمن 100% بدلاً من تكسير الرابط
        let teacherSlug = document.getElementById('static_slug') ? document.getElementById('static_slug').value : '';

        // تغليف الاسم لكي يصل للسيرفر بأمان
        let safeSlug = encodeURIComponent(teacherSlug);

        // إرسال الطلب للسيرفر
        fetch(`api_manage_tags.php?action=fetch&slug=${safeSlug}`)
        .then(res => res.json())
        .then(data => {
            if(data.status === 'success') {
                const groups = data.data;

                // استخراج القيم الفريدة (بدون تكرار) من قاعدة البيانات
                const stages = [...new Set(groups.map(g => g.tag_name).filter(Boolean))];
                const depts = [...new Set(groups.map(g => g.tag_slug).filter(Boolean))];
                const sections = [...new Set(groups.map(g => g.tag_type).filter(Boolean))];

                // البحث عن كل القوائم المنسدلة السحرية في لوحة المدرس
                const selects = document.querySelectorAll('.dynamic-taxonomy-select');
                
                selects.forEach(select => {
                    const type = select.getAttribute('data-type'); // مرحلة؟ قسم؟ شعبة؟
                    const isFilter = select.getAttribute('data-filter') === 'true'; // للبحث أم للإضافة؟

                    // تحديد الخيار الأول الافتراضي
                    let firstText = isFilter ? 'الكل' : 'اختر...';
                    if(isFilter) {
                        if(type === 'stage') firstText = 'كل المراحل';
                        if(type === 'dept') firstText = 'كل الأقسام';
                        if(type === 'section') firstText = 'كل الشعب';
                    }
                    select.innerHTML = `<option value="${isFilter ? 'all' : ''}">${firstText}</option>`;

                    // تحديد المصفوفة المناسبة للقائمة
                    let optionsToMap = [];
                    if(type === 'stage') optionsToMap = stages;
                    if(type === 'dept') optionsToMap = depts;
                    if(type === 'section') optionsToMap = sections;

                    // تعبئة القائمة بالخيارات النظيفة
                    optionsToMap.forEach(opt => {
                        if(opt && opt !== '-' && opt !== 'general') {
                            select.innerHTML += `<option value="${opt}">${opt}</option>`;
                        }
                    });
                });
            }
        })
        .catch(e => console.error('خطأ في الاتصال:', e));
    } catch(e) {
        console.error('تم تجاوز خطأ في جلب التصنيفات:', e);
    }
}

// تشغيل الدالة فور تحميل اللوحة
document.addEventListener('DOMContentLoaded', populateGlobalDropdowns);
</script>

<script>
// ==========================================
// محرك مزامنة التصنيفات الديناميكية (مراحل، أقسام، شعب)
// ==========================================
async function initDynamicTaxonomies() {
    try {
        // جلب البيانات من ملف الـ API الذي سنجهزه
        const response = await fetch('api_get_settings.php');
        
        if (!response.ok) {
            throw new Error('فشل في الاتصال بالخادم، تأكد من مسار الملف.');
        }

        const data = await response.json();
        
        // استهداف جميع القوائم الذكية في لوحة المدرس
        const selects = document.querySelectorAll('.dynamic-taxonomy-select');

        selects.forEach(select => {
            const type = select.getAttribute('data-type'); // stage, dept, section
            const selectedValue = select.getAttribute('data-selected-value'); // في حالة التعديل
            
            // الاحتفاظ بالخيار الأول الافتراضي (مثل: "كل المراحل" أو "اختر...")
            const firstOption = select.options.length > 0 ? select.options[0].outerHTML : '';
            select.innerHTML = firstOption;

            // تحديد المصفوفة المناسبة بناءً على نوع القائمة
            let itemsArray = [];
            if (type === 'stage') itemsArray = data.stages || [];
            if (type === 'dept') itemsArray = data.depts || [];
            if (type === 'section') itemsArray = data.sections || [];

            // تعبئة القائمة بالبيانات القادمة من السيرفر
            itemsArray.forEach(item => {
                const option = document.createElement('option');
                
                // دعم جلب البيانات كنص مباشر أو ككائن يحتوي على 'name'
                const itemValue = item.name !== undefined ? item.name : item;
                
                option.value = itemValue;
                option.textContent = itemValue;

                // تحديد الخيار تلقائياً إذا كان هناك قيمة محفوظة مسبقاً (نافذة Edit)
                if (selectedValue && selectedValue === String(itemValue)) {
                    option.selected = true;
                }

                select.appendChild(option);
            });
        });

        console.log("✅ تمت مزامنة جميع القوائم بنجاح مع قاعدة البيانات");

    } catch (error) {
        console.error("❌ حدث خطأ أثناء جلب التصنيفات:", error);
    }
}

// تشغيل المحرك فور تحميل الصفحة بالكامل
document.addEventListener('DOMContentLoaded', initDynamicTaxonomies);
// دالة لجلب الأرشيف من قاعدة البيانات بدلاً من المتصفح فقط
async function syncLessonsArchive() {
    const teacherSlug = document.getElementById('static_slug')?.value || 'admin_ammar';
    const tbody = document.getElementById('archive-list-body');
    
    if (!tbody) return;
    
    tbody.innerHTML = '<tr><td colspan="6" style="text-align:center; padding:20px;"><i class="fas fa-spinner fa-spin"></i> جاري جلب أرشيف الدروس...</td></tr>';

    try {
        // 🔥 اللمسة السحرية: المسار المطلق لجلب الأرشيف
        let response = await fetch(`/academy/fetch_lessons_archive.php?teacher=${teacherSlug}`);
        
        const rawText = await response.text();
        
        try {
            const result = JSON.parse(rawText);
            if (result.status === 'success') {
                localStorage.setItem('myLessonsArchive', JSON.stringify(result.data));
                renderLessonsArchive(); 
            } else {
                tbody.innerHTML = `<tr><td colspan="6" style="text-align:center; color:red;">خطأ من قاعدة البيانات: ${result.message}</td></tr>`;
            }
        } catch(e) {
            console.error("Server response is not JSON:", rawText);
            tbody.innerHTML = `<tr><td colspan="6" style="text-align:center; color:red; direction:ltr;">
                <strong>خطأ في المسار (404):</strong> لم يتم العثور على الملف.
            </td></tr>`;
        }
    } catch (error) {
        console.error("عطل في مزامنة الأرشيف:", error);
        tbody.innerHTML = `<tr><td colspan="6" style="text-align:center; color:red;">خطأ في الاتصال.. تأكد من رفع ملف fetch_lessons_archive.php</td></tr>`;
    }
}
// ==========================================
// 3. الدالة المضافة: جلب أرشيف الجداول من السيرفر
// ==========================================
async function syncSchedulesArchive() {
    const teacherSlug = document.getElementById('static_slug')?.value || '';
    const tbody = document.getElementById('schedules-archive-body');
    if (!tbody) return;

    // رسالة للمستخدم أثناء جلب الجداول
    tbody.innerHTML = '<tr><td colspan="4" style="text-align:center; padding:20px;"><i class="fas fa-spinner fa-spin"></i> جاري جلب الجداول المحفوظة...</td></tr>';

    try {
        let response;
        // المحاولة الذكية للمسارات (نفس منطق الدروس)
        try {
            response = await fetch(`../fetch_schedules_archive.php?teacher=${teacherSlug}`);
            if (!response.ok) throw new Error("Fallback");
        } catch(e) {
            response = await fetch(`fetch_schedules_archive.php?teacher=${teacherSlug}`);
        }

        const result = await response.json();
        
        if (result.status === 'success') {
            // حفظها في الذاكرة لتستخدمها دالتك أدناه
            localStorage.setItem('mySchedulesArchive', JSON.stringify(result.data));
            renderSchedulesArchive();
        } else {
            tbody.innerHTML = `<tr><td colspan="4" style="text-align:center; color:red;">${result.message}</td></tr>`;
        }
    } catch (error) {
        console.error("عطل في مزامنة الجداول:", error);
        tbody.innerHTML = '<tr><td colspan="4" style="text-align:center; color:red;">تأكد من رفع ملف fetch_schedules_archive.php</td></tr>';
    }
}
window.resetUploadStatus = function() {
    // تصفير أيقونة الفيديو
    const vStatus = document.getElementById('video-status');
    if(vStatus) {
        vStatus.innerText = "إرفاق فيديو";
        vStatus.style.color = "";
    }
    // تصفير أيقونة الملف
    const fStatus = document.getElementById('file-status');
    if(fStatus) {
        fStatus.innerText = "إرفاق ملف (PDF/Office)";
        fStatus.style.color = "";
    }
    // تصفير الرابط الخارجي
    const urlInput = document.getElementById('video-url-input');
    if(urlInput) urlInput.value = "";
    
    // تصفير المتغيرات في الذاكرة
    window.actualVideoFile = null;
    window.actualDocFile = null;
};
// ==========================================
window.syncLessonsArchive = async function() {
    const teacherSlug = document.getElementById('static_slug')?.value || 'admin_ammar';
    const tbody = document.getElementById('archive-list-body');
    if (!tbody) return;
    tbody.innerHTML = '<tr><td colspan="6" style="text-align:center; padding:20px;"><i class="fas fa-spinner fa-spin"></i> جاري تحديث الأرشيف...</td></tr>';

    try {
        let response = await fetch(`/academy/fetch_lessons_archive.php?teacher=${teacherSlug}`);
        let result = await response.json();

        if (result.status === 'success') {
            window.globalLessonsArchive = result.data.map(lesson => ({
                id: lesson.id,
                title: lesson.title,
                stage: lesson.stage,
                dept: lesson.dept,
                branch: lesson.branch,
                date: lesson.date,
                content: lesson.content, // تم حل مشكلة undefined
                pdf_file: lesson.pdf_file, // سحب الـ PDF
                video_file: lesson.video_file, // سحب الفيديو
                video_url: lesson.video_url, // سحب الرابط الخارجي
                status: 'منشور'
            }));
            renderLessonsArchive(); 
        } else {
            tbody.innerHTML = `<tr><td colspan="6" style="text-align:center; color:red;">${result.message}</td></tr>`;
        }
    } catch (error) {
        tbody.innerHTML = '<tr><td colspan="6" style="text-align:center; color:red;">خطأ في الاتصال بقاعدة البيانات</td></tr>';
    }
};
// ==========================================
// 2. دالة إدراج مفتاح الدولة التلقائي (آمنة)
// ==========================================
window.updateCountryCode = function() {
    const select = document.getElementById('static_country');
    const phoneInput = document.getElementById('static_phone');
    
    if (select && phoneInput) {
        const code = select.options[select.selectedIndex].getAttribute('data-code');
        // وضع المفتاح مع مسافة للترتيب
        phoneInput.value = code + " ";
        phoneInput.focus();
    }
};

// مراقبة حقل الموبايل لمنع حذف المفتاح أو كتابة صفر بعده (معدلة بأمان)
const phoneInputField = document.getElementById('static_phone');
if (phoneInputField) {
    phoneInputField.addEventListener('input', function(e) {
        const select = document.getElementById('static_country');
        
        // إذا كان حقل اختيار الدولة غير موجود، أوقف الدالة لتجنب الخطأ
        if (!select) return; 

        const code = select.options[select.selectedIndex].getAttribute('data-code') + " ";
        
        // 1. إذا حاول المستخدم مسح المفتاح، نرجعه بالقوة
        if (!this.value.startsWith(code.trim())) {
            this.value = code;
        }
        
        // 2. إذا كتب صفر بعد المفتاح مباشرة، نقوم بحذفه فوراً
        let numberPart = this.value.substring(code.length);
        if (numberPart.startsWith('0')) {
            this.value = code + numberPart.substring(1);
        }
    });
}
</script>
<div id="joinRequestsModal" style="display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.7); z-index:99999; justify-content:center; align-items:center; backdrop-filter: blur(4px);">
    <div style="background:white; width:95%; max-width:600px; border-radius:20px; padding:30px; max-height:85vh; overflow-y:auto; box-shadow: 0 25px 50px rgba(0,0,0,0.25); direction: rtl;">
        
        <div style="display:flex; justify-content:space-between; align-items:center; border-bottom:2px solid #f1f5f9; padding-bottom:15px; margin-bottom:20px;">
            <h2 style="color:#1e293b; margin:0;"><i class="fas fa-user-plus text-primary"></i> طلبات الانضمام الجديدة</h2>
            <i class="fas fa-times" style="font-size:1.5rem; color:#94a3b8; cursor:pointer;" onclick="document.getElementById('joinRequestsModal').style.display='none'"></i>
        </div>
        
        <div id="joinRequestsList">
            <?php if($join_count === 0): ?>
                <div style="text-align:center; padding:30px; color:#94a3b8;">لا توجد طلبات انضمام جديدة.</div>
            <?php else: ?>
                <?php foreach($join_requests as $req): ?>
                    <div id="join-req-<?php echo $req['id']; ?>" style="border:1px solid #e2e8f0; border-radius:15px; padding:20px; margin-bottom:15px; background:#f8fafc; text-align: right;">
                        <h4 style="margin: 0 0 10px 0; color: #334155;">اسم الطالب: <?php echo htmlspecialchars($req['student_name']); ?></h4>
                        <p style="margin: 0 0 5px 0; color: #64748b;"><i class="fas fa-phone"></i> الموبايل: <?php echo htmlspecialchars($req['student_phone']); ?></p>
                        <p style="margin: 0 0 15px 0; color: #64748b;"><i class="fas fa-graduation-cap"></i> المرحلة: <?php echo htmlspecialchars($req['stage']); ?></p>
                        
                        <div style="display:flex; gap:10px;">
                            <button onclick="acceptJoinRequest(<?php echo $req['id']; ?>, '<?php echo htmlspecialchars($req['student_name']); ?>', '<?php echo htmlspecialchars($req['student_phone']); ?>')" style="flex:1; background:#10b981; color:white; border:none; padding:10px; border-radius:8px; font-weight:bold; cursor:pointer;">
                                <i class="fas fa-check"></i> قبول وتسجيل
                            </button>
                            <button onclick="rejectJoinRequest(<?php echo $req['id']; ?>)" style="flex:1; background:#ef4444; color:white; border:none; padding:10px; border-radius:8px; font-weight:bold; cursor:pointer;">
                                <i class="fas fa-times"></i> رفض
                            </button>
                        </div>
                    </div>
                <?php endforeach; ?>
            <?php endif; ?>
        </div>
    </div>
</div>

<script>
function acceptJoinRequest(requestId, studentName, studentPhone) {
    document.getElementById('joinRequestsModal').style.display = 'none';
    showSection('students-manage-view');
    document.getElementById('studentModal').style.display = 'flex';
    
    document.getElementById('new-std-name').value = studentName;
    document.getElementById('new-std-phone').value = studentPhone;
    
    alert("✅ تم سحب بيانات الطالب.\nاضغط الآن على زر (توليد) المعرف، ثم (حفظ وإضافة الطالب).");

    fetch('api_handle_join_request.php', {
        method: 'POST',
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify({ id: requestId, action: 'approved' })
    });
}

function rejectJoinRequest(requestId) {
    if(!confirm("هل أنت متأكد من الرفض؟")) return;
    fetch('api_handle_join_request.php', {
        method: 'POST',
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify({ id: requestId, action: 'rejected' })
    }).then(() => {
        document.getElementById('join-req-' + requestId).remove();
    });
}
function syncMax() {
    // 1. التقاط الأرقام المكتوبة في المربعات العلوية
    let monthVal = document.getElementById('maxMonth').value || 0;
    let actVal = document.getElementById('maxActivity').value || 0;
    
    // 2. التقاط ترويسة الجدول السفلية
    let hMonth = document.getElementById('hMonth');
    let hAct = document.getElementById('hAct');
    
    // 3. تحديث النص داخل الترويسة لحظياً
    if (hMonth) hMonth.innerHTML = 'الشهر (' + monthVal + ')';
    if (hAct) hAct.innerHTML = 'النشاط (' + actVal + ')';
}

</script>
<script>
// 🚀 نظام الكوكيز (البصمة الثابتة): يحفظ بيانات المدرس ويرسلها للسيرفر مباشرة
(function() {
    let currentUrl = decodeURIComponent(window.location.pathname);
    let match = currentUrl.match(/teacher_(\d+)_(.*?)\.php/);
    if (match) {
        let tid = match[1];
        let tname = match[2].replace(/_/g, ' ');
        
        // طبع البصمة في المتصفح لمدة يوم كامل (تتجاوز كل أخطاء الـ HTML)
        document.cookie = "rooz_teacher_id=" + tid + "; path=/; max-age=86400";
        document.cookie = "rooz_teacher_name=" + encodeURIComponent(tname) + "; path=/; max-age=86400";
    }
})();

// حفظ عنوان الدرس (مثل: اهلا وسهلا)
document.addEventListener('input', function(e) {
    if (e.target.tagName === 'INPUT' && e.target.type === 'text') {
        localStorage.setItem('roozmari_lesson_title', e.target.value);
    }
});
</script>

<script>
// 🚀 اصطياد الرقم الطويل من الرابط وزراعته كـ (بصمة لا تُمحى) في الكوكيز
document.addEventListener("DOMContentLoaded", function() {
    let match = window.location.href.match(/teacher_(\d+)/);
    if (match) {
        let tid = match[1]; // المعرف الطويل
        // زرع الكوكيز بقوة لتعمل في كامل المنصة
        document.cookie = "rooz_active_tid=" + tid + "; path=/; max-age=86400";
        localStorage.setItem('rooz_active_tid', tid);
    }
});
</script>
<script>
// 🚀 الحل الجذري: اعتراض أي ضغطة تتوجه لإنشاء البث وحقن المعرف الطويل فيها فوراً
(function() {
    function getTeacherId() {
        let match = window.location.href.match(/teacher_(\d+)/);
        return match ? match[1] : null;
    }

    // 1. الاعتراض لحظة الضغط (يدعم الأزرار الديناميكية والقوائم الجانبية)
    document.addEventListener("click", function(e) {
        let targetElement = e.target.closest("a") || e.target.closest("button");
        if (targetElement) {
            let href = targetElement.getAttribute("href") || "";
            let tid = getTeacherId();
            if (tid && href.includes("create_meeting.php") && !href.includes("tid=")) {
                let separator = href.includes("?") ? "&" : "?";
                targetElement.setAttribute("href", href + separator + "tid=" + tid);
            }
        }
    });

    // 2. خط دفاع دوري لفحص الأزرار كل ثانية وحقنها تلقائياً
    setInterval(function() {
        let tid = getTeacherId();
        if (!tid) return;
        document.querySelectorAll('a[href*="create_meeting.php"]').forEach(el => {
            let href = el.getAttribute('href');
            if (!href.includes('tid=')) {
                let separator = href.includes('?') ? '&' : '?';
                el.setAttribute('href', href + separator + 'tid=' + tid);
            }
        });
    }, 1000);
})();
</script>
<script>
function showNotificationModal() {
    document.getElementById('notifyModal').style.display = 'flex';
}

function sendLiveNotification() {
    const toPlatform = document.getElementById('chkPlatform').checked;
    const toWhatsapp = document.getElementById('chkWhatsapp').checked;
    
    document.getElementById('notifyModal').style.display = 'none';

    if (toPlatform) {
        // إرسال طلب للسيرفر لزرع الإشعار للطلاب
        fetch(`api_live_notify.php?action=send&stage=الكل&dept=الكل`)
        .then(res => res.json())
        .then(data => {
            if(data.success) {
                alert('✅ تم إرسال إشعار البث للطلاب في المنصة بنجاح! سيبدأ الزر بالوميض لديهم.');
            }
        }).catch(e => {
            alert('⚠️ حدث خطأ! تأكد من أنك قمت بإنشاء ملف api_live_notify.php في مجلد academy');
        });
    }

    if (toWhatsapp) {
        // تجهيز رسالة واتساب أنيقة ليرسلها المدرس لجروب الطلاب الخاص به
        let msg = `*🔴 تنبيه هام من الأكاديمية!*\n\nالأستاذ بدأ بثاً مباشراً الآن 🎥.\nسارعوا بالدخول للمنصة لحضور الدرس!\n\nرابط المنصة: https://roozmari.com/academy`;
        let whatsappUrl = `https://api.whatsapp.com/send?text=${encodeURIComponent(msg)}`;
        window.open(whatsappUrl, '_blank');
    }
}
</script>
<script>
// دالة إرسال الدرجات للإدارة (السجل الوسطي)
function sendGradesToAdmin() {
    // نفترض أن المادة يتم اختيارها من القائمة المنسدلة في الأعلى
    let subjectName = document.getElementById('subject_selector').value || 'مادة عامة';
    
    // جمع بيانات الطلاب من الجدول
    let studentsData = [];
    let rows = document.querySelectorAll('#grades_table_body tr'); // تأكد من الـ ID الخاص بجدول الدرجات لديك
    
    rows.forEach(row => {
        let studentId = row.getAttribute('data-studentid');
        let term1 = row.querySelector('.term1-input') ? row.querySelector('.term1-input').value : 0;
        let midYear = row.querySelector('.mid-input') ? row.querySelector('.mid-input').value : 0;
        let term2 = row.querySelector('.term2-input') ? row.querySelector('.term2-input').value : 0;
        let annual = row.querySelector('.annual-input') ? row.querySelector('.annual-input').value : 0;
        
        if(studentId) {
            studentsData.push({
                student_id: studentId,
                term1: term1,
                mid_year: midYear,
                term2: term2,
                annual: annual
            });
        }
    });

    if (studentsData.length === 0) {
        alert('لا توجد بيانات لإرسالها!');
        return;
    }

    let fd = new FormData();
    fd.append('subject_name', subjectName);
    fd.append('grades_data', JSON.stringify(studentsData));

    // إرسال البيانات للملف الذي أنشأناه مسبقاً
    fetch('save_teacher_grades.php', {
        method: 'POST',
        body: fd
    })
    .then(res => res.json())
    .then(data => {
        if(data.status === 'success') {
            alert('تم إرسال السجل إلى الإدارة (غرفة الكنترول) بنجاح!');
        } else {
            alert('خطأ: ' + data.message);
        }
    });
}

// البحث عن جميع الأزرار ثم ربط الدالة بالزر الذي يحتوي على النص المطلوب
const buttons = document.querySelectorAll('button');
buttons.forEach(btn => {
    if (btn.textContent.includes("إرسال السجل للإدارة")) {
        btn.onclick = sendGradesToAdmin;
    }
});

</script>

<script>
// 🚀 المحرك المستقل لإشعارات المدرس (نوافذ منبثقة حرة) 🚀

// 1. دالة فتح نافذة قائمة الإشعارات
function openTeacherNotificationsList() {
    // إخفاء الـ SweetAlert بالقوة إذا كانت موجودة
    if(typeof Swal !== 'undefined') {
        Swal.close();
    }
    
    // إخفاء أي نافذة قديمة تحمل هذا الـ ID (الخاص بالنافذة المربعة القديمة)
    var oldModal = document.getElementById('notificationsModal');
    if(oldModal) {
        oldModal.style.display = 'none';
    }
    
    // إظهار نافذتنا المخصصة الجديدة
    const newModal = document.getElementById('teacherNotificationsListModal');
    if(newModal) {
        newModal.style.display = 'flex';
        fetchTeacherNotifications(); // جلب الإشعارات
    } else {
        alert("خطأ: لم يتم العثور على نافذة الإشعارات المخصصة.");
    }
}

// 2. الدالة المركزية لجلب الإشعارات (تأكد أنها بهذا الشكل)
function fetchTeacherNotifications() {
    const tid = document.getElementById('current_teacher_slug') ? document.getElementById('current_teacher_slug').value : '';
    var noCacheTime = new Date().getTime();
    
    fetch(`api_get_teacher_notifs.php?tid=${encodeURIComponent(tid)}&t=${noCacheTime}`)
    .then(res => res.json()) 
    .then(data => {
        var container = document.getElementById('teacher-notif-list-container');
        var badge = document.getElementById('teacher-notif-badge');
        var bellIcon = document.getElementById('teacher-bell-icon');
        
        if (data.status === 'success') {
            if (!data.notifications || data.notifications.length === 0) {
                if(container) container.innerHTML = '<div style="padding: 40px; text-align: center; color: #94a3b8;"><i class="fas fa-check-circle fa-3x" style="color:#10b981; margin-bottom:15px; opacity:0.5;"></i><br><span style="font-weight:bold; font-size:1.1rem;">صندوق الوارد فارغ. لا توجد رسائل إدارية.</span></div>';
                if(badge) badge.style.display = 'none';
                if(bellIcon) bellIcon.style.animation = 'none';
                return;
            }

            var unreadCount = 0;
            var html = '';
            
            data.notifications.forEach(n => {
                var isUnread = (n.is_read == 0);
                if (isUnread) unreadCount++;
                
                var bg = isUnread ? '#fff1f2' : '#ffffff'; 
                var fw = isUnread ? '900' : 'normal';
                var borderL = isUnread ? 'border-right: 4px solid #e11d48;' : 'border-right: 4px solid transparent;';
                var safeTitle = n.title ? n.title.replace(/'/g, "\\'").replace(/"/g, "&quot;") : 'إشعار إداري';
                var safeMsg = n.message ? n.message.replace(/'/g, "\\'").replace(/"/g, "&quot;").replace(/\n/g, "<br>") : '';

                html += `
                <div style="padding: 15px 20px; border-bottom: 1px solid #e2e8f0; background: ${bg}; cursor: pointer; text-align: right; transition:0.2s; display: flex; justify-content: space-between; align-items: center; ${borderL}" onmouseover="this.style.background='#f1f5f9'" onmouseout="this.style.background='${bg}'" onclick="viewTeacherNotifDetails(${n.id}, '${safeTitle}', '${safeMsg}')">
                    <div style="flex: 1; overflow: hidden; padding-left: 15px;">
                        <h4 style="margin: 0 0 5px 0; font-size: 15px; color: #1e293b; font-weight: bold;">${n.title || 'إشعار إداري'} ${isUnread ? '<span style="color:#e11d48; font-size:10px; margin-right:5px;"><i class="fas fa-circle"></i> جديد</span>' : ''}</h4>
                        <p style="margin: 0; font-size: 13px; color: #475569; font-weight: ${fw}; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">${n.message}</p>
                        <small style="color: #94a3b8; font-size: 11px; margin-top: 5px; display: block;"><i class="far fa-clock"></i> ${n.created_at}</small>
                    </div>
                    <button onclick="deleteTeacherNotif(event, ${n.id})" style="background: rgba(239,68,68,0.1); color: #ef4444; border: none; width: 35px; height: 35px; border-radius: 8px; cursor: pointer; display: flex; justify-content: center; align-items: center; transition: 0.2s;" onmouseover="this.style.background='#ef4444'; this.style.color='white';" title="حذف الإشعار">
                        <i class="fas fa-trash-alt"></i>
                    </button>
                </div>`;
            });

            if(container) container.innerHTML = html;

            if (badge) {
                if (unreadCount > 0) {
                    badge.innerText = unreadCount;
                    badge.style.display = 'block';
                    if(bellIcon) bellIcon.style.animation = 'ringNotification 2s infinite';
                } else {
                    badge.style.display = 'none';
                    if(bellIcon) bellIcon.style.animation = 'none';
                }
            }
        } else {
            console.error("خطأ من السيرفر:", data.message);
            if(container && container.innerHTML.includes('جاري')) {
                container.innerHTML = '<div style="padding: 20px; text-align: center; color: #ef4444; font-weight:bold;">خطأ في جلب البيانات: ' + data.message + '</div>';
            }
        }
    }).catch(e => {
        console.error("خطأ في الاتصال:", e);
        var container = document.getElementById('teacher-notif-list-container');
        // طباعة تفاصيل الخطأ لتساعدنا في حله إذا استمر
        if(container && container.innerHTML.includes('جاري')) container.innerHTML = `<div style="padding: 20px; text-align: center; color: #ef4444; font-weight:bold;">عذراً، فشل الاتصال بالملف.<br><small style="color:#666;">التفاصيل: ${e.message}</small></div>`;
    });
}

// 3. دالة حذف الإشعار نهائياً من القائمة
function deleteTeacherNotif(event, id) {
    event.stopPropagation(); // منع فتح تفاصيل الإشعار عند ضغط زر الحذف
    
    if(!confirm("هل أنت متأكد من حذف هذا الإشعار؟")) return;

    fetch(`api_delete_notif.php`, {
        method: 'POST',
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify({ notif_id: id })
    })
    .then(res => res.json())
    .then(data => {
        if(data.status === 'success') {
            fetchTeacherNotifications(); // إعادة تحميل القائمة
        } else {
            alert("❌ تعذر الحذف: " + data.message);
        }
    })
    .catch(e => console.error("خطأ في الحذف:", e));
}



</script>
<!-- كود الجافاسكريبت الخاص بتشغيل الجدول والفلتر -->
<script>
// =========================================================================
// 🚀 دالة جلب الفلاتر الحقيقية وتوزيعها على كل أقسام المنصة (النسخة الشاملة) 🚀
// =========================================================================
function loadDynamicTagsForTeacher() {
    fetch('load_school_tags.php')
    .then(res => res.json())
    .then(data => {
        if(data.error) return;
        
        const stages = [...new Set(data.map(item => item.stage_name).filter(Boolean))];
        const depts = [...new Set(data.map(item => item.department_name).filter(Boolean))];
        const branches = [...new Set(data.map(item => item.section_name).filter(Boolean))];

        const forceFillSelect = (selectors, defaultText, options) => {
            document.querySelectorAll(selectors).forEach(s => {
                s.innerHTML = ''; 
                s.innerHTML = `<option value="">${defaultText}</option>`;
                options.forEach(opt => s.innerHTML += `<option value="${opt}">${opt}</option>`);
            });
        };
        
        // 1. المراحل (تم إضافة #grade-filter-stage الخاص بقسم الدرجات)
        forceFillSelect('select.dynamic-stage-filter, #lesson-target-level, #live-target-level, #archive-filter-stage, #republish-stage, #publish-stage, #target_level, #grade-filter-stage', 'اختر المرحلة...', stages);

        // 2. الأقسام (تم إضافة #grade-filter-dept الخاص بقسم الدرجات)
        forceFillSelect('select.dynamic-dept-filter, #lesson-target-track, #live-target-track, #archive-filter-dept, #republish-dept, #publish-dept, #target_track, #grade-filter-dept', 'اختر القسم...', depts);

        // 3. الشعب (تم إضافة #grade-filter-section الخاص بقسم الدرجات)
        forceFillSelect('select.dynamic-branch-filter, #lesson-target-section, #live-target-branch, #archive-filter-branch, #republish-branch, #publish-section, #target_section, #grade-filter-section', 'اختر الشعبة...', branches);
    })
    .catch(err => console.error("Error loading tags:", err));
}

// تشغيل بعد ثانية لضمان مسح أي كود قديم
setTimeout(loadDynamicTagsForTeacher, 1000);

function loadTeacherStudents() {
    const tbody = document.getElementById('manage-students-tbody');
    if (!tbody) return;

    const searchQuery = document.getElementById('teacher-student-search') ? document.getElementById('teacher-student-search').value : '';
    const stageFilter = document.getElementById('teacher-stage-filter') ? document.getElementById('teacher-stage-filter').value : '';
    const deptFilter = document.getElementById('teacher-dept-filter') ? document.getElementById('teacher-dept-filter').value : '';
    const sectionFilter = document.getElementById('teacher-section-filter') ? document.getElementById('teacher-section-filter').value : '';

    tbody.innerHTML = '<tr><td colspan="6" style="text-align:center; padding:50px;"><i class="fas fa-spinner fa-spin fa-3x mb-3" style="color: var(--primary);"></i><br><span style="font-size: 1.2rem; font-weight: bold; color: #1e293b;">جاري الفلترة...</span></td></tr>';

    let fd = new FormData();
    fd.append('search', searchQuery);
    fd.append('stage', stageFilter);
    fd.append('dept', deptFilter);
    fd.append('section', sectionFilter);

    fetch('fetch_teacher_students.php', {
        method: 'POST',
        body: fd
    })
    .then(res => res.json())
    .then(data => {
        if (data.status === 'success') {
            tbody.innerHTML = data.html;
            
            // تحديث العداد النصي (إن وجد)
            const countDisplay = document.getElementById('total-teacher-students');
            if(countDisplay) countDisplay.innerText = data.count;
            
            // 🚀 التحديث الجديد: ربط العدد ببطاقة "لوحة الأداء الذكية" المبهرة 🚀
            const studentCard = document.getElementById('stat-students');
            if(studentCard) {
                // تصفير الرقم لبدء الحركة من جديد عند كل فلترة أو تحديث
                studentCard.innerText = '0';
                // إعطاء الهدف (الرقم الحقيقي) للعداد
                studentCard.setAttribute('data-target', data.count);
                
                // تشغيل الأنيميشن
                if (typeof animateCounters === 'function') {
                    animateCounters(); 
                } else {
                    // في حال لم يتم تحميل دالة الأنيميشن، يتم وضع الرقم مباشرة
                    studentCard.innerText = data.count; 
                }
            }
            
        } else {
            tbody.innerHTML = `<tr><td colspan="6" style="text-align:center; padding:40px; color:#ef4444; font-weight:bold; font-size:1.1rem;">${data.message}</td></tr>`;
        }
    })
    .catch(err => {
        console.error("Fetch error:", err);
        tbody.innerHTML = '<tr><td colspan="6" style="text-align:center; padding:40px; color:#ef4444; font-weight:bold; font-size:1.1rem;">حدث خطأ في الاتصال بالخادم.</td></tr>';
    });
}

function toggleAllTeacherStudents(source) {
    const checkboxes = document.querySelectorAll('.wa-checkbox');
    checkboxes.forEach(chk => {
        chk.checked = source.checked;
    });
    if (typeof updateSelectedCount === 'function') {
        updateSelectedCount();
    }
}

// هذه الأسطر تضمن تشغيل كل شيء فور فتح الصفحة وبدون الضغط على تحديث
document.addEventListener('DOMContentLoaded', () => {
    loadDynamicTagsForTeacher(); 
    setTimeout(loadTeacherStudents, 50); // تقليل الوقت لـ 50 جزء من الثانية لسرعة الاستجابة
});

// =========================================================================
// 🚀 منظومة بناء الأوراق الامتحانية (Exam Builder) 🚀
// =========================================================================

let currentExamQuestions = []; 
let editingQuestionIndex = -1; 

// 🚀 دالة إدراج التنسيقات السريعة داخل مربع النص (فراغات، صح/خطأ) 🚀
function insertExamTemplate(type) {
    const textarea = document.getElementById('q-text');
    let insertText = '';

    if (type === 'blank') {
        insertText = ' ــــــــــــــــــــــ '; // خط فراغ أنيق للطباعة
    } else if (type === 'tf') {
        insertText = ' (     ) صح      (     ) خطأ '; // أقواس للحل الورقي
    } else if (type === 'mcq') {
        insertText = '\nأ) .....................   ب) .....................   ج) .....................'; // خيارات
    } else if (type === 'newline') {
        insertText = '\n'; // سطر جديد
    }

    // إدراج النص في مكان مؤشر الماوس الحالي داخل المربع
    const startPos = textarea.selectionStart;
    const endPos = textarea.selectionEnd;
    const textBefore = textarea.value.substring(0, startPos);
    const textAfter = textarea.value.substring(endPos, textarea.value.length);

    textarea.value = textBefore + insertText + textAfter;
    
    // إعادة المؤشر لمكانه الصحيح بعد الإدراج
    textarea.focus();
    textarea.selectionStart = startPos + insertText.length;
    textarea.selectionEnd = startPos + insertText.length;
}

// 1. إضافة أو تعديل سؤال في المسودة
function addQuestionToPaper() {
    const qType = document.getElementById('q-type').value;
    const qMarks = document.getElementById('q-marks').value;
    const qText = document.getElementById('q-text').value;

    if(!qText.trim()) {
        alert("يرجى كتابة نص السؤال أو تفاصيله!"); return;
    }

    if (editingQuestionIndex > -1) {
        currentExamQuestions[editingQuestionIndex] = { type: qType, marks: qMarks, text: qText.trim() };
        editingQuestionIndex = -1; 
        document.getElementById('add-q-btn').innerHTML = '<i class="fas fa-plus"></i> إضافة للمسودة';
        document.getElementById('add-q-btn').style.background = '#e11d48';
    } else {
        currentExamQuestions.push({ type: qType, marks: qMarks, text: qText.trim() });
    }
    
    document.getElementById('q-type').value = '';
    document.getElementById('q-text').value = ''; 
    document.getElementById('q-marks').value = '';
    
    renderExamDraft();
}

// 2. عرض المسودة وتحديث العداد
function renderExamDraft() {
    const draftArea = document.getElementById('exam-draft-area');
    const marksCounter = document.getElementById('marks-counter');
    
    if(currentExamQuestions.length === 0) {
        draftArea.innerHTML = '<div style="text-align:center; color:#94a3b8; padding:20px;">لم تقم بإضافة أي سؤال للورقة حتى الآن.</div>';
        marksCounter.innerText = 'الدرجات الموزعة: 0';
        return;
    }

    let html = '';
    let totalAssignedMarks = 0;

    currentExamQuestions.forEach((q, index) => {
        totalAssignedMarks += parseInt(q.marks);
        html += `
        <div style="background:white; border:1px solid #cbd5e1; padding:15px; border-radius:8px; margin-bottom:10px; display:flex; justify-content:space-between; align-items:flex-start;">
            <div style="flex-grow: 1; padding-right: 15px;">
                <strong style="color:#0f172a; font-size:16px;">س${index + 1}: ${q.type}</strong> <span style="background:#f1f5f9; color:#e11d48; padding:2px 8px; border-radius:4px; font-size:13px; font-weight:bold; margin-right:10px;">(${q.marks} درجات)</span>
                <p style="margin:8px 0 0 0; color:#334155; white-space:pre-wrap; font-size:15px;">${q.text}</p>
            </div>
            <div style="display:flex; gap:10px; flex-direction:column;">
                <button onclick="editQuestion(${index})" style="background:#3b82f6; color:white; border:none; padding:5px 10px; border-radius:5px; cursor:pointer; font-size:12px;"><i class="fas fa-edit"></i> تعديل</button>
                <button onclick="removeQuestion(${index})" style="background:#ef4444; color:white; border:none; padding:5px 10px; border-radius:5px; cursor:pointer; font-size:12px;"><i class="fas fa-trash"></i> حذف</button>
            </div>
        </div>`;
    });

    draftArea.innerHTML = html;
    marksCounter.innerText = `الدرجات الموزعة: ${totalAssignedMarks}`;
}

// 3. حذف سؤال من المسودة
function removeQuestion(index) {
    if(confirm("هل أنت متأكد من حذف هذا السؤال من المسودة؟")) {
        currentExamQuestions.splice(index, 1);
        renderExamDraft();
    }
}


// 4. تعديل سؤال في المسودة
function editQuestion(index) {
    const q = currentExamQuestions[index];
    document.getElementById('q-type').value = q.type;
    document.getElementById('q-marks').value = q.marks;
    document.getElementById('q-text').value = q.text;
    
    editingQuestionIndex = index;
    const btn = document.getElementById('add-q-btn');
    btn.innerHTML = '<i class="fas fa-save"></i> حفظ التعديل';
    btn.style.background = '#059669'; // تحويل الزر للون الأخضر للتنبيه
    
    // التمرير لأعلى لكتابة التعديل
    document.getElementById('q-text').scrollIntoView({ behavior: 'smooth', block: 'center' });
}

// ==========================================
// 🎨 دالة توليد تصميم الورقة الامتحانية (VIP) 🎨
// ==========================================
function generateExamPaperHTML(forPreview = false) {
    const title = document.getElementById('exam-main-title').value.trim() || 'امتحان بدون عنوان';
    const subject = document.getElementById('exam-subject').value.trim() || 'غير محدد';
    const stage = document.getElementById('exam-stage').value || 'غير محدد';
    const duration = document.getElementById('exam-duration').value || 'غير محدد';
    const totalMarks = document.getElementById('exam-total-marks').value || '100';

    let rawName = document.querySelector('.top-header h4')?.innerText || '';
    const teacherName = rawName.replace('مرحباً بك يا', '').replace('! 👋', '').trim();
    const schoolName = document.querySelector('.topbar div:first-child')?.innerText.trim() || 'أكاديمية روزماري التعليمية';

    const arabicNumbers = ['الأول', 'الثاني', 'الثالث', 'الرابع', 'الخامس', 'السادس', 'السابع', 'الثامن', 'التاسع', 'العاشر'];

    // قراءة اللوجو من قاعدة البيانات عبر المتغير الذي مررناه
    let logoSrc = window.DB_SCHOOL_LOGO || 'assets/images/default_logo.png';
    const baseURL = window.location.origin + window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/'));
    
    // بناء المسار الصحيح (سواء كان نسبي أو مطلق)
    if (!logoSrc.startsWith('http')) {
        logoSrc = baseURL + '/' + (logoSrc.startsWith('/') ? logoSrc.substring(1) : logoSrc);
    }

    let html = `
    <div style="font-family: 'Arial', sans-serif; direction: rtl; background: #fff; width: 210mm; min-height: 297mm; padding: 15mm; margin: 0 auto; box-sizing: border-box; color: #000; position: relative;">
        
        <div style="display: flex; justify-content: space-between; align-items: center; border-bottom: 4px double #000; padding-bottom: 15px; margin-bottom: 20px;">
            
            <div style="text-align: right; line-height: 1.6; flex: 1;">
                <strong style="font-size: 18px; display: block;">وزارة التربية</strong>
                <strong style="font-size: 18px; display: block;">${schoolName}</strong>
                <span style="font-size: 15px; color: #333;">للعام الدراسي 2025-2026</span>
            </div>

            <div style="text-align: center; flex: 1.2;">
                <!-- استخدام اللوجو الديناميكي هنا -->
                <img src="${logoSrc}" onerror="this.src='https://cdn-icons-png.flaticon.com/512/3364/3364023.png'" alt="Logo" style="width: 80px; height: 80px; object-fit: contain; margin-bottom: 10px;">
                <h1 style="margin: 0; font-size: 22px; font-weight: 900; color: #000;">${title}</h1>
            </div>

            <div style="text-align: left; line-height: 1.7; flex: 1;">
                <strong style="font-size: 16px; display: block;">المادة: ${subject}</strong>
                <strong style="font-size: 16px; display: block;">الصف: ${stage}</strong>
                <span style="font-size: 15px; display: block;">الزمن: ${duration}</span>
                <span style="font-size: 15px; display: block;">الدرجة الكلية: ${totalMarks}</span>
            </div>
            
        </div>

        <div style="border: 2px solid #000; background: #fdfdfd; padding: 12px 20px; margin-bottom: 35px; border-radius: 8px; font-weight: bold; font-size: 16px; display: flex; justify-content: space-between; align-items: center;">
            <div style="display: flex; align-items: center; gap: 10px;">
                <span>اسم الطالب الرباعي: </span>
                <span style="border-bottom: 1px dashed #000; width: 300px; display: inline-block;">&nbsp;</span>
            </div>
            <div style="display: flex; align-items: center; gap: 10px;">
                <span>الشعبة: </span>
                <span style="border-bottom: 1px dashed #000; width: 80px; display: inline-block; text-align:center;">( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )</span>
            </div>
        </div>

        <div style="font-size: 17px; line-height: 2;">
    `;

    currentExamQuestions.forEach((q, index) => {
        let qNumWord = arabicNumbers[index] || (index + 1);
        let titleText = q.type ? q.type : `أجب عن الآتي`;
        
        html += `
            <div style="margin-bottom: 35px; page-break-inside: avoid;">
                <div style="display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 12px;">
                    <strong style="font-size: 19px; color: #000; border-bottom: 2px solid #000; padding-bottom: 3px;">السؤال ${qNumWord} : <span style="font-size: 17px; font-weight: normal; margin-right: 5px;">${titleText}</span></strong>
                    <strong style="font-size: 16px; background: #f1f5f9; padding: 2px 8px; border-radius: 4px; border: 1px solid #ccc;">(${q.marks} درجة)</strong>
                </div>
                <div style="padding-right: 20px; white-space: pre-wrap; text-align: justify; font-size: 18px; font-weight: bold;">${q.text}</div>
            </div>
        `;
    });

    html += `
        </div>
        <div style="text-align: center; margin-top: 60px; border-top: 2px dashed #000; padding-top: 20px; font-size: 17px; font-weight: bold;">
            <p style="margin: 0 0 10px 0;">تمنياتنا لكم بالنجاح والتفوق</p>
            <p style="margin: 0; color: #333; font-size: 15px;">مدرس المادة: ${teacherName}</p>
        </div>
    </div>`;

    return html;
}

// 5. معاينة الورقة الامتحانية قبل الإرسال
function previewExamBeforeSend() {
    if(currentExamQuestions.length === 0) { 
        alert("لا يمكن معاينة ورقة فارغة! أضف أسئلة أولاً."); return; 
    }
    const html = generateExamPaperHTML(true);
    const win = window.open('', '_blank', 'width=900,height=900');
    win.document.write(`<html dir="rtl"><head><title>معاينة الورقة</title><style>body { background: #e2e8f0; margin: 0; padding: 20px; display: flex; justify-content: center; min-height: 100vh;} .print-btn { background: #10b981; color: white; border: none; padding: 12px 25px; border-radius: 8px; font-weight: bold; cursor: pointer; position: fixed; bottom: 30px; right: 30px; font-size:16px;} @media print { body { background: white; padding: 0; display: block; } .print-btn { display: none !important; } @page { margin: 0; size: A4 portrait; } }</style></head><body>${html}<button class="print-btn" onclick="window.print()">🖨️ طباعة الورقة</button></body></html>`);
    win.document.close();
}

window.currentlyEditingExamId = null; 

// 6. الإرسال للإدارة 
function buildAndSendExam() {
    if(currentExamQuestions.length === 0) { 
        alert("لا يمكن إرسال ورقة فارغة!"); return; 
    }

    const title = document.getElementById('exam-main-title').value.trim();
    const subject = document.getElementById('exam-subject').value.trim();
    const stage = document.getElementById('exam-stage').value;
    const duration = document.getElementById('exam-duration').value;
    const totalMarks = document.getElementById('exam-total-marks').value;
    
    if(!title || !subject) {
        alert("يرجى كتابة عنوان الامتحان والمادة في الترويسة!"); return;
    }

    let rawName = document.querySelector('.top-header h4')?.innerText || '';
    const teacherName = rawName.replace('مرحباً بك يا', '').replace('! 👋', '').trim();
    
    let compiledContent = generateExamPaperHTML(false);
    
    // تشفير آمن 
    const examDataObj = { title, subject, stage, duration, totalMarks, questions: currentExamQuestions };
    const safeData = btoa(unescape(encodeURIComponent(JSON.stringify(examDataObj)))); 
    
    // وضع التشفير في صندوق خفي جداً
    const hiddenData = `\n<div id="roozmari-secret-data" style="display:none !important; visibility:hidden;">${safeData}</div>`;
    compiledContent += hiddenData;

    const fd = new FormData();
    fd.append('action', 'submit_request');
    fd.append('teacher_name', teacherName);
    fd.append('req_type', 'أسئلة امتحانية'); 
    fd.append('subject_class', `${title} (${subject} - ${stage})`); 
    fd.append('content', compiledContent);

    const btn = event.currentTarget || document.querySelector('button[onclick="buildAndSendExam()"]');
    const origText = btn.innerHTML;
    btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> جاري الحفظ...';
    btn.disabled = true;

    fetch('api_academic_requests.php', { method: 'POST', body: fd })
    .then(res => res.json())
    .then(data => {
        alert(data.message);
        if (data.status === 'success') {
            if(window.currentlyEditingExamId) {
                const fdDelete = new FormData();
                fdDelete.append('action', 'delete_plan');
                fdDelete.append('request_id', window.currentlyEditingExamId);
                fetch('api_academic_requests.php', { method: 'POST', body: fdDelete });
                
                window.currentlyEditingExamId = null; 
                btn.innerHTML = '<i class="fas fa-paper-plane"></i> اعتماد وإرسال للإدارة';
                btn.style.background = '#10b981';
            }

            currentExamQuestions = [];
            document.getElementById('exam-main-title').value = '';
            document.getElementById('exam-subject').value = '';
            renderExamDraft();
            fetchTeacherExams(); 
            
            const qBankTab = document.getElementById('tab-btn-bank') || document.querySelector('[onclick*="bank-view"]');
            if(qBankTab) qBankTab.click();
        }
    }).finally(() => { 
        btn.innerHTML = origText; 
        btn.disabled = false; 
    });
}

// ==========================================
// 🗄️ دوال بنك الأسئلة (الأرشيف والتعديل الذكي) 🗄️
// ==========================================
// 🗄️ دوال بنك الأسئلة (الأرشيف والتعديل الذكي) 🗄️
window.teacherExamsData = []; 

function fetchTeacherExams() {
    const tbody = document.getElementById('bank-archive-tbody'); 
    if (!tbody) return;

    let rawName = document.querySelector('.top-header h4')?.innerText || '';
    const teacherName = rawName.replace('مرحباً بك يا', '').replace('! 👋', '').trim();

    fetch(`api_academic_requests.php?action=get_teacher_plans&teacher_name=${encodeURIComponent(teacherName)}`)
    .then(res => res.json())
    .then(data => {
        if (data.status === 'success') {
            const exams = data.data.filter(item => item.req_type === 'أسئلة امتحانية');
            window.teacherExamsData = exams;

            if (exams.length === 0) {
                tbody.innerHTML = '<tr><td colspan="5" style="text-align:center; padding:30px; color:#94a3b8; font-size:16px;">لم تقم ببناء أي ورقة امتحانية حتى الآن.<br><br><button onclick="document.querySelectorAll(\'.view-section\').forEach(el => el.style.display = \'none\'); document.getElementById(\'new-exam-view\').style.display=\'block\';" style="background:#3b82f6; color:white; border:none; margin-top:15px; padding:8px 20px; border-radius:5px; cursor:pointer; font-weight:bold;">اضغط هنا للبدء</button></td></tr>';
                return;
            }

            tbody.innerHTML = exams.map((exam, i) => {
                let badge = '';
                if(exam.status === 'pending') badge = '<span style="background:#fef08a; color:#854d0e; padding:5px 10px; border-radius:6px; font-weight:bold; font-size:12px;"><i class="fas fa-clock"></i> قيد المراجعة</span>';
                else if(exam.status === 'approved') badge = '<span style="background:#dcfce7; color:#166534; padding:5px 10px; border-radius:6px; font-weight:bold; font-size:12px;"><i class="fas fa-check-circle"></i> معتمد ومقبول</span>';
                else if(exam.status === 'rejected') badge = '<span style="background:#fee2e2; color:#991b1b; padding:5px 10px; border-radius:6px; font-weight:bold; font-size:12px;"><i class="fas fa-times-circle"></i> مرفوض (بحاجة لتعديل)</span>';

                let dateOnly = exam.created_at ? exam.created_at.split(' ')[0] : '-';

                return `
                <tr style="border-bottom: 1px solid #e2e8f0; transition: 0.2s;" onmouseover="this.style.background='#f8fafc'" onmouseout="this.style.background='transparent'">
                    <td style="padding:15px; font-weight:bold; color:#64748b;">${i + 1}</td>
                    <td style="padding:15px; font-weight:900; color:#1e293b;">${exam.subject_class}</td>
                    <td style="padding:15px; color:#64748b; font-weight:bold;">${dateOnly}</td>
                    <td style="padding:15px;">${badge}</td>
                    <td style="padding:15px; display:flex; gap:8px; justify-content:center;">
                        <button onclick="viewArchivedExam(${exam.id})" style="background:#10b981; color:white; border:none; padding:8px 12px; border-radius:6px; cursor:pointer; font-weight:bold; box-shadow: 0 2px 4px rgba(16,185,129,0.3);" title="معاينة وطباعة الورقة"><i class="fas fa-print"></i></button>
                        
                        <button onclick="openExamForEditing(${exam.id})" style="background:#3b82f6; color:white; border:none; padding:8px 12px; border-radius:6px; cursor:pointer; font-weight:bold; box-shadow: 0 2px 4px rgba(59,130,246,0.3);" title="تعديل الورقة وإعادة إرسالها"><i class="fas fa-edit"></i></button>
                        
                        <button onclick="deletePlanDb(${exam.id})" style="background:#ef4444; color:white; border:none; padding:8px 12px; border-radius:6px; cursor:pointer; font-weight:bold; box-shadow: 0 2px 4px rgba(239,68,68,0.3);" title="حذف الورقة نهائياً"><i class="fas fa-trash"></i></button>
                    </td>
                </tr>`;
            }).join('');
        }
    })
    .catch(err => {
        console.error("Fetch Error:", err);
    });
}

// 🪄 دالة سحب الامتحان للتعديل بذكاء DOM 🪄
function openExamForEditing(id) {
    const exam = window.teacherExamsData.find(e => parseInt(e.id) === parseInt(id));
    if(!exam) return;

    let metaData = null;

    try {
        const parser = new DOMParser();
        const doc = parser.parseFromString(exam.content, 'text/html');
        const secretDiv = doc.getElementById('roozmari-secret-data');
        
        if (secretDiv) {
            const rawSafeData = secretDiv.innerText.trim();
            metaData = JSON.parse(decodeURIComponent(escape(atob(rawSafeData))));
        } 
    } catch (e) {
        console.error("Extraction failed:", e);
    }

    if(!metaData) {
        alert("⚠️ هذه الورقة قديمة وتم إنشاؤها قبل التحديث، لا يمكن تعديلها. يرجى حذفها من زر (سلة المهملات) الأحمر وإنشاء ورقة جديدة.");
        return;
    }

    document.querySelectorAll('.view-section').forEach(el => el.style.display = 'none');
    document.getElementById('new-exam-view').style.display = 'block';

    document.getElementById('exam-main-title').value = metaData.title || '';
    document.getElementById('exam-subject').value = metaData.subject || '';
    
    const stageSelect = document.getElementById('exam-stage');
    if(stageSelect && metaData.stage) {
        let found = false;
        for(let i=0; i<stageSelect.options.length; i++) {
            if(stageSelect.options[i].value === metaData.stage) { stageSelect.selectedIndex = i; found = true; break; }
        }
        if(!found) {
            stageSelect.innerHTML += `<option value="${metaData.stage}">${metaData.stage}</option>`;
            stageSelect.value = metaData.stage;
        }
    }

    document.getElementById('exam-duration').value = metaData.duration || '';
    document.getElementById('exam-total-marks').value = metaData.totalMarks || '';

    currentExamQuestions = metaData.questions || [];
    window.currentlyEditingExamId = id; 
    renderExamDraft();

    const sendBtn = document.querySelector('button[onclick="buildAndSendExam()"]');
    if(sendBtn) {
        sendBtn.innerHTML = '<i class="fas fa-sync-alt"></i> حفظ التعديلات وإعادة الإرسال';
        sendBtn.style.background = '#eab308'; 
        sendBtn.style.color = '#fff';
    }

    alert("✅ تم استرجاع الورقة بنجاح! يمكنك الآن تعديلها.");
    window.scrollTo({ top: 0, behavior: 'smooth' });
}

// 🖨️ دالة فتح الورقة للطباعة
function viewArchivedExam(id) {
    const exam = window.teacherExamsData.find(e => parseInt(e.id) === parseInt(id));
    if(!exam) return;
    const win = window.open('', '_blank', 'width=900,height=900');
    win.document.write(`<html dir="rtl"><head><title>طباعة امتحان</title><style>body { background: #e2e8f0; margin: 0; padding: 20px; display: flex; justify-content: center; min-height: 100vh;} .print-btn { background: #10b981; color: white; border: none; padding: 12px 25px; border-radius: 8px; font-weight: bold; cursor: pointer; position: fixed; bottom: 30px; right: 30px; font-size:16px;} @media print { body { background: white; padding: 0; display: block; } .print-btn { display: none !important; } @page { margin: 0; size: A4 portrait; } }</style></head><body>${exam.content}<button class="print-btn" onclick="window.print()">🖨️ طباعة الورقة</button></body></html>`);
    win.document.close();
}

window.addEventListener('load', () => { setTimeout(fetchTeacherExams, 500); });
const bankTabBtn = document.querySelector('[onclick*="bank-view"]');
if(bankTabBtn) { bankTabBtn.addEventListener('click', fetchTeacherExams); }
document.addEventListener('DOMContentLoaded', fetchTeacherExams);




// تشغيل جلب الأرشيف عند فتح الصفحة
document.addEventListener('DOMContentLoaded', fetchTeacherExams);


</script>
</body>
</html>