/* Js for , Version=1775195452 */
 v.lang = {"confirmDelete":"Do you want to delete it?","deleteing":"Deleting","doing":"Doing","loading":"Loading","updating":"Updating","timeout":"Timeout. Please try it again.","errorThrown":"<h4> Error <\/h4>","continueShopping":"Continue shopping","required":"Required","back":"Back","continue":"Continue","importTip":"Old layout data will be replaced","fullImportTip":"Old article, product, layout data will be replaced and import test data"};;
// 使用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);
;$(document).ready(function() {
    $('#zlight-nav').zlightMenu();
});

;(function($, window, document, undefined) {
    var pluginName = 'zlightMenu',
        defaults = {
            height: '71px',
            subMenuHeight: '20px',
            fontSize: '15px',
            subMenuWidth: '180px',
            floating: 'left',
            transform: 'off', //关闭浮动滑动
            transformBreak: '100',
            lablColor: '#ffffff',
            lablFontSize: '15px',
            iconColor: '#000000',
            iconSize: '20px',
            mobileMainColor: '#323231',
            mainColor: 'transparent',
            secondColor: '#FFB40C',
            fontColor: '#000000',
            activeFontColor: '#000000',
            borderLightColor: 'rgba(255,255,255,0.2)',
            borderDarkColor: 'rgba(0,0,0,0.2)',
            dropBorderLightColor: '#444444',
            dropBorderDarkColor: '#222222'
        };

    function Zmenu(element, options) {
        this.element = $(element);
        var ele = this;
        this.options = $.extend({}, defaults, options);
        this._defaults = defaults;
        this._name = pluginName;
        this.init(ele)
    };
    Zmenu.prototype.variables = function(ele) {
        this.op = this.options;
        this.mainNav = this.element.children('#zlight-main-nav');
        this.li = this.mainNav.children('li');
        this.links = this.mainNav.children('li').children('a');
        this.allLinks = this.mainNav.find('a');
        this.active = this.mainNav.find('.zlight-active');
        this.subMenu = this.mainNav.find('.zlight-submenu');
        this.subli = this.subMenu.children('li');
        this.subLinks = this.subMenu.children('li').children('a');
        this.mobileNav = this.element.children('#zlight-mobile-nav');
        this.mobileSelect = this.mobileNav.children('select');
        this.mobileSpan = this.mobileNav.children('span');
        this.mobileTxt = this.mobileSpan.text();
        this.mobileIcon = this.mobileNav.children('.zlight-icon');
        this.counter = 0;
    };
    Zmenu.prototype.setStyles = function(ele) {
        // 根据transform选项设置导航定位
        if (this.op.transform === 'on') {
            // 开启浮动：固定定位
            this.element.css({
                'height': this.op.height,
                'background-color': this.op.mainColor,
                'position': 'fixed',
                'top': '0',
                'left': '0',
                'width': '100%',
                'z-index': '999999'
            });
        } else {
            // 关闭浮动：静态定位
            this.element.css({
                'height': this.op.height,
                'background-color': this.op.mainColor,
                'position': 'absolute',
                'width': '100%',
                'z-index': '999999'
            });
        }
        this.mainNav.css({
            'border-right-color': this.op.borderDarkColor,
            'float': this.op.floating,
            'background-color': 'transparent'
        });
        this.links.css({
            'height': this.op.height,
            'line-height': this.op.height,
            'font-size': this.op.fontSize,
            'color': this.op.fontColor,
            'border-left-color': this.op.borderDarkColor,
            'border-right-color': this.op.borderLightColor
        });
        if (this.active) {
            this.active.css('background-color', this.op.secondColor).children('a').css('color', this.op.activeFontColor)
        };
        this.subMenu.css({
            'background-color': 'transparent',
            'width': this.op.subMenuWidth
        });
        this.subLinks.css({
            'color': this.op.fontColor,
            'font-size': this.op.fontSize,
            'border-top-color': this.op.dropBorderDarkColor,
            'border-bottom-color': this.op.dropBorderLightColor,
            'line-height': this.op.subMenuHeight
        });
        this.mobileSelect.fadeTo(0, 0).css({
            'height': this.op.height,
            'line-height': this.op.height
        });
        this.mobileSpan.css({
            'line-height': this.op.height,
            'color': this.op.lablColor,
            'font-size': this.op.lablFontSize
        });
        this.mobileIcon.css({
            'color': this.op.iconColor,
            'line-height': this.op.height,
            'font-size': this.op.iconSize
        });
        this.mobileNav.css('background-color', this.op.mobileMainColor)
    };
    Zmenu.prototype.createMobile = function(ele) {
        this.mobileSelect.append('<option>' + this.mobileTxt + '</option>');
        this.allLinks.each(function(indx, element) {
            var hrf = $(element).attr('href'),
                txt = $(element).text(),
                hclass = $(element).parents('.zlight-submenu').length,
                tr = '';
            if (hclass > 0) {
                for (i = 0; i < hclass; i++) {
                    tr += '-'
                }
            };a
            ele.mobileSelect.append('<option value="' + hrf + '">' + tr + ' ' + txt + '</option>')
        })
    };
    Zmenu.prototype.change = function(ele) {
        this.mobileSelect.on('change.zmenuChange', function() {
            location = this.options[this.selectedIndex].value
        });
        this.li.add(this.subli).on('mouseenter mouseleave.zmenuEnter', function(event) {
            if (event.type === 'mouseenter') {
                $(this).css('background-color', ele.op.secondColor).children('a').css('color', ele.op.activeFontColor)
            } else if (event.type === 'mouseleave') {
                if ($(this).hasClass('zlight-active') === false) {
                    $(this).css('background-color', 'transparent').children('a').css('color', ele.op.fontColor)
                }
            }
        });
        
        // 添加鼠标悬停效果
        this.element.on('mouseenter.zlightHover', function() {
            $(this).addClass('zlight-hover');
        }).on('mouseleave.zlightHover', function() {
            // 只有在没有滚动的情况下才移除悬停效果
            if ($(document).scrollTop() < ele.op.transformBreak) {
                $(this).removeClass('zlight-hover');
            }
        });
        
        // 滚动效果只在transform为'on'时生效
        if (this.op.transform === 'on') {
            $(window).on('scroll.ZlightScrolling', function() {
                if ($(document).scrollTop() >= ele.op.transformBreak) {
                    // 添加滚动样式类
                    ele.element.addClass('zlight-scrolled');
                } else {
                    // 移除滚动样式类
                    ele.element.removeClass('zlight-scrolled');
                    // 滚动到顶部时也移除悬停效果
                    ele.element.removeClass('zlight-hover');
                }
            })
        }
    };
    Zmenu.prototype.init = function(ele) {
        this.variables(ele);
        this.setStyles(ele);
        this.createMobile(ele);
        this.change(ele)
    };
    $.fn[pluginName] = function(options) {
        return this.each(function() {
            if (!$.data(this, 'plugin_' + pluginName)) {
                $.data(this, 'plugin_' + pluginName, new Zmenu(this, options))
            }
        })
    }
})(jQuery, window, document);;v.agreement = "close";;
$().ready(function()
{
    $('a.btn-oauth').each(function()
    {
        fingerprint = getFingerprint();
        $(this).attr('href', $(this).attr('href').replace('fingerprintval', fingerprint) )
    })
});
;$().ready(function() { $('#execIcon').tooltip({title:$('#execInfoBar').html(), html:true, placement:'right'}); }); ;$(function()
{
    if(v.agreement == 'open')
    {
        $('#submit').attr('disabled', true);

        $('input[name=agreement]').change(function()
        {
            if($('input[name=agreement]').prop('checked'))
            {
                $('#submit').attr('disabled', false);
            }
            if(!$('input[name=agreement]').prop('checked'))
            {
                $('#submit').attr('disabled', true);
            }
        });
    }
});

