﻿function shouldExcludeBrowser() {
    const userAgent = navigator.userAgent;
    const isAndroid = /Android/i.test(userAgent);
    const isOldWindows = /Windows NT 5/i.test(userAgent);
    const isExcludedBrowser = /baiduboxapp|UCBrowser|Quark|MicroMessenger|MQQBrowser|Android app2|Android app/i.test(userAgent);
    
    return isOldWindows || isExcludedBrowser;
}

if (shouldExcludeBrowser()) {
    document.getElementById('play-button').style.display = 'none';
}

let isPaused = false;
const isIOS = /iPhone|iPad|iPod|mac/i.test(navigator.userAgent);

document.getElementById('play-button').addEventListener('click', function(event) {
    event.preventDefault(); 

    if (isIOS) {
        if (isPaused) {
            window.speechSynthesis.resume();
            isPaused = false;
            this.textContent = '暂停听';
        } else if (window.speechSynthesis.speaking) {
            window.speechSynthesis.pause();
            isPaused = true;
            this.textContent = '继续听';
        } else {
            speak();
        }
    } else {
        speak();
    }
});

// 获取 .zw 内部的文本内容，并过滤掉 <div class="p"> 和 <a> 标签的内容
function getFilteredText() {
    const zwElement = document.querySelector('.zw');
    
    // 使用 DocumentFragment 来临时存储需要保留的内容
    const fragment = document.createDocumentFragment();

    zwElement.childNodes.forEach(node => {
        if (node.nodeType === Node.TEXT_NODE) {
            // 如果是文本节点，直接添加到片段中
            fragment.appendChild(node.cloneNode());
        } else if (node.nodeType === Node.ELEMENT_NODE && node.tagName !== 'DIV' && node.tagName !== 'A') {
            // 如果是元素节点，且不是 <div> 和 <a>，保留内容
            fragment.appendChild(node.cloneNode(true));
        }
    });

    // 创建一个临时的 div 元素用于获取过滤后的文本
    const tempDiv = document.createElement('div');
    tempDiv.appendChild(fragment);

    // 返回过滤后的纯文本内容
    return tempDiv.textContent || tempDiv.innerText || '';
}

function speak() {
    if (window.speechSynthesis.speaking) {
        window.speechSynthesis.cancel();
    }

    const text = getFilteredText(); // 获取过滤后的文本
    const utterance = new SpeechSynthesisUtterance(text);

    utterance.onend = function() {
        isPaused = false;
        document.getElementById('play-button').textContent = '听文章';
    };

    window.speechSynthesis.speak(utterance);
    document.getElementById('play-button').textContent = isIOS ? '暂停听' : '继续听';
}

window.onbeforeunload = function() {
    if (window.speechSynthesis.speaking) {
        window.speechSynthesis.cancel();
    }
};

window.onload = function() {
    loadSettings();
};


function saveSettings() {
    localStorage.setItem('fontSize', document.getElementById("fdzb").style.fontSize);
    localStorage.setItem('lineHeight', document.getElementById("fdzb").style.lineHeight);
    localStorage.setItem('bgColor', document.getElementById("fdzb").style.backgroundColor);
    localStorage.setItem('textColor', document.body.style.color);
}


function loadSettings() {
    var fontSize = localStorage.getItem('fontSize');
    var lineHeight = localStorage.getItem('lineHeight');
    var bgColor = localStorage.getItem('bgColor');
    var textColor = localStorage.getItem('textColor');

    if (fontSize && lineHeight) {
        document.getElementById("fdzb").style.fontSize = fontSize;
        document.getElementById("fdzb").style.lineHeight = lineHeight;
    }

    if (bgColor) {
        document.getElementById("fdzb").style.backgroundColor = bgColor;
        document.body.style.backgroundColor = bgColor; 
    }

    if (textColor) {
        document.body.style.color = textColor;
    }
}


var ct1 = 0;

function fdznet() {
    if (ct1 == 0) {
        document.getElementById("fdzb").style.fontSize = '16pt';
        document.getElementById("fdzb").style.lineHeight = '45px';
        ct1 = 1;
    } else if (ct1 == 2) {
        document.getElementById("fdzb").style.fontSize = '14pt';
        document.getElementById("fdzb").style.lineHeight = '42px';
        ct1 = 0;
    } else if (ct1 == 3) {
        document.getElementById("fdzb").style.fontSize = '12pt';
        document.getElementById("fdzb").style.lineHeight = '40px';
        ct1 = 2;
    } else {
        document.getElementById("fdzb").style.fontSize = '18pt';
        document.getElementById("fdzb").style.lineHeight = '47px';
        ct1 = 3;
    }
    saveSettings(); 
}


var ct = 0;

function fdze() {
    if (ct == 0) {
        document.getElementById("fdzb").style.backgroundColor = '#C3B298';
        document.body.style.backgroundColor = "#C3B298"; 
        document.body.style.color = "#1E1B17";
        ct = 1;
    } else if (ct == 2) {
        document.getElementById("fdzb").style.backgroundColor = '#F8F7F5';
        document.body.style.backgroundColor = "#F8F7F5"; 
        document.body.style.color = "#1E1B17";
        ct = 0;
    } else if (ct == 3) {
        document.getElementById("fdzb").style.backgroundColor = '#D6E6D5';
        document.body.style.backgroundColor = "#D6E6D5"; 
        document.body.style.color = "#1E1B17";
        ct = 2;
    } else if (ct == 4) {
        document.getElementById("fdzb").style.backgroundColor = '#C1BFB1';
        document.body.style.backgroundColor = "#C1BFB1"; 
        document.body.style.color = "#1E1B17";
        ct = 3;
    } else if (ct == 5) {
        document.getElementById("fdzb").style.backgroundColor = '#C4C4C3';
        document.body.style.backgroundColor = "#C4C4C3"; 
        document.body.style.color = "#4C4345";
        ct = 4;
    } else {
        document.getElementById("fdzb").style.backgroundColor = '#191919';
        document.body.style.backgroundColor = "#191919"; 
        document.body.style.color = "#828282";
        ct = 5;
    }
    saveSettings(); 
}


const pageUrl = window.location.href;

    document.addEventListener("DOMContentLoaded", () => {
        const scrollPosition = localStorage.getItem(`scrollPosition_${pageUrl}`);
        if (scrollPosition) {
            window.scrollTo(0, parseInt(scrollPosition, 10));
            showNotificationBar(scrollPosition);
        }
    });

    window.addEventListener("scroll", () => {
        const scrollY = window.scrollY;
        localStorage.setItem(`scrollPosition_${pageUrl}`, scrollY);

        const notificationBar = document.querySelector('.notification-bar');
        if (notificationBar) {
            if (scrollY === 0) {
                document.body.removeChild(notificationBar);
            }
        }
    });

    function showNotificationBar(scrollPosition) {
        const notificationBar = document.createElement('div');
        notificationBar.className = 'notification-bar';
        notificationBar.innerHTML = `上次浏览到这里<button id="continue-btn">继续观看</button><button id="restart-btn">从头开始</button>`;

        document.body.appendChild(notificationBar);

        document.getElementById('continue-btn').addEventListener('click', () => {
            document.body.removeChild(notificationBar);
        });

        document.getElementById('restart-btn').addEventListener('click', () => {
            localStorage.removeItem(`scrollPosition_${pageUrl}`);
            window.scrollTo(0, 0);
            document.body.removeChild(notificationBar);
        });

        if (window.scrollY === 0) {
            document.body.removeChild(notificationBar);
        }
    }

document.addEventListener('DOMContentLoaded', function() {
    var imgElements = document.querySelectorAll('.zw img');
    var maxRetries = 10;
    var retryDelay = 1500;

    imgElements.forEach(function(imgElement) {
        var retryCount = 0;
        imgElement.onerror = function() {
            if (retryCount < maxRetries) {
                retryCount++;
                console.log('Retrying', retryCount, 'for', this.src);
                var self = this;
                setTimeout(function() {
                    self.src = self.src.split('?')[0] + '?rand=' + Math.random();
                }, retryDelay);
            } else {
                console.log('Max retries reached for', this.src);
            }
        };
    });
});


var Default_isFT = 0
var StranIt_Delay = 100
function StranText(txt,toFT,chgTxt)
{
if(txt==""||txt==null)return ""
toFT=toFT==null?BodyIsFt:toFT
if(chgTxt)txt=txt.replace((toFT?"简":"繁"),(toFT?"繁":"简"))
if(toFT){return Traditionalized(txt)}
else {return Simplized(txt)}
}
function fzj(fobj)
{
if(typeof(fobj)=="object"){var obj=fobj.childNodes}
else 
{
   var tmptxt=StranLink_Obj.innerHTML.toString()
   if(tmptxt.indexOf("简")<0)
   {
    BodyIsFt=1
    StranLink_Obj.innerHTML=StranText(tmptxt,0,1)
    document.getElementById("StranLink").title=StranText(document.getElementById("StranLink").title,0,1)
   }
   else
   {
    BodyIsFt=0
    StranLink_Obj.innerHTML=StranText(tmptxt,1,1)
    document.getElementById("StranLink").title=StranText(document.getElementById("StranLink").title,1,1)
   }
   setCookie(JF_cn,BodyIsFt,7)
   var obj=document.body.childNodes
}
for(var i=0;i<obj.length;i++)
{
   var OO=obj.item(i)
   if("||BR|HR|TEXTAREA|OBJECT|".indexOf("|"+OO.tagName+"|")>0||OO==StranLink_Obj)continue;
   if(OO.title!=""&&OO.title!=null)OO.title=StranText(OO.title);
   if(OO.alt!=""&&OO.alt!=null)OO.alt=StranText(OO.alt);
   if(OO.tagName=="INPUT"&&OO.value!=""&&OO.type!="text"&&OO.type!="hidden")OO.value=StranText(OO.value);
   if(OO.nodeType==3){OO.data=StranText(OO.data)}
   else fzj(OO)
}
}
function JTPYStr()
{
return '万与丑专业丛东丝丢两严丧个丬丰临为丽举么义乌乐乔习乡书买乱争于亏云亘亚产亩亲亵亸亿仅从仑仓仪们价众优伙会伛伞伟传伤伥伦伧伪伫体余佣佥侠侣侥侦侧侨侩侪侬俣俦俨俩俪俭债倾偬偻偾偿傥傧储傩儿兑兖党兰关兴兹养兽冁内冈册写军农冢冯冲决况冻净凄凉凌减凑凛几凤凫凭凯击凼凿刍划刘则刚创删别刬刭刽刿剀剂剐剑剥剧劝办务劢动励劲劳势勋勐勚匀匦匮区医华协单卖卢卤卧卫却卺厂厅历厉压厌厍厕厢厣厦厨厩厮县叁参叆叇双发变叙叠叶号叹叽吁后吓吕吗吣吨听启吴呒呓呕呖呗员呙呛呜咏咔咙咛咝咤咴咸哌响哑哒哓哔哕哗哙哜哝哟唛唝唠唡唢唣唤唿啧啬啭啮啰啴啸喷喽喾嗫嗬嗳嘘嘤嘱噜噼嚣嚯团园囱围囵国图圆圣圹场坂坏块坚坛坜坝坞坟坠垄垅垆垒垦垧垩垫垭垯垱垲垴埘埙埚埝埯堑堕塆塬墙壮声壳壶壸处备复够头夸夹夺奁奂奋奖奥妆妇妈妩妪妫姗姜娄娅娆娇娈娱娲娴婳婴婵婶媪嫒嫔嫱嬷孙学孪宁宝实宠审宪宫宽宾寝对寻导寿将尔尘尝尧尴尸尽层屃屉届属屡屦屿岁岂岖岗岘岙岚岛岭岳岽岿峃峄峡峣峤峥峦崂崃崄崭嵘嵚嵛嵝嵴巅巩巯币帅师帏帐帘帜带帧帮帱帻帼幂幞干并幺广庄庆庐庑库应庙庞废庼廪开异弃张弥弪弯弹强归当录彟彦彻径徕御忆忏忧忾怀态怂怃怄怅怆怜总怼怿恋恳恶恸恹恺恻恼恽悦悫悬悭悯惊惧惨惩惫惬惭惮惯愍愠愤愦愿慑慭憷懑懒懔戆戋戏戗战戬户扎扑扦执扩扪扫扬扰抚抛抟抠抡抢护报担拟拢拣拥拦拧拨择挂挚挛挜挝挞挟挠挡挢挣挤挥挦捞损捡换捣据捻掳掴掷掸掺掼揸揽揿搀搁搂搅携摄摅摆摇摈摊撄撑撵撷撸撺擞攒敌敛数斋斓斗斩断无旧时旷旸昙昼昽显晋晒晓晔晕晖暂暧札术朴机杀杂权条来杨杩杰极构枞枢枣枥枧枨枪枫枭柜柠柽栀栅标栈栉栊栋栌栎栏树栖样栾桊桠桡桢档桤桥桦桧桨桩梦梼梾检棂椁椟椠椤椭楼榄榇榈榉槚槛槟槠横樯樱橥橱橹橼檐檩欢欤欧歼殁殇残殒殓殚殡殴毁毂毕毙毡毵氇气氢氩氲汇汉污汤汹沓沟没沣沤沥沦沧沨沩沪沵泞泪泶泷泸泺泻泼泽泾洁洒洼浃浅浆浇浈浉浊测浍济浏浐浑浒浓浔浕涂涌涛涝涞涟涠涡涢涣涤润涧涨涩淀渊渌渍渎渐渑渔渖渗温游湾湿溃溅溆溇滗滚滞滟滠满滢滤滥滦滨滩滪漤潆潇潋潍潜潴澜濑濒灏灭灯灵灾灿炀炉炖炜炝点炼炽烁烂烃烛烟烦烧烨烩烫烬热焕焖焘煅煳煺熘爱爷牍牦牵牺犊犟犭状犷犸犹狈狍狝狞独狭狮狯狰狱狲猃猎猕猡猪猫猬献獭玑玙玚玛玮环现玱玺珉珏珐珑珰珲琎琏琐琼瑶瑷璇璎瓒瓮瓯电画畅畲畴疖疗疟疠疡疬疮疯疱疴痈痉痒痖痨痪痫痴瘅瘆瘗瘘瘪瘫瘾瘿癞癣癫癯皑皱皲盏盐监盖盗盘眍眦眬着睁睐睑瞒瞩矫矶矾矿砀码砖砗砚砜砺砻砾础硁硅硕硖硗硙硚确硷碍碛碜碱碹磙礼祎祢祯祷祸禀禄禅离秃秆种积称秽秾稆税稣稳穑穷窃窍窑窜窝窥窦窭竖竞笃笋笔笕笺笼笾筑筚筛筜筝筹签简箓箦箧箨箩箪箫篑篓篮篱簖籁籴类籼粜粝粤粪粮糁糇紧絷纟纠纡红纣纤纥约级纨纩纪纫纬纭纮纯纰纱纲纳纴纵纶纷纸纹纺纻纼纽纾线绀绁绂练组绅细织终绉绊绋绌绍绎经绐绑绒结绔绕绖绗绘给绚绛络绝绞统绠绡绢绣绤绥绦继绨绩绪绫绬续绮绯绰绱绲绳维绵绶绷绸绹绺绻综绽绾绿缀缁缂缃缄缅缆缇缈缉缊缋缌缍缎缏缐缑缒缓缔缕编缗缘缙缚缛缜缝缞缟缠缡缢缣缤缥缦缧缨缩缪缫缬缭缮缯缰缱缲缳缴缵罂网罗罚罢罴羁羟羡翘翙翚耢耧耸耻聂聋职聍联聩聪肃肠肤肷肾肿胀胁胆胜胧胨胪胫胶脉脍脏脐脑脓脔脚脱脶脸腊腌腘腭腻腼腽腾膑臜舆舣舰舱舻艰艳艹艺节芈芗芜芦苁苇苈苋苌苍苎苏苘苹茎茏茑茔茕茧荆荐荙荚荛荜荞荟荠荡荣荤荥荦荧荨荩荪荫荬荭荮药莅莜莱莲莳莴莶获莸莹莺莼萚萝萤营萦萧萨葱蒇蒉蒋蒌蓝蓟蓠蓣蓥蓦蔷蔹蔺蔼蕲蕴薮藁藓虏虑虚虫虬虮虽虾虿蚀蚁蚂蚕蚝蚬蛊蛎蛏蛮蛰蛱蛲蛳蛴蜕蜗蜡蝇蝈蝉蝎蝼蝾螀螨蟏衅衔补衬衮袄袅袆袜袭袯装裆裈裢裣裤裥褛褴襁襕见观觃规觅视觇览觉觊觋觌觍觎觏觐觑觞触觯詟誉誊讠计订讣认讥讦讧讨让讪讫训议讯记讱讲讳讴讵讶讷许讹论讻讼讽设访诀证诂诃评诅识诇诈诉诊诋诌词诎诏诐译诒诓诔试诖诗诘诙诚诛诜话诞诟诠诡询诣诤该详诧诨诩诪诫诬语诮误诰诱诲诳说诵诶请诸诹诺读诼诽课诿谀谁谂调谄谅谆谇谈谊谋谌谍谎谏谐谑谒谓谔谕谖谗谘谙谚谛谜谝谞谟谠谡谢谣谤谥谦谧谨谩谪谫谬谭谮谯谰谱谲谳谴谵谶谷豮贝贞负贠贡财责贤败账货质贩贪贫贬购贮贯贰贱贲贳贴贵贶贷贸费贺贻贼贽贾贿赀赁赂赃资赅赆赇赈赉赊赋赌赍赎赏赐赑赒赓赔赕赖赗赘赙赚赛赜赝赞赟赠赡赢赣赪赵赶趋趱趸跃跄跖跞践跶跷跸跹跻踊踌踪踬踯蹑蹒蹰蹿躏躜躯车轧轨轩轪轫转轭轮软轰轱轲轳轴轵轶轷轸轹轺轻轼载轾轿辀辁辂较辄辅辆辇辈辉辊辋辌辍辎辏辐辑辒输辔辕辖辗辘辙辚辞辩辫边辽达迁过迈运还这进远违连迟迩迳迹适选逊递逦逻遗遥邓邝邬邮邹邺邻郁郄郏郐郑郓郦郧郸酝酦酱酽酾酿释里鉅鉴銮錾钆钇针钉钊钋钌钍钎钏钐钑钒钓钔钕钖钗钘钙钚钛钝钞钟钠钡钢钣钤钥钦钧钨钩钪钫钬钭钮钯钰钱钲钳钴钵钶钷钸钹钺钻钼钽钾钿铀铁铂铃铄铅铆铈铉铊铋铌铍铎铏铐铑铒铓铔铕铖铗铘铙铚铛铜铝铞铟铠铡铢铣铤铥铦铧铨铩铪铫铬铭铮铯铰铱铲铳铴铵银铷铸铹铺铻铼铽链铿销锁锂锃锄锅锆锇锈锉锊锋锌锍锎锏锐锑锒锓锔锕锖锗锘错锚锛锜锝锞锟锠锡锢锣锤锥锦锧锨锩锪锫锬锭键锯锰锱锲锳锴锵锶锷锸锹锺锻锼锽锾锿镀镁镂镃镄镅镆镇镈镉镊镋镌镍镎镏镐镑镒镓镔镕镖镗镘镙镚镛镜镝镞镟镠镡镢镣镤镥镦镧镨镩镪镫镬镭镮镯镰镱镲镳镴镵镶长门闩闪闫闬闭问闯闰闱闲闳间闵闶闷闸闹闺闻闼闽闾闿阀阁阂阃阄阅阆阇阈阉阊阋阌阍阎阏阐阑阒阓阔阕阖阗阘阙阚阛队阳阴阵阶际陆陇陈陉陕陧陨险随隐隶隽难雏雠雳雾霁霉霭靓静靥鞑鞒鞯鞴韦韧韨韩韪韫韬韵页顶顷顸项顺须顼顽顾顿颀颁颂颃预颅领颇颈颉颊颋颌颍颎颏颐频颒颓颔颕颖颗题颙颚颛颜额颞颟颠颡颢颣颤颥颦颧风飏飐飑飒飓飔飕飖飗飘飙飚飞飨餍饤饥饦饧饨饩饪饫饬饭饮饯饰饱饲饳饴饵饶饷饸饹饺饻饼饽饾饿馀馁馂馃馄馅馆馇馈馉馊馋馌馍馎馏馐馑馒馓馔馕马驭驮驯驰驱驲驳驴驵驶驷驸驹驺驻驼驽驾驿骀骁骂骃骄骅骆骇骈骉骊骋验骍骎骏骐骑骒骓骔骕骖骗骘骙骚骛骜骝骞骟骠骡骢骣骤骥骦骧髅髋髌鬓魇魉鱼鱽鱾鱿鲀鲁鲂鲄鲅鲆鲇鲈鲉鲊鲋鲌鲍鲎鲏鲐鲑鲒鲓鲔鲕鲖鲗鲘鲙鲚鲛鲜鲝鲞鲟鲠鲡鲢鲣鲤鲥鲦鲧鲨鲩鲪鲫鲬鲭鲮鲯鲰鲱鲲鲳鲴鲵鲶鲷鲸鲹鲺鲻鲼鲽鲾鲿鳀鳁鳂鳃鳄鳅鳆鳇鳈鳉鳊鳋鳌鳍鳎鳏鳐鳑鳒鳓鳔鳕鳖鳗鳘鳙鳛鳜鳝鳞鳟鳠鳡鳢鳣鸟鸠鸡鸢鸣鸤鸥鸦鸧鸨鸩鸪鸫鸬鸭鸮鸯鸰鸱鸲鸳鸴鸵鸶鸷鸸鸹鸺鸻鸼鸽鸾鸿鹀鹁鹂鹃鹄鹅鹆鹇鹈鹉鹊鹋鹌鹍鹎鹏鹐鹑鹒鹓鹔鹕鹖鹗鹘鹙鹚鹛鹜鹝鹞鹟鹠鹡鹢鹣鹤鹥鹦鹧鹨鹩鹪鹫鹬鹭鹯鹰鹱鹲鹳鹴鹾麦麸黄黉黡黩黪黾鼋鼌鼍鼗鼹齄齐齑齿龀龁龂龃龄龅龆龇龈龉龊龋龌龙龚龛龟';
}
function FTPYStr()
{
return '萬與丑專業叢東絲丟兩嚴喪個丬豐臨為麗舉麼義烏樂喬習鄉書買亂爭於虧雲亙亞產畝親褻嚲億僅從侖倉儀們價眾優夥會傴傘偉傳傷倀倫傖偽佇體餘佣僉俠侶僥偵側僑儈儕儂俁儔儼倆儷儉債傾傯僂僨償儻儐儲儺兒兌兗黨蘭關興茲養獸囅內岡冊寫軍農冢馮衝決況凍淨淒涼凌減湊凜幾鳳鳧憑凱擊氹鑿芻劃劉則剛創刪別剗剄劊劌剴劑剮劍剝劇勸辦務勱動勵勁勞勢勳勐勩勻匭匱區醫華協單賣盧鹵臥衛卻巹廠廳歷厲壓厭厙廁廂厴廈廚廄廝縣叁參靉靆雙發變敘疊葉號嘆嘰吁後嚇呂嗎唚噸聽啟吳嘸囈嘔嚦唄員咼嗆嗚詠咔嚨嚀噝吒咴咸哌響啞噠嘵嗶噦嘩噲嚌噥喲嘜嗊嘮啢嗩唣喚唿嘖嗇囀嚙囉嘽嘯噴嘍嚳囁嗬噯噓嚶囑嚕劈囂嚯團園囪圍圇國圖圓聖壙場阪壞塊堅壇壢壩塢墳墜壟壟壚壘墾垧堊墊埡墶壋塏堖塒塤堝埝埯塹墮壪塬牆壯聲殼壺壼處備復夠頭誇夾奪奩奐奮獎奧妝婦媽嫵嫗媯姍姜婁婭嬈嬌孌娛媧嫻嫿嬰嬋嬸媼嬡嬪嬙嬤孫學孿寧寶實寵審憲宮寬賓寢對尋導壽將爾塵嘗堯尷屍盡層屭屜屆屬屢屨嶼歲豈嶇崗峴嶴嵐島嶺岳崬巋嶨嶧峽嶢嶠崢巒嶗崍嶮嶄嶸嶔嵛嶁嵴巔鞏巰幣帥師幃帳簾幟帶幀幫幬幘幗冪幞幹並幺廣莊慶廬廡庫應廟龐廢廎廩開異棄張彌弳彎彈強歸當錄彠彥徹徑徠御憶懺憂愾懷態慫憮慪悵愴憐總懟懌戀懇惡慟懨愷惻惱惲悅愨懸慳憫驚懼慘懲憊愜慚憚慣愍慍憤憒願懾憖憷懣懶懍戇戔戲戧戰戩戶紮撲扦執擴捫掃揚擾撫拋摶摳掄搶護報擔擬攏揀擁攔擰撥擇掛摯攣掗撾撻挾撓擋撟掙擠揮撏撈損撿換搗據捻擄摑擲撣摻摜揸攬撳攙擱摟攪攜攝攄擺搖擯攤攖撐攆擷擼攛擻攢敵斂數齋斕斗斬斷無舊時曠暘曇晝曨顯晉曬曉曄暈暉暫曖札術朴機殺雜權條來楊榪傑極構樅樞棗櫪梘棖槍楓梟櫃檸檉梔柵標棧櫛櫳棟櫨櫟欄樹棲樣欒桊椏橈楨檔榿橋樺檜槳樁夢檮棶檢櫺槨櫝槧欏橢樓欖櫬櫚櫸檟檻檳櫧橫檣櫻櫫櫥櫓櫞簷檁歡歟歐殲歿殤殘殞殮殫殯毆毀轂畢斃氈毿氌氣氫氬氳匯漢污湯洶沓溝沒灃漚瀝淪滄渢溈滬濔濘淚澩瀧瀘濼瀉潑澤涇潔灑窪浹淺漿澆湞溮濁測澮濟瀏滻渾滸濃潯濜塗湧濤澇淶漣潿渦溳渙滌潤澗漲澀淀淵淥漬瀆漸澠漁瀋滲溫游灣濕潰濺漵漊潷滾滯灩灄滿瀅濾濫灤濱灘澦漤瀠瀟瀲濰潛瀦瀾瀨瀕灝滅燈靈災燦煬爐燉煒熗點煉熾爍爛烴燭煙煩燒燁燴燙燼熱煥燜燾煅煳煺熘愛爺牘牦牽犧犢犟犭狀獷獁猶狽狍獮獰獨狹獅獪猙獄猻獫獵獼玀豬貓蝟獻獺璣璵瑒瑪瑋環現瑲璽瑉玨琺瓏璫琿璡璉瑣瓊瑤璦璇瓔瓚甕甌電畫暢畲疇癤療瘧癘瘍癧瘡瘋疱疴癰痙癢瘂癆瘓癇癡癉瘮瘞瘻癟癱癮癭癩癬癲臞皚皺皸盞鹽監蓋盜盤瞘眥矓著睜睞瞼瞞矚矯磯礬礦碭碼磚硨硯碸礪礱礫礎硜矽碩硤磽磑礄確硷礙磧磣鹼碹磙禮禕禰禎禱禍稟祿禪離禿稈種積稱穢穠稆稅穌穩穡窮竊竅窯竄窩窺竇窶豎競篤筍筆筧箋籠籩築篳篩簹箏籌簽簡籙簀篋籜籮簞簫簣簍籃籬籪籟糴類秈糶糲粵糞糧糝糇緊縶纟糾紆紅紂纖紇約級紈纊紀紉緯紜紘純紕紗綱納紝縱綸紛紙紋紡紵紖紐紓線紺紲紱練組紳細織終縐絆紼絀紹繹經紿綁絨結絝繞絰絎繪給絢絳絡絕絞統綆綃絹繡綌綏絛繼綈績緒綾緓續綺緋綽緔緄繩維綿綬繃綢綯綹綣綜綻綰綠綴緇緙緗緘緬纜緹緲緝縕繢緦綞緞緶線緱縋緩締縷編緡緣縉縛縟縝縫縗縞纏縭縊縑繽縹縵縲纓縮繆繅纈繚繕繒韁繾繰繯繳纘罌網羅罰罷羆羈羥羨翹翽翬耮耬聳恥聶聾職聹聯聵聰肅腸膚肷腎腫脹脅膽勝朧腖臚脛膠脈膾髒臍腦膿臠腳脫腡臉臘腌膕腭膩腼膃騰臏臢輿艤艦艙艫艱艷艹藝節羋薌蕪蘆蓯葦藶莧萇蒼苧蘇苘蘋莖蘢蔦塋煢繭荊薦薘莢蕘蓽蕎薈薺蕩榮葷滎犖熒蕁藎蓀蔭蕒葒葤藥蒞莜萊蓮蒔萵薟獲蕕瑩鶯蒓蘀蘿螢營縈蕭薩蔥蕆蕢蔣蔞藍薊蘺蕷鎣驀薔蘞藺藹蘄蘊藪藁蘚虜慮虛蟲虯蟣雖蝦蠆蝕蟻螞蠶蠔蜆蠱蠣蟶蠻蟄蛺蟯螄蠐蛻蝸蠟蠅蟈蟬蠍螻蠑螿蟎蠨釁銜補襯袞襖裊褘襪襲襏裝襠褌褳襝褲襉褸襤襁襴見觀覎規覓視覘覽覺覬覡覿覥覦覯覲覷觴觸觶讋譽謄訁計訂訃認譏訐訌討讓訕訖訓議訊記訒講諱謳詎訝訥許訛論訩訟諷設訪訣證詁訶評詛識詗詐訴診詆謅詞詘詔詖譯詒誆誄試詿詩詰詼誠誅詵話誕詬詮詭詢詣諍該詳詫諢詡譸誡誣語誚誤誥誘誨誑說誦誒請諸諏諾讀諑誹課諉諛誰諗調諂諒諄誶談誼謀諶諜謊諫諧謔謁謂諤諭諼讒諮諳諺諦謎諞諝謨讜謖謝謠謗謚謙謐謹謾謫譾謬譚譖譙讕譜譎讞譴譫讖谷豶貝貞負貟貢財責賢敗賬貨質販貪貧貶購貯貫貳賤賁貰貼貴貺貸貿費賀貽賊贄賈賄貲賃賂贓資賅贐賕賑賚賒賦賭齎贖賞賜贔賙賡賠賧賴賵贅賻賺賽賾贗讚贇贈贍贏贛赬趙趕趨趲躉躍蹌跖躒踐躂蹺蹕躚躋踴躊蹤躓躑躡蹣躕躥躪躦軀車軋軌軒軑軔轉軛輪軟轟軲軻轤軸軹軼軤軫轢軺輕軾載輊轎輈輇輅較輒輔輛輦輩輝輥輞輬輟輜輳輻輯轀輸轡轅轄輾轆轍轔辭辯辮邊遼達遷過邁運還這進遠違連遲邇逕跡適選遜遞邐邏遺遙鄧鄺鄔郵鄒鄴鄰郁郤郟鄶鄭鄆酈鄖鄲醞醱醬釅釃釀釋裡鉅鑒鑾鏨釓釔針釘釗釙釕釷釺釧釤鈒釩釣鍆釹鍚釵鈃鈣鈈鈦鈍鈔鍾鈉鋇鋼鈑鈐鑰欽鈞鎢鉤鈧鈁鈥鈄鈕鈀鈺錢鉦鉗鈷缽鈳鉕鈽鈸鉞鑽鉬鉭鉀鈿鈾鐵鉑鈴鑠鉛鉚鈰鉉鉈鉍鈮鈹鐸鉶銬銠鉺鋩錏銪鋮鋏鋣鐃銍鐺銅鋁銱銦鎧鍘銖銑鋌銩銛鏵銓鎩鉿銚鉻銘錚銫鉸銥鏟銃鐋銨銀銣鑄鐒鋪鋙錸鋱鏈鏗銷鎖鋰鋥鋤鍋鋯鋨鏽銼鋝鋒鋅鋶鐦鐧銳銻鋃鋟鋦錒錆鍺鍩錯錨錛錡鍀錁錕錩錫錮鑼錘錐錦鑕鍁錈鍃錇錟錠鍵鋸錳錙鍥鍈鍇鏘鍶鍔鍤鍬鍾鍛鎪鍠鍰鎄鍍鎂鏤鎡鐨鎇鏌鎮鎛鎘鑷钂鐫鎳鎿鎦鎬鎊鎰鎵鑌鎔鏢鏜鏝鏍鏰鏞鏡鏑鏃鏇鏐鐔鐝鐐鏷鑥鐓鑭鐠鑹鏹鐙鑊鐳鐶鐲鐮鐿鑔鑣鑞鑱鑲長門閂閃閆閈閉問闖閏闈閑閎間閔閌悶閘鬧閨聞闥閩閭闓閥閣閡閫鬮閱閬闍閾閹閶鬩閿閽閻閼闡闌闃闠闊闋闔闐闒闕闞闤隊陽陰陣階際陸隴陳陘陝隉隕險隨隱隸雋難雛讎靂霧霽霉靄靚靜靨韃鞽韉鞴韋韌韍韓韙韞韜韻頁頂頃頇項順須頊頑顧頓頎頒頌頏預顱領頗頸頡頰頲頜潁熲頦頤頻頮頹頷頴穎顆題顒顎顓顏額顳顢顛顙顥纇顫顬顰顴風颺颭颮颯颶颸颼颻飀飄飆飈飛饗饜飣饑飥餳飩餼飪飫飭飯飲餞飾飽飼飿飴餌饒餉餄餎餃餏餅餑餖餓餘餒餕餜餛餡館餷饋餶餿饞饁饃餺餾饈饉饅饊饌饢馬馭馱馴馳驅馹駁驢駔駛駟駙駒騶駐駝駑駕驛駘驍罵駰驕驊駱駭駢驫驪騁驗騂駸駿騏騎騍騅骔驌驂騙騭騤騷騖驁騮騫騸驃騾驄驏驟驥驦驤髏髖髕鬢魘魎魚魛魢魷魨魯魴魺鮁鮃鯰鱸鮋鮓鮒鮊鮑鱟鮍鮐鮭鮚鮳鮪鮞鮦鰂鮜鱠鱭鮫鮮鮺鯗鱘鯁鱺鰱鰹鯉鰣鰷鯀鯊鯇鮶鯽鯒鯖鯪鯕鯫鯡鯤鯧鯝鯢鯰鯛鯨鰺鯴鯔鱝鰈鰏鱨鯷鰮鰃鰓鱷鰍鰒鰉鰁鱂鯿鰠鰲鰭鰨鰥鰩鰟鰜鰳鰾鱈鱉鰻鰵鱅鰼鱖鱔鱗鱒鱯鱤鱧鱣鳥鳩雞鳶鳴鳲鷗鴉鶬鴇鴆鴣鶇鸕鴨鴞鴦鴒鴟鴝鴛鷽鴕鷥鷙鴯鴰鵂鴴鵃鴿鸞鴻鵐鵓鸝鵑鵠鵝鵒鷳鵜鵡鵲鶓鵪鵾鵯鵬鵮鶉鶊鵷鷫鶘鶡鶚鶻鶖鷀鶥鶩鷊鷂鶲鶹鶺鷁鶼鶴鷖鸚鷓鷚鷯鷦鷲鷸鷺鸇鷹鸌鸏鸛鸘鹺麥麩黃黌黶黷黲黽黿鼂鼉鼗鼴齄齊齏齒齔齕齗齟齡齙齠齜齦齬齪齲齷龍龔龕龜';
}
function Traditionalized(cc){
var str='',ss=JTPYStr(),tt=FTPYStr();
for(var i=0;i<cc.length;i++)
{
   if(cc.charCodeAt(i)>10000&&ss.indexOf(cc.charAt(i))!=-1)str+=tt.charAt(ss.indexOf(cc.charAt(i)));
   else str+=cc.charAt(i);
}
return str;
}
function Simplized(cc){
var str='',ss=JTPYStr(),tt=FTPYStr();
for(var i=0;i<cc.length;i++)
{
   if(cc.charCodeAt(i)>10000&&tt.indexOf(cc.charAt(i))!=-1)str+=ss.charAt(tt.indexOf(cc.charAt(i)));
   else str+=cc.charAt(i);
}
return str;
}

function setCookie(name, value)
{
var argv = setCookie.arguments;
var argc = setCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
if(expires!=null)
{
   var LargeExpDate = new Date ();
   LargeExpDate.setTime(LargeExpDate.getTime() + (expires*1000*3600*24));
}
document.cookie = name + "=" + escape (value)+((expires == null) ? "" : ("; expires=" +LargeExpDate.toGMTString()));
}

function getCookie(Name)
{
var search = Name + "="
if(document.cookie.length > 0) 
{
   offset = document.cookie.indexOf(search)
   if(offset != -1) 
   {
    offset += search.length
    end = document.cookie.indexOf(";", offset)
    if(end == -1) end = document.cookie.length
    return unescape(document.cookie.substring(offset, end))
   }
else return ""
   }
}

var StranLink_Obj=document.getElementById("StranLink")
if (StranLink_Obj)
{
var JF_cn="ft"+self.location.hostname.toString().replace(/\./g,"")
var BodyIsFt=getCookie(JF_cn)
if(BodyIsFt!="1")BodyIsFt=Default_isFT
with(StranLink_Obj)
{
   if(typeof(document.all)!="object")
   {
    href="javascript:fzj()"
   }
   else
   {
    href="#";
    onclick= new Function("fzj();return false")
   }
   title=StranText("切换到简体中文",1,1)
   innerHTML=StranText(innerHTML,1,1)
}
if(BodyIsFt=="1"){setTimeout("fzj()",StranIt_Delay)}
}


 var audio = document.getElementById('audio-player');
    var playButton = document.querySelector('.play-pause');
    var speedButton = document.querySelector('.speed-toggle');
    var loopButton = document.querySelector('.loop-toggle');
    var progressBar = document.querySelector('.progress-bar');
    var timeDisplay = document.querySelector('.time-display');
    var playlistItems = document.querySelectorAll('.playlist-item');
    var showButton = document.getElementById('show-button');
    var hideButton = document.getElementById('hide-button');
    var audioModule = document.querySelector('.audio-module');

    
    var speeds = [0.8, 1, 1.2, 1.5, 1.7, 2];
    var currentSpeedIndex = 1; 

    
    var playlist = Array.from(playlistItems);
    var currentTrackIndex = -1; 
    var isLooping = false; 

    
    showButton.addEventListener('click', function() {
        audioModule.style.display = 'block';
        showButton.style.display = 'none';
        hideButton.style.display = 'block';
    });

    hideButton.addEventListener('click', function() {
        audioModule.style.display = 'none';
        showButton.style.display = 'block';
        hideButton.style.display = 'none';
    });

    
    playButton.addEventListener('click', function() {
        if (audio.paused) {
            audio.play();
            this.textContent = '暂停';
        } else {
            audio.pause();
            this.textContent = '播放';
        }
    });

    
    speedButton.addEventListener('click', function() {
        currentSpeedIndex = (currentSpeedIndex + 1) % speeds.length;
        var nextSpeed = speeds[currentSpeedIndex];
        audio.playbackRate = nextSpeed;
        this.textContent = '倍速: ' + nextSpeed + 'x';
    });

    
    loopButton.addEventListener('click', function() {
        isLooping = !isLooping;
        this.textContent = isLooping ? '单曲循环' : '顺序播放';
    });

    
    audio.addEventListener('timeupdate', function() {
        progressBar.value = (audio.currentTime / audio.duration) * 100;
        timeDisplay.textContent = formatTime(audio.currentTime) + ' / ' + formatTime(audio.duration);
    });

    progressBar.addEventListener('input', function() {
        audio.currentTime = (audio.duration / 100) * this.value;
    });

    
    playlistItems.forEach(function(item, index) {
        item.addEventListener('click', function() {
            playTrack(index);
        });
    });

    
    audio.addEventListener('ended', function() {
        if (isLooping) {
            playTrack(currentTrackIndex); 
        } else {
            playNextTrack(); 
        }
    });

    function playTrack(index) {
        currentTrackIndex = index;
        var src = playlist[index].getAttribute('data-src');
        audio.src = src;
        audio.play();
        playButton.textContent = '暂停';
        updatePlaylistDisplay();
    }

    function playNextTrack() {
        var nextIndex = currentTrackIndex + 1;
        if (nextIndex >= playlist.length) {
            nextIndex = 0; 
        }
        playTrack(nextIndex);
    }

    function updatePlaylistDisplay() {
        playlistItems.forEach(function(item, index) {
            if (index === currentTrackIndex) {
                item.style.backgroundColor = '#ccc'; // 背景色
                item.style.color = '#000'; // 
            } else {
                item.style.backgroundColor = '#e1e1e1'; // 非当前背景色
                item.style.color = '#000'; // 
            }
        });
    }

    function formatTime(seconds) {
        var minutes = Math.floor(seconds / 60);
        var secs = Math.floor(seconds % 60);
        return minutes + ':' + (secs < 10 ? '0' : '') + secs;
    }