/**
 * GSAP与Elementor初始化管理器
 * 确保GSAP和Elementor的正确初始化顺序
 * 
 * @package Nenghui Energy Theme
 * @since 1.0.0
 */

(function() {
    'use strict';
    
    // 初始化管理器
    const GSAPElementorInitManager = {
        initialized: false,
        
        // 初始化
        init: function() {
            if (this.initialized) return;
            
            // 等待DOM加载完成
            if (document.readyState === 'loading') {
                document.addEventListener('DOMContentLoaded', () => {
                    this.setupInitialization();
                });
            } else {
                this.setupInitialization();
            }
        },
        
        // 设置初始化流程
        setupInitialization: function() {
            // 1. 首先等待GSAP加载
            this.waitForGSAP(() => {
                // 2. 然后等待兼容性管理器
                this.waitForCompatibilityManager(() => {
                    // 3. 最后初始化兼容性管理器
                    if (window.GSAPElementorCompatibility) {
                        window.GSAPElementorCompatibility.init();
                    }
                    
                    // 4. 触发自定义事件，通知其他脚本可以安全使用GSAP
                    this.triggerGSAPReady();
                    
                    this.initialized = true;
                });
            });
        },
        
        // 等待GSAP加载
        waitForGSAP: function(callback) {
            let attempts = 0;
            const maxAttempts = 50;
            
            const checkGSAP = () => {
                if (window.gsap && window.ScrollTrigger) {
                    callback();
                } else if (attempts < maxAttempts) {
                    attempts++;
                    setTimeout(checkGSAP, 100);
                } else {
                    console.error('GSAP加载超时');
                }
            };
            
            checkGSAP();
        },
        
        // 等待兼容性管理器加载
        waitForCompatibilityManager: function(callback) {
            let attempts = 0;
            const maxAttempts = 50;
            
            const checkManager = () => {
                if (window.GSAPElementorCompatibility) {
                    callback();
                } else if (attempts < maxAttempts) {
                    attempts++;
                    setTimeout(checkManager, 100);
                } else {
                    callback(); // 即使失败也继续执行
                }
            };
            
            checkManager();
        },
        
        // 触发GSAP准备就绪事件
        triggerGSAPReady: function() {
            // 创建自定义事件
            const gsapReadyEvent = new CustomEvent('gsapReady', {
                detail: {
                    gsap: window.gsap,
                    ScrollTrigger: window.ScrollTrigger,
                    api: window.GSAPElementorAPI,
                    manager: window.GSAPAnimationManager
                }
            });
            
            // 触发事件
            document.dispatchEvent(gsapReadyEvent);
            
            // 同时设置全局标志
            window.GSAPReady = true;
        }
    };
    
    // 立即初始化
    GSAPElementorInitManager.init();
    
    // 暴露到全局作用域
    window.GSAPElementorInitManager = GSAPElementorInitManager;
    
})();