/*----------------------------------------------------|
  | 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 |
  |--------------------------------------------------*/ function Node(dokuid,id,pid,name,hns,ajax){this.dokuid=dokuid;this.id=id;this.pid=pid;this.name=name;this.hns=hns;this.ajax=ajax;this._io=open||false;this._is=false;this._ls=false;this._hc=ajax;this._ai=0;this._p=false;this._lv=0;this._ok=false;this._cp=false;}function dTree(objName,theme){var objExt=indexmenu_findExt(theme);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:theme};var objImg=this.config.plugbase+'/images/'+theme+'/';this.icon={root:objImg+'base.'+objExt,folder:objImg+'folder.'+objExt,folderH:objImg+'folderh.'+objExt,folderOpen:objImg+'folderopen.'+objExt,folderHOpen:objImg+'folderhopen.'+objExt,node:objImg+'page.'+objExt,empty:objImg+'empty.'+objExt,line:objImg+'line.'+objExt,join:objImg+'join.'+objExt,joinBottom:objImg+'joinbottom.'+objExt,plus:objImg+'plus.'+objExt,plusBottom:objImg+'plusbottom.'+objExt,minus:objImg+'minus.'+objExt,minusBottom:objImg+'minusbottom.'+objExt,nlPlus:objImg+'nolines_plus.'+objExt,nlMinus:objImg+'nolines_minus.'+objExt};this.obj=objName;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(dokuid,id,pid,name,hns,ajax){this.aNodes[this.aNodes.length]=new Node(dokuid,id,pid,name,hns,ajax);};dTree.prototype.openAll=function(){if(!this.getCookie('co'+this.obj)){this.oAll(true);}};dTree.prototype.toString=function(){var str='';if(this.config.scroll){str+='<div id="cdtree_'+this.obj+'" class="dtree" style="position:relative;overflow:hidden;width:100%;">';}str+='<div id="dtree_'+this.obj+'" class="dtree '+this.config.theme+'" style="overflow:';if(this.config.scroll){str+='visible;position:relative;width:100%"';}else{str+='hidden;"';}str+='>';if(this.config.toc){str+='<div id="t'+this.obj+'" class="indexmenu_tocbullet" style="display:none;" title="Table of contents"></div>';str+='<div id="toc_'+this.obj+'" style="display:none;"></div>';}if(document.getElementById){if(this.config.useCookies){this.selectedNode=this.getSelected();}str+=this.addNode(this.root);}else{str+='Browser not supported.';}str+='</div>';if(this.config.scroll){str+='<div id="z'+this.obj+'" class="indexmenu_rarrow"></div>';str+='<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>';str+='</div>';}this.completed=true;var nojs=$('nojs_'+this.obj);if(nojs){nojs.style.display="none";}return str;};dTree.prototype.addNode=function(pNode){var str='';var cn;var n=pNode._ai;var l=pNode._lv+1;for(n;n<this.aNodes.length;n++){if(this.aNodes[n].pid==pNode.id){cn=this.aNodes[n];cn._p=pNode;cn._ai=n;cn._lv=l;this.setCS(cn);if(cn._hc&&!cn._io&&this.config.useCookies){cn._io=this.isOpen(cn.id);}if(this.pageid==(!cn.hns&&cn.dokuid||cn.hns)){cn._cp=true;}else if(cn.id==this.selectedNode&&!this.selectedFound){cn._is=true;this.selectedNode=n;this.selectedFound=true;}str+=this.node(cn,n);if(cn._ls){break;}}}return str;};dTree.prototype.node=function(node,nodeId){var h=false;var jsfnc='';jsfnc+='onmouseover="'+this.obj+'.show_feat(\''+nodeId+'\');"';if(node._lv>this.config.maxjs){node._io=false;h=true;}else{node._ok=true;}var str='<div class="dTreeNode">'+this.indent(node,nodeId);node.icon=(this.root.id==node.pid)?this.icon.root:((node._hc)?((node.hns)?this.icon.folderH:this.icon.folder):this.icon.node);node.iconOpen=(node._hc)?((node.hns)?this.icon.folderHOpen:this.icon.folderOpen):this.icon.node;if(this.root.id==node.pid){node.icon=this.icon.root;node.iconOpen=this.icon.root;}str+='<img id="i'+this.obj+nodeId+'" src="'+((node._io)?node.iconOpen:node.icon)+'" alt="" />';if(!node._hc||node.hns){str+='<a id="s'+this.obj+nodeId+'" class="'+((node._cp)?'navSel':((node._is)?'nodeSel':(node._hc)?'nodeFdUrl':'nodeUrl'));str+='" href="'+this.config.urlbase;(node.hns)?str+=node.hns:str+=node.dokuid;str+='" title="'+node.name+'"'+jsfnc;str+=' onclick="javascript: '+this.obj+'.s('+nodeId+');"';str+='>'+node.name+'</a>';}else if(node.pid!=this.root.id){str+='<a id="s'+this.obj+nodeId+'" href="javascript: '+this.obj+'.o('+nodeId+'); " class="node"'+jsfnc+'>'+node.name+'</a>';}else{str+=node.name;}str+='</div>';if(node._hc){str+='<div id="d'+this.obj+nodeId+'" class="clip" style="display:'+((this.root.id==node.pid||node._io)?'block':'none')+';">';if(!h){str+=this.addNode(node);}str+='</div>';}this.aIndent.pop();return str;};dTree.prototype.indent=function(node,nodeId){var str='';if(this.root.id!=node.pid){for(var n=0;n<this.aIndent.length;n++){str+='<img src="'+((this.aIndent[n]==1)?this.icon.line:this.icon.empty)+'" alt="" />';}if(node._ls){this.aIndent.push(0);}else{this.aIndent.push(1);}if(node._hc){str+='<a href="javascript: '+this.obj+'.o('+nodeId+');"><img id="j'+this.obj+nodeId+'" src="';str+=((node._io)?((node._ls)?this.icon.minusBottom:this.icon.minus):((node._ls)?this.icon.plusBottom:this.icon.plus));str+='" alt="" /></a>';}else{str+='<img src="'+((node._ls)?this.icon.joinBottom:this.icon.join)+'" alt="" />';}}return str;};dTree.prototype.setCS=function(node){var lastId;for(var n=0;n<this.aNodes.length;n++){if(this.aNodes[n].pid==node.id){node._hc=true;}if(this.aNodes[n].pid==node.pid){lastId=this.aNodes[n].id;}}if(lastId==node.id){node._ls=true;}};dTree.prototype.getSelected=function(){var sn=this.getCookie('cs'+this.obj);return(sn)?sn:null;};dTree.prototype.s=function(id){var cn=this.aNodes[id];if(this.selectedNode!=id){var eNew=$("s"+this.obj+id);if(!eNew){return;}if(this.selectedNode||this.selectedNode===0){eOld=$("s"+this.obj+this.selectedNode);eOld.className="node";}eNew.className="nodeSel";this.selectedNode=id;if(this.config.useCookies){this.setCookie('cs'+this.obj,cn.id);}}};dTree.prototype.o=function(id){var cn=this.aNodes[id];this.nodeStatus(!cn._io,id,cn._ls);cn._io=!cn._io;if(this.config.useCookies){this.updateCookie();}$('z'+this.obj).style.display="none";this.resizescroll("block");};dTree.prototype.oAll=function(status){for(var n=0;n<this.aNodes.length;n++){if(this.aNodes[n]._hc&&this.aNodes[n].pid!=this.root.id){this.nodeStatus(status,n,this.aNodes[n]._ls);this.aNodes[n]._io=status;}}if(this.config.useCookies){this.updateCookie();}};dTree.prototype.openTo=function(nId,bSelect,bFirst){if(!bFirst){for(var n=0;n<this.aNodes.length;n++){if(this.aNodes[n].id==nId){nId=n;break;}}}this.fill(this.aNodes[nId].pid);var cn=this.aNodes[nId];if(cn.pid==this.root.id||!cn._p){return;}cn._io=true;cn._is=bSelect;if(this.completed&&cn._hc){this.nodeStatus(true,cn._ai,cn._ls);}if(this.completed&&bSelect){this.s(cn._ai);}else if(bSelect){this._sn=cn._ai;}this.openTo(cn._p._ai,false,true);};dTree.prototype.getOpenTo=function(nodes){if(nodes===''){this.openAll();}else if(!this.config.useCookies||!this.getCookie('co'+this.obj)){var anodes=nodes.split(',');for(var n=0;n<anodes.length;n++){this.openTo(anodes[n],false,true);}}};dTree.prototype.nodeStatus=function(status,id,bottom){if(status&&!this.fill(id)){return;}var eDiv=$('d'+this.obj+id);var eJoin=$('j'+this.obj+id);var eIcon=$('i'+this.obj+id);eIcon.src=(status)?this.aNodes[id].iconOpen:this.aNodes[id].icon;eJoin.src=((status)?((bottom)?this.icon.minusBottom:this.icon.minus):((bottom)?this.icon.plusBottom:this.icon.plus));eDiv.style.display=(status)?'block':'none';};dTree.prototype.clearCookie=function(){var now=new Date();var yesterday=new Date(now.getTime()-1000*60*60*24);this.setCookie('co'+this.obj,'cookieValue',yesterday);this.setCookie('cs'+this.obj,'cookieValue',yesterday);};dTree.prototype.setCookie=function(cookieName,cookieValue,expires,path,domain,secure){document.cookie=escape(cookieName)+'='+escape(cookieValue)+(expires?'; expires='+expires.toGMTString():'')+';path=/'+(domain?'; domain='+domain:'')+(secure?'; secure':'');};dTree.prototype.getCookie=function(cookieName){var cookieValue='';var posName=document.cookie.indexOf(escape(cookieName)+'=');if(posName!=-1){var posValue=posName+(escape(cookieName)+'=').length;var endPos=document.cookie.indexOf(';',posValue);if(endPos!=-1){cookieValue=unescape(document.cookie.substring(posValue,endPos));}else{cookieValue=unescape(document.cookie.substring(posValue));}}return(cookieValue);};dTree.prototype.updateCookie=function(){var str='';for(var n=0;n<this.aNodes.length;n++){if(this.aNodes[n]._io&&this.aNodes[n].pid!=this.root.id){if(str){str+='.';}str+=this.aNodes[n].id;}}this.setCookie('co'+this.obj,str);};dTree.prototype.isOpen=function(id){var aOpen=this.getCookie('co'+this.obj).split('.');for(var n=0;n<aOpen.length;n++){if(aOpen[n]==id){return true;}}return false;};dTree.prototype.openCurNS=function(max){var cn;var cna=false;var cns=this.pageid;var r=new RegExp("\\b"+this.config.sepchar+"\\b","g");var cnsa;var match=cns.match(r)||-1;if(max>0&&match.length>=max){var t=new Array();t=cns.split(this.config.sepchar);t.splice(max,t.length);cnsa=t.join(this.config.sepchar);}for(var i=0;i<this.aNodes.length;i++){cn=this.aNodes[i];if(cns==cn.dokuid||cns==cn.hns){this.openTo(cn.id,false,true);this.fajax=false;break;}if(cnsa==cn.dokuid||cnsa==cn.hns){cna=cn;this.fajax=true;}}if(cna){this.openTo(cna.id,false,true);}};dTree.prototype.fill=function(id){if(id==-1||this.aNodes[id]._ok){return true;}var n=id;if(this.aNodes[n].ajax){var eLoad=$('l'+this.obj);var node=$('s'+this.obj+n);if(!eLoad){eLoad=indexmenu_createPicker('l'+this.obj);}eLoad.innerHTML='Loading ...';$('s'+this.obj+n).parentNode.appendChild(eLoad);eLoad.style.width='auto';eLoad.style.display='inline';this.getAjax(n);return true;}var a;var rd=[];while(!this.aNodes[n]._ok){rd[rd.length]=n;n=this.aNodes[n].pid;}for(var ln=rd.length-1;ln>=0;ln--){id=rd[ln];a=this.aNodes[id];eDiv=$('d'+this.obj+id);if(!eDiv){return false;}this.aIndent=[];n=a;while(n.pid>=0){if(n._ls){this.aIndent.unshift(0);}else{this.aIndent.unshift(1);}n=n._p;}eDiv.innerHTML=this.addNode(a);a._ok=true;}return true;};dTree.prototype.openCookies=function(){var aOpen=this.getCookie('co'+this.obj).split('.');for(var n=0;n<aOpen.length;n++){if(aOpen[n]===""){break;}var cn=this.aNodes[aOpen[n]];if(!cn._ok){this.nodeStatus(true,aOpen[n],cn._ls);cn._io=true;}}};dTree.prototype.scroll=function(where,s,n,i){var w;var dtree=$('dtree_'+this.obj);var dtreel=parseInt(dtree.offsetLeft,0);if(where=="r"){$('left_'+this.obj).style.border="thin inset";this.scrollRight(dtreel,s);}else{var nodeId=$('s'+this.obj+n);w=parseInt(dtree.parentNode.offsetWidth-nodeId.offsetWidth-nodeId.offsetLeft,0);if(this.config.toc){w=w-11;}if(dtreel<=w){return;}this.resizescroll("none");this.stopscroll();this.scrollLeft(dtreel,s,w-3,i);}};dTree.prototype.scrollLeft=function(lft,s,w,i){if(lft<w-i-10){if(this.config.scroll){$('z'+this.obj).style.display="none";}this.scrllTmr=0;return;}var self=this;$('dtree_'+self.obj).style.left=lft+"px";this.scrllTmr=setTimeout(function(){self.scrollLeft(lft-s,s+i,w,i);},20);};dTree.prototype.scrollRight=function(lft,s){if(lft>=s){$('left_'+this.obj).style.display="none";this.stopscroll();return;}var self=this;$('dtree_'+self.obj).style.left=lft+"px";if(lft>-15){s=1;}this.scrllTmr=setTimeout(function(){self.scrollRight(lft+s,s+1);},20);};dTree.prototype.stopscroll=function(){$('left_'+this.obj).style.border="none";clearTimeout(this.scrllTmr);this.scrllTmr=0;};dTree.prototype.show_feat=function(n){var node=$('s'+this.obj+n);var div;var self=this;if(this.config.toc&&node.className!="node"){div=$('t'+this.obj);var id=(this.aNodes[n].hns)?this.aNodes[n].hns:this.aNodes[n].dokuid;div.onmousedown=function(){indexmenu_ajax('req=toc&id='+id,'picker_'+self.obj,$('t'+self.obj));};node.parentNode.appendChild(div);if(div.style.display=="none"){div.style.display="inline";}}if(this.config.scroll){div=$('z'+this.obj);div.onmouseover=function(){div.style.border="none";self.scroll("l",1,n,0);};div.onmousedown=function(){div.style.border="thin inset";self.scroll("l",4,n,1);};div.onmouseout=function(){div.style.border="none";self.stopscroll();};div.onmouseup=div.onmouseover;var dtree=$('dtree_'+this.obj);var dtreel=parseInt(dtree.offsetLeft,0);w=parseInt(dtree.parentNode.offsetWidth-node.offsetWidth-node.offsetLeft+1,0);if(dtreel>w){div.style.display="none";div.style.top=node.offsetTop+"px";div.style.left=parseInt(node.offsetLeft+node.offsetWidth+w-12,0)+"px";div.style.display="block";}}};dTree.prototype.resizescroll=function(status){var left=$('left_'+this.obj);if(!left){return;}if(left.style.display==status){var dtree=$('dtree_'+this.obj);var w=parseInt(dtree.offsetHeight/3,0);var h=parseInt(w/50,0)*50;if(h<50){h=50;}left.style.height=h+"px";left.style.top=w+"px";if(status=="none"){left.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 oLink=document.createElement("link");oLink.href=this.config.plugbase+'/images/'+this.config.theme+'/style.css';oLink.rel="stylesheet";oLink.type="text/css";document.body.appendChild(oLink);};if(!Array.prototype.push){Array.prototype.push=function array_push(){for(var i=0;i<arguments.length;i++){this[this.length]=arguments[i];}return this.length;};}if(!Array.prototype.pop){Array.prototype.pop=function array_pop(){var lastElement=this[this.length-1];this.length=Math.max(this.length-1,0);return lastElement;};}
