/* Js for , Version=1775240919 */
 v.objectType = "book";;v.objectID = 216;;v.showDetail = "\u663e\u793a\u5168\u90e8";;v.hideDetail = "\u6536\u8d77";;$(document).ready(function()
{
    $.setAjaxForm('#commentForm', function(response)
    {
        if(response.result == 'success')
        {
            setTimeout(function()
            {
                var link = createLink('message', 'comment', 'objecType=' + $('#objectType').val() + '&objectID=' + $('#objectID').val());
                 $('#commentForm').closest('#commentBox').load(link, location.href="#first");
            },  
            1000);   
        }
        else
        {
            if(response.reason == 'needChecking')
            {
                $('#captchaBox').html(Base64.decode(response.captcha)).show();
            }
        }
    });

    $('#pager').find('a').click(function()
    {
        $('#commentBox').load($(this).attr('href'));
        return false;
    });

    $('a[id*=reply]').modalTrigger();

    /* Process contents. */
    $('.content-detail').each(function()
    {
        var obj = $(this);
        if(obj.height() > 100)
        {
            var buttons = "<a href='javascript:void(0)' onclick='showDetail(this)' class='showDetail'> ... " + v.showDetail + "</a>";
            buttons    += "<a href='javascript:void(0)' onclick='hideDetail(this)' class='hideDetail'> " + v.hideDetail + "</a>";
            obj.parent().append(buttons);
            obj.parent().find('.hideDetail').hide();
            obj.addClass('content-abstract');
        }
    });
});

function showDetail(obj)
{
    var tdContent = $(obj).parents('.td-content');
    tdContent.find('.content-detail').removeClass('content-abstract');
    tdContent.find('.showDetail').hide();
    tdContent.find('.hideDetail').show();
}

function hideDetail(obj)
{
    var tdContent = $(obj).parents('.td-content');
    tdContent.find('.content-detail').addClass('content-abstract');
    tdContent.find('.showDetail').show();
    tdContent.find('.hideDetail').hide();
}
$(document).ready(function()
{
    $('#pager').find('a').click(function()
    {
        if(v.objectType == 'order') $('#commentForm').closest('.modal-body').load($(this).attr('href'));
        if(v.objectType != 'order') $('#commentForm').closest('#commentBox').load($(this).attr('href'));
        return false;
    });

    /* Process contents. */
    $('.content-detail').each(function()
    {
        var obj = $(this);
        if(obj.height() > 100)
        {
            var buttons = "<a href='javascript:void(0)' onclick='showDetail(this)' class='showDetail'> ... " + v.showDetail + "</a>";
            buttons    += "<a href='javascript:void(0)' onclick='hideDetail(this)' class='hideDetail'> " + v.hideDetail + "</a>";
            obj.parent().append(buttons);
            obj.parent().find('.hideDetail').hide();
            obj.addClass('content-abstract');
        }
    });
});

function showDetail(obj)
{
    var tdContent = $(obj).parents('.td-content');
    tdContent.find('.content-detail').removeClass('content-abstract');
    tdContent.find('.showDetail').hide();
    tdContent.find('.hideDetail').show();
}

function hideDetail(obj)
{
    var tdContent = $(obj).parents('.td-content');
    tdContent.find('.content-detail').addClass('content-abstract');
    tdContent.find('.showDetail').show();
    tdContent.find('.hideDetail').hide();
}
window.xuanxuan = {
    // beta 版本相关信息
    betadate: "04月24日",
    betaver: "7.2.beta",
    betadownload: "/dynamic/xuanxuan7.2.beta-104.html",

    // 设置喧喧当前版本
    version: "10.1",

    // 设置喧喧更新日期
    publishDate: "2025.04.25",

    // 首页幻灯片发布日期
    date: "7月11日",

    // 以下只能填写版本号，不可以加英文字母
    ver: "10.2",

    xxcVersion: "10.2",

    xxbVersion: "10.2",

    xxdVersion: "10.2",

    androidVersion: "10.2.0",
    
    version:"10.2.0",

    iosVersion: "10.2.0",

    owtVersion: "1.5",

    // 所有下载按钮指向的位置
    download: "/dynamic/xuanxuan9.1-111.html",

    // 设置喧喧下载地址前缀
    downloadUrl: "/dl/xuanxuan/{ver}/",
    androidDownloadUrl: "/dl/xuanxuan/{ver}/",
    owtDownloadUrl: "/dl/xuanxuan/owt/",
    jitsiDownloadUrl: "https://dl.zentao.net/xuanmeet/xuanmeet-1.0.zip",
    downloadDockerBaidu: "https://pan.baidu.com/s/1Pvz5Yz4fsvS8-VNzKLqPSQ",
    owt_docker_baidu_code: "cgna",

    // 以下内容无需更改
    downloads: {
        windows_setup: "xuanxuan.{xxcVersion}.win64.setup.exe",
        windows_setup_debug: "xuanxuan.{xxcVersion}.debug.win64.setup.exe",
        windows_setup_win32: "xuanxuan.{xxcVersion}.win32.setup.exe",
        windows_7z: "xuanxuan.{xxcVersion}.win64.7z.exe",
        windows_7z_win32: "xuanxuan.{xxcVersion}.win32.7z.exe",
        windows_zip: "xuanxuan.{xxcVersion}.win64.zip",
        windows_zip_win32: "xuanxuan.{xxcVersion}.win32.zip",
        mac_dmg: "xuanxuan.{xxcVersion}.mac.dmg",
        mac_zip: "xuanxuan.{xxcVersion}.mac.zip",
        mac_dmg_debug: "xuanxuan.{xxcVersion}.debug.mac.dmg",
        browser: "xuanxuan.{xxcVersion}.browser.zip",
        linux_deb: "xuanxuan.{xxcVersion}.linux.amd64.deb",
        linux_deb_32: "xuanxuan.{xxcVersion}.linux.i386.deb",
        linux_zip: "xuanxuan.{xxcVersion}.linux64.zip",
        linux_targz: "xuanxuan.{xxcVersion}.linux.x64.tar.gz",
        linux_targz_32: "xuanxuan.{xxcVersion}.linux.ia32.tar.gz",
        linux_rpm: "xuanxuan.{xxcVersion}.linux.x86_64.rpm",
        linux_rpm_32: "xuanxuan.{xxcVersion}.linux.i686.rpm",
        ranzhi_server: "xuanxuan.ranzhi.{xxbVersion}.zip",
        zentao_server: "xuanxuan.zentao.{xxbVersion}.zip",
        source: "xuanxuan.source.{ver}.zip",
        xxd_win32: "xxd.{xxdVersion}.win32.zip",
        xxd_win64: "xxd.{xxdVersion}.win.x64.zip",
        xxd_mac: "xxd.{xxdVersion}.mac.tar.gz",
        xxd_linux32: "xxd.{xxdVersion}.linux.ia32.tar.gz",
        xxd_linux64: "xxd.{xxdVersion}.linux.x64.tar.gz",
        xxb_source: "xxb.{xxbVersion}.zip",
        xxb_source_php53: "xxb.{xxbVersion}.php53.zip",
        xxb_source_php70: "xxb.{xxbVersion}.php70.zip",
        xxb_source_php71: "xxb.{xxbVersion}.php71.zip",
        xxb_source_php72: "xxb.{xxbVersion}.php72.zip",
        xxb_win64_zbox: "xuan.{xxbVersion}.zbox.win.x64.exe",
        xxb_win64: "xxb.{xxbVersion}.win64.exe",
        xxb_win32: "xxb.{xxbVersion}.win32.exe",
        xxb_zbox64: "xuan.{xxbVersion}.zbox.linux.x64.tar.gz",
        xxb_zbox32: "xxb.{xxbVersion}.zbox_32.tar.gz",
        xxb_linux_rpm: "xxb-{xxbVersion}-1.noarch.rpm",
        xxb_linux_deb: "xxb_{xxbVersion}_1_all.deb",
        android: "xuanxuan.android.{androidVersion}.apk",
        owt_docker: "owt.{owtVersion}.docker.tar.xz",
        owt_docker_baidu: "{downloadDockerBaidu}",
        jisti_docker: "{jitsiDownloadUrl}",
        windows_bundle: "xxb.{xxbVersion}.bundle.win64.zip",
        linux_bundle: "xxb.{xxbVersion}.bundle.zbox_64.tar.gz",
    }
};
xuanxuan.downloadUrlOrigin = xuanxuan.downloadUrl;
xuanxuan.downloadUrl = xuanxuan.downloadUrl.format(xuanxuan);
xuanxuan.androidDownloadUrl = xuanxuan.androidDownloadUrl.format(xuanxuan);

var timeNow = new Date().getTime();
for(var downloadType in xuanxuan.downloads) {
    var url = xuanxuan.downloads[downloadType];
    var preUrl = url.indexOf('{xxcVersion}') > -1 ? xuanxuan.downloadUrl.format({version: xuanxuan.xxcVersion}) :
        (url.indexOf('{xxbVersion}') > -1 ? xuanxuan.downloadUrl.format({version: xuanxuan.xxbVersion}) :
        (url.indexOf('{xxdVersion}') > -1 ? xuanxuan.downloadUrl.format({version: xuanxuan.xxdVersion}) :
        (url.indexOf('{androidVersion}') > -1 ? xuanxuan.androidDownloadUrl.format({version: xuanxuan.androidVersion}) : (url.indexOf('{owtVersion}') > -1 ? xuanxuan.owtDownloadUrl : xuanxuan.downloadUrl))));
    xuanxuan.downloads[downloadType] = url.format(xuanxuan);
    var thisDownloadUrl = xuanxuan.downloads[downloadType];
    if (thisDownloadUrl.indexOf('https://') !== 0 && thisDownloadUrl.indexOf('http://')) {
        thisDownloadUrl = preUrl + thisDownloadUrl;
    }
    xuanxuan['download.' + downloadType] = thisDownloadUrl;
    xuanxuan['filename.' + downloadType] = xuanxuan.downloads[downloadType];
};

$(function() {
    $('[data-xuanxuan]').each(function() {
        var $this = $(this);
        var data = $this.data('xuanxuan');
        $.each(data.split(' '), function(idx, dataItem) {
            dataItem = dataItem.split('|');
            var attr = dataItem[0] || 'text';
            var key = dataItem[1];
            var value = xuanxuan[key];
            if(!key || !value) {
                var oldValue = attr === 'text' ? $this.text() : $this.attr(attr);
                if(oldValue) value = oldValue.format(xuanxuan);
            }
            if(attr === 'text') {
                $this.text(value);
            } else {
                $this.attr(attr, value);
            }
        });
    });
    $('.text-xuanxuan').each(function()
    {
        var $this = $(this);
        var format = $this.text();
        $this.text(format.format(xuanxuan));
    });
    $('.link-xuanxuan').each(function()
    {
        var $this = $(this);
        var attrName = $this.is('img') ? 'src' : 'href';
        var format = $this.data(attrName) || $this.attr(attrName);
        if(format.indexOf('/#') === 0) format = format.substr(2);
        else if(format.indexOf('#') === 0) format = format.substr(1);
        $this.attr(attrName, format.format(xuanxuan));
    });
});

if(screen.width > 767){
    $('#words').attr('placeholder','搜一搜');
    $("#searchbar").insertAfter("#navbarWrapper");
    $("#siteNav").insertAfter("#searchbar");
} else {
    $("#siteNav").insertAfter("#siteTitle");
};

$(document).ready(function(){
    if(typeof headerList != 'undefined') return ;
    headerList = true;
    $('#footer #icpInfo').after('<a class="privacy" href="/page/xuan-privacypolicy.html">隐私政策</a>');
    $('.m-user-register .form-horizontal .agreement-form span').after('<span>和《<a href="/page/xuan-privacypolicy.html" target="_blank">隐私政策</a>》</span>');
});

$(document).on('click', '.icon_img_bg', function(){open_floatWindow();});


// 首页点击空白处登录弹框隐藏
$(document).click(function(e) {
    if($(this).children('html').hasClass('m-user-login')) {
        return;
    } else {
        $('#loginModal').hide();
        if(window.qrCodeTimer) clearInterval(window.qrCodeTimer);
        $('#whitePaper').remove();
    }
})
$(document).on('click', '#loginModal, #privacyagreement, #agreement', function(e) {
    e.stopPropagation();
})
function showModalLogin(id, elem,  moreTop, moreLeft, showHeader, style, callback)
{
    var isVisible = document.getElementById(id) && document.getElementById(id).offsetParent;
    if(isVisible) return false;
    if(!style) {
        style = {}
    }

    var modalLoginOptions =
    {
        url     : "/user-loginmodal.html",
        name    : id,
        keyboard: false,
        backdrop: 'static',
        loaded  : function() {
            $('#' + id).addClass('modalLogin');
            if(showHeader == 0) $('#' + id + ' .close').hide();
            if($('html').hasClass('m-user-login')) $('#loginModal').css('height', $('.page-wrapper').height() + 100);
            callback && callback();
        },
        onHide: function(){
            if(window.smsTimer) clearInterval(window.smsTimer);
            if(window.qrCodeTimer) clearInterval(window.qrCodeTimer);
        }
    };
    var myModalTrigger = new $.zui.ModalTrigger(modalLoginOptions);
    myModalTrigger.show();
}
$('.demo-link').click(function(e)
{
    e.preventDefault();
    if (location.pathname == createLink('user', 'login', 'referer=pcDemo') || location.pathname == createLink('user', 'login', 'referer=mobileDemo')) {
        return;
    }
    var demoLink = $(this).attr('href');
    getUserFingerprint().then(visitorID => {
        if (demoLink == v.demoPcUrl) 
        {
          var postFunc = 'pc';
        }
        if (demoLink == v.demoMobileUrl) 
        {
          var postFunc = 'mobile';
        }
        var postLink = `/demo-${postFunc}`;
        $.post(postLink, 
        {
            url: demoLink,
            fingerprint: visitorID,
            referrer: location.href
        }, function(response) 
        {
            if(response.result == 'success')
            {
                if(response.data.open) 
                {
                    sessionStorage.setItem('demoOpen', response.data.open);
                } 
                else 
                {
                    sessionStorage.removeItem('demoOpen');
                }

                if(response.data.locate)
                {
                    sessionStorage.setItem('demoLocate', response.data.locate);
                    $.cookie('noDemoLogin', 0, {path: config.cookiePath});
                }

               if (response.data.target === '_blank') {
                    // 1. 获取原始URL和时间戳
                    const originalUrl = response.data.url;
                    const timestamp = new Date().getTime();
                
                    // 2. 分离URL的hash部分（#及后面的内容）
                    let urlWithoutHash = originalUrl;
                    let hashPart = '';
                    const hashIndex = originalUrl.indexOf('#');
                    if (hashIndex !== -1) {
                        urlWithoutHash = originalUrl.slice(0, hashIndex); // 截取#前面的URL
                        hashPart = originalUrl.slice(hashIndex); // 截取#及后面的hash
                    }
                
                    // 3. 处理URL参数（删除原有v，添加新v）
                    // 兼容相对路径：如果URL是相对路径，拼接当前页面origin
                    const baseUrl = window.location.origin;
                    const urlObj = new URL(urlWithoutHash, baseUrl);
                    urlObj.searchParams.delete('v'); // 移除原有v参数
                    urlObj.searchParams.append('v', timestamp); // 添加新的时间戳v参数
                
                    // 4. 拼接回完整URL（处理后的参数 + 原始hash）
                    const newUrl = urlObj.toString() + hashPart;
                
                    // 5. 打开新窗口
                    window.open(newUrl, '_blank', 'noopener');
                }
                else 
                {
                    window.location.href = response.data.url;
                }
            }
        }, 'json')
    });
});

$('.faq-block .question').click(function()
{
    $(this).siblings('.answer').toggleClass('hide');
    $(this).find('i').toggleClass('rotate');
});

function throttle(func, limit) {
    let inThrottle;
    return function() {
        const args = arguments;
        const context = this;
        if (!inThrottle) {
            func.apply(context, args);
            inThrottle = true;
            setTimeout(() => inThrottle = false, limit);
        }
    }
}

$('#searchbar').click(function(e)
{
    e.stopPropagation();
});

$(document).click(function()
{
    $('#searchbar form').removeClass('active');
    $('#searchbar .search-btn').removeClass('show-form');
});

$('#searchbar .search-btn').click(function(e)
{
    e.stopPropagation();
   $(this).siblings().addClass('active'); 
   $(this).addClass('show-form');
});
