
(function() {
    'use strict';
    
    var config = {
        token: window.SiteTongji ? window.SiteTongji.token : '',
        endpoint: 'https://a.dffg524.cn/collect.php',
        trackPageview: true,
        trackDuration: true,
        respectDNT: true,
        trackEvents: true
    };
    
    // 检查是否配置了token
    if (!config.token) {
        if (console && console.warn) {
            console.warn('SiteTongji: Tracking token not configured');
        }
        return;
    }
    
    // 尊重Do Not Track设置
    if (config.respectDNT && navigator.doNotTrack === '1') {
        return;
    }
    
    // 收集基本信息
    function collectData() {
        return {
            token: config.token,
            url: window.location.href,
            ref: document.referrer,
            screen: screen.width + 'x' + screen.height,
            lang: navigator.language || navigator.userLanguage || '',
            title: document.title || ''
        };
    }
    
    // 发送数据
    function sendData(data) {
        if (!navigator.onLine) return;
        
        try {
            // 使用navigator.sendBeacon如果可用
            if (navigator.sendBeacon) {
                var formData = new FormData();
                for (var key in data) {
                    if (data.hasOwnProperty(key)) {
                        formData.append(key, data[key]);
                    }
                }
                navigator.sendBeacon(config.endpoint, formData);
            } else {
                // 回退到Image beacon
                var params = [];
                for (var key in data) {
                    if (data.hasOwnProperty(key) && data[key] !== null && data[key] !== undefined) {
                        params.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));
                    }
                }
                var img = new Image(1, 1);
                img.src = config.endpoint + '?' + params.join('&');
            }
        } catch (e) {
            if (console && console.error) {
                console.error('SiteTongji: Error sending data', e);
            }
        }
    }
    
    // 跟踪页面浏览
    function trackPageview() {
        if (!config.trackPageview) return;
        
        var data = collectData();
        sendData(data);
    }
    
    // 跟踪停留时间
    function trackDuration() {
        if (!config.trackDuration) return;
        
        var startTime = Date.now();
        var maxDuration = 1800; // 最大记录30分钟
        
        var beforeUnloadHandler = function() {
            var duration = Math.round((Date.now() - startTime) / 1000);
            if (duration > 0 && duration <= maxDuration) {
                var data = collectData();
                data.duration = duration;
                sendData(data);
            }
        };
        
        // 监听页面卸载
        window.addEventListener('beforeunload', beforeUnloadHandler);
        
        // 对于单页应用，监听pushState和replaceState
        if (window.history && window.history.pushState) {
            var originalPushState = history.pushState;
            var originalReplaceState = history.replaceState;
            
            history.pushState = function() {
                originalPushState.apply(this, arguments);
                trackPageview();
            };
            
            history.replaceState = function() {
                originalReplaceState.apply(this, arguments);
                trackPageview();
            };
            
            window.addEventListener('popstate', trackPageview);
        }
    }
    
    // 自动跟踪链接点击（可选）
    function trackLinks() {
        if (!config.trackEvents) return;
        
        document.addEventListener('click', function(e) {
            var target = e.target;
            while (target && target.nodeName !== 'A') {
                target = target.parentNode;
            }
            
            if (target && target.href && target.hostname !== window.location.hostname) {
                var data = collectData();
                data.event_category = 'outbound';
                data.event_action = 'click';
                data.event_label = target.href;
                sendData(data);
            }
        }, false);
    }
    
    // 初始化
    function init() {
        // 延迟执行以避免影响页面加载
        if (document.readyState === 'loading') {
            document.addEventListener('DOMContentLoaded', function() {
                trackPageview();
                trackDuration();
                trackLinks();
            });
        } else {
            trackPageview();
            trackDuration();
            trackLinks();
        }
    }
    
    // 手动跟踪事件
    function trackEvent(category, action, label, value) {
        if (!config.trackEvents) return;
        
        var data = collectData();
        data.event_category = category;
        data.event_action = action;
        data.event_label = label;
        if (value !== undefined) {
            data.event_value = value;
        }
        sendData(data);
    }
    
    // 手动跟踪页面浏览
    function trackPageviewManual(url, title) {
        var data = collectData();
        if (url) data.url = encodeURIComponent(url);
        if (title) data.title = encodeURIComponent(title);
        sendData(data);
    }
    
    // 设置自定义维度
    function setDimension(index, value) {
        if (index >= 1 && index <= 20) {
            var data = collectData();
            data['dimension_' + index] = value;
        }
    }
    
    // 暴露API到全局
    window.SiteTongji = window.SiteTongji || {};
    window.SiteTongji.trackEvent = trackEvent;
    window.SiteTongji.trackPageview = trackPageviewManual;
    window.SiteTongji.setDimension = setDimension;
    
    // 自动初始化
    init();
})();
