'},addTorrentsToServer:function(a,b,c,d){var f=b-a.length,e=a.shift();if(e){this.showStatus(this.lang.system.status.queue+(f+1)+"/"+b+" "+e,0);transmission.addTorrentFromUrl(e,d,c,function(){system.addTorrentsToServer(a,
-b,c,d)})}else{this.showStatus(this.lang.system.status.queuefinish);this.getServerStatus()}},changeSelectedTorrentStatus:function(a,b,c){var d=this.control.torrentlist.datagrid("getChecked"),f=[];a||(a="start");for(var e in d)f.push(d[e].id);c||(c="torrent-"+a);if(f.length>0){if(b){var g=b.linkbutton("options").iconCls;b.linkbutton({disabled:true,iconCls:"icon-loading"})}transmission.exec({method:c,arguments:{ids:f}},function(){b&&b.linkbutton({iconCls:g});system.control.torrentlist.datagrid("uncheckAll");
-system.reloadTorrentBaseInfos()})}},getTorrentMagnetLink:function(a){var b=this.control.torrentlist.datagrid("getChecked"),c=[],d;for(d in b)c.push(b[d].id);transmission.torrents.getMagnetLink(c,a)},searchTorrents:function(a){if(a!=""){var b=transmission.torrents.search(a);if(b==null||b.length==0)this.removeTreeNode("search-result");else{var c=this.panel.left.tree("find","search-result");a=this.lang.tree["search-result"]+" : "+a+" ("+b.length+")";if(c==null){this.appendTreeNode("torrent-all",[{id:"search-result",
-text:a,iconCls:"iconfont tr-icon-search"}]);c=this.panel.left.tree("find","search-result")}else this.panel.left.tree("update",{target:c.target,text:a});this.panel.left.tree("select",c.target)}}},getTorrentInfos:function(a){if(transmission.torrents.all[a])if(!transmission.torrents.all[a].infoIsLoading){if(this.currentTorrentId>0&&transmission.torrents.all[this.currentTorrentId])if(transmission.torrents.all[this.currentTorrentId].infoIsLoading)return;this.currentTorrentId=a;if(!this.panel.attribute.panel("options").collapsed){var b=
-transmission.torrents.all[a];b.infoIsLoading=true;var c="fileStats,trackerStats,peers,leftUntilDone,status,rateDownload,rateUpload,uploadedEver,uploadRatio,error,errorString";b.moreInfosTag||(c+=",files,trackers,comment,dateCreated,creator,downloadDir");transmission.torrents.getMoreInfos(c,a,function(d){b.infoIsLoading=false;if(d!=null){jQuery.extend(b,d[0]);if(system.currentTorrentId==0||system.currentTorrentId!=a)system.clearTorrentAttribute();else{b.completeSize=b.totalSize-b.leftUntilDone;b.moreInfosTag=
-true;system.fillTorrentBaseInfos(b);system.fillTorrentFileList(b);system.fillTorrentServerList(b);system.fillTorrentPeersList(b);system.fillTorrentConfig(b);transmission.torrents.all[a]=b;transmission.torrents.datas[a]=b}}})}}},clearTorrentAttribute:function(){system.panel.attribute.find("#torrent-files-table").datagrid("loadData",[]);system.panel.attribute.find("#torrent-servers-table").datagrid("loadData",[]);system.panel.attribute.find("#torrent-peers-table").datagrid("loadData",[]);system.panel.attribute.find("span[id*='torrent-attribute-value']").html("")},
-updateCurrentPageDatas:function(a,b,c){var d=c.datagrid("getRows"),f=c.datagrid("options"),e=null;if(f.sortName){e=f.sortName;b=b.sort(arrayObjectSort(e,f.sortOrder))}if(d.length==0||b.length!=c.datagrid("getData").total)c.datagrid({loadFilter:pagerFilter,pageNumber:1,sortName:e,sortOrder:f.sortOrder}).datagrid("loadData",b);else{c.datagrid("getData").originalRows=b;e=(f.pageNumber-1)*parseInt(f.pageSize);f=e+parseInt(f.pageSize);b=b.slice(e,f);f={};for(var g in b){e=b[g];f[e[a]]=e}for(g=d.length-
-1;g>=0;g--){e=d[g];(b=f[e[a]])?c.datagrid("updateRow",{index:g,row:b}):c.datagrid("deleteRow",g)}}},fillTorrentBaseInfos:function(a){$.each(a,function(b,c){switch(b){case "rateDownload":case "rateUpload":c=formatSize(c,true,"speed");break;case "totalSize":case "uploadedEver":case "leftUntilDone":case "completeSize":c=formatSize(c);break;case "addedDate":case "dateCreated":case "doneDate":c=formatLongTime(c);break;case "status":c=system.lang.torrent["status-text"][c];break;case "error":c==0?system.panel.attribute.find("#torrent-attribute-tr-error").hide():
-system.panel.attribute.find("#torrent-attribute-tr-error").show();break;case "remainingTime":c=c>=31536E8?"∞":getTotalTime(c);break;case "comment":c=system.replaceURI(c)}system.panel.attribute.find("#torrent-attribute-value-"+b).html(c)})},fillTorrentFileList:function(a){var b=a.files,c=a.fileStats,d=[],f=a.name.length+1,e;for(e in b){var g=b[e],h=c[e],i=parseFloat(h.bytesCompleted/g.length*100).toFixed(2);d.push({name:g.name==a.name?g.name:g.name.substr(f),index:e,bytesCompleted:h.bytesCompleted,
-percentDone:system.getTorrentProgressBar(i,transmission._status.download),length:g.length,wanted:system.lang.torrent.attribute.status[h.wanted],priority:''+system.lang.torrent.attribute.priority[h.priority]+""})}this.updateCurrentPageDatas("index",d,system.panel.attribute.find("#torrent-files-table"))},fillTorrentServerList:function(a){var b=a.trackerStats,c=[],d;for(d in b){var f=b[d],e={},g;for(g in f)switch(g){case "lastAnnounceTime":case "nextAnnounceTime":e[g]=
-formatLongTime(f[g]);break;case "lastAnnounceSucceeded":case "lastAnnounceTimedOut":e[g]=system.lang.torrent.attribute.status[f[g]];break;default:e[g]=f[g]}c.push(e)}transmission.torrents.addTracker(a);this.updateCurrentPageDatas("id",c,system.panel.attribute.find("#torrent-servers-table"))},fillTorrentPeersList:function(a){a=a.peers;var b=[],c;for(c in a){var d=a[c],f={},e;for(e in d)f[e]=d[e];d=parseFloat(d.progress*100).toFixed(2);f.progress=system.getTorrentProgressBar(d,transmission._status.download);
-b.push(f)}this.updateCurrentPageDatas("address",b,system.panel.attribute.find("#torrent-peers-table"))},fillTorrentConfig:function(a){system.panel.attribute.find("#torrent-attribute-tabs").data("selectedIndex")==4&&transmission.torrents.getConfig(a.id,function(b){if(b!=null){jQuery.extend(transmission.torrents.all[system.currentTorrentId],b[0]);system.currentTorrentId!=0&&$.each(b[0],function(c,d){var f=false,e=false,g=false;switch(c){case "seedIdleMode":case "seedRatioMode":if(d==0){e=false;f=true}g=
-true;case "downloadLimited":case "uploadLimited":if(d==true||d==1)e=true;system.panel.attribute.find("input[enabledof='"+c+"']").prop("disabled",!e);g&&system.panel.attribute.find("#"+c).prop("indeterminate",f).data("_tag",d);system.panel.attribute.find("#"+c).prop("checked",e);break;default:system.panel.attribute.find("#"+c).val(d);system.panel.attribute.find("#"+c).numberspinner("setValue",d)}})}})},setFieldFormat:function(a){if(a.formatter)switch(a.formatter){case "size":a.formatter=function(b){return formatSize(b)};
-break;case "speed":a.formatter=function(b){return formatSize(b,true,"speed")};break;case "longtime":a.formatter=function(b){return formatLongTime(b)};break;case "progress":a.formatter=function(b,c){var d=parseFloat(b*100).toFixed(2);return system.getTorrentProgressBar(d,transmission.torrents.all[c.id])};break;case "_usename_":switch(a.field){case "name":a.formatter=function(b,c){return system.getTorrentNameBar(transmission.torrents.all[c.id])}}break;case "ratio":a.formatter=function(b){var c="";if(parseFloat(b)<
-1)c="text-status-warning";return''+b+""};break;case "remainingTime":a.formatter=function(b){if(b>=31536E8)return"∞";return getTotalTime(b)};break;case "labels":a.formatter=function(b,c){return system.formetTorrentLabels(b,c.hashString)};break;case "color":a.formatter=function(b){return $("").html(b).css({"background-color":b,color:getGrayLevel(b)>0.5?"#000":"#fff"}).get(0).outerHTML}}},reloadData:function(){if(this.popoverCount>0)setTimeout(function(){system.reloadData()},
-2E3);else{this.reloadSession();this.reloading=false;this.getServerStatus();this.reloading=false;this.reloadTorrentBaseInfos()}},loadFolderList:function(a){this.removeTreeNode("folders-loading");for(var b in a){var c=a[b];c&&system.removeTreeNode(c.nodeid)}transmission.downloadDirs.length!=0&&timedChunk(transmission.downloadDirs,this.appendFolder,this,10,function(){navigator.userAgent.indexOf("Firefox")>0&&system.panel.left.find("span.nav-total-size").css({"margin-top":"-19px"});system.initUIStatus()})},
-appendFolder:function(a){if(a){var b="folders";a=a.replace(/\\/g,"/").split("/");var c="folders-",d="",f;for(f in a){var e=a[f];if(e!=""){d+=e;var g=this.B64.encode(e);c+=g.replace(/[+|\/|=]/g,"0");g=this.panel.left.tree("find",c);var h=transmission.torrents.folders[c];if(h){e=e+this.showNodeMoreInfos(h.count,h.size);if(g)this.updateTreeNodeText(c,e);else{this.appendTreeNode(b,[{id:c,path:d,text:e,iconCls:"iconfont tr-icon-file"}]);if(b!="folders"){g=this.panel.left.tree("find",b);this.panel.left.tree("collapse",
-g.target)}}b=c}else{this.debug("appendFolder:key",c);this.debug("appendFolder:name",e);this.debug("appendFolder:node",g)}}}}},replaceURI:function(a){return a.replace(/(http|https|ftp):\/\/([^/:]+)(:\d*)?([^# ]*)/ig,function(b){return''+b+""})},readConfig:function(){this.readUserConfig();var a=this.getStorageData(this.configHead+".system");if(a)this.config=$.extend(true,this.config,JSON.parse(a));for(var b in this.storageKeys.dictionary)this.dictionary[b]=this.getStorageData(this.storageKeys.dictionary[b])},
-saveConfig:function(){this.setStorageData(this.configHead+".system",JSON.stringify(this.config));for(var a in this.storageKeys.dictionary)this.setStorageData(this.storageKeys.dictionary[a],this.dictionary[a]);this.saveUserConfig()},readUserConfig:function(){var a=window.localStorage[this.configHead];if(a){a=JSON.parse(a);this.userConfig=$.extend(true,this.userConfig,a)}},saveUserConfig:function(){window.localStorage[this.configHead]=JSON.stringify(this.userConfig)},uploadTorrentFile:function(a,b,
-c,d){if(window.FileReader){var f=$("input[id='"+a+"']")[0].files;$.each(f,function(e,g){transmission.addTorrentFromFile(g,b,c,d,f.length)})}else alert(system.lang["public"]["text-browsers-not-support-features"])},checkUpdate:function(){$.ajax({url:this.checkUpdateScript,dataType:"json",success:function(a){if(a&&a.tag_name){var b=a.created_at.substr(0,10).replace(/-/g,""),c=a.tag_name;if($.inArray(c,system.config.ignoreVersion)==-1)if(system.codeupdate "+a.name);var d=$(""),f=a.body.replace(/\r\n/g," "),e=$("").appendTo(d);$('').html(a.name+" ("+b+")").appendTo(e).linkbutton();$("").html(" ").appendTo(e);$('').html(system.lang["public"]["text-how-to-update"]).appendTo(e).linkbutton();
-$("").html(" ").appendTo(e);$("').html(system.lang["public"]["text-ignore-this-version"]).appendTo(e).linkbutton();$("").appendTo(d);$("").html(f).appendTo(d);$("#button-download-update").webuiPopover({content:d.html(),backdrop:true})}else $("#area-update-infos").hide()}}})},addIgnoreVersion:function(a){if($.inArray(a,system.config.ignoreVersion)==
--1){this.config.ignoreVersion.push(a);this.saveConfig()}$("#button-download-update").webuiPopover("hide");$("#area-update-infos").hide()},changeLanguages:function(a){if(!(a==this.lang.name||!a)){this.config.defaultLang=a;this.saveConfig();location.href="?lang="+a}},getStorageData:function(a,b){return window.localStorage[a]==null?b:window.localStorage[a]},setStorageData:function(a,b){window.localStorage[a]=b},openDialogFromTemplate:function(a){a=$.extend(true,{id:null,options:null,datas:null,type:0},
-a);if(a.id!=null){var b=a.id,c=a.options,d=a.datas,f=$("#"+b);if(f.length){d&&$.each(d,function(e,g){f.data(e,g)});if(a.type==0&&f.attr("type")==a.type){f.dialog("open");f.dialog({content:system.templates[b]});return}else{if(system.popoverCount!=0){setTimeout(function(){system.openDialogFromTemplate(a)},350);return}f.remove()}}c=$.extend(true,{title:"",width:100,height:100,resizable:false,cache:true,content:system.lang.dialog["system-config"].loading,modal:true},c);f=$("").attr({id:b,type:a.type}).appendTo(document.body);
-if(a.type==0)f.dialog(c);else{f.css({width:c.width,height:c.height}).data("popoverSource",a.source);$(a.source).webuiPopover({url:"#"+b,title:c.title,width:c.width,height:c.height-18,padding:false,onHide:function(e){$(a.source).webuiPopover("destroy");$("#"+b).remove();$(e).remove();system.popoverCount--;a.onClose&&a.onClose(a.source)},onShow:function(){system.popoverCount++}})}$.get(system.rootPath+"template/"+b+".html?time="+new Date,function(e){system.templates[b]=e;d&&$.each(d,function(g,h){$("#"+
-b).data(g,h)});if(a.type==0)$("#"+b).dialog({content:e});else{f.html(e);$.parser.parse("#"+b);$(a.source).webuiPopover("show")}})}},debug:function(a,b){window.console&&window.console.log&&window.console.log(a,b)},initThemes:function(){this.themes&&$("#select-themes").combobox({groupField:"group",data:this.themes,editable:false,panelHeight:"auto",onChange:function(a){var b=(a+";").split(";"),c=b[0];b=b[1]||"logo.png";$("#styleEasyui").attr("href","tr-web-control/script/easyui/themes/"+c+"/easyui.css");
-$("#logo").attr("src","tr-web-control/"+b);system.config.theme=a;system.saveConfig()},onLoadSuccess:function(){$(this).combobox("setValue",system.config.theme||"default")}})},getValidTreeKey:function(a){if(!a)return"";return this.B64.encode(a).replace(/[+|\/|=]/g,"0")}};
-$(document).ready(function(){$.getJSON(system.rootPath+"i18n/en.json").done(function(a){system.defaultLang=a});$.getJSON(system.rootPath+"i18n.json").done(function(a){system.languages=a;system.init(location.search.getQueryString("lang"),location.search.getQueryString("local"))})});
-function pagerFilter(a){if(typeof a.length=="number"&&typeof a.splice=="function")a={total:a.length,rows:a};var b=$(this),c=b.datagrid("options"),d=b.datagrid("getPager"),f=b.data("buttons");d.pagination({onSelectPage:function(h,i){c.pageNumber=h;c.pageSize=i;d.pagination("refresh",{pageNumber:h,pageSize:i});b.datagrid("loadData",a)},buttons:f});if(!a.originalRows)a.originalRows=a.rows;var e=(c.pageNumber-1)*parseInt(c.pageSize),g=e+parseInt(c.pageSize);a.rows=a.originalRows.slice(e,g);if(f&&f.length)for(e=
-0;e"+this.lang.title.left+"";if(t.length>1){e+=t.join(""),this.panel.left_layout.panel("setTitle",e);for(var s in this.lang.tree.toolbar.nav)switch($("#tree-toolbar-nav-"+s).linkbutton(),s){case"folders":system.config.foldersShow?$("tree-toolbar-nav-"+s).linkbutton({iconCls:"icon-enabled"}).data("status",1):$("tree-toolbar-nav-"+s).linkbutton({iconCls:"icon-disabled"}).data("status",0)}}else this.panel.left_layout.panel("setTitle",e);if(e=""+this.lang.title.list+"",t.length=0,t.length>1){e+=t.join(""),this.panel.body.panel("setTitle",e);for(var s in this.lang["torrent-head"].buttons)switch($("#torrent-head-buttons-"+s).linkbutton(),s){case"autoExpandAttribute":system.config.autoExpandAttribute?$("#torrent-head-buttons-"+s).linkbutton({iconCls:"icon-enabled"}).data("status",1):$("#torrent-head-buttons-"+s).linkbutton({iconCls:"icon-disabled"}).data("status",0)}}else this.panel.body.panel("setTitle",e);this.panel.status.panel("setTitle",this.lang.title.status),this.panel.attribute.panel({title:this.lang.title.attribute,onExpand:function(){0!=system.currentTorrentId&&$(this).data("isload")?system.getTorrentInfos(system.currentTorrentId):system.clearTorrentAttribute()},onLoad:function(){$(this).data("isload")||($(this).data("isload",!0),0!=system.currentTorrentId&&setTimeout(function(){system.getTorrentInfos(system.currentTorrentId)},500))}}),$.each(this.languages,function(t,e){$("").text(e).val(t).attr("selected",t==system.lang.name).appendTo(system.panel.top.find("#lang"))}),this.panel.top.find("#lang").change(function(){location.href="?lang="+this.value}),this.panel.toolbar.attr("class","panel-header"),this.initTree(),this.initToolbar(),this.initStatusBar(),this.initTorrentTable(),this.connect(),this.initEvent(),this.checkUpdate()},initEvent:function(){$(window).resize(function(){$("#main").layout("resize")}),this.panel.droparea[0].addEventListener("dragover",function(t){t.stopPropagation(),t.preventDefault(),system.debug("#dropArea.dragover")},!1),this.panel.list[0].addEventListener("dragover",function(t){t.stopPropagation(),t.preventDefault(),system.panel.droparea.show(),system.debug("dragover")},!1),this.panel.droparea[0].addEventListener("drop",function(t){t.stopPropagation(),t.preventDefault(),system.panel.droparea.hide(),system.debug("drop.e.dataTransfer:",t.dataTransfer),system.checkDropFiles(t.dataTransfer.files)},!1),this.panel.droparea[0].addEventListener("dragleave",function(t){t.stopPropagation(),t.preventDefault(),system.panel.droparea.hide(),system.debug("dragleave")},!1),$("#text-drop-title").html(this.lang.public["text-drop-title"]),$("#button-cancel-checked").on("click",function(){system.control.torrentlist.datagrid("uncheckAll")}),this.panel.left.tree({onExpand:function(t){system.config.ui.status.tree[t.id]=t.state,system.saveConfig()},onCollapse:function(t){system.config.ui.status.tree[t.id]=t.state,system.saveConfig()}}),this.panel.layout_body.layout({onExpand:function(t){system.config.ui.status.layout.body[t]="open",system.saveConfig()},onCollapse:function(t){system.config.ui.status.layout.body[t]="closed",system.saveConfig()}}),this.panel.layout_left.layout({onExpand:function(t){system.config.ui.status.layout.left[t]="open",system.saveConfig()},onCollapse:function(t){system.config.ui.status.layout.left[t]="closed",system.saveConfig()}}),this.panel.main.layout({onExpand:function(t){system.config.ui.status.layout.main[t]="open",system.saveConfig()},onCollapse:function(t){system.config.ui.status.layout.main[t]="closed",system.saveConfig()}})},layoutResize:function(t,e){system.uiIsInitialized&&system.config.ui.status.size[t]&&(system.config.ui.status.size[t]=e,system.saveConfig())},navToolbarClick:function(t){var e=t.id,s=$(t).data("status"),n=null;switch(e){case"tree-toolbar-nav-folders":n=this.panel.left.tree("find","folders"),this.config.foldersShow=1!=s;break;case"tree-toolbar-nav-statistics":n=this.panel.left.tree("find","statistics");break;case"torrent-head-buttons-autoExpandAttribute":(n={}).target=null,this.config.autoExpandAttribute=1!=s}n&&(1==s?($(t).linkbutton({iconCls:"icon-disabled"}),$(n.target).parent().hide(),s=0):($(t).linkbutton({iconCls:"icon-enabled"}),$(n.target).parent().show(),s=1),$(t).data("status",s),this.saveConfig())},checkDropFiles:function(t){if(t&&t.length){for(var e=new Array,s=0;s0&&system.openDialogFromTemplate({id:"dialog-torrent-addfile",options:{title:system.lang.toolbar["add-torrent"],width:620,height:300,resizable:!0},datas:{files:e}})}},initTree:function(){var t=[{id:"torrent-all",iconCls:"iconfont tr-icon-home",text:this.lang.tree.all+" ("+this.lang.tree.status.loading+")",children:[{id:"downloading",text:this.lang.tree.downloading,iconCls:"iconfont tr-icon-download"},{id:"paused",text:this.lang.tree.paused,iconCls:"iconfont tr-icon-pause2"},{id:"sending",text:this.lang.tree.sending,iconCls:"iconfont tr-icon-upload"},{id:"check",text:this.lang.tree.check,iconCls:"iconfont tr-icon-data-check"},{id:"actively",text:this.lang.tree.actively,iconCls:"iconfont tr-icon-actively"},{id:"error",text:this.lang.tree.error,iconCls:"iconfont tr-icon-errors"},{id:"warning",text:this.lang.tree.warning,iconCls:"iconfont tr-icon-warning"}]}],e={servers:{id:"servers",text:this.lang.tree.servers,state:"closed",iconCls:"iconfont tr-icon-servers",children:[{id:"servers-loading",text:this.lang.tree.status.loading,iconCls:"tree-loading"}]},folders:{id:"folders",text:this.lang.tree.folders,iconCls:"iconfont tr-icon-folder",state:"closed",children:[{id:"folders-loading",text:this.lang.tree.status.loading,iconCls:"tree-loading"}]},statistics:{id:"statistics",text:this.lang.tree.statistics.title,state:"closed",iconCls:"iconfont tr-icon-shuju",children:[{id:"cumulative-stats",text:this.lang.tree.statistics.cumulative,iconCls:"iconfont tr-icon-folder",children:[{id:"uploadedBytes",text:this.lang.tree.statistics.uploadedBytes,iconCls:"iconfont tr-icon-empty"},{id:"downloadedBytes",text:this.lang.tree.statistics.downloadedBytes,iconCls:"iconfont tr-icon-empty"},{id:"filesAdded",text:this.lang.tree.statistics.filesAdded,iconCls:"iconfont tr-icon-empty"},{id:"sessionCount",text:this.lang.tree.statistics.sessionCount,iconCls:"iconfont tr-icon-empty"},{id:"secondsActive",text:this.lang.tree.statistics.secondsActive,iconCls:"iconfont tr-icon-empty"}]},{id:"current-stats",text:this.lang.tree.statistics.current,iconCls:"iconfont tr-icon-folder",children:[{id:"current-uploadedBytes",text:this.lang.tree.statistics.uploadedBytes,iconCls:"iconfont tr-icon-empty"},{id:"current-downloadedBytes",text:this.lang.tree.statistics.downloadedBytes,iconCls:"iconfont tr-icon-empty"},{id:"current-filesAdded",text:this.lang.tree.statistics.filesAdded,iconCls:"iconfont tr-icon-empty"},{id:"current-sessionCount",text:this.lang.tree.statistics.sessionCount,iconCls:"iconfont tr-icon-empty"},{id:"current-secondsActive",text:this.lang.tree.statistics.secondsActive,iconCls:"iconfont tr-icon-empty"}]}]},labels:{id:"labels",text:this.lang.tree.labels,iconCls:"iconfont tr-icon-labels"}};for(var s in this.config.nav){var n=this.config.nav[s],o=e[s];o&&n&&t.push(o)}this.panel.left.tree({data:t,onSelect:function(t){system.loadTorrentToList({node:t})},lines:!0})},initUIStatus:function(){if(!this.uiIsInitialized){system.uiIsInitialized=!0;var t=this.lastUIStatus.tree;for(var e in t){var s;(s=this.panel.left.tree("find",e))&&s.target&&("open"==t[e]?this.panel.left.tree("expand",s.target):this.panel.left.tree("collapse",s.target))}if(this.config.defaultSelectNode)(s=this.panel.left.tree("find",this.config.defaultSelectNode))&&(this.config.foldersShow||-1==this.config.defaultSelectNode.indexOf("folders"))?this.panel.left.tree("select",s.target):(s=this.panel.left.tree("find","torrent-all"),this.panel.left.tree("select",s.target));this.lastUIStatus.size.nav&&this.lastUIStatus.size.nav.width&&(this.panel.main.layout("panel","west").panel("resize",{width:this.lastUIStatus.size.nav.width+5}),this.panel.main.layout("resize")),this.lastUIStatus.size.attribute&&this.lastUIStatus.size.attribute.height&&(this.panel.layout_body.layout("panel","south").panel("resize",{height:this.lastUIStatus.size.attribute.height}),this.panel.layout_body.layout("resize")),t=this.lastUIStatus.layout.body;for(var e in t)"open"==t[e]?this.panel.layout_body.layout("expand",e):this.panel.layout_body.layout("collapse",e);t=this.lastUIStatus.layout.left;for(var e in t)"open"==t[e]?this.panel.layout_left.layout("expand",e):this.panel.layout_left.layout("collapse",e);t=this.lastUIStatus.layout.main;for(var e in t)"open"==t[e]?this.panel.main.layout("expand",e):this.panel.main.layout("collapse",e)}},initTorrentTable:function(){this.control.torrentlist=$("
").attr("class","torrent-list").appendTo(this.panel.list);var t=null,e=-1;$.get(system.rootPath+"template/torrent-fields.json?time="+new Date,function(s){for(var n=s.fields,o={},a=0;a").appendTo("body")).menu({onClick:function(e){"icon-ok"==e.iconCls?(system.control.torrentlist.datagrid("hideColumn",e.name),t.menu("setIcon",{target:e.target,iconCls:"icon-empty"})):(system.control.torrentlist.datagrid("showColumn",e.name),t.menu("setIcon",{target:e.target,iconCls:"icon-ok"})),system.resetTorrentListFieldsUserConfig(system.control.torrentlist.datagrid("options").columns[0]),system.saveUserConfig()}});for(var e=system.control.torrentlist.datagrid("getColumnFields"),s=0;s").attr("class","easyui-menu").css({"min-width":"180px"}).appendTo(this.panel.main),this.contextMenus[t]=s,s.menu());var n=null;switch(t){case"torrent-list":n=new Array("start","pause","-","rename","remove","recheck","-","morepeers","changeDownloadDir","copyPath","-","menu-queue-move-top","menu-queue-move-up","menu-queue-move-down","menu-queue-move-bottom","magnetLink"),this.config.nav.labels&&(n.push("-"),n.push("setLabels"));var o=this.panel.toolbar;for(var a in n){var r=n[a];if("-"==r)$("").appendTo(s);else{var i=o.find("#toolbar_"+r);i.length>0?s.menu("appendItem",{text:i.attr("title"),id:r,iconCls:i.linkbutton("options").iconCls,disabled:i.linkbutton("options").disabled,onclick:function(){system.panel.toolbar.find("#toolbar_"+$(this).attr("id")).click()}}):(i=$("#"+r)).length>0?s.menu("appendItem",{text:i.attr("title"),id:r,iconCls:i.attr("id").replace("menu-queue-move","iconfont tr-icon"),disabled:o.find("#toolbar_queue").linkbutton("options").disabled,onclick:function(){$("#"+$(this).attr("id")).click()}}):(i=this.getContentMenuWithKey(r,s))&&s.menu("appendItem",i),i=null}}var l=$("#copyPath",s);l.attr({"data-clipboard-action":"copy","data-clipboard-target":"#clipboard-source"});new ClipboardJS(l.get(0))}s.menu("show",{left:e.pageX,top:e.pageY}),s=null,n=null},getContentMenuWithKey:function(t,e){switch(t){case"setLabels":return{id:"setLabels",text:system.lang.menus.setLabels,iconCls:"iconfont tr-icon-labels",disabled:0==this.checkedRows.length,onclick:function(){var t=system.checkedRows,e=new Array;for(var s in t)e.push(t[s].hashString);0!=e.length&&system.openDialogFromTemplate({id:"dialog-torrent-setLabels",options:{title:system.lang.dialog["torrent-setLabels"].title,width:520,height:200},datas:{hashs:e}})}};case"magnetLink":return{id:"magnetLink",text:system.lang.menus.copyMagnetLink,iconCls:"iconfont tr-icon-labels",disabled:0==this.checkedRows.length,onclick:function(){system.getTorrentMagnetLink(function(t){system.copyToClipboard(t),e.css("display","block")})}}}},formetTorrentLabels:function(t,e){var s=$("");if(t){"string"==typeof t&&(t=t.split(","));for(var n=0;n").html(a.name).css({"background-color":a.color,color:getGrayLevel(a.color)>.5?"#000":"#fff"}).appendTo(s)}}var r=$("').appendTo(s);return r.linkbutton(),r.find("span").first().attr({title:system.lang.dialog["torrent-setLabels"].title}),s.get(0).outerHTML},setTorrentLabels:function(t,e){system.openDialogFromTemplate({id:"dialog-torrent-setLabels",options:{title:system.lang.dialog["torrent-setLabels"].title,width:520,height:200},datas:{hashs:[e]},type:1,source:$(t)})},checkTorrentRow:function(t,e){if(this.checkedRows=this.control.torrentlist.datagrid("getChecked"),this.showCheckedInStatus(),"all"==t){if(0==this.control.torrentlist.datagrid("getRows").length)return;return $("#toolbar_start, #toolbar_pause, #toolbar_remove, #toolbar_recheck, #toolbar_changeDownloadDir,#toolbar_morepeers,#toolbar_copyPath",this.panel.toolbar).linkbutton({disabled:e}),$("#toolbar_rename, #toolbar_morepeers",this.panel.toolbar).linkbutton({disabled:!0}),void this.panel.toolbar.find("#toolbar_queue").menubutton("disable")}if(0==this.checkedRows.length)return $("#toolbar_start, #toolbar_pause, #toolbar_rename, #toolbar_remove, #toolbar_recheck, #toolbar_changeDownloadDir,#toolbar_morepeers,#toolbar_copyPath",this.panel.toolbar).linkbutton({disabled:!0}),void this.panel.toolbar.find("#toolbar_queue").menubutton("disable");if(1==this.checkedRows.length)switch($("#toolbar_remove, #toolbar_rename, #toolbar_changeDownloadDir,#toolbar_copyPath",this.panel.toolbar).linkbutton({disabled:!1}),this.panel.toolbar.find("#toolbar_queue").menubutton("enable"),transmission.torrents.all[e.id].status){case transmission._status.stopped:this.panel.toolbar.find("#toolbar_start, #toolbar_recheck").linkbutton({disabled:!1}),this.panel.toolbar.find("#toolbar_pause, #toolbar_morepeers").linkbutton({disabled:!0});break;case transmission._status.check:case transmission._status.checkwait:this.panel.toolbar.find("#toolbar_start, #toolbar_pause, #toolbar_recheck, #toolbar_morepeers").linkbutton({disabled:!0});break;default:this.panel.toolbar.find("#toolbar_start, #toolbar_recheck").linkbutton({disabled:!0}),this.panel.toolbar.find("#toolbar_pause, #toolbar_morepeers").linkbutton({disabled:!1})}else $("#toolbar_start, #toolbar_pause, #toolbar_remove, #toolbar_recheck, #toolbar_changeDownloadDir,#toolbar_copyPath",this.panel.toolbar).linkbutton({disabled:!1}),$("#toolbar_rename, #toolbar_morepeers",this.panel.toolbar).linkbutton({disabled:!0}),this.panel.toolbar.find("#toolbar_queue").menubutton("disable")},showCheckedInStatus:function(){if(this.checkedRows.length>0){this.panel.status_text.empty(),this.showStatus(void 0,0);var t=[],e=this.lang.system.status.checked.replace("%n",this.checkedRows.length),s=[];$("").html(e).appendTo(this.panel.status_text);for(var n=0;n").appendTo(this.panel.status_text).datalist({data:t}),$(".datalist>.panel-body",this.panel.status_text).css({border:0}),$("#button-cancel-checked").show(),$("#clipboard-source").val(s.join("\n"))}else $("#button-cancel-checked").hide(),this.panel.status_text.empty(),$("#clipboard-source").val("")},copyToClipboard:function(t){var e="copy_to_clipboard_textarea",s=document.getElementById(e);s||(s=document.createElement("textarea")),s.id=e,s.style.display="block",s.value=t,document.body.appendChild(s),s.select(),document.execCommand("copy"),s.style.display="none"},initToolbar:function(){this.panel.toolbar.find("#toolbar_label_reload_time").html(this.lang.toolbar["reload-time"]),this.panel.toolbar.find("#toolbar_label_reload_time_unit").html(this.lang.toolbar["reload-time-unit"]),this.panel.toolbar.find("#toolbar_reload_time").numberspinner({value:this.config.reloadStep/1e3,min:3,disabled:!this.config.autoReload,onChange:function(){var t=this.value;$.isNumeric(t)&&(system.config.reloadStep=1e3*t,system.saveConfig())}}),this.panel.toolbar.find("#toolbar_autoreload").linkbutton({text:this.config.autoReload?this.lang.toolbar["autoreload-enabled"]:this.lang.toolbar["autoreload-disabled"],iconCls:this.config.autoReload?"icon-enabled":"icon-disabled"}).attr("title",this.config.autoReload?this.lang.toolbar.tip["autoreload-disabled"]:this.lang.toolbar.tip["autoreload-enabled"]).click(function(){system.config.autoReload?(system.config.autoReload=!1,clearTimeout(system.autoReloadTimer),system.panel.toolbar.find("#toolbar_reload_time").numberspinner("disable")):(system.config.autoReload=!0,system.reloadData(),system.panel.toolbar.find("#toolbar_reload_time").numberspinner("enable")),system.saveConfig(),$(this).linkbutton({text:system.config.autoReload?system.lang.toolbar["autoreload-enabled"]:system.lang.toolbar["autoreload-disabled"],iconCls:system.config.autoReload?"icon-enabled":"icon-disabled"}).attr("title",system.config.autoReload?system.lang.toolbar.tip["autoreload-disabled"]:system.lang.toolbar.tip["autoreload-enabled"])}),this.panel.toolbar.find("#toolbar_add_torrents").linkbutton({text:this.lang.toolbar["add-torrent"],disabled:!1}).attr("title",this.lang.toolbar.tip["add-torrent"]).click(function(){system.openDialogFromTemplate({id:"dialog-torrent-add",options:{title:system.lang.toolbar["add-torrent"],width:620,height:400,resizable:!0}})}),this.panel.toolbar.find("#toolbar_start_all").linkbutton({disabled:!1}).attr("title",this.lang.toolbar.tip["start-all"]).click(function(){var t=$(this),e=t.linkbutton("options").iconCls;t.linkbutton({disabled:!0,iconCls:"icon-loading"}),transmission.exec({method:"torrent-start"},function(s){t.linkbutton({iconCls:e,disabled:!1}),t=null})}),this.panel.toolbar.find("#toolbar_pause_all").linkbutton({disabled:!1}).attr("title",this.lang.toolbar.tip["pause-all"]).click(function(){var t=$(this),e=t.linkbutton("options").iconCls;t.linkbutton({disabled:!0,iconCls:"icon-loading"}),transmission.exec({method:"torrent-stop"},function(s){t.linkbutton({iconCls:e,disabled:!1}),t=null})}),this.panel.toolbar.find("#toolbar_start").linkbutton({disabled:!0}).attr("title",this.lang.toolbar.tip.start).click(function(){system.changeSelectedTorrentStatus("start",$(this))}),this.panel.toolbar.find("#toolbar_pause").linkbutton({disabled:!0}).attr("title",this.lang.toolbar.tip.pause).click(function(){system.changeSelectedTorrentStatus("stop",$(this))}),this.panel.toolbar.find("#toolbar_recheck").linkbutton({disabled:!0}).attr("title",this.lang.toolbar.tip.recheck).click(function(){var t=system.control.torrentlist.datagrid("getChecked");t.length>0&&(1==t.length?transmission.torrents.all[t[0].id].percentDone>0?confirm(system.lang.toolbar.tip["recheck-confirm"])&&system.changeSelectedTorrentStatus("verify",$(this)):system.changeSelectedTorrentStatus("verify",$(this)):confirm(system.lang.toolbar.tip["recheck-confirm"])&&system.changeSelectedTorrentStatus("verify",$(this)))}),this.panel.toolbar.find("#toolbar_morepeers").linkbutton({disabled:!0}).click(function(){system.changeSelectedTorrentStatus("reannounce",$(this))}),this.panel.toolbar.find("#toolbar_remove").linkbutton({disabled:!0}).attr("title",this.lang.toolbar.tip.remove).click(function(){var t=system.control.torrentlist.datagrid("getChecked"),e=new Array;for(var s in t)e.push(t[s].id);0!=e.length&&system.openDialogFromTemplate({id:"dialog-torrent-remove-confirm",options:{title:system.lang.dialog["torrent-remove"].title,width:350,height:150},datas:{ids:e}})}),this.panel.toolbar.find("#toolbar_rename").linkbutton({disabled:!0}).click(function(){var t=system.control.torrentlist.datagrid("getChecked");0!=t.length&&system.openDialogFromTemplate({id:"dialog-torrent-rename",options:{title:system.lang.dialog["torrent-rename"].title,width:520,height:200,resizable:!0},datas:{id:t[0].id}})}),this.panel.toolbar.find("#toolbar_changeDownloadDir").linkbutton({disabled:!0}).attr("title",this.lang.toolbar.tip["change-download-dir"]).click(function(){var t=system.control.torrentlist.datagrid("getChecked"),e=new Array;for(var s in t)e.push(t[s].id);0!=e.length&&system.openDialogFromTemplate({id:"dialog-torrent-changeDownloadDir",options:{title:system.lang.dialog["torrent-changeDownloadDir"].title,width:520,height:200},datas:{ids:e}})}),this.panel.toolbar.find("#toolbar_alt_speed").linkbutton().attr("title",this.lang.toolbar.tip["alt-speed"]).click(function(){var t=$(this),e=!1;"iconfont tr-icon-rocket"==t.linkbutton("options").iconCls&&(e=!0),transmission.exec({method:"session-set",arguments:{"alt-speed-enabled":e}},function(s){"success"==s.result&&(system.serverConfig["alt-speed-enabled"]=e,t.linkbutton({iconCls:"iconfont tr-icon-"+(e?"woniu":"rocket")}),e?$("#status_alt_speed").show():$("#status_alt_speed").hide())}),t.linkbutton({iconCls:"icon-loading"})}),this.panel.toolbar.find("#toolbar_config").linkbutton().attr("title",this.lang.toolbar.tip["system-config"]).click(function(){system.openDialogFromTemplate({id:"dialog-system-config",options:{title:system.lang.toolbar["system-config"],width:680,height:500,resizable:!0}})}),this.panel.toolbar.find("#toolbar_reload").linkbutton().attr("title",this.lang.toolbar.tip["system-reload"]).click(function(){system.reloadData()}),this.panel.toolbar.find("#toolbar_search").searchbox({searcher:function(t){system.searchTorrents(t)},prompt:this.lang.toolbar["search-prompt"]}),this.panel.toolbar.find("#toolbar_copyPath").linkbutton().attr("title",this.lang.toolbar.tip["copy-path-to-clipboard"])},initStatusBar:function(){this.panel.statusbar.find("#status_title_downloadspeed").html(this.lang.statusbar.downloadspeed),this.panel.statusbar.find("#status_title_uploadspeed").html(this.lang.statusbar.uploadspeed)},connect:function(){this.showStatus(this.lang.system.status.connect,0),transmission.on.torrentCountChange=function(){system.reloadTorrentBaseInfos()},transmission.on.postError=function(){},transmission.init({islocal:!0},function(){system.reloadSession(!0),system.getServerStatus()})},reloadSession:function(t){transmission.getSession(function(e){system.serverConfig=e,$("#status_version").html("Transmission "+system.lang.statusbar.version+e.version+", RPC: "+e["rpc-version"]+", WEB Control: "+system.version+"("+system.codeupdate+")"),1==e["alt-speed-enabled"]?(system.panel.toolbar.find("#toolbar_alt_speed").linkbutton({iconCls:"iconfont tr-icon-woniu"}),$("#status_alt_speed").show()):(system.panel.toolbar.find("#toolbar_alt_speed").linkbutton({iconCls:"iconfont tr-icon-rocket"}),$("#status_alt_speed").hide()),system.downloadDir=e["download-dir"],0==transmission.downloadDirs.length&&transmission.downloadDirs.push(system.downloadDir),parseInt(system.serverConfig["rpc-version"])>=15?transmission.getFreeSpace(system.downloadDir,function(t){system.serverConfig["download-dir-free-space"]=t.arguments["size-bytes"],system.showFreeSpace(t.arguments["size-bytes"])}):system.showFreeSpace(system.serverConfig["download-dir-free-space"]),t&&system.showStatus(system.lang.system.status.connected)})},showFreeSpace:function(t){var e=t;e=-1==e?system.lang.public["text-unknown"]:formatSize(e),$("#status_freespace").text(system.lang.dialog["system-config"]["download-dir-free-space"]+" "+e)},reloadTorrentBaseInfos:function(t,e){if(!this.reloading){clearTimeout(this.autoReloadTimer),this.reloading=!0;var s={trackers:transmission.trackers,folders:transmission.torrents.folders};transmission.torrents.getallids(function(t){var e=new Array;for(var n in t){var o=t[n];e.push(o.id)}var a=transmission.torrents.getErrorIds(e,!0);a.length>0?transmission.torrents.getallids(function(){system.resetTorrentInfos(s)},a):system.resetTorrentInfos(s)},t,e)}},resetTorrentInfos:function(t){this.resetNavTorrentStatus(),this.resetNavServers(t),this.resetNavStatistics(),this.resetNavFolders(t),this.resetNavLabels(),navigator.userAgent.indexOf("Firefox")>0&&system.panel.left.find("span.nav-total-size").css({"margin-top":"-19px"})},resetNavTorrentStatus:function(){var t=this.currentTorrentId;if(transmission.torrents.status[transmission._status.stopped]?system.updateTreeNodeText("paused",system.lang.tree.paused+this.showNodeMoreInfos(transmission.torrents.status[transmission._status.stopped].length)):system.updateTreeNodeText("paused",system.lang.tree.paused),transmission.torrents.status[transmission._status.seed]?system.updateTreeNodeText("sending",system.lang.tree.sending+this.showNodeMoreInfos(transmission.torrents.status[transmission._status.seed].length)):system.updateTreeNodeText("sending",system.lang.tree.sending),transmission.torrents.status[transmission._status.seedwait]){var e=system.panel.left.tree("find","sending"),s=system.panel.left.tree("getChildren",e.target),n=system.lang.tree.wait+this.showNodeMoreInfos(transmission.torrents.status[transmission._status.seedwait].length);s.length>0?system.updateTreeNodeText(s[0].id,n):system.appendTreeNode(e,[{id:"seedwait",text:n,iconCls:"iconfont tr-icon-wait"}])}else system.removeTreeNode("seedwait");if(transmission.torrents.status[transmission._status.check]?system.updateTreeNodeText("check",system.lang.tree.check+this.showNodeMoreInfos(transmission.torrents.status[transmission._status.check].length)):system.updateTreeNodeText("check",system.lang.tree.check),transmission.torrents.status[transmission._status.checkwait]){var e=system.panel.left.tree("find","check");s=system.panel.left.tree("getChildren",e.target),n=system.lang.tree.wait+this.showNodeMoreInfos(transmission.torrents.status[transmission._status.checkwait].length);s.length>0?system.updateTreeNodeText(s[0].id,n):system.appendTreeNode(e,[{id:"checkwait",text:n,iconCls:"iconfont tr-icon-wait"}])}else system.removeTreeNode("checkwait");if(transmission.torrents.status[transmission._status.download]?system.updateTreeNodeText("downloading",system.lang.tree.downloading+this.showNodeMoreInfos(transmission.torrents.status[transmission._status.download].length)):system.updateTreeNodeText("downloading",system.lang.tree.downloading),transmission.torrents.status[transmission._status.downloadwait]){e=system.panel.left.tree("find","downloading"),s=system.panel.left.tree("getChildren",e.target),n=system.lang.tree.wait+this.showNodeMoreInfos(transmission.torrents.status[transmission._status.downloadwait].length);s.length>0?system.updateTreeNodeText(s[0].id,n):system.appendTreeNode(e,[{id:"downloadwait",text:n,iconCls:"iconfont tr-icon-wait"}])}else system.removeTreeNode("downloadwait");if(system.updateTreeNodeText("actively",system.lang.tree.actively+this.showNodeMoreInfos(transmission.torrents.actively.length)),system.updateTreeNodeText("error",system.lang.tree.error+this.showNodeMoreInfos(transmission.torrents.error.length)),system.updateTreeNodeText("warning",system.lang.tree.warning+this.showNodeMoreInfos(transmission.torrents.warning.length)),null!=(e=system.panel.left.tree("getSelected"))){var o=system.control.torrentlist.datagrid("options").pageNumber;system.loadTorrentToList({node:e,page:o})}0!=t&&system.control.torrentlist.datagrid("selectRecord",t),system.reloading=!1,system.config.autoReload&&(system.autoReloadTimer=setTimeout(function(){system.reloadData()},system.config.reloadStep)),system.updateTreeNodeText("torrent-all",system.lang.tree.all+this.showNodeMoreInfos(transmission.torrents.count,transmission.torrents.totalSize))},resetNavServers:function(t){var e=this.panel.left.tree("find","servers");if(this.config.nav.servers){if(e){var s=e.state;this.removeTreeNode("servers-loading")}else this.appendTreeNode(null,[{id:"servers",text:this.lang.tree.servers,state:"closed",iconCls:"iconfont tr-icon-servers"}]),e=this.panel.left.tree("find","servers");new Array;var n=this.panel.left.tree("find","btservers"),o=n?n.state:"close";!n&&system.config.showBTServers&&(this.appendTreeNode(e,[{id:"btservers",text:"BT",state:"open",iconCls:"iconfont tr-icon-bt"}]),n=this.panel.left.tree("find","btservers"));for(var a in transmission.trackers){if(!(l=transmission.trackers[a]).isBT||system.config.showBTServers){var r=system.panel.left.tree("find",l.nodeid),i=l.name+this.showNodeMoreInfos(l.count,l.size);r?system.updateTreeNodeText(l.nodeid,i,l.connected?"iconfont tr-icon-server":"iconfont tr-icon-server-error"):system.appendTreeNode(l.isBT?n:e,[{id:l.nodeid,text:i,iconCls:l.connected?"iconfont tr-icon-server":"iconfont tr-icon-server-error"}]),t.trackers[l.nodeid]=null}}"closed"==s&&this.panel.left.tree("collapse",e.target),system.config.showBTServers&&n&&"closed"==o&&this.panel.left.tree("collapse",n.target);for(var a in t.trackers){var l;(l=t.trackers[a])&&system.removeTreeNode(l.nodeid)}}else e&&this.panel.left.tree("remove",e.target)},resetNavStatistics:function(){if(this.config.nav.statistics){var t="uploadedBytes,downloadedBytes,filesAdded,sessionCount,secondsActive".split(",");$.each(t,function(t,e){switch(e){case"uploadedBytes":case"downloadedBytes":system.updateTreeNodeText(e,system.lang.tree.statistics[e]+" "+formatSize(system.serverSessionStats["cumulative-stats"][e])),system.updateTreeNodeText("current-"+e,system.lang.tree.statistics[e]+" "+formatSize(system.serverSessionStats["current-stats"][e]));break;case"secondsActive":system.updateTreeNodeText(e,system.lang.tree.statistics[e]+" "+getTotalTime(1e3*system.serverSessionStats["cumulative-stats"][e])),system.updateTreeNodeText("current-"+e,system.lang.tree.statistics[e]+" "+getTotalTime(1e3*system.serverSessionStats["current-stats"][e]));break;default:system.updateTreeNodeText(e,system.lang.tree.statistics[e]+" "+system.serverSessionStats["cumulative-stats"][e]),system.updateTreeNodeText("current-"+e,system.lang.tree.statistics[e]+" "+system.serverSessionStats["current-stats"][e])}})}else{var e=this.panel.left.tree("find","statistics");e&&this.panel.left.tree("remove",e.target)}},resetNavFolders:function(t){if(this.config.nav.folders){for(var e in transmission.torrents.folders){var s=transmission.torrents.folders[e];t.folders[s.nodeid]=null}this.loadFolderList(t.folders)}else{this.initUIStatus();var n=this.panel.left.tree("find","folders");n&&this.panel.left.tree("remove",n.target)}},resetNavLabels:function(t){if(this.config.nav.labels){if(t)for(var e=this.panel.left.tree("getChildren",this.panel.left.tree("find","labels").target),s=0;s.5?"#000":"#fff"}))}}else{var a;(a=this.panel.left.tree("find","labels"))&&this.panel.left.tree("remove",a.target)}},showNodeMoreInfos:function(t,e){var s="";return t>0&&(s=" ("+t+")"),e>0&&(s+="["+formatSize(e)+"]"),s},getServerStatus:function(){this.reloading||(clearTimeout(this.autoReloadTimer),this.reloading=!0,transmission.getStatus(function(t){if(system.reloading=!1,$("#status_downloadspeed").html(formatSize(t.downloadSpeed,!1,"speed")),$("#status_uploadspeed").html(formatSize(t.uploadSpeed,!1,"speed")),system.serverSessionStats=t,0==t.torrentCount){var e=system.panel.left.tree("find","servers");e&&system.panel.left.tree("remove",e.target),system.updateTreeNodeText("torrent-all",system.lang.tree.all)}}))},showStatus:function(t,e){$("#m_status").panel("options").collapsed&&$("#layout_left").layout("expand","south"),this.panel.status_text.show(),t&&this.panel.status_text.html(t),0!=e&&(void 0==e&&(e=3e3),this.panel.status_text.fadeOut(e,function(){$("#layout_left").layout("collapse","south")}))},updateTreeNodeText:function(t,e,s){var n=this.panel.left.tree("find",t);if(n){var o={target:n.target,text:e};void 0!=s&&(o.iconCls=s),this.panel.left.tree("update",o)}n=null},appendTreeNode:function(t,e){var s=null;(s="string"==typeof t?this.panel.left.tree("find",t):t)?this.panel.left.tree("append",{parent:s.target,data:e}):this.panel.left.tree("append",{data:e}),s=null},removeTreeNode:function(t){var e=this.panel.left.tree("find",t);e&&this.panel.left.tree("remove",e.target),e=null},loadTorrentToList:function(t){if(transmission.torrents.all){if(jQuery.extend({node:null,page:1},t),t.node){var e=null,s=this.panel.left.tree("getParent",t.node.target)||{id:""},n=this.panel.left.data("currentNodeId");switch(n!=t.node.id&&(this.control.torrentlist.datagrid("uncheckAll"),this.control.torrentlist.datagrid({pageNumber:1}),n=t.node.id),this.panel.left.data("currentNodeId",n),s.id){case"servers":case"btservers":e="btservers"==t.node.id?transmission.torrents.btItems:transmission.trackers[t.node.id].torrents;break;default:switch(t.node.id){case"torrent-all":case"servers":e=transmission.torrents.all;break;case"paused":e=transmission.torrents.status[transmission._status.stopped];break;case"sending":e=transmission.torrents.status[transmission._status.seed];break;case"seedwait":e=transmission.torrents.status[transmission._status.seedwait];break;case"check":e=transmission.torrents.status[transmission._status.check];break;case"checkwait":e=transmission.torrents.status[transmission._status.checkwait];break;case"downloading":e=transmission.torrents.status[transmission._status.download];break;case"downloadwait":e=transmission.torrents.status[transmission._status.downloadwait];break;case"actively":e=transmission.torrents.actively;break;case"error":e=transmission.torrents.error;break;case"warning":e=transmission.torrents.warning;break;case"search-result":e=transmission.torrents.searchResult;break;case"btservers":e=transmission.torrents.btItems;break;default:if(-1!=t.node.id.indexOf("folders-")){var o=transmission.torrents.folders[t.node.id];if(o)if(this.config.hideSubfolders){e=[];for(var a=0;a"+u+"":e[a].warning&&(u=""+u+"");var m,h={};(h=$.extend(h,e[a])).status=u,h.statusCode=e[a].status,h.completeSize=Math.max(0,e[a].totalSize-e[a].leftUntilDone),h.leecherCount=e[a].leecher,h.seederCount=e[a].seeder,(m=this.config.labelMaps[h.hashString])&&(h.labels=m),c.push(h)}this.updateTorrentCurrentPageDatas(c)}}},updateTorrentCurrentPageDatas:function(t){var e=this.control.torrentlist.datagrid("getRows");if(0==t.length&&e.length>0)this.control.torrentlist.datagrid("loadData",[]);else{var s=this.control.torrentlist.datagrid("options"),n=null;if(s.sortName){var o=n=s.sortName;t=t.sort(arrayObjectSort(o,s.sortOrder))}if(0==e.length||t.length!=this.control.torrentlist.datagrid("getData").total&&t.length>s.pageSize)this.control.torrentlist.datagrid({loadFilter:pagerFilter,pageNumber:s.pageNumber,sortName:n,sortOrder:s.sortOrder}).datagrid("loadData",t);else{this.control.torrentlist.datagrid("getData").originalRows=t;var a=(s.pageNumber-1)*parseInt(s.pageSize),r=a+parseInt(s.pageSize);t=t.slice(a,r);var i={},l={};for(var d in transmission.torrents.recently){i[(m=transmission.torrents.recently[d]).id]=!0,m=null}for(var d in t){l[(m=t[d]).id]=m,m=null}var c={};for(d=e.length-1;d>=0;d--){var u=l[(m=e[d]).id];u?i[m.id]?(this.control.torrentlist.datagrid("updateRow",{index:d,row:u}),c[m.id]=m):transmission.torrents.removed&&transmission.torrents.removed.length>0&&-1!=$.inArray(m.id,transmission.torrents.removed)?this.control.torrentlist.datagrid("deleteRow",d):c[m.id]=m:this.control.torrentlist.datagrid("deleteRow",d),m=null,u=null}for(var d in t){var m;c[(m=t[d]).id]||this.control.torrentlist.datagrid("appendRow",m)}e=null,i=null,l=null}}},getTorrentNameBar:function(t){var e="",s=t.name;switch(t.status){case transmission._status.stopped:e="iconlabel icon-pause-small";break;case transmission._status.check:e="iconlabel icon-checking";break;case transmission._status.download:e="iconlabel icon-down";break;case transmission._status.seed:e="iconlabel icon-up";break;case transmission._status.seedwait:case transmission._status.downloadwait:case transmission._status.checkwait:e="iconlabel icon-wait"}return s+="\n"+t.downloadDir,t.warning&&(e="iconlabel icon-warning-type1",s+="\n\n"+this.lang.public["text-info"]+": "+t.warning),0!=t.error&&(e="iconlabel icon-exclamation",s+="\n\n"+this.lang.public["text-info"]+": "+t.errorString),''+t.name+""},getTorrentProgressBar:function(t,e){t+="%";var s="";switch("object"==typeof e?e.status:e){case transmission._status.stopped:s="torrent-progress-stop";break;case transmission._status.checkwait:case transmission._status.check:s="torrent-progress-check";break;case transmission._status.downloadwait:case transmission._status.download:s="torrent-progress-download";break;case transmission._status.seedwait:case transmission._status.seed:s="torrent-progress-seed"}return"object"==typeof e&&(e.warning&&(s="torrent-progress-warning"),0!=e.error&&(s="torrent-progress-error")),'
'+t+'
'},addTorrentsToServer:function(t,e,s,n){var o=e-t.length,a=t.shift();if(!a)return this.showStatus(this.lang.system.status.queuefinish),void this.getServerStatus();this.showStatus(this.lang.system.status.queue+(o+1)+"/"+e+" "+a,0),transmission.addTorrentFromUrl(a,n,s,function(o){system.addTorrentsToServer(t,e,s,n)})},changeSelectedTorrentStatus:function(t,e,s){var n=this.control.torrentlist.datagrid("getChecked"),o=new Array;t||(t="start");for(var a in n)o.push(n[a].id);if(s||(s="torrent-"+t),o.length>0){if(e){var r=e.linkbutton("options").iconCls;e.linkbutton({disabled:!0,iconCls:"icon-loading"})}transmission.exec({method:s,arguments:{ids:o}},function(t){e&&e.linkbutton({iconCls:r}),system.control.torrentlist.datagrid("uncheckAll"),system.reloadTorrentBaseInfos()})}},getTorrentMagnetLink:function(t){var e=this.control.torrentlist.datagrid("getChecked"),s=new Array;for(var n in e)s.push(e[n].id);transmission.torrents.getMagnetLink(s,t)},searchTorrents:function(t){if(""!=t){var e=transmission.torrents.search(t);if(null!=e&&0!=e.length){var s=this.panel.left.tree("find","search-result"),n=this.lang.tree["search-result"]+" : "+t+" ("+e.length+")";null==s?(this.appendTreeNode("torrent-all",[{id:"search-result",text:n,iconCls:"iconfont tr-icon-search"}]),s=this.panel.left.tree("find","search-result")):this.panel.left.tree("update",{target:s.target,text:n}),this.panel.left.tree("select",s.target)}else this.removeTreeNode("search-result")}},getTorrentInfos:function(t){if(transmission.torrents.all[t]&&!transmission.torrents.all[t].infoIsLoading&&!(this.currentTorrentId>0&&transmission.torrents.all[this.currentTorrentId]&&transmission.torrents.all[this.currentTorrentId].infoIsLoading||(this.currentTorrentId=t,this.panel.attribute.panel("options").collapsed))){var e=transmission.torrents.all[t];e.infoIsLoading=!0;var s="fileStats,trackerStats,peers,leftUntilDone,status,rateDownload,rateUpload,uploadedEver,uploadRatio,error,errorString";e.moreInfosTag||(s+=",files,trackers,comment,dateCreated,creator,downloadDir"),transmission.torrents.getMoreInfos(s,t,function(s){e.infoIsLoading=!1,null!=s&&(jQuery.extend(e,s[0]),0!=system.currentTorrentId&&system.currentTorrentId==t?(e.completeSize=e.totalSize-e.leftUntilDone,e.moreInfosTag=!0,system.fillTorrentBaseInfos(e),system.fillTorrentFileList(e),system.fillTorrentServerList(e),system.fillTorrentPeersList(e),system.fillTorrentConfig(e),transmission.torrents.all[t]=e,transmission.torrents.datas[t]=e):system.clearTorrentAttribute())})}},clearTorrentAttribute:function(){system.panel.attribute.find("#torrent-files-table").datagrid("loadData",[]),system.panel.attribute.find("#torrent-servers-table").datagrid("loadData",[]),system.panel.attribute.find("#torrent-peers-table").datagrid("loadData",[]),system.panel.attribute.find("span[id*='torrent-attribute-value']").html("")},updateCurrentPageDatas:function(t,e,s){var n=s.datagrid("getRows"),o=s.datagrid("options"),a=null;if(o.sortName&&(a=o.sortName,e=e.sort(arrayObjectSort(a,o.sortOrder))),0!=n.length&&e.length==s.datagrid("getData").total){s.datagrid("getData").originalRows=e;var r=(o.pageNumber-1)*parseInt(o.pageSize),i=r+parseInt(o.pageSize);e=e.slice(r,i);var l={};for(var d in e){l[(c=e[d])[t]]=c,c=null}for(d=n.length-1;d>=0;d--){var c,u=l[(c=n[d])[t]];u?s.datagrid("updateRow",{index:d,row:u}):s.datagrid("deleteRow",d),u=null,c=null}}else s.datagrid({loadFilter:pagerFilter,pageNumber:1,sortName:a,sortOrder:o.sortOrder}).datagrid("loadData",e)},fillTorrentBaseInfos:function(t){$.each(t,function(t,e){switch(t){case"rateDownload":case"rateUpload":e=formatSize(e,!0,"speed");break;case"totalSize":case"uploadedEver":case"leftUntilDone":case"completeSize":e=formatSize(e);break;case"addedDate":case"dateCreated":case"doneDate":e=formatLongTime(e);break;case"status":e=system.lang.torrent["status-text"][e];break;case"error":0==e?system.panel.attribute.find("#torrent-attribute-tr-error").hide():system.panel.attribute.find("#torrent-attribute-tr-error").show();break;case"remainingTime":e=e>=31536e8?"∞":getTotalTime(e);break;case"comment":e=system.replaceURI(e)}system.panel.attribute.find("#torrent-attribute-value-"+t).html(e)})},fillTorrentFileList:function(t){var e=t.files,s=t.fileStats,n=new Array,o=t.name.length+1;for(var a in e){var r=e[a],i=s[a],l=parseFloat(i.bytesCompleted/r.length*100).toFixed(2);n.push({name:r.name==t.name?r.name:r.name.substr(o),index:a,bytesCompleted:i.bytesCompleted,percentDone:system.getTorrentProgressBar(l,transmission._status.download),length:r.length,wanted:system.lang.torrent.attribute.status[i.wanted],priority:''+system.lang.torrent.attribute.priority[i.priority]+""})}this.updateCurrentPageDatas("index",n,system.panel.attribute.find("#torrent-files-table"))},fillTorrentServerList:function(t){var e=t.trackerStats,s=new Array;for(var n in e){var o=e[n],a={};for(var r in o)switch(r){case"lastAnnounceTime":case"nextAnnounceTime":a[r]=formatLongTime(o[r]);break;case"lastAnnounceSucceeded":case"lastAnnounceTimedOut":a[r]=system.lang.torrent.attribute.status[o[r]];break;default:a[r]=o[r]}s.push(a)}transmission.torrents.addTracker(t),this.updateCurrentPageDatas("id",s,system.panel.attribute.find("#torrent-servers-table"))},fillTorrentPeersList:function(t){var e=t.peers,s=new Array;for(var n in e){var o=e[n],a={};for(var r in o)a[r]=o[r];var i=parseFloat(100*o.progress).toFixed(2);a.progress=system.getTorrentProgressBar(i,transmission._status.download),s.push(a)}this.updateCurrentPageDatas("address",s,system.panel.attribute.find("#torrent-peers-table"))},fillTorrentConfig:function(t){4==system.panel.attribute.find("#torrent-attribute-tabs").data("selectedIndex")&&transmission.torrents.getConfig(t.id,function(t){if(null!=t){var e=transmission.torrents.all[system.currentTorrentId];jQuery.extend(e,t[0]),0!=system.currentTorrentId&&$.each(t[0],function(t,e){var s=!1,n=!1,o=!1;switch(t){case"seedIdleMode":case"seedRatioMode":0==e&&(n=!1,s=!0),o=!0;case"downloadLimited":case"uploadLimited":1!=e&&1!=e||(n=!0),system.panel.attribute.find("input[enabledof='"+t+"']").prop("disabled",!n),o&&system.panel.attribute.find("#"+t).prop("indeterminate",s).data("_tag",e),system.panel.attribute.find("#"+t).prop("checked",n);break;default:system.panel.attribute.find("#"+t).val(e),system.panel.attribute.find("#"+t).numberspinner("setValue",e)}})}})},setFieldFormat:function(t){if(t.formatter)switch(t.formatter){case"size":t.formatter=function(t,e,s){return formatSize(t)};break;case"speed":t.formatter=function(t,e,s){return formatSize(t,!0,"speed")};break;case"longtime":t.formatter=function(t,e,s){return formatLongTime(t)};break;case"progress":t.formatter=function(t,e,s){var n=parseFloat(100*t).toFixed(2);return system.getTorrentProgressBar(n,transmission.torrents.all[e.id])};break;case"_usename_":switch(t.field){case"name":t.formatter=function(t,e,s){return system.getTorrentNameBar(transmission.torrents.all[e.id])}}break;case"ratio":t.formatter=function(t,e,s){var n="";return parseFloat(t)<1&&(n="text-status-warning"),''+t+""};break;case"remainingTime":t.formatter=function(t,e,s){return t>=31536e8?"∞":getTotalTime(t)};break;case"labels":t.formatter=function(t,e,s){return system.formetTorrentLabels(t,e.hashString)};break;case"color":t.formatter=function(t,e,s){return $("").html(t).css({"background-color":t,color:getGrayLevel(t)>.5?"#000":"#fff"}).get(0).outerHTML}}},reloadData:function(){this.popoverCount>0?setTimeout(function(){system.reloadData()},2e3):(this.reloadSession(),this.reloading=!1,this.getServerStatus(),this.reloading=!1,this.reloadTorrentBaseInfos())},loadFolderList:function(t){this.removeTreeNode("folders-loading");for(var e in t){var s=t[e];s&&system.removeTreeNode(s.nodeid)}0!=transmission.downloadDirs.length&&timedChunk(transmission.downloadDirs,this.appendFolder,this,10,function(){navigator.userAgent.indexOf("Firefox")>0&&system.panel.left.find("span.nav-total-size").css({"margin-top":"-19px"}),system.initUIStatus()})},appendFolder:function(t){if(t){var e="folders",s=e,n=t.replace(/\\/g,"/").split("/"),o=e+"-",a="";for(var r in n){var i=n[r];if(""!=i){a+=i,o+=this.B64.encode(i).replace(/[+|\/|=]/g,"0");var l=this.panel.left.tree("find",o),d=transmission.torrents.folders[o];if(d){var c=i+this.showNodeMoreInfos(d.count,d.size);l?this.updateTreeNodeText(o,c):(this.appendTreeNode(s,[{id:o,path:a,text:c,iconCls:"iconfont tr-icon-file"}]),s!=e&&(l=this.panel.left.tree("find",s),this.panel.left.tree("collapse",l.target))),s=o}else this.debug("appendFolder:key",o),this.debug("appendFolder:name",i),this.debug("appendFolder:node",l)}}}},replaceURI:function(t){return t.replace(/(http|https|ftp):\/\/([^/:]+)(:\d*)?([^# ]*)/gi,function(t){return''+t+""})},readConfig:function(){this.readUserConfig();var t=this.getStorageData(this.configHead+".system");t&&(this.config=$.extend(!0,this.config,JSON.parse(t)));for(var e in this.storageKeys.dictionary)this.dictionary[e]=this.getStorageData(this.storageKeys.dictionary[e])},saveConfig:function(){this.setStorageData(this.configHead+".system",JSON.stringify(this.config));for(var t in this.storageKeys.dictionary)this.setStorageData(this.storageKeys.dictionary[t],this.dictionary[t]);this.saveUserConfig()},readUserConfig:function(){var t=window.localStorage[this.configHead];if(t){var e=JSON.parse(t);this.userConfig=$.extend(!0,this.userConfig,e)}},saveUserConfig:function(){window.localStorage[this.configHead]=JSON.stringify(this.userConfig)},uploadTorrentFile:function(t,e,s,n){if(window.FileReader){var o=$("input[id='"+t+"']")[0].files;$.each(o,function(t,a){transmission.addTorrentFromFile(a,e,s,n,o.length)})}else alert(system.lang.public["text-browsers-not-support-features"])},checkUpdate:function(){$.ajax({url:this.checkUpdateScript,dataType:"json",success:function(t){if(t&&t.tag_name){var e=t.created_at.substr(0,10).replace(/-/g,""),s=t.tag_name;if(-1!=$.inArray(s,system.config.ignoreVersion))return;if(system.codeupdate "+t.name);var n=$(""),o=t.body.replace(/\r\n/g," "),a=$("").appendTo(n);$('').html(t.name+" ("+e+")").appendTo(a).linkbutton(),$("").html(" ").appendTo(a),$('').html(system.lang.public["text-how-to-update"]).appendTo(a).linkbutton(),$("").html(" ").appendTo(a),$("').html(system.lang.public["text-ignore-this-version"]).appendTo(a).linkbutton(),$("").appendTo(n),$("").html(o).appendTo(n),$("#button-download-update").webuiPopover({content:n.html(),backdrop:!0})}else $("#area-update-infos").hide()}}})},addIgnoreVersion:function(t){-1==$.inArray(t,system.config.ignoreVersion)&&(this.config.ignoreVersion.push(t),this.saveConfig()),$("#button-download-update").webuiPopover("hide"),$("#area-update-infos").hide()},changeLanguages:function(t){t!=this.lang.name&&t&&(this.config.defaultLang=t,this.saveConfig(),location.href="?lang="+t)},getStorageData:function(t,e){return null==window.localStorage[t]?e:window.localStorage[t]},setStorageData:function(t,e){window.localStorage[t]=e},openDialogFromTemplate:function(t){if(null!=(t=$.extend(!0,{id:null,options:null,datas:null,type:0},t)).id){var e=t.id,s=t.options,n=t.datas,o=$("#"+e);if(o.length){if(n&&$.each(n,function(t,e){o.data(t,e)}),0==t.type&&o.attr("type")==t.type)return o.dialog("open"),void o.dialog({content:system.templates[e]});if(0!=system.popoverCount)return void setTimeout(function(){system.openDialogFromTemplate(t)},350);o.remove()}var a={title:"",width:100,height:100,resizable:!1,cache:!0,content:system.lang.dialog["system-config"].loading,modal:!0};s=$.extend(!0,a,s),o=$("").attr({id:e,type:t.type}).appendTo(document.body),0==t.type?o.dialog(s):(o.css({width:s.width,height:s.height}).data("popoverSource",t.source),$(t.source).webuiPopover({url:"#"+e,title:s.title,width:s.width,height:s.height-18,padding:!1,onHide:function(s){$(t.source).webuiPopover("destroy"),$("#"+e).remove(),$(s).remove(),system.popoverCount--,t.onClose&&t.onClose(t.source)},onShow:function(){system.popoverCount++}})),$.get(system.rootPath+"template/"+e+".html?time="+new Date,function(s){system.templates[e]=s,n&&$.each(n,function(t,s){$("#"+e).data(t,s)}),0==t.type?$("#"+e).dialog({content:s}):(o.html(s),$.parser.parse("#"+e),$(t.source).webuiPopover("show"))})}},debug:function(t,e){window.console&&window.console.log&&window.console.log(t,e)},initThemes:function(){this.themes&&$("#select-themes").combobox({groupField:"group",data:this.themes,editable:!1,panelHeight:"auto",onChange:function(t){var e=(t+";").split(";"),s=e[0],n=e[1]||"logo.png";$("#styleEasyui").attr("href","tr-web-control/script/easyui/themes/"+s+"/easyui.css"),$("#logo").attr("src","tr-web-control/"+n),system.config.theme=t,system.saveConfig()},onLoadSuccess:function(){$(this).combobox("setValue",system.config.theme||"default")}})},getValidTreeKey:function(t){return t?this.B64.encode(t).replace(/[+|\/|=]/g,"0"):""}};function pagerFilter(t){"number"==typeof t.length&&"function"==typeof t.splice&&(t={total:t.length,rows:t});var e=$(this),s=e.datagrid("options"),n=e.datagrid("getPager"),o=e.data("buttons");n.pagination({onSelectPage:function(o,a){s.pageNumber=o,s.pageSize=a,n.pagination("refresh",{pageNumber:o,pageSize:a}),e.datagrid("loadData",t)},buttons:o}),t.originalRows||(t.originalRows=t.rows);var a=(s.pageNumber-1)*parseInt(s.pageSize),r=a+parseInt(s.pageSize);if(t.rows=t.originalRows.slice(a,r),o&&o.length)for(var i=0;i 不接受换行
+ aux.id = id;
+ aux.style.display = "block";
// Assign it the value of the specified element
- aux.setAttribute("value", text);
+ aux.value = text; // 不能使用 setAttribute
// Append it to the body
document.body.appendChild(aux);
// Highlight its content
@@ -1224,7 +1230,7 @@ var system = {
// Copy the highlighted text
document.execCommand("copy");
// Remove it from the body
- document.body.removeChild(aux);
+ aux.style.display = "none";
},
// Initialize the System Toolbar
initToolbar: function () {