/**
 * Dynamic Translator for Dashboard and Header
 * Handles seamless language switching between Urdu and English.
 */

const DynamicTranslator = {
    currentLang: localStorage.getItem('preferred_lang') || 'ur',

    // Translation Map (Urdu -> English)
    dictionary: {
        // Header
        "مدرسہ منیجیمنٹ سسٹم": "Madrasa Management System",
        "صارف": "User",
        "اردو": "Urdu",
        "English": "English",

        // Dashboard Cards
        "نیا داخلہ": "New Admission",
        "نئے طالب علم کا مکمل داخلہ فارم بھریں اور ریکارڈ محفوظ کریں": "Fill out the complete admission form for new students and save records",
        "فارم کھولیں": "Open Form",

        "طلباء کی فہرست": "Student List",
        "موجودہ طلباء کی مکمل تفصیلات دیکھیں اور سرچ کریں": "View complete details and search for existing students",
        "فہرست دیکھیں": "View List",

        "روزانہ حاضری": "Daily Attendance",
        "طالب علموں کی روزانہ کی بنیاد پر حاضری لگائیں": "Mark daily attendance for students",
        "حاضری لگائیں": "Mark Attendance",

        "سیٹنگز": "Settings",
        "پاس ورڈ تبدیل کریں اور ویب سائٹ کی کنفیگریشن اپڈیٹ کریں": "Change password and update website configuration",
        "سیٹنگز کھولیں": "Open Settings",

        "رپورٹس": "Reports",
        "الگ الگ امتحان کا نتیجہ": "Separate Exam Results",
        "رزلٹ شیٹ علحٰیدہ": "Result Sheet (Separate)",
        "داخل شدہ طلباء": "Enrolled Students",
        "کشف الدرجات": "Result Sheet (DMC)",
        "تاریخ داخلہ و انتہاء": "Admission & End Dates",
        "تلاش کیجیے": "Search Student",
        "حاضری": "Attendance",
        "کل طلباء": "Total Students",
        "داخل/خارج": "Admission/Withdrawal",
        "غیر رہائشی طلباء": "Non-Resident Students",
        "خالی امتحانی لسِٹ": "Empty Exam List",
        "رزلٹ شیٹ": "Result Sheet",
        "ای میل سیٹنگز": "Email Settings",
        "لوگو اپلوڈ کریں": "Upload Logo",
        "مہتمم کے دستخط اپلوڈ کریں": "Upload Muhtamim's Signature",
        "ویب سائٹ کنفیگریشن": "Site Config",
        "قواعد و ضوابط": "Rules & Regulations",
        "ویب سائٹ کے صفحات": "Website Pages",
        "ویب سائٹ کے مینیو": "Website Menus",
        "ویب سائٹ کے تھیمز": "Website Themes",
        "مدرسہ کا نام": "Madrasa Name",
        "مدرسہ کا پتہ": "Madrasa Address",
        "مدرسہ کا فون نمبر": "Madrasa Phone Number",
        "مدرسہ کا ای میل": "Madrasa Email",
        "مدرسہ کا ویب سائٹ": "Madrasa Website",
        "مدرسہ کا لوگو": "Madrasa Logo",
        "مدرسہ کا دستخط": "Madrasa Signature",
        "فون نمبر": "Phone Number",
        "ای میل": "Email",
        "ویب سائٹ": "Website",
        "لوگو": "Logo",
        "دستخط": "Signature",
        "الحاق نمبر": "Registration No",
        "رجسٹریشن نمبر": "Registration No",
        "مہتمم کا نام": "Teacher Name",
        "موبائل نمبر": "Mobile Number",
        "انگلش ایڈریس (برائے کارڈ)": "English Address (for card)",
        "ویب سائٹ کے مین پیج کو فعال یا غیر فعال کریں": "Enable or disable the main page of the website",
        "پبلک فرنٹ پیج": "Public Front Page",
        "پبلک فرنٹ پیج (Public Front-Page)": "Public Front Page",
        "یہ چابی (Key) AI Content Generator کے لیے استعمال ہوگی۔": "This API-KEY will be used for AI Content Generator",
        "محفوظ کریں": "Save",
        "سسٹم سیٹنگز (Settings)": "System Settings",
        "واٹس ایپ سیٹنگز": "WhatsApp Settings",
        "پرانا پاس ورڈ": "Old Password",
        "نیا پاس ورڈ": "New Password",
        "پاس ورڈ کی تصدیق": "Confirm Password",
        "بہت کمزور": "Very Weak",
        "کمزور": "Weak",
        "درمیانی": "Medium",
        "مضبوط": "Strong",
        "بہت مضبوط": "Very Strong",
        "کم از کم 8 حروف، نمبر اور علامات استعمال کریں": "Use at least 8 characters, numbers and symbols",
        "پاس ورڈ کامیابی سے تبدیل ہو گیا ہے": "Password changed successfully",
        "پاس ورڈ تبدیل کرنے میں ناکامی": "Failed to change password",
        "پرانا پاس ورڈ غلط ہے": "Old password is wrong",
        "نیا پاس ورڈ اور تصدیق شدہ پاس ورڈ ایک جیسے نہیں ہیں": "New password and confirmed password are not the same",
        "پاس ورڈ تبدیل کرنے کے لیے موجودہ پاس ورڈ درج کریں۔": "Enter current password to change password.",
        "نیا پاس ورڈ دوبارہ لکھیں": "Retype new password",
        "تبدیل کریں": "Change",
        "پاس ورڈ تبدیل کریں": "Change Password",
        "ڈیفالٹ ای میل بھیجنے کا طریقہ منتخب کریں": "Select Default Email for Sending",
        "ڈیفالٹ ای میل بھیجنے کا طریقہ منتخب کریں:": "Select Default Email for Sending",
        "جی میل (تمام جی میل اکاؤنٹس سے باری باری)": "Gmail (all Gmail accounts one by one)",
        "پرسنل / ڈومین ای میل": "Personal / Domain Email",
        "قسم": "Type",
        "ای میل / یوزر": "Email / User",
        "ہوسٹ": "Host",
        "ایکشن": "Action",
        "جی میل اکاؤنٹس": "Gmail Accounts",
        "جی میل": "G-Mail",
        "ای میل اکاؤنٹ شامل کریں": "Add Email Account",
        "اکاؤنٹ کی قسم": "Account Type",
        "SMTP ہوسٹ": "SMTP Host",
        "ای میل / یوزر آئی ڈی": "Email / User ID",
        "پورٹ": "Port",
        "پاس ورڈ (یا ایپ پاس ورڈ)": "Password (or App-Password",
        "جی میل کے لیے اپی پاس ورڈ استعمال کریں": "Use App Password for Gmail",
        "بھیجنے والا ای میل": "Sender Email",
        "بند کریں": "Close",
        "سسٹم سیٹنگز": "System Settings",
        "ای میل اکاؤنٹ شامل کریں": "Add Email Account",
        "نیا اکاؤنٹ شامل کریں": "Add New Account",
        "نئی تصویر منتخب کریں (صرف PNG)": "Select New Image (PNG Only)",
        "موجودہ لوگو": "Current Logo",
        "موجودہ دستخط": "Current Signature",
        "اپلوڈ کریں": "Upload",
        "یہاں مدرسہ کے قواعد و ضوابط (Terms & Conditions) درج کریں۔ یہ مواد طالب علم کے داخلہ فارم اور دیگر رپورٹس پر پرنٹ ہوگا۔": "Enter the rules and regulations (Terms & Conditions) of the madrasa here. This content will be printed on the student's admission form and other reports.",
        "واٹس ایپ (UltraMsg) کنفیگریشن": "WhatsApp (UltraMsg) Configuration",
        "واٹس ایپ سروس کو فعال کریں": "Enable WhatsApp Service",
        "پیغام رسانی کے لیے واٹس ایپ کا استعمال شروع کریں": "Start using WhatsApp for messaging",
        "اہم ہدایات:": "Important Instructions",
        "واٹس ایپ سروس کو فعال کرنے سے پہلے Instance ID اور Token کا ہونا لازمی ہے۔": "Instance ID and Token must be present before enabling WhatsApp service",
        "یہ سروس": "This Service ",
        "کے ذریعے کام کرتی ہے۔": " works through ",
        "اگر سیٹنگز محفوظ نہیں ہوتیں تو چیک کریں کہ آپ کی": "If settings are not saved, check that your",
        "فائل رائٹ ایبل (Writable) ہے یا نہیں۔": " File Writable (Writable) or not",
        "سیٹنگز محفوظ کریں": "Save Settings",
        "صفحات": "Pages",
        "مینیو": "Menus",
        "تھیمز": "Themes",
        "ویب سائٹ کے صفحات یہاں سے بنائیں اور تبدیل کریں": "Create and edit website pages from here",
        "صفحات کا انتظام": "Page Management",
        "صفحات کا انتظام (Page Management)": "Pages Management",
        "پبلش": "Publish",
        "نیا صفحہ": "New Page",
        "اسٹیٹس": "Status",
        "عنوان": "Title",
        "سلگ": "Slug",
        "پبلش": "Publish",
        "تاریخِ داخلہ": "Date of Admission",
        "داخلہ نمبر": "Admission No",
        "داخلہ کی تفصیل": "Admission Detail",
        "اختتامِ داخلہ": "End of Admission",
        "درجہ": "Grade",
        "طالب علم کی تصویر": "Student Photo",
        "کل طلباء": "Total Students",
        "فارمِ داخلہ": "Admission Form",
        "غیر رہائشی": "Non-Residential",
        "رہائشی": "Residential",
        "مستقل پتہ کاپی کریں": "Copy Address",
        "فوٹو تبدیل کریں": "Change Photo",
        "طالب علم کا نام": "Student Name",
        "ولدیت": "Father Name",
        "شہریت": "Nationality",
        "تعلیمی قابلیت": "Educational Qualification",
        "والد کا پیشہ": "Father's Profession",
        "مستقل پتہ": "Permanent Address",
        "موجودہ پتہ": "Current Address",
        "نقل کریں": "Copy",
        "شناختی دستاویز": "Identity Document",
        "والد کا CNIC": "Father's CNIC",
        "CNIC نمبر": "CNIC Number",
        "فارم ب نمبر": "Form B Number",
        "تصدیق": "Verification",
        "گواہ کا نام": "Witness Name",
        "گواہ کے والد کا نام": "Witness Father Name",
        "دستخط / نشانِ انگوٹھا": "Signature / Thumb Impression",
        "ناظم کے دستخط": "Nazim's Signature",
        "منتخب درجہ": "Selected Grade",
        "تاریخِ اختتام": "End Date",
        "تبدیلیاں محفوظ کریں": "Save Changes",
        "طالب علم کو خارج کریں": "Exclude Student",
        "ریکارڈ ختم کریں": "Delete Record",
        "کارڈز تیار ہیں": "Cards Ready",
        "پرنٹ کریں": "Print",
        "تلاش کریں": "Search",
        "یہ نمبر دستیاب ہے۔": "This Number is Available",
        "رابطہ نمبر": "Contact Number",
        "سرپرست کا نام": "Guardian Name",
        "سرپرست / ضامن کی معلومات": "Guardian / Guarantor Information",
        "سرپرست کا موبائل": "Guardian Mobile",
        "ای میل (Email) (اختیاری)": "Email (Optional)",
        "ای میل (Email)": "Email",
        "(اختیاری)": "(Optional)",
        "شناختی دستاویز (ایک کا انتخاب کریں)": "Identity Document (Choose One)",
        "تصدیق و دستخط": "Verification and Signature",
        "دوبارہ لکھیں": "Retype",
        "محفوظ کیجئے": "Save",
        "کیمرہ سے تصویر لیں": "Take Picture from Camera",
        "فائل سے اپ لوڈ کریں": "Upload from File",
        'فارم "ب"': "Form B",
        "سرپرست کا CNIC": "Guardian CNIC",
        "طالب علم کا CNIC": "Student CNIC",
        "کل طلباء": "Total Students",
        "کل طلباء:": "Total Students:",
        "ریکارڈ نہیں ملا": "Record Not Found",
        "اس نمبر اور درجہ کے ساتھ کوئی طالب علم نہیں ملا۔": "No student found with this number and grade.",
        "طالب علم کا ریکارڈ تبدیل کریں": "Edit Student Record",
        "حالیہ درجہ": "Current Grade",
        "رجسٹریشن نمبر درج کریں": "Enter Registration Number",

        "سرپرست سے رشتہ": "Relation to Guardian",
        "ذاتی معلومات": "Personal Information",
        "والد کا نام": "Father Name",
        "تاریخِ پیدائش": "Date of Birth",
        "تاریخِ پیدائش *": "Date of Birth *",
        "تاریخ انتہا": "End Date",
        "تاریخ ابتداء": "Start Date",
        "موجودہ درجہ اور تفصیلات منتخب کریں": "Select Current Grade and Details",
        "طالب العلم کو ایک درجہ سے دوسرے میں منتقل کریں اور رول نمبرز ترتیب دیں": "Promote students to the next grade and arrange roll numbers",
        "طالب العلم کی ترقی (Promotion)": "Student Promotion",
        "لسٹ دیکھیں": "View List",
        "کشف الحضور (Daily Attendance)": "Daily Attendance",
        "درجہ منتخب کریں": "Select Grade",
        "روزانہ کی حاضری لگائیں اور محفوظ کریں": "Mark and save daily attendance",
        "تاریخِ ابتداء (Start Date)": "Start Date",
        "تاریخِ انتہا (End Date)": "End Date",
        "طلباء تلاش کریں": "Search Students",
        "حاضری میں تبدیلی": "Attendance Change",
        "انفرادی حاضری": "Individual Attendance",
        "اس درجہ میں کوئی طالب علم نہیں ملا": "No student found in this grade",
        "حاضری میں تبدیلی کریں": "Change Attendance",
        "پہلے سے موجود حاضریوں میں تبدیلی کریں یا انہیں حذف کریں": "Change or delete existing attendance",
        "حاضری کی تاریخ منتخب کریں": "Select Attendance Date",
        "حاضری تلاش کریں": "Search Attendance",
        "کشف الحضور (شیٹ)": "Attendance Sheet",
        "لاگ آؤٹ (Logout)": "Logout",
        "امتحانی نتیجہ (Results)": "Exam Results",
        "تاریخِ انتہا": "End Date",
        "امتحان": "Exam",
        "علٰحیدہ مضمون کی رزلٹ بنائیں": "Create Result of Separate Subject",
        "علٰحیدہ رزلٹ بنائیں": "Create Separate Result",
        "تبدیلی کریں": "Change",
        "تک": "To",
        "سے": "From",


        "زبان": "Language",
        "سسٹم کی زبان تبدیل کریں (اردو یا انگریزی)": "Change system language (Urdu or English)",

        "اکاؤنٹس مینجمنٹ": "Accounts Management",
        "یہاں سے ہر قسم کے مالی اخراجات کا انتظام کریں": "Manage all types of financial expenses",
        "طلباء کی فیس": "Student Fees",
        "آمدنی و اخراجات": "Income & Expenses",
        "طلباء سے رابطہ": "Message to Students",

        "متفرق احکامات": "Miscellaneous Links",
        "یہاں سے متفرق احکامات کھولیں": "Open miscellaneous links here",
        "قواعد و ضوابط پرنٹ": "Rules & Regulations",
        "مدد چاہیے؟": "Need Help",
        "پروگرام کی قانونی استعمال": "Legal Use of Program",
        "ڈیٹا بیس کی بیک اپ لیں": "Take DB Backup",
        "ویب کی بیک اپ لیں": "Take Web Backup",
        "سافٹ ویئر بند کریں": "Log Out / Close Software",
        "بیک اپ": "Backup",

        // Navbar
        "ڈیش بورڈ": "Dashboard",
        "داخلہ": "Admission",
        "داخلہ فارم": "Admission Form",
        "داخلہ فارم تبدیلی": "Admission Form Update",
        "طالب العلم کارڈ": "Student Card",
        "رزلٹ بنائیے": "Create Result",
        "رزلٹ کا اندراج کیجیے": "Register Result",
        "کشف الحضور": "Attendance Sheet",
        "ترقی طالب علم": "Student Promotion",
        "کسی بھی طالب العلم کا درجہ یا رول نمبر تبدیل کرنے کے لئے یہاں پر کلک کریں": "Click here to change student grade or roll number",
        "درجات": "Classes",
        "نیا درجہ": "New Class",
        "درجہ مٹائیں": "Delete Class",
        "مضامین": "Subjects",
        "اندراج مضامین": "Add Subjects",
        "مضامین مٹائیں": "Delete Subjects",
        "مضامین تبدیلی": "Edit Subjects",
        "پاس ورڈ تبدیلی": "Change Password",
        "پاس ورڈ تبدیل کریں": "Change Password",
        "ویب سائٹ مینجمنٹ": "Website Management",
        "یہاں سے ویب سائٹ کے صفحات اور مینیو کا انتظام کریں": "Manage website pages and menus from here",
        "صفحات (Pages)": "Pages",
        "مینیو (Menus)": "Menus",
        "تھیمز (Themes)": "Themes",

        // General UI
        "تلاش کریں": "Search",
        "کامیابی": "Success",
        "انتظار کریں": "Wait",
        "تیار کردہ: سسٹم بیک اپ سروس": "Developed by: System Backup Service"
    },

    init: function () {
        console.log("Dynamic Translator Initialized. Current Language:", this.currentLang);

        // Initial translation on page load
        if (this.currentLang === 'en') {
            this.applyTranslation('en');
        }

        // Intercept language toggle links
        $(document).on('click', 'a[href*="?lang="]', (e) => {
            const url = new URL(e.currentTarget.href, window.location.origin);
            const lang = url.searchParams.get('lang');

            if (lang) {
                e.preventDefault();
                this.toggleLanguage(lang);
            }
        });

        // Watch for dynamic content changes in dashboard
        this.observeChanges();
    },

    toggleLanguage: function (lang) {
        this.currentLang = lang;
        localStorage.setItem('preferred_lang', lang);

        // Update server-side via AJAX to keep session/cookie in sync (optional but recommended)
        $.get('?lang=' + lang);

        this.applyTranslation(lang);
    },

    applyTranslation: function (lang) {
        const isEn = (lang === 'en');

        // 1. Update Layout Direction
        const globalDir = isEn ? 'ltr' : 'rtl';
        $('html').attr('dir', globalDir);

        // Handle all elements with explicit 'dir' attributes for global consistency
        if (isEn) {
            // If English, flip all hardcoded RTL to LTR, but mark them to restore later
            $('[dir="rtl"]').each(function () {
                $(this).attr('dir', 'ltr').attr('data-was-rtl', 'true');
            });
        } else {
            // If Urdu, restore all that were flipped
            $('[data-was-rtl="true"]').each(function () {
                $(this).attr('dir', 'rtl').removeAttr('data-was-rtl');
            });
            // Ensure main layout containers are RTL
            $('#main-header, #dashboard-container, #content, .navbar-custom').attr('dir', 'rtl');
        }

        // 2. Translate Text Nodes in Scope (Header, Navbar, and Dashboard)
        const selectors = '#main-header, #dashboard-container, #content-wrapper, .navbar-custom';

        $(selectors).find('*').contents().each((index, node) => {
            if (node.nodeType === Node.TEXT_NODE) {
                const originalText = node.nodeValue;
                const trimmedText = originalText.trim();
                if (trimmedText) {
                    // Normalize whitespace (internal newlines/spaces) for matching
                    const normalizedText = trimmedText.replace(/\s+/g, ' ');

                    if (isEn) {
                        // Urdu to English
                        if (this.dictionary[normalizedText]) {
                            node.nodeValue = this.dictionary[normalizedText];
                        }
                    } else {
                        // English to Urdu (Reverse lookup)
                        const urduText = Object.keys(this.dictionary).find(key => this.dictionary[key] === normalizedText);
                        if (urduText) {
                            node.nodeValue = urduText;
                        }
                    }
                }
            }
        });

        // 3. Update Button titles and tooltips
        $(selectors).find('[title]').each((index, el) => {
            const title = $(el).attr('title').trim();
            const normalizedTitle = title.replace(/\s+/g, ' ');
            if (isEn) {
                if (this.dictionary[normalizedTitle]) $(el).attr('title', this.dictionary[normalizedTitle]);
            } else {
                const urduTitle = Object.keys(this.dictionary).find(key => this.dictionary[key] === normalizedTitle);
                if (urduTitle) $(el).attr('title', urduTitle);
            }
        });

        // 4. Update Header User Info (Specific handling)
        const sessionInfo = $('.session-info');
        if (sessionInfo.length) {
            sessionInfo.css('direction', isEn ? 'ltr' : 'rtl');
        }
    },

    observeChanges: function () {
        // Handle content that might be loaded via AJAX
        const observer = new MutationObserver((mutations) => {
            if (this.currentLang === 'en') {
                this.applyTranslation('en');
            }
        });

        const dashboard = document.getElementById('dashboard-container');
        if (dashboard) {
            observer.observe(dashboard, { childList: true, subtree: true });
        }
    }
};

$(document).ready(() => DynamicTranslator.init());
