export default defineNuxtPlugin((nuxtApp) => {
    nuxtApp.hook('app:mounted', () => {
        const initDMP = () => {
            const getEnvConfig = () => {
                return {
                    server_url: window.DMP.serverUrl,
                    sdk_url: window.DMP.sdkUrl,
                    heatmap_url: window.DMP.heatmapUrl
                };
            };

            const envConfig = getEnvConfig();

            (function(para) {
                var p = para.sdk_url, n = para.name, w = window, d = document, s = 'script',x = null,y = null;
                w['UniversalStatistics201505'] = n;
                w[n] = w[n] || function(a) {return function() {(w[n]._q = w[n]._q || []).push([a, arguments]);}};
                var ifs = ['track','quick','register','registerPage','registerOnce','clearAllRegister','trackSignup', 'trackAbtest', 'setProfile','setOnceProfile','appendProfile', 'incrementProfile', 'deleteProfile', 'unsetProfile', 'identify','login','logout','trackLink','use'];
                for (var i = 0; i < ifs.length; i++) {
                    w[n][ifs[i]] = w[n].call(null, ifs[i]);
                }
                if (!w[n]._t) {
                    x = d.createElement(s), y = d.getElementsByTagName(s)[0];
                    x.async = 1;
                    x.src = p;
                    w[n].para = para;
                    y.parentNode.insertBefore(x, y);
                }
            })({
                name: 'universal',
                server_url: envConfig.server_url,
                sdk_url: envConfig.sdk_url,
                heatmap_url: envConfig.heatmap_url,
                send_type:'beacon',
                use_client_time:true,	


            
                heatmap: {
                    //是否開啟點擊圖，默認 default 表示開啟，自動採集 $WebClick 事件，可以設置 'not_collect' 表示關閉
                    clickmap:'default',
                    //是否開啟觸達註意力圖，默認 default 表示開啟，自動採集 $WebStay 事件，可以設置 'not_collect' 表示關閉
                    scroll_notice_map:'default',
                    collect_tags: {
                    div: {
                        max_level: 3 //默認是1，即只支持葉子 div。可配置範圍是 [1, 2, 3],非该範圍配置值，會被當作 1 處理。
                },
                    li: true
                    }
                },
                
                //設置 true 後會在網頁控制臺打 logger，會顯示發送的數據,設置 false 表示不顯示。默認 true
                show_log: true,
                //默認值 false，表示是否開啟單頁面自動採集 $pageview 功能，SDK 會在 url 改變之後自動採集web頁面瀏覽事件 $pageview
                is_track_single_page: false,
                //打通 App-H5
                app_js_bridge: true,
                use_app_track: true,
                is_secure_cookie: true,

                // 內容會以 'dfm-enc-' 開頭的加密格式儲存，服務端會自動識別，無需額外設定
                encrypt_cookie: true
            
            });
            
            var sPlatform = '';
            if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
                sPlatform = 'iOS';
            } else if (/(Android)/i.test(navigator.userAgent)) {
                sPlatform = 'Android';
            } else {
                sPlatform = 'PC';
            }
            
            universal.registerPage({
                is_login: false,        //請依 用戶行為分析項目事件設計 excel檔之公共屬性所規劃填寫
                platform: sPlatform,
                product: '網路銀行WEB'   //請依 用戶行為分析項目事件設計 excel檔之公共屬性所規劃填寫
            });
            
            
            //跨域打通
            universal.use('SiteLinker',
            {
                linker: [
                { part_url: 'sinopac.com', after_hash: false },
                { part_url: 'dawho.tw', after_hash: false }
                ]
            });

            universal.quick('autoTrack');
        
        };

        const tryInitDMP = (retryCount = 0, maxRetries = 10) => {
            if (retryCount >= maxRetries) {
                console.error('無法初始化 DMP：window.ENV 不存在');
                return;
            }

            if (!window.ENV) {
                setTimeout(() => tryInitDMP(retryCount + 1, maxRetries), 500);
                return;
            }

            initDMP();
        };

        tryInitDMP();
    });
});
