/**
 * Installation Wizard Script
 */
$(document).ready(function () {
    let currentStep = 1;
    const totalSteps = 5;
    const apiBase = 'api.php';

    const helpTexts = {
        1: `<strong>سسٹم چیک:</strong> اس مرحلے میں ہم آپ کے سرور کی ضروریات کو چیک کر رہے ہیں۔ تمام آئٹمز کا 'Pass' ہونا ضروری ہے۔`,
        2: `<strong>ڈیٹا بیس:</strong> یہاں اپنے MySQL ڈیٹا بیس کی معلومات درج کریں۔ اگر آپ کے پاس ڈیٹا بیس نہیں ہے تو پہلے اسے اپنے ہوسٹنگ پینل سے بنائیں۔`,
        3: `<strong>ایڈمن اکاؤنٹ:</strong> یہ پہلا صارف ہوگا جس کے پاس سسٹم کے تمام اختیارات ہوں گے۔ اپنا ای میل اور پاس ورڈ یاد رکھیں۔`,
        4: `<strong>ای میل:</strong> (اختیاری) اگر آپ چاہتے ہیں کہ سسٹم سے ای میلز جائیں، تو یہاں SMTP کی معلومات درج کریں، ورنہ اسے Skip کر سکتے ہیں۔
            <a href="https://www.youtube.com/watch?v=ckfyTVgF1T4" target="_blank">How to Create an App Password for Gmail</a>`,
        5: `<strong>ایپ سیٹنگز:</strong> اپنی سائٹ کا نام اور اپنا صحیح ویب سائٹ یو آر ایل (URL) درج کریں۔`
    };

    // Step 1: Run System Checks automatically
    runSystemChecks();

    function runSystemChecks() {
        $.getJSON(apiBase + '?action=check_system', function (res) {
            let html = '';
            let allPass = true;

            res.data.forEach(item => {
                const icon = item.pass ? 'bi-check-circle-fill text-success' : 'bi-x-circle-fill text-danger';
                if (!item.pass) allPass = false;
                html += `
                    <div class="check-item">
                        <span>${item.name}</span>
                        <i class="bi ${icon}"></i>
                    </div>
                `;
            });
            $('#system-checks').html(html);
            if (allPass) {
                $('#btnNext1').prop('disabled', false);
            } else {
                Swal.fire('توجہ', 'آپ کا سرور سسٹم کی ضروریات کو پورا نہیں کرتا۔', 'warning');
            }
        });
    }

    // Navigation
    $('#btnNext1').on('click', () => goToStep(2));
    $('#btnNext2').on('click', () => goToStep(3));
    $('#btnNext3').on('click', () => {
        const pass = $('input[name="admin_pass"]').val();
        const conf = $('input[name="admin_confirm"]').val();
        if (pass !== conf) return Swal.fire('خرابی', 'پاس ورڈ ایک جیسے نہیں ہیں۔', 'error');
        if (pass.length < 5) return Swal.fire('خرابی', 'پاس ورڈ کم از کم 5 حروف کا ہونا چاہیے۔', 'error');
        goToStep(4);
    });
    $('#btnNext4').on('click', () => goToStep(5));
    $('#btnSkipEmail').on('click', () => goToStep(5));

    $('.btn-prev').on('click', () => goToStep(currentStep - 1));

    function goToStep(step) {
        $(`#step${currentStep}`).removeClass('active');
        $(`#step${currentStep}-indicator`).removeClass('active').addClass('completed');

        currentStep = step;

        $(`#step${currentStep}`).addClass('active');
        $(`#step${currentStep}-indicator`).addClass('active');
        $('#help-text').html(helpTexts[currentStep]);
    }

    // Step 2: Test Database Connection
    $('#btnTestDb').on('click', function () {
        const formData = {
            action: 'test_db',
            db_host: $('input[name="db_host"]').val(),
            db_name: $('input[name="db_name"]').val(),
            db_user: $('input[name="db_user"]').val(),
            db_pass: $('input[name="db_pass"]').val()
        };

        const $btn = $(this);
        $btn.prop('disabled', true).html('<span class="spinner-border spinner-border-sm"></span>');

        $.ajax({
            url: apiBase,
            method: 'POST',
            contentType: 'application/json',
            data: JSON.stringify(formData),
            success: function (res) {
                $btn.prop('disabled', false).text('ٹیسٹ کنکشن');
                if (res.success) {
                    Swal.fire('کامیابی', 'ڈیٹا بیس سے رابطہ کامیاب رہا!', 'success');
                    $('#btnNext2').prop('disabled', false);
                } else {
                    Swal.fire('ناکام', res.message || 'رابطہ قائم نہیں ہو سکا', 'error');
                }
            }
        });
    });

    // Step 5: Finish Installation
    $('#btnFinish').on('click', function () {
        const formData = $('#installForm').serializeArray().reduce((obj, item) => {
            obj[item.name] = item.value;
            return obj;
        }, {});
        formData.action = 'finish_install';

        const $btn = $(this);
        $btn.prop('disabled', true).html('<span class="spinner-border spinner-border-sm"></span> انسٹال ہو رہا ہے...');

        $.ajax({
            url: apiBase,
            method: 'POST',
            contentType: 'application/json',
            data: JSON.stringify(formData),
            success: function (res) {
                if (res.success) {
                    Swal.fire({
                        title: 'مبارک ہو!',
                        text: 'انسٹالیشن کامیابی سے مکمل ہوگئی ہے۔',
                        icon: 'success',
                        confirmButtonText: 'ڈیش بورڈ پر جائیں'
                    }).then(() => {
                        window.location.href = '../index.php';
                    });
                } else {
                    $btn.prop('disabled', false).text('انسٹالیشن مکمل کریں!');
                    Swal.fire('خرابی', res.message || 'انسٹالیشن کے دوران مسئلہ آیا۔', 'error');
                }
            }
        });
    });
});
