function Node(E,F,A,B,D,C){this.dokuid=E;this.id=F;this.pid=A;this.name=B;this.hns=D;this.ajax=C;this._io=open||false;this._is=false;this._ls=false;this._hc=C;this._ai=0;this._p=false;this._lv=0;this._ok=false;this._cp=false}function dTree(B,D){var C=indexmenu_findExt(D);this.config={urlbase:DOKU_BASE+"doku.php?id=",plugbase:DOKU_BASE+"lib/plugins/indexmenu",useCookies:true,scroll:true,toc:true,maxjs:1,jsajax:"",sepchar:":",theme:D};var A=this.config.plugbase+"/images/"+D+"/";this.icon={root:A+"base."+C,folder:A+"folder."+C,folderH:A+"folderh."+C,folderOpen:A+"folderopen."+C,folderHOpen:A+"folderhopen."+C,node:A+"page."+C,empty:A+"empty."+C,line:A+"line."+C,join:A+"join."+C,joinBottom:A+"joinbottom."+C,plus:A+"plus."+C,plusBottom:A+"plusbottom."+C,minus:A+"minus."+C,minusBottom:A+"minusbottom."+C,nlPlus:A+"nolines_plus."+C,nlMinus:A+"nolines_minus."+C};this.obj=B;this.aNodes=[];this.aIndent=[];this.root=new Node(false,-1);this.selectedNode=null;this.selectedFound=false;this.completed=false;this.scrllTmr=0;this.pageid=window.indexmenu_ID||"";this.fajax=false}dTree.prototype.add=function(E,F,A,B,D,C){this.aNodes[this.aNodes.length]=new Node(E,F,A,B,D,C)};dTree.prototype.openAll=function(){if(!this.getCookie("co"+this.obj)){this.oAll(true)}};dTree.prototype.toString=function(){var B="";if(this.config.scroll){B+='<div id="cdtree_'+this.obj+'" class="dtree" style="position:relative;overflow:hidden;">'}B+='<div id="dtree_'+this.obj+'" class="dtree '+this.config.theme+'" style="overflow:';if(this.config.scroll){B+='visible;position:relative;"'}else{B+='hidden;"'}B+=">";if(this.config.toc){B+='<div id="t'+this.obj+'" class="indexmenu_tocbullet" style="display:none;" title="Table of contents"></div>';B+='<div id="toc_'+this.obj+'" style="display:none;"></div>'}if(document.getElementById){if(this.config.useCookies){this.selectedNode=this.getSelected()}B+=this.addNode(this.root)}else{B+="Browser not supported."}B+="</div>";if(this.config.scroll){B+='<div id="z'+this.obj+'" class="indexmenu_rarrow"></div>';B+='<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:"+this.obj+'.stopscroll();"></div>';B+="</div>"}this.completed=true;var A=$("nojs_"+this.obj);if(A){A.style.display="none"}return B};dTree.prototype.addNode=function(B){var C="";var E;var D=B._ai;var A=B._lv+1;for(D;D<this.aNodes.length;D++){if(this.aNodes[D].pid==B.id){E=this.aNodes[D];E._p=B;E._ai=D;E._lv=A;this.setCS(E);if(E._hc&&!E._io&&this.config.useCookies){E._io=this.isOpen(E.id)}if(this.pageid==(!E.hns&&E.dokuid||E.hns)){E._cp=true}else{if(E.id==this.selectedNode&&!this.selectedFound){E._is=true;this.selectedNode=D;this.selectedFound=true}}C+=this.node(E,D);if(E._ls){break}}}return C};dTree.prototype.node=function(C,E){var B=false;var A="";A+='onmouseover="'+this.obj+".show_feat('"+E+"');\"";if(C._lv>this.config.maxjs){C._io=false;B=true}else{C._ok=true}var D='<div class="dTreeNode">'+this.indent(C,E);C.icon=(this.root.id==C.pid)?this.icon.root:((C._hc)?((C.hns)?this.icon.folderH:this.icon.folder):this.icon.node);C.iconOpen=(C._hc)?((C.hns)?this.icon.folderHOpen:this.icon.folderOpen):this.icon.node;if(this.root.id==C.pid){C.icon=this.icon.root;C.iconOpen=this.icon.root}D+='<img id="i'+this.obj+E+'" src="'+((C._io)?C.iconOpen:C.icon)+'" alt="" />';if(!C._hc||C.hns){D+='<a id="s'+this.obj+E+'" class="'+((C._cp)?"navSel":((C._is)?"nodeSel":(C._hc)?"nodeFdUrl":"nodeUrl"));D+='" href="'+this.config.urlbase;(C.hns)?D+=C.hns:D+=C.dokuid;D+='" title="'+C.name+'"'+A;D+=' onclick="javascript: '+this.obj+".s("+E+');"';D+=">"+C.name+"</a>"}else{if(C.pid!=this.root.id){D+='<a id="s'+this.obj+E+'" href="javascript: '+this.obj+".o("+E+'); " class="node"'+A+">"+C.name.replace("_"," ")+"</a>"}else{D+=C.name}}D+="</div>";if(C._hc){D+='<div id="d'+this.obj+E+'" class="clip" style="display:'+((this.root.id==C.pid||C._io)?"block":"none")+';">';if(!B){D+=this.addNode(C)}D+="</div>"}this.aIndent.pop();return D};dTree.prototype.indent=function(A,C){var B="";if(this.root.id!=A.pid){for(var D=0;D<this.aIndent.length;D++){B+='<img src="'+((this.aIndent[D]==1)?this.icon.line:this.icon.empty)+'" alt="" />'}if(A._ls){this.aIndent.push(0)}else{this.aIndent.push(1)}if(A._hc){B+='<a href="javascript: '+this.obj+".o("+C+');"><img id="j'+this.obj+C+'" src="';B+=((A._io)?((A._ls)?this.icon.minusBottom:this.icon.minus):((A._ls)?this.icon.plusBottom:this.icon.plus));B+='" alt="" /></a>'}else{B+='<img src="'+((A._ls)?this.icon.joinBottom:this.icon.join)+'" alt="" />'}}return B};dTree.prototype.setCS=function(A){var B;for(var C=0;C<this.aNodes.length;C++){if(this.aNodes[C].pid==A.id){A._hc=true}if(this.aNodes[C].pid==A.pid){B=this.aNodes[C].id}}if(B==A.id){A._ls=true}};dTree.prototype.getSelected=function(){var A=this.getCookie("cs"+this.obj);return(A)?A:null};dTree.prototype.s=function(C){var B=this.aNodes[C];if(this.selectedNode!=C){var A=$("s"+this.obj+C);if(!A){return }if(this.selectedNode||this.selectedNode===0){eOld=$("s"+this.obj+this.selectedNode);eOld.className="node"}A.className="nodeSel";this.selectedNode=C;if(this.config.useCookies){this.setCookie("cs"+this.obj,B.id)}}};dTree.prototype.o=function(B){var A=this.aNodes[B];this.nodeStatus(!A._io,B,A._ls);A._io=!A._io;if(this.config.useCookies){this.updateCookie()}$("z"+this.obj).style.display="none";this.resizescroll("block")};dTree.prototype.oAll=function(A){for(var B=0;B<this.aNodes.length;B++){if(this.aNodes[B]._hc&&this.aNodes[B].pid!=this.root.id){this.nodeStatus(A,B,this.aNodes[B]._ls);this.aNodes[B]._io=A}}if(this.config.useCookies){this.updateCookie()}};dTree.prototype.openTo=function(B,A,C){if(!C){for(var E=0;E<this.aNodes.length;E++){if(this.aNodes[E].id==B){B=E;break}}}this.fill(this.aNodes[B].pid);var D=this.aNodes[B];if(D.pid==this.root.id||!D._p){return }D._io=true;D._is=A;if(this.completed&&D._hc){this.nodeStatus(true,D._ai,D._ls)}if(this.completed&&A){this.s(D._ai)}else{if(A){this._sn=D._ai}}this.openTo(D._p._ai,false,true)};dTree.prototype.getOpenTo=function(A){if(A===""){this.openAll()}else{if(!this.config.useCookies||!this.getCookie("co"+this.obj)){var B=A.split(",");for(var C=0;C<B.length;C++){this.openTo(B[C],false,true)}}}};dTree.prototype.nodeStatus=function(B,F,C){if(B&&!this.fill(F)){return }var A=$("d"+this.obj+F);var E=$("j"+this.obj+F);var D=$("i"+this.obj+F);D.src=(B)?this.aNodes[F].iconOpen:this.aNodes[F].icon;E.src=((B)?((C)?this.icon.minusBottom:this.icon.minus):((C)?this.icon.plusBottom:this.icon.plus));A.style.display=(B)?"block":"none"};dTree.prototype.clearCookie=function(){var A=new Date();var B=new Date(A.getTime()-1000*60*60*24);this.setCookie("co"+this.obj,"cookieValue",B);this.setCookie("cs"+this.obj,"cookieValue",B)};dTree.prototype.setCookie=function(F,E,A,D,B,C){document.cookie=escape(F)+"="+escape(E)+(A?"; expires="+A.toGMTString():"")+";path=/"+(B?"; domain="+B:"")+(C?"; secure":"")};dTree.prototype.getCookie=function(E){var D="";var B=document.cookie.indexOf(escape(E)+"=");if(B!=-1){var C=B+(escape(E)+"=").length;var A=document.cookie.indexOf(";",C);if(A!=-1){D=unescape(document.cookie.substring(C,A))}else{D=unescape(document.cookie.substring(C))}}return(D)};dTree.prototype.updateCookie=function(){var A="";for(var B=0;B<this.aNodes.length;B++){if(this.aNodes[B]._io&&this.aNodes[B].pid!=this.root.id){if(A){A+="."}A+=this.aNodes[B].id}}this.setCookie("co"+this.obj,A)};dTree.prototype.isOpen=function(C){var B=this.getCookie("co"+this.obj).split(".");for(var A=0;A<B.length;A++){if(B[A]==C){return true}}return false};dTree.prototype.openCurNS=function(F){var G;var B=false;var C=this.pageid;var A=new RegExp("\\b"+this.config.sepchar+"\\b","g");var H;var E=C.match(A)||-1;if(F>0&&E.length>=F){var I=new Array();I=C.split(this.config.sepchar);I.splice(F,I.length);H=I.join(this.config.sepchar)}for(var D=0;D<this.aNodes.length;D++){G=this.aNodes[D];if(C==G.dokuid||C==G.hns){this.openTo(G.id,false,true);this.fajax=false;break}if(H==G.dokuid||H==G.hns){B=G;this.fajax=true}}if(B){this.openTo(B.id,false,true)}};dTree.prototype.fill=function(G){if(G==-1||this.aNodes[G]._ok){return true}var F=G;if(this.aNodes[F].ajax){var B=$("l"+this.obj);var E=$("s"+this.obj+F);if(!B){B=indexmenu_createPicker("l"+this.obj)}B.innerHTML="Loading ...";$("s"+this.obj+F).parentNode.appendChild(B);B.style.width="auto";B.style.display="inline";this.getAjax(F);return true}var A;var D=[];while(!this.aNodes[F]._ok){D[D.length]=F;F=this.aNodes[F].pid}for(var C=D.length-1;C>=0;C--){G=D[C];A=this.aNodes[G];eDiv=$("d"+this.obj+G);if(!eDiv){return false}this.aIndent=[];F=A;while(F.pid>=0){if(F._ls){this.aIndent.unshift(0)}else{this.aIndent.unshift(1)}F=F._p}eDiv.innerHTML=this.addNode(A);A._ok=true}return true};dTree.prototype.openCookies=function(){var C=this.getCookie("co"+this.obj).split(".");for(var B=0;B<C.length;B++){if(C[B]===""){break}var A=this.aNodes[C[B]];if(!A._ok){this.nodeStatus(true,C[B],A._ls);A._io=true}}};dTree.prototype.scroll=function(C,E,H,D){var B;var F=$("dtree_"+this.obj);var A=parseInt(F.offsetLeft,0);if(C=="r"){$("left_"+this.obj).style.border="thin inset";this.scrollRight(A,E)}else{var G=$("s"+this.obj+H);B=parseInt(F.parentNode.offsetWidth-G.offsetWidth-G.offsetLeft,0);if(this.config.toc){B=B-11}if(A<=B){return }this.resizescroll("none");this.stopscroll();this.scrollLeft(A,E,B-3,D)}};dTree.prototype.scrollLeft=function(E,D,A,C){if(E<A-C-10){if(this.config.scroll){$("z"+this.obj).style.display="none"}this.scrllTmr=0;return }var B=this;$("dtree_"+B.obj).style.left=E+"px";this.scrllTmr=setTimeout(function(){B.scrollLeft(E-D,D+C,A,C)},20)};dTree.prototype.scrollRight=function(C,B){if(C>=B){$("left_"+this.obj).style.display="none";this.stopscroll();return }var A=this;$("dtree_"+A.obj).style.left=C+"px";if(C>-15){B=1}this.scrllTmr=setTimeout(function(){A.scrollRight(C+B,B+1)},20)};dTree.prototype.stopscroll=function(){$("left_"+this.obj).style.border="none";clearTimeout(this.scrllTmr);this.scrllTmr=0};dTree.prototype.show_feat=function(G){var D=$("s"+this.obj+G);var F;var B=this;if(this.config.toc&&D.className!="node"){F=$("t"+this.obj);var E=(this.aNodes[G].hns)?this.aNodes[G].hns:this.aNodes[G].dokuid;F.onmousedown=function(){indexmenu_ajax("req=toc&id="+E,"picker_"+B.obj,$("t"+B.obj))};D.parentNode.appendChild(F);if(F.style.display=="none"){F.style.display="inline"}}if(this.config.scroll){F=$("z"+this.obj);F.onmouseover=function(){F.style.border="none";B.scroll("l",1,G,0)};F.onmousedown=function(){F.style.border="thin inset";B.scroll("l",4,G,1)};F.onmouseout=function(){F.style.border="none";B.stopscroll()};F.onmouseup=F.onmouseover;var C=$("dtree_"+this.obj);var A=parseInt(C.offsetLeft,0);w=parseInt(C.parentNode.offsetWidth-D.offsetWidth-D.offsetLeft+1,0);if(A>w){F.style.display="none";F.style.top=D.offsetTop+"px";F.style.left=parseInt(D.offsetLeft+D.offsetWidth+w-12,0)+"px";F.style.display="block"}}};dTree.prototype.resizescroll=function(B){var E=$("left_"+this.obj);if(!E){return }if(E.style.display==B){var D=$("dtree_"+this.obj);var A=parseInt(D.offsetHeight/3,0);var C=parseInt(A/50,0)*50;if(C<50){C=50}E.style.height=C+"px";E.style.top=A+"px";if(B=="none"){E.style.display="block"}}};dTree.prototype.getAjax=function(n){var selft=this;var node=selft.aNodes[n];var Ajax=new sack(DOKU_BASE+"lib/plugins/indexmenu/ajax.php");var req="req=index&id="+node.dokuid+this.config.jsajax;var curns=this.pageid.substring(0,this.pageid.lastIndexOf(this.config.sepchar));Ajax.encodeURIString=false;Ajax.onCompletion=function(){var ajxnodes;var ajxnode;var plus=selft.aNodes.length-1;eval(this.response);if(ajxnodes){for(var i=0;i<ajxnodes.length;i++){ajxnode=ajxnodes[i];ajxnode[2]=(ajxnode[2]==0)?node.id:ajxnode[2]+plus;ajxnode[1]+=plus;selft.add(ajxnode[0],ajxnode[1],ajxnode[2],ajxnode[3],ajxnode[4],ajxnode[5])}node.ajax=false;if(selft.fajax){selft.fajax=false;selft.openCurNS(0)}else{selft.openTo(node.id,false,true)}$("l"+selft.obj).style.display="none"}};if(this.fajax){req+="&nss="+curns+"&max=1"}Ajax.runAJAX(encodeURI(req))};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.body.appendChild(A)};if(!Array.prototype.push){Array.prototype.push=function array_push(){for(var A=0;A<arguments.length;A++){this[this.length]=arguments[A]}return this.length}}if(!Array.prototype.pop){Array.prototype.pop=function array_pop(){var A=this[this.length-1];this.length=Math.max(this.length-1,0);return A}}

/*----------------------------------------------------|
  | dTree 2.05 | www.destroydrop.com/javascript/tree/ |
  |---------------------------------------------------|
  | Copyright (c) 2002-2003 Geir Landro               |
  |                                                   |
  | This script can be used freely as long as all     |
  | copyright messages are intact.                    |
  |                                                   |
  | Updated: 17.04.2003                               |
  |---------------------------------------------------|
  | Modified for Dokuwiki by                          |
  | Samuele Tognini <samuele@cli.di.unipi.it>         |
  | under GPL 2 license                               |
  | (http://www.gnu.org/licenses/gpl.html)            | 
  | Updated: 11.07.2007                               |
  |---------------------------------------------------|
  | indexmenu  | wiki.splitbrain.org/plugin:indexmenu |
  |--------------------------------------------------*/