// 全局JavaScript功能
document.addEventListener('DOMContentLoaded', function() {
    // 自动隐藏提示消息
    const alerts = document.querySelectorAll('.alert');
    alerts.forEach(function(alert) {
        setTimeout(function() {
            alert.style.opacity = '0';
            setTimeout(function() {
                alert.style.display = 'none';
            }, 300);
        }, 5000); // 5秒后自动隐藏
    });
    // 平滑滚动
    const links = document.querySelectorAll('a[href^="#"]');
    links.forEach(function(link) {
        link.addEventListener('click', function(e) {
            e.preventDefault();
            const target = document.querySelector(this.getAttribute('href'));
            if (target) {
                target.scrollIntoView({
                    behavior: 'smooth',
                    block: 'start'
                });
            }
        });
    });
    // 表单验证增强
    const forms = document.querySelectorAll('form');
    forms.forEach(function(form) {
        form.addEventListener('submit', function(e) {
            const submitBtn = form.querySelector('button[type="submit"]');
            if (submitBtn && !submitBtn.disabled) {
                // 防止重复提交
                setTimeout(function() {
                    submitBtn.disabled = true;
                }, 100);
            }
        });
    });
    // 输入框焦点效果
    const inputs = document.querySelectorAll('.form-control');
    inputs.forEach(function(input) {
        input.addEventListener('focus', function() {
            this.parentNode.classList.add('focused');
        });
        
        input.addEventListener('blur', function() {
            this.parentNode.classList.remove('focused');
        });
    });
    // 工具提示初始化
    if (typeof bootstrap !== 'undefined') {
        const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
        tooltipTriggerList.map(function(tooltipTriggerEl) {
            return new bootstrap.Tooltip(tooltipTriggerEl);
        });
        // 弹出框初始化
        const popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'));
        popoverTriggerList.map(function(popoverTriggerEl) {
            return new bootstrap.Popover(popoverTriggerEl);
        });
    }
    // 邮箱验证码倒计时功能
    window.startVerificationCountdown = function(buttonId, duration = 60) {
        const button = document.getElementById(buttonId);
        if (!button) return;
        
        let count = duration;
        const originalText = button.textContent;
        
        button.disabled = true;
        
        const timer = setInterval(function() {
            button.textContent = `${count}秒后重试`;
            count--;
            
            if (count < 0) {
                clearInterval(timer);
                button.disabled = false;
                button.textContent = originalText === '发送验证码' ? '重新发送' : originalText;
            }
        }, 1000);
        
        return timer;
    };
    // AJAX请求封装
    window.sendAjaxRequest = function(url, data, successCallback, errorCallback) {
        fetch(url, {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'X-Requested-With': 'XMLHttpRequest'
            },
            body: JSON.stringify(data)
        })
        .then(response => response.json())
        .then(data => {
            if (data.success) {
                if (successCallback) successCallback(data);
            } else {
                if (errorCallback) errorCallback(data.message || '请求失败');
            }
        })
        .catch(error => {
            console.error('请求错误:', error);
            if (errorCallback) errorCallback('网络错误,请检查连接');
        });
    };
    // 显示加载状态
    window.showLoading = function(button, loadingText = '处理中...') {
        if (!button) return;
        
        button.disabled = true;
        const originalHTML = button.innerHTML;
        button.innerHTML = `${loadingText}`;
        
        return function() {
            button.disabled = false;
            button.innerHTML = originalHTML;
        };
    };
    // 显示消息提示
    window.showMessage = function(message, type = 'info') {
        const alertContainer = document.querySelector('.container');
        if (!alertContainer) return;
        const alertDiv = document.createElement('div');
        alertDiv.className = `alert alert-${type} alert-dismissible fade show`;
        alertDiv.innerHTML = `
            
            ${message}
            
        `;
        
        alertContainer.insertBefore(alertDiv, alertContainer.firstChild);
        
        // 自动隐藏
        setTimeout(function() {
            alertDiv.style.opacity = '0';
            setTimeout(function() {
                if (alertDiv.parentNode) {
                    alertDiv.parentNode.removeChild(alertDiv);
                }
            }, 300);
        }, 5000);
    };
    // 验证邮箱格式
    window.validateEmail = function(email) {
        const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
        return emailRegex.test(email);
    };
    // 验证密码强度
    window.validatePassword = function(password) {
        if (password.length < 6) {
            return { valid: false, message: '密码长度至少6位' };
        }
        return { valid: true, message: '密码强度可以' };
    };
    // 数字输入限制
    window.restrictToNumbers = function(inputElement) {
        inputElement.addEventListener('input', function(e) {
            e.target.value = e.target.value.replace(/[^0-9]/g, '');
        });
    };
    // 初始化数字验证码输入框
    const codeInputs = document.querySelectorAll('input[name="verification_code"]');
    codeInputs.forEach(function(input) {
        window.restrictToNumbers(input);
    });
});
// 全局错误处理
window.addEventListener('error', function(e) {
    console.error('全局错误:', e.error);
});
// 全局未处理的Promise拒绝
window.addEventListener('unhandledrejection', function(e) {
    console.error('未处理的Promise拒绝:', e.reason);
});