/* Js for , Version=1768353716 */
 v.lang = {"confirmDelete":"\u60a8\u786e\u5b9a\u8981\u6267\u884c\u5220\u9664\u64cd\u4f5c\u5417\uff1f","deleteing":"\u5220\u9664\u4e2d","doing":"\u5904\u7406\u4e2d","loading":"\u52a0\u8f7d\u4e2d","updating":"\u66f4\u65b0\u4e2d...","timeout":"\u7f51\u7edc\u8d85\u65f6,\u8bf7\u91cd\u8bd5","errorThrown":"<h4>\u6267\u884c\u51fa\u9519\uff1a<\/h4>","continueShopping":"\u7ee7\u7eed\u8d2d\u7269","required":"\u5fc5\u586b","back":"\u8fd4\u56de","continue":"\u7ee7\u7eed","importTip":"\u53ea\u5bfc\u5165\u4e3b\u9898\u7684\u98ce\u683c\u548c\u6837\u5f0f","fullImportTip":"\u5c06\u4f1a\u5bfc\u5165\u6d4b\u8bd5\u6570\u636e\u4ee5\u53ca\u66ff\u6362\u7ad9\u70b9\u6587\u7ae0\u3001\u4ea7\u54c1\u7b49\u6570\u636e"};;
// 使用IIFE隔离作用域，避免与现有v对象/函数冲突，兼容jQuery
(function(window, document, $, undefined) {
    'use strict';

    // 全局状态管理（局部作用域，避免污染）
    const animGlobalData = { // 重命名避免与其他全局变量冲突
        loading: false,
        loadedNum: 7,
        maxNum: 12,
        counterAnimating: false,
        counterInView: false
    };

    // 核心元素（仅赋值，不存在时不阻断）
    const contentBox = document.getElementById('content-container');
    const loaderBox = document.getElementById('loader');
    const endTipBox = document.getElementById('end-tip');
    
    // 动画配置
    const animList = [
        'slide-left', 'slide-right', 'scale-in', 'fade-in', 
        'slide-up-strong', 'slide-down-fade', 'scale-up-fade'
    ];
    const colorList = ['primary', 'secondary', 'accent', 'warning', 'primary', 'secondary', 'accent'];
    const animNames = {
        'fade-in': '淡入效果（延长版）',
        'slide-left': '左侧滑动（大幅版）',
        'slide-right': '右侧滑动（大幅版）',
        'slide-up-strong': '强化上滑（超大幅度）',
        'scale-in': '缩放显示（大幅版）',
        'slide-down-fade': '从上到下淡入',
        'scale-up-fade': '由小到大淡入'
    };

    // 视口检测（容错增强）
    function checkInViewInit(el) {
        if (!el) return false;
        const rect = el.getBoundingClientRect();
        const viewH = window.innerHeight || document.documentElement.clientHeight;
        const viewW = window.innerWidth || document.documentElement.clientWidth;
        return !(rect.bottom < 0 || rect.top > viewH || rect.right < 0 || rect.left > viewW);
    }

    function checkInViewScroll(el, triggerRatio) {
        if (!el) return false;
        triggerRatio = triggerRatio || 1/3;
        const rect = el.getBoundingClientRect();
        const viewH = window.innerHeight || document.documentElement.clientHeight;
        return rect.top <= viewH - (rect.height * triggerRatio) && rect.top >= 0 && rect.bottom >= 0;
    }

    // 播放动画（核心动画逻辑保留）
    function playAnim(el) {
        if (!el || el.classList.contains('animated')) return;
        
        const anim = el.getAttribute('data-anim') || '';
        el.classList.add('animated');
        el.offsetHeight; // 触发重绘
        
        const animClassMap = {
            'fade-in': 'animate-fade-in',
            'slide-left': 'animate-slide-left',
            'slide-right': 'animate-slide-right',
            'slide-up-strong': 'animate-slide-up-strong',
            'scale-in': 'animate-scale-in',
            'slide-down-fade': 'animate-slide-down-fade',
            'scale-up-fade': 'animate-scale-up-fade'
        };
        
        if (animClassMap[anim]) {
            el.classList.add(animClassMap[anim]);
        }
        
        if (el.id === 'counter-section' && !animGlobalData.counterAnimating) {
            setTimeout(startCounterAnim, 500);
        }
    }

    // 初始加载动画（不依赖核心元素，单独执行）
    function initAnims() {
        setTimeout(() => {
            // 遍历所有可动画元素，无核心元素也执行
            const animEls = document.querySelectorAll('.loadable:not(.animated)') || [];
            animEls.forEach(el => {
                if (checkInViewInit(el)) playAnim(el);
            });

            // 数字区块初始化（容错）
            const counterBox = document.getElementById('counter-section');
            if (counterBox) {
                animGlobalData.counterInView = checkInViewInit(counterBox);
                if (animGlobalData.counterInView && !animGlobalData.counterAnimating) {
                    setTimeout(startCounterAnim, 800);
                }
            }
        }, 300);
    }

    // 动态加载更多（仅当核心元素存在时执行）
    function loadMore() {
        // 核心元素不存在时直接返回，不影响其他逻辑
        if (!contentBox || !loaderBox || !endTipBox) return;
        if (animGlobalData.loading || animGlobalData.loadedNum >= animGlobalData.maxNum) return;

        animGlobalData.loading = true;
        loaderBox.style.display = 'flex';

        setTimeout(() => {
            const index = animGlobalData.loadedNum - 7;
            const anim = animList[index % animList.length];
            const color = colorList[index % colorList.length];
            const name = animNames[anim] || '动态动画';

            // 安全创建元素（防XSS）
            const contentEl = document.createElement('div');
            contentEl.className = 'loadable';
            contentEl.setAttribute('data-anim', anim);
            contentEl.innerHTML = `
                <div class="bg-white rounded-lg shadow-lg p-6 border-l-4 border-${color.replace(/[^a-z-]/g, '')}

">
                    <h3 class="text-2xl font-semibold mb-4 text-${color.replace(/[^a-z-]/g, '')}

">动态加载 - ${name.replace(/</g, '&lt;').replace(/>/g, '&gt;')}

</h3>
                    <p class="text-gray-600">合规版无敏感参数，动画效果流畅自然</p>
                </div>
            `;

            const spaceEl = document.createElement('div');
            spaceEl.className = 'h-96';

            if (loaderBox.parentNode) {
                contentBox.insertBefore(contentEl, loaderBox);
                contentBox.insertBefore(spaceEl, loaderBox);
            }

            // 检测新元素动画
            setTimeout(() => {
                if (checkInViewScroll(contentEl)) playAnim(contentEl);
            }, 200);

            animGlobalData.loadedNum++;
            animGlobalData.loading = false;
            loaderBox.style.display = 'none';

            if (animGlobalData.loadedNum >= animGlobalData.maxNum) {
                endTipBox.style.display = 'block';
            }
        }, 1000);
    }

    // 数字动画逻辑（容错）
    function resetCounter() {
        const counters = document.querySelectorAll('.counter') || [];
        counters.forEach(counter => {
            counter.innerText = '0';
        });
        animGlobalData.counterAnimating = false;
    }

    function runCounter(counter) {
        if (!counter) return;
        const target = parseInt(counter.getAttribute('data-target')) || 0;
        const current = parseInt(counter.innerText) || 0;
        const step = Math.max(1, Math.floor(target / 50));

        if (current < target) {
            const nextVal = Math.min(current + step, target);
            counter.innerText = nextVal;
            requestAnimationFrame(() => runCounter(counter));
        } else {
            counter.innerText = target;
            // 检查是否全部完成
            let allDone = true;
            const counters = document.querySelectorAll('.counter') || [];
            counters.forEach(item => {
                if (parseInt(item.innerText) !== parseInt(item.getAttribute('data-target'))) {
                    allDone = false;
                }
            });
            if (allDone) animGlobalData.counterAnimating = false;
        }
    }

    function startCounterAnim() {
        if (animGlobalData.counterAnimating) return;
        animGlobalData.counterAnimating = true;
        const counters = document.querySelectorAll('.counter') || [];
        counters.forEach(counter => runCounter(counter));
    }

    // 滚动处理（核心修复：移除核心元素强制检测，仅跳过加载更多）
    function handleScroll() {
        // 1. 处理所有可动画元素（无核心元素也执行）
        const animEls = document.querySelectorAll('.loadable:not(.animated)') || [];
        animEls.forEach(el => {
            if (checkInViewScroll(el)) playAnim(el);
        });

        // 2. 处理数字区块（容错）
        const counterBox = document.getElementById('counter-section');
        if (counterBox) {
            const nowInView = checkInViewScroll(counterBox, 0.5);
            if (!nowInView && animGlobalData.counterInView) resetCounter();
            else if (nowInView && !animGlobalData.counterAnimating && !animGlobalData.counterInView) startCounterAnim();
            animGlobalData.counterInView = nowInView;
        }

        // 3. 加载更多（仅核心元素存在时执行）
        if (contentBox && loaderBox && endTipBox) {
            const scrollTop = window.scrollY;
            const viewH = window.innerHeight;
            const docH = document.body.offsetHeight;
            if (viewH + scrollTop >= docH - 400 && !animGlobalData.loading && animGlobalData.loadedNum < animGlobalData.maxNum) {
                loadMore();
            }
        }
    }

    // 节流函数（防重复触发）
    function throttle(func, delay) {
        if (typeof func !== 'function') return () => {};
        delay = delay || 100;
        let lastTime = 0;
        return function() {
            const now = Date.now();
            if (now - lastTime >= delay) {
                func.apply(this, arguments);
                lastTime = now;
            }
        };
    }

    // 初始化逻辑（兼容jQuery ready，避免冲突）
    function init() {
        // 初始化动画（必执行）
        initAnims();
        
        // 绑定滚动事件（先移除旧事件，避免重复）
        const throttledScroll = throttle(handleScroll);
        window.removeEventListener('scroll', throttledScroll);
        window.addEventListener('scroll', throttledScroll);

        // 页面卸载清理事件
        window.addEventListener('beforeunload', () => {
            window.removeEventListener('scroll', throttledScroll);
        });
    }

    // 兼容现有jQuery ready逻辑，避免覆盖
    if (typeof $ === 'function') {
        // 确保在现有ready之后执行，避免冲突
        $(document).ready(() => {
            setTimeout(init, 100); // 延迟100ms，避开现有JS执行
        });
    } else {
        // 原生DOM加载
        if (document.readyState === 'complete' || document.readyState === 'interactive') {
            init();
        } else {
            document.addEventListener('DOMContentLoaded', init);
        }
    }

    // 页面完全加载后二次检测
    window.addEventListener('load', () => {
        setTimeout(initAnims, 200);
    });

    // 刷新/后退场景恢复
    window.addEventListener('pageshow', () => {
        setTimeout(handleScroll, 400);
    });

})(window, document, window.jQuery);
;v.pageID = 1;;    // 获取页面上所有的超链接元素  
    var links = document.getElementsByTagName('a');  
  
    // 遍历每个超链接元素并设置其target属性为_parent  
    for (var i = 0; i < links.length; i++) {  
        links[i].target = '_parent';  
    }  
