1/*----------------------------------------------------|
2  | dTree 2.05 | www.destroydrop.com/javascript/tree/ |
3  |---------------------------------------------------|
4  | Copyright (c) 2002-2003 Geir Landro               |
5  |                                                   |
6  | This script can be used freely as long as all     |
7  | copyright messages are intact.                    |
8  |                                                   |
9  | Updated: 17.04.2003                               |
10  |---------------------------------------------------|
11  | Modified for Dokuwiki by                          |
12  | Samuele Tognini <samuele@netsons.org>             |
13  | under GPL 2 license                               |
14  | (http://www.gnu.org/licenses/gpl.html)            |
15  | Updated: 29.08.2009                               |
16  |---------------------------------------------------|
17  | Modified for Dokuwiki by                          |
18  | Rene Hadler <rene.hadler@iteas.at>                |
19  | under GPL 2 license                               |
20  | (http://www.gnu.org/licenses/gpl.html)            |
21  | Updated: 07.08.2012                               |
22  |---------------------------------------------------|
23  | tindexmenu | https://bitbucket.org/iteas/tindexmenu/ |
24  |--------------------------------------------------*/
25function Node(a,c,b,d,e,f,g){this.dokuid=a;this.id=c;this.pid=b;this.name=d;this.hns=e;this.isdir=f;this.ajax=g;this._io=0;this._ls=this._is=!1;this._hc=g;this._ai=0;this._p=!1;this._lv=0;this._cp=this._ok=!1}
26function dTree(a,c){var b=indexmenu_findExt(c);this.config={urlbase:DOKU_BASE+"doku.php?id=",plugbase:DOKU_BASE+"lib/plugins/indexmenu",useCookies:!0,scroll:!0,toc:!0,maxjs:1,jsajax:"",sepchar:":",theme:c};var d=this.config.plugbase+"/images/"+c+"/";this.icon={root:d+"base."+b,folder:d+"folder."+b,folderH:d+"folderh."+b,folderOpen:d+"folderopen."+b,folderHOpen:d+"folderhopen."+b,node:d+"page."+b,empty:d+"empty."+b,line:d+"line."+b,join:d+"join."+b,joinBottom:d+"joinbottom."+b,plus:d+"plus."+b,plusBottom:d+
27"plusbottom."+b,minus:d+"minus."+b,minusBottom:d+"minusbottom."+b,nlPlus:d+"nolines_plus."+b,nlMinus:d+"nolines_minus."+b};this.obj=a;this.aNodes=[];this.aIndent=[];this.root=new Node(!1,-1);this.selectedNode=null;this.completed=this.selectedFound=!1;this.scrllTmr=0;this.pageid=window.indexmenu_ID||"";this.fajax=!1}dTree.prototype.add=function(a,c,b,d,e,f,g){this.aNodes[this.aNodes.length]=new Node(a,c,b,d,e,f,g)};dTree.prototype.openAll=function(){this.getCookie("co"+this.obj)||this.oAll(!0)};
28dTree.prototype.toString=function(){var a="";this.config.scroll&&(a+='<div id="cdtree_'+this.obj+'" class="dtree" style="position:relative;overflow:hidden;width:100%;">');a+='<div id="dtree_'+this.obj+'" class="dtree '+this.config.theme+'" style="overflow:';a=this.config.scroll?a+'visible;position:relative;width:100%"':a+'hidden;"';a+=">";jQuery("#dtree_"+this.obj)[0]&&(a+='<div class="error">Indexmenu id conflict</div>');this.config.toc&&(a+='<div id="t'+this.obj+'" class="indexmenu_tocbullet '+
29this.config.theme+'" style="display:none;" title="Table of contents"></div>',a+='<div id="toc_'+this.obj+'" style="display:none;"></div>');this.config.useCookies&&(this.selectedNode=this.getSelected());a+=this.addNode(this.root)+"</div>";this.config.scroll&&(a+='<div id="z'+this.obj+'" class="indexmenu_rarrow"></div>',a+='<div id="left_'+this.obj+'" class="indexmenu_larrow" style="display:none;" title="Click to scroll back" onmousedown="javascript:'+this.obj+".scroll('r',1);\" onmouseup=\"javascript:"+
30this.obj+'.stopscroll();"></div>',a+="</div>");this.completed=!0;this.divdisplay("nojs_",0);return a};
31dTree.prototype.addNode=function(a){var c="",b,d=a._ai,e=a._lv+1;for(d;d<this.aNodes.length&&!(this.aNodes[d].pid==a.id&&(b=this.aNodes[d],b._p=a,b._ai=d,b._lv=e,this.setCS(b),b._hc&&(!b._io&&this.config.useCookies)&&(b._io=this.isOpen(b.id)),this.pageid==(!b.hns&&b.dokuid||b.hns)?b._cp=!0:b.id==this.selectedNode&&!this.selectedFound&&(b._is=!0,this.selectedNode=d,this.selectedFound=!0),!b._hc&&b.isdir&&!b.ajax&&!b.hns?b._ls&&(c+=this.noderr(b,d)):c+=this.node(b,d),b._ls));d++);return c};
32dTree.prototype.noderr=function(a,c){var b='<div class="dTreeNode">'+this.indent(a,c);return b+'<div class="emptynode" title="Empty"></div></div>'};
33dTree.prototype.node=function(a,c){var b=1,d,e;d='onmouseover="'+this.obj+".show_feat('"+c+"');\" onmousedown=\"return indexmenu_checkcontextm('"+c+"',"+this.obj+',event);" oncontextmenu="return indexmenu_stopevt(event)"';a._lv>this.config.maxjs?b=0:a._ok=!0;e='<div class="dTreeNode">'+this.indent(a,c);a.icon=this.root.id==a.pid?this.icon.root:a.hns?this.icon.folderH:a._hc?this.icon.folder:this.icon.node;a.iconOpen=a._hc?a.hns?this.icon.folderHOpen:this.icon.folderOpen:this.icon.node;this.root.id==
34a.pid&&(a.icon=this.icon.root,a.iconOpen=this.icon.root);e+='<img id="i'+this.obj+c+'" src="'+(a._io?a.iconOpen:a.icon)+'" alt="" />';!a._hc||a.hns?(e+='<a id="s'+this.obj+c+'" class="'+(a._cp?"navSel":a._is?"nodeSel":a._hc?"nodeFdUrl":"nodeUrl"),e+='" href="'+this.config.urlbase,a.hns?e+=a.hns:e+=a.dokuid,e+='" title="'+a.name+'"'+d,e+=' onclick="javascript: '+this.obj+".s("+c+');"',e+=">"+a.name+"</a>"):e=a.pid!=this.root.id?e+('<a id="s'+this.obj+c+'" href="javascript: '+this.obj+".o("+c+'); " class="node"'+
35d+">"+a.name+"</a>"):e+a.name;e+="</div>";a._hc&&(e+='<div id="d'+this.obj+c+'" class="clip" style="display:'+(this.root.id==a.pid||a._io?"block":"none")+';">',b&&(e+=this.addNode(a)),e+="</div>");this.aIndent.pop();return e};
36dTree.prototype.indent=function(a,c){var b,d="";if(this.root.id!=a.pid){for(b=0;b<this.aIndent.length;b++)d+='<img src="'+(1==this.aIndent[b]?this.icon.line:this.icon.empty)+'" alt="" />';a._ls?this.aIndent.push(0):this.aIndent.push(1);a._hc?(d+='<a href="javascript: '+this.obj+".o("+c+');"><img id="j'+this.obj+c+'" src="',d+=a._io?a._ls?this.icon.minusBottom:this.icon.minus:a._ls?this.icon.plusBottom:this.icon.plus,d+='" alt="" /></a>'):d+='<img src="'+(a._ls?this.icon.joinBottom:this.icon.join)+
37'" alt="" />'}return d};dTree.prototype.setCS=function(a){var c,b;for(b=0;b<this.aNodes.length;b++)if(this.aNodes[b].pid==a.id&&(a._hc=!0),this.aNodes[b].pid==a.pid)c=this.aNodes[b].id;c==a.id&&(a._ls=!0)};dTree.prototype.getSelected=function(){var a=this.getCookie("cs"+this.obj);return a?a:null};
38dTree.prototype.s=function(a){var c,b,d=this.aNodes[a];if(this.selectedNode!=a&&(b=$("s"+this.obj+a))){if(this.selectedNode||0===this.selectedNode)c=$("s"+this.obj+this.selectedNode),c.className="node";b.className="nodeSel";this.selectedNode=a;this.config.useCookies&&this.setCookie("cs"+this.obj,d.id)}};dTree.prototype.o=function(a){var c=this.aNodes[a];this.nodeStatus(!c._io,a,c._ls);c._io=!c._io;this.config.useCookies&&this.updateCookie();this.divdisplay("z",0);this.resizescroll("block")};
39dTree.prototype.oAll=function(a){for(var c=0;c<this.aNodes.length;c++)this.aNodes[c]._hc&&this.aNodes[c].pid!=this.root.id&&(this.nodeStatus(a,c,this.aNodes[c]._ls),this.aNodes[c]._io=a);this.config.useCookies&&this.updateCookie()};
40dTree.prototype.openTo=function(a,c,b){if(!b)for(c=0;c<this.aNodes.length;c++)if(this.aNodes[c].id==a){a=c;break}this.fill(this.aNodes[a].pid);a=this.aNodes[a];a.pid!=this.root.id&&a._p&&(a._io=1,this.completed&&a._hc&&this.nodeStatus(!0,a._ai,a._ls),a._is&&(this.completed?this.s(a._ai):this._sn=a._ai),this.openTo(a._p._ai,!1,!0))};
41dTree.prototype.getOpenTo=function(a){if(""===a)this.openAll();else if(!this.config.useCookies||!this.getCookie("co"+this.obj))for(var c=0;c<a.length;c++)this.openTo(a[c],!1,!0)};dTree.prototype.nodeStatus=function(a,c,b){if(!a||this.fill(c)){var d;d=jQuery("#j"+this.obj+c)[0];jQuery("#i"+this.obj+c)[0].src=a?this.aNodes[c].iconOpen:this.aNodes[c].icon;d.src=a?b?this.icon.minusBottom:this.icon.minus:b?this.icon.plusBottom:this.icon.plus;jQuery("#d"+this.obj+c)[0].style.display=a?"block":"none"}};
42dTree.prototype.clearCookie=function(){var a;a=new Date((new Date).getTime()-864E5);this.setCookie("co"+this.obj,"cookieValue",a);this.setCookie("cs"+this.obj,"cookieValue",a)};dTree.prototype.setCookie=function(a,c,b,d,e,f){document.cookie=escape(a)+"="+escape(c)+(b?"; expires="+b.toGMTString():"")+";path=/"+(e?"; domain="+e:"")+(f?"; secure":"")};
43dTree.prototype.getCookie=function(a){var c="",b;b=document.cookie.indexOf(escape(a)+"=");-1!=b&&(a=b+(escape(a)+"=").length,c=document.cookie.indexOf(";",a),c=-1!=c?unescape(document.cookie.substring(a,c)):unescape(document.cookie.substring(a)));return c};dTree.prototype.updateCookie=function(){var a="",c;for(c=0;c<this.aNodes.length;c++)this.aNodes[c]._io&&this.aNodes[c].pid!=this.root.id&&(a&&(a+="."),a+=this.aNodes[c].id);this.setCookie("co"+this.obj,a)};
44dTree.prototype.isOpen=function(a){var c,b=this.getCookie("co"+this.obj).split(".");for(c=0;c<b.length;c++)if(b[c]==a)return!0;return!1};
45dTree.prototype.openCurNS=function(a){var c,b,d,e=this.pageid;c=e.match(RegExp("\\b"+this.config.sepchar+"\\b","g"))||-1;0<a&&c.length>=a&&(b=e.split(this.config.sepchar),c=""==this.aNodes[0].dokuid?0:this.aNodes[0].dokuid.split(this.config.sepchar).length,b.splice(a+c,b.length),b=b.join(this.config.sepchar));for(c=0;c<this.aNodes.length;c++){a=this.aNodes[c];if(e==a.dokuid||e==a.hns){this.openTo(a.id,!1,!0);this.fajax=!1;0<=a.pid&&jQuery(this.scroll("l",4,a.pid,1));break}if(b==a.dokuid||b==a.hns)d=
46a,this.fajax=!0}d&&this.openTo(d.id,!1,!0)};
47dTree.prototype.fill=function(a){if(-1==a||this.aNodes[a]._ok)return!0;var c,b,d,e;if(this.aNodes[a].ajax)return c=$("l"+this.obj),$("s"+this.obj+a),c||(c=indexmenu_createPicker("l"+this.obj)),c.innerHTML="Loading ...",$("s"+this.obj+a).parentNode.appendChild(c),c.style.width="auto",c.style.display="inline",this.getAjax(a),!0;for(b=[];!this.aNodes[a]._ok;)b[b.length]=a,a=this.aNodes[a].pid;for(d=b.length-1;0<=d;d--){a=b[d];c=this.aNodes[a];e=jQuery("#d"+this.obj+a)[0];if(!e)return!1;this.aIndent=
48[];for(a=c;0<=a.pid;)a._ls?this.aIndent.unshift(0):this.aIndent.unshift(1),a=a._p;e.innerHTML=this.addNode(c);c._ok=!0}return!0};dTree.prototype.openCookies=function(){var a,c,b=this.getCookie("co"+this.obj).split(".");for(a=0;a<b.length&&""!==b[a];a++)c=this.aNodes[b[a]],c._ok||(this.nodeStatus(!0,b[a],c._ls),c._io=1)};
49dTree.prototype.scroll=function(a,c,b,d){if(!this.config.scroll)return!1;var e,f;e=jQuery("#dtree_"+this.obj)[0];f=parseInt(e.offsetLeft,0);"r"==a?($("left_"+this.obj).style.border="thin inset",this.scrollRight(f,c)):(a=jQuery("#s"+this.obj+b)[0],e=parseInt(e.parentNode.offsetWidth-a.offsetWidth-a.offsetLeft,0),this.config.toc&&(e-=11),f<=e||(this.resizescroll("none"),this.stopscroll(),this.scrollLeft(f,c,e-3,d)))};
50dTree.prototype.scrollLeft=function(a,c,b,d){if(a<b-d-10)this.divdisplay("z",0),this.scrllTmr=0;else{var e=this;$("dtree_"+e.obj).style.left=a+"px";this.scrllTmr=setTimeout(function(){e.scrollLeft(a-c,c+d,b,d)},20)}};dTree.prototype.scrollRight=function(a,c){if(a>=c)this.divdisplay("left_",0),this.stopscroll();else{var b=this;$("dtree_"+b.obj).style.left=a+"px";-15<a&&(c=1);this.scrllTmr=setTimeout(function(){b.scrollRight(a+c,c+1)},20)}};
51dTree.prototype.stopscroll=function(){$("left_"+this.obj).style.border="none";clearTimeout(this.scrllTmr);this.scrllTmr=0};
52dTree.prototype.show_feat=function(a){var c,b,d,e,f,g=jQuery("#s"+this.obj+a)[0];f=this;this.config.toc&&"node"!=g.className&&(b=jQuery("#t"+this.obj)[0],d=this.aNodes[a].hns?this.aNodes[a].hns:this.aNodes[a].dokuid,b.onmousedown=function(){indexmenu_createTocMenu("req=toc&id="+decodeURIComponent(d),"picker_"+f.obj,"t"+f.obj)},g.parentNode.appendChild(b),"none"==b.style.display&&(b.style.display="inline"));this.config.scroll&&(b=jQuery("#z"+this.obj)[0],b.onmouseover=function(){b.style.border="none";
53f.scroll("l",1,a,0)},b.onmousedown=function(){b.style.border="thin inset";f.scroll("l",4,a,1)},b.onmouseout=function(){b.style.border="none";f.stopscroll()},b.onmouseup=b.onmouseover,c=jQuery("#dtree_"+this.obj)[0],e=parseInt(c.offsetLeft,0),c=parseInt(c.parentNode.offsetWidth-g.offsetWidth-g.offsetLeft+1,0),e>c&&(b.style.display="none",b.style.top=g.offsetTop+"px",b.style.left=parseInt(g.offsetLeft+g.offsetWidth+c-12,0)+"px",b.style.display="block"))};
54dTree.prototype.resizescroll=function(a){var c,b,d=jQuery("#left_"+this.obj)[0];d&&d.style.display==a&&(c=$("dtree_"+this.obj),c=parseInt(c.offsetHeight/3,0),b=50*parseInt(c/50,0),50>b&&(b=50),d.style.height=b+"px",d.style.top=c+"px","none"==a&&(d.style.display="block"))};
55dTree.prototype.getAjax=function(a){var c,b,d=this;c=d.aNodes[a];var e=new sack(DOKU_BASE+"lib/plugins/indexmenu/ajax.php"),a="req=index&idx="+c.dokuid+decodeURIComponent(this.config.jsajax);b=this.pageid.substring(0,this.pageid.lastIndexOf(this.config.sepchar));e.encodeURIString=!1;e.onCompletion=function(){var a,b,e,i;i=d.aNodes.length-1;eval(this.response);if(!isArray(b)||1>b.length)b=[["",1,0,"",0,1,0]];c.ajax=!1;for(a=0;a<b.length;a++)e=b[a],e[2]=0==e[2]?c.id:e[2]+i,e[1]+=i,d.add(e[0],e[1],e[2],
56e[3],e[4],e[5],e[6]);d.fajax?(d.fajax=!1,d.openCurNS(0)):d.openTo(c.id,!1,!0);$("l"+d.obj).style.display="none"};this.fajax&&(a+="&nss="+b+"&max=1");e.encodeURIString=!1;e.runAJAX(encodeURI(a))};dTree.prototype.loadCss=function(){var a=document.createElement("link");a.href=this.config.plugbase+"/images/"+this.config.theme+"/style.css";a.rel="stylesheet";a.type="text/css";document.getElementsByTagName("head")[0].appendChild(a)};
57dTree.prototype.contextmenu=function(a,c){var b,d,e,f,g,h;$("cdtree_"+this.obj);g=$("r"+this.obj);if(!g)return!0;indexmenu_mouseposition(g,c);f=window.indexmenu_contextmenu[0];e=this.aNodes[a];g.innerHTML='<div class="indexmenu_rmenuhead" title="'+e.name+'">'+e.name+"</div>";for(h=0;h<f.length;h++,h++,h++,h++)(!e._hc||e.hns)&&!f[h+2]||e._hc&&!e.hns&&!f[h+3]||(d=f[h],f[h+1]?(b="li",d='<a title="'+f[h]+'" href="'+eval(f[h+1])+'">'+d+"</a>"):(b="span",g.appendChild(document.createElement("ul"))),b=document.createElement(b),
58b.innerHTML=d,g.lastChild.appendChild(b));g.style.display="inline";return!1};dTree.prototype.divdisplay=function(a,c){var b=jQuery("#"+a+this.obj)[0];if(!b)return!1;c?b.style.display="inline":b.style.display="none"};
59dTree.prototype.init=function(a,c,b,d,e){a&&this.loadCss();c||this.openCookies();b&&this.getOpenTo(b.split(" "));d&&this.openCurNS(e);if(window.indexmenu_contextmenu){var f=this;indexmenu_createPicker("r"+this.obj,"indexmenu_rmenu "+this.config.theme);jQuery("#r"+this.obj)[0].oncontextmenu=indexmenu_stopevt;jQuery(document).click(function(){f.divdisplay("r",0)})}};Array.prototype.push||(Array.prototype.push=function(){for(var a=0;a<arguments.length;a++)this[this.length]=arguments[a];return this.length});
60Array.prototype.pop||(Array.prototype.pop=function(){var a=this[this.length-1];this.length=Math.max(this.length-1,0);return a});
61