/* ============================================================
   MetaLab Login JS — 登录页面专属脚本
   ============================================================ */
(function () {
    'use strict';

    var loginForm = document.getElementById('loginForm');
    var emailInput = document.getElementById('email');
    var passwordInput = document.getElementById('password');
    var rememberMeCheckbox = document.getElementById('rememberMe');
    var emailError = document.getElementById('emailError');
    var passwordError = document.getElementById('passwordError');
    var submitBtn = document.getElementById('submitBtn');
    var toast = document.getElementById('toast');

    if (!loginForm) return;

    // 读取 redirect 参数（登录成功后跳转目标）
    function getRedirect() {
        var m = window.location.search.match(/[?&]redirect=([^&]+)/);
        if (m) return decodeURIComponent(m[1]);
        // 回退：如果来源页是本站页面，跳回来源页
        try {
            var ref = document.referrer;
            if (ref) {
                var a = document.createElement('a');
                a.href = ref;
                if (a.hostname === window.location.hostname &&
                    a.pathname !== window.location.pathname &&
                    a.pathname.indexOf('/auth/') !== 0) {
                    return a.pathname + a.search + a.hash;
                }
            }
        } catch (e) {}
        return '/';
    }

    function checkFormValidity() {
        var email = emailInput.value.trim();
        var password = passwordInput.value;
        submitBtn.disabled = !(email && password);
    }

    emailInput.addEventListener('input', function () {
        var v = emailInput.value.trim();
        if (v && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v)) {
            emailInput.classList.add('error');
            emailError.style.display = 'block';
        } else {
            emailInput.classList.remove('error');
            emailError.style.display = 'none';
        }
        checkFormValidity();
    });

    passwordInput.addEventListener('input', checkFormValidity);

    loginForm.addEventListener('submit', function (e) {
        e.preventDefault();

        var email = emailInput.value.trim();
        var password = passwordInput.value;

        if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
            emailInput.classList.add('error');
            emailError.style.display = 'block';
            return;
        }
        if (!password) {
            passwordInput.classList.add('error');
            passwordError.style.display = 'block';
            return;
        }

        doLogin(email, password);
    });

    var loginInProgress = false;

    function doLogin(email, password) {
        if (loginInProgress) return;
        loginInProgress = true;
        submitBtn.disabled = true;
        submitBtn.textContent = '登录中...';

        var xhr = new XMLHttpRequest();
        xhr.open('POST', '/api/auth/login', true);
        xhr.setRequestHeader('Content-Type', 'application/json');
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4) {
                var resp;
                try { resp = JSON.parse(xhr.responseText); } catch (err) { resp = null; }

                if (xhr.status === 200 && resp && resp.success && resp.action === 'confirm_restore') {
                    loginInProgress = false;
                    submitBtn.disabled = false;
                    submitBtn.textContent = '登录';
                    if (confirm(resp.message + '\n\n确认登录将撤销注销并恢复账号。')) {
                        doConfirmRestore(email, password);
                    }
                } else if (xhr.status === 200 && resp && resp.success) {
                    window.MetaLab.toast(toast, '登录成功', false);
                    setTimeout(function () {
                        window.location.href = getRedirect();
                    }, 800);
                } else {
                    loginInProgress = false;
                    submitBtn.disabled = false;
                    submitBtn.textContent = '登录';
                    var msg = (resp && resp.message) ? resp.message : '登录失败，请稍后重试';
                    window.MetaLab.toast(toast, msg, true);
                }
            }
        };
        xhr.send(JSON.stringify({ email: email, password: password, remember_me: rememberMeCheckbox.checked }));
    }

    function doConfirmRestore(email, password) {
        if (loginInProgress) return;
        loginInProgress = true;
        submitBtn.disabled = true;
        submitBtn.textContent = '撤销注销中...';

        var xhr = new XMLHttpRequest();
        xhr.open('POST', '/api/auth/confirm-restore', true);
        xhr.setRequestHeader('Content-Type', 'application/json');
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4) {
                var resp;
                try { resp = JSON.parse(xhr.responseText); } catch (err) { resp = null; }

                if (xhr.status === 200 && resp && resp.success) {
                    window.MetaLab.toast(toast, resp.message || '注销已撤销，欢迎回来', false);
                    setTimeout(function () {
                        window.location.href = getRedirect();
                    }, 800);
                } else {
                    loginInProgress = false;
                    submitBtn.disabled = false;
                    submitBtn.textContent = '登录';
                    var msg = (resp && resp.message) ? resp.message : '操作失败，请稍后重试';
                    window.MetaLab.toast(toast, msg, true);
                }
            }
        };
        xhr.send(JSON.stringify({ email: email, password: password, remember_me: rememberMeCheckbox.checked }));
    }
})();
