// ========== 确保 HoloLake 命名空间存在 ==========
window.HoloLake = window.HoloLake || {};

// ========== 页面加载完成后执行 ==========
document.addEventListener('DOMContentLoaded', function() {
    console.log('🚀 script.js 初始化');
    
    // 恢复所有状态
    restoreState();
    
    // 绑定事件
    bindEvents();
    
    // 更新布局信息
    updateLayoutInfo();
    
    // 监听窗口大小变化
    window.addEventListener('resize', function() {
        updateLayoutInfo();
    });
});

// ========== 恢复状态 ==========
function restoreState() {
    console.log('🔍 restoreState 开始...');
    
    try {
        // 1. 恢复订阅状态
        const isSubscribed = HoloLake.UserState.isSubscribed();
        const subscribeBtn = document.querySelector('.subscribe-btn');
        if (subscribeBtn) {
            if (isSubscribed) {
                subscribeBtn.classList.add('active');
                subscribeBtn.textContent = '已订阅';
            } else {
                subscribeBtn.classList.remove('active');
                subscribeBtn.textContent = '订阅';
            }
        }
        
        // 2. 恢复已读公告
        const readList = HoloLake.UserState.getReadBulletins();
        const bulletinCards = document.querySelectorAll('.bulletin-card');
        bulletinCards.forEach((card, index) => {
            const bulletinId = `bulletin-${index}`;
            if (readList.includes(bulletinId)) {
                card.classList.add('read');
            }
        });
        
        // 3. 恢复选中频道
        const activeChannel = HoloLake.UserState.getActiveChannel();
        const channels = document.querySelectorAll('.channel');
        channels.forEach(channel => {
            const channelText = channel.textContent.trim();
            if (channelText === activeChannel || (activeChannel === '全部' && channelText === '全部')) {
                channel.classList.add('active');
            } else {
                channel.classList.remove('active');
            }
        });
        
        // 4. 更新最后访问时间
        HoloLake.UserState.updateLastVisit();
        
        console.log('✅ 恢复已完成');
    } catch (e) {
        console.error('❌ 恢复失败:', e);
    }
}

// ========== 绑定事件 ==========
function bindEvents() {
    console.log('🔗 绑定事件...');
    
    // 订阅按钮
    const subscribeBtn = document.querySelector('.subscribe-btn');
    if (subscribeBtn) {
        subscribeBtn.addEventListener('click', function() {
            const newState = HoloLake.UserState.toggleSubscribe();
            if (newState) {
                this.classList.add('active');
                this.textContent = '已订阅';
            } else {
                this.classList.remove('active');
                this.textContent = '订阅';
            }
            console.log('📌 订阅状态:', newState ? '已订阅' : '未订阅');
        });
    }
    
    // 频道点击
    const channels = document.querySelectorAll('.channel');
    channels.forEach(channel => {
        channel.addEventListener('click', function() {
            // 更新UI
            channels.forEach(c => c.classList.remove('active'));
            this.classList.add('active');
            
            // 保存状态
            const channelName = this.textContent.trim();
            HoloLake.UserState.setActiveChannel(channelName);
            
            // 筛选公告（可选功能，这里先做简单筛选）
            filterBulletinsByChannel(channelName);
            
            console.log('📺 切换到频道:', channelName);
        });
    });
    
    // 公告点击（标记已读）
    const bulletinCards = document.querySelectorAll('.bulletin-card');
    bulletinCards.forEach((card, index) => {
        card.addEventListener('click', function() {
            const bulletinId = `bulletin-${index}`;
            
            // 标记已读
            if (!this.classList.contains('read')) {
                this.classList.add('read');
                HoloLake.UserState.markAsRead(bulletinId);
                console.log('📖 已读公告:', bulletinId);
            }
        });
    });
}

// ========== 按频道筛选 ==========
function filterBulletinsByChannel(channelName) {
    const cards = document.querySelectorAll('.bulletin-card');
    
    if (channelName === '全部') {
        cards.forEach(card => {
            card.style.display = 'flex';
        });
        return;
    }
    
    cards.forEach(card => {
        const tag = card.querySelector('.bulletin-tag');
        if (tag && tag.textContent.trim() === channelName) {
            card.style.display = 'flex';
        } else {
            card.style.display = 'none';
        }
    });
}

// ========== 更新布局信息 ==========
function updateLayoutInfo() {
    const width = window.innerWidth;
    let mode = '桌面';
    
    if (width <= 480) {
        mode = '手机';
    } else if (width <= 768) {
        mode = '平板';
    }
    
    console.log(`📱 当前布局: ${mode}模式 (${width}px)`);
}
// ========== 环节3：动画控制 ==========

// 初始化动画
function initAnimations() {
    // 检测用户是否开启了「减少动画」
    const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
    
    if (prefersReducedMotion) {
        console.log('♿ 用户开启了减少动画，跳过动画');
        return;
    }
    
    // 为所有公告卡片设置递增的动画延迟
    const cards = document.querySelectorAll('.bulletin-card');
    cards.forEach((card, index) => {
        // 如果已经有内联样式，先保留原有样式，只加动画延迟
        const delay = 0.1 * (index + 1);
        card.style.animationDelay = `${delay}s`;
    });
    
    console.log('🎬 动画已初始化，延迟已设置');
}

// 订阅按钮脉冲效果
function addPulseEffect(btn) {
    btn.classList.add('pulse');
    setTimeout(() => {
        btn.classList.remove('pulse');
    }, 300);
}

// 在页面加载时调用
document.addEventListener('DOMContentLoaded', function() {
    // 已有的初始化代码...
    initAnimations();
    
    // 为订阅按钮添加脉冲效果
    const subscribeBtn = document.querySelector('.subscribe-btn');
    if (subscribeBtn) {
        subscribeBtn.addEventListener('click', function() {
            addPulseEffect(this);
        });
    }
});