/**
 * 专业领域轮播初始化
 * 使用 SimpleCarousel 实现一行5个卡片的轮播效果
 */

(function() {
    'use strict';

    // 等待DOM加载完成
    document.addEventListener('DOMContentLoaded', function() {
        initProfessionalCarousel();
    });

    function initProfessionalCarousel() {
        const carouselContainer = document.getElementById('professionalCarousel');
        if (!carouselContainer) {
            console.warn('Professional carousel container not found');
            return;
        }

        // 检查SimpleCarousel是否可用
        if (typeof SimpleCarousel === 'undefined') {
            console.error('SimpleCarousel is not loaded');
            return;
        }

        // 轮播配置
        const carouselOptions = {
            autoplay: true,
            autoplayDelay: 4000,
            loop: true,
            navigation: true,
            pagination: false,
            touchEnabled: true,
            slidesPerView: 5, // 一行显示5个卡片
            spaceBetween: 20,
            onSlideChange: function(currentIndex, previousIndex) {
                // 轮播切换时的回调
                console.log('Slide changed from', previousIndex, 'to', currentIndex);
                
                // 添加切换动画效果
                animateSlideChange(currentIndex, previousIndex);
            }
        };

        // 初始化轮播
        const carousel = new SimpleCarousel(carouselContainer, carouselOptions);
        
        // 存储轮播实例到全局，便于调试
        window.professionalCarousel = carousel;

        // 添加键盘导航支持
        addKeyboardNavigation(carousel);
        
        // 添加鼠标悬停暂停功能
        addHoverPause(carousel, carouselContainer);
        
        // 添加加载完成动画
        addLoadAnimation(carouselContainer);
        
        console.log('Professional carousel initialized successfully');
    }

    /**
     * 添加轮播切换动画效果
     */
    function animateSlideChange(currentIndex, previousIndex) {
        const cards = document.querySelectorAll('.professional-card');
        
        // 为当前显示的卡片添加动画
        cards.forEach((card, index) => {
            card.classList.remove('slide-in', 'slide-out');
            
            // 计算当前显示的卡片范围（一行5个）
            const startIndex = Math.floor(currentIndex / 5) * 5;
            const endIndex = startIndex + 4;
            
            if (index >= startIndex && index <= endIndex) {
                // 当前显示的卡片
                setTimeout(() => {
                    card.classList.add('slide-in');
                }, (index - startIndex) * 100); // 错开动画时间
            }
        });
    }

    /**
     * 添加键盘导航支持
     */
    function addKeyboardNavigation(carousel) {
        document.addEventListener('keydown', function(e) {
            // 只在轮播容器可见时响应键盘事件
            const carouselContainer = document.getElementById('professionalCarousel');
            if (!isElementInViewport(carouselContainer)) {
                return;
            }

            switch(e.key) {
                case 'ArrowLeft':
                    e.preventDefault();
                    carousel.prev();
                    break;
                case 'ArrowRight':
                    e.preventDefault();
                    carousel.next();
                    break;
            }
        });
    }

    /**
     * 添加鼠标悬停暂停功能
     */
    function addHoverPause(carousel, container) {
        container.addEventListener('mouseenter', function() {
            carousel.pauseAutoplay();
        });

        container.addEventListener('mouseleave', function() {
            carousel.resumeAutoplay();
        });
    }

    /**
     * 添加加载完成动画
     */
    function addLoadAnimation(container) {
        // 添加加载状态
        container.classList.add('loading');
        
        // 模拟加载完成
        setTimeout(() => {
            container.classList.remove('loading');
            container.classList.add('loaded');
        }, 500);
    }

    /**
     * 检查元素是否在视口中
     */
    function isElementInViewport(el) {
        if (!el) return false;
        
        const rect = el.getBoundingClientRect();
        return (
            rect.top >= 0 &&
            rect.left >= 0 &&
            rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
            rect.right <= (window.innerWidth || document.documentElement.clientWidth)
        );
    }

    /**
     * 响应式处理
     */
    function handleResponsive() {
        const carousel = window.professionalCarousel;
        if (!carousel) return;

        const screenWidth = window.innerWidth;
        let slidesPerView = 5;

        if (screenWidth <= 480) {
            slidesPerView = 2;
        } else if (screenWidth <= 768) {
            slidesPerView = 3;
        } else if (screenWidth <= 1024) {
            slidesPerView = 4;
        }

        // 更新轮播配置（如果SimpleCarousel支持动态更新）
        if (carousel.updateSlidesPerView) {
            carousel.updateSlidesPerView(slidesPerView);
        }
    }

    // 监听窗口大小变化
    window.addEventListener('resize', debounce(handleResponsive, 250));

    /**
     * 防抖函数
     */
    function debounce(func, wait) {
        let timeout;
        return function executedFunction(...args) {
            const later = () => {
                clearTimeout(timeout);
                func(...args);
            };
            clearTimeout(timeout);
            timeout = setTimeout(later, wait);
        };
    }

})();