// Highlights the selected nodedTree.prototype.s = function(id) { if (!this.config.useSelection) return; var cn = this.aNodes[id]; if (cn._hc && !this.config.folderLinks) return; if (this.selectedNode != id) { if (this.selectedNode || this.selectedNode==0) { eOld = document.getElementById("s" + this.obj + this.selectedNode); eOld.className = "node"; } eNew = document.getElementById("s" + this.obj + id); eNew.className = "nodeSel"; this.selectedNode = id; if (this.config.useCookies) this.setCookie('cs' + this.obj, cn.id); }};// Toggle Open or closedTree.prototype.o = function(id) { var cn = this.aNodes[id]; this.nodeStatus(!cn._io, id, cn._ls); cn._io = !cn._io; if (this.config.closeSameLevel) this.closeLevel(cn); if (this.config.useCookies) this.updateCookie();};//   Open   or   close   all   nodes 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(); }; 
//   Opens   the   tree   to   a   specific   node 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; } } } 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); }; 
//   Closes   all   nodes   on   the   same   level   as   certain   node dTree.prototype.closeLevel   =   function(node)   { for   (var   n=0;   n <this.aNodes.length;   n++)   { if   (this.aNodes[n].pid   ==   node.pid   &&   this.aNodes[n].id   !=   node.id   &&   this.aNodes[n]._hc)   { this.nodeStatus(false,   n,   this.aNodes[n]._ls); this.aNodes[n]._io   =   false; this.closeAllChildren(this.aNodes[n]); } } } 
//   Closes   all   children   of   a   node dTree.prototype.closeAllChildren   =   function(node)   { for   (var   n=0;   n <this.aNodes.length;   n++)   { if   (this.aNodes[n].pid   ==   node.id   &&   this.aNodes[n]._hc)   { if   (this.aNodes[n]._io)   this.nodeStatus(false,   n,   this.aNodes[n]._ls); this.aNodes[n]._io   =   false; this.closeAllChildren(this.aNodes[n]); } } } 
//   Change   the   status   of   a   node(open   or   closed) dTree.prototype.nodeStatus   =   function(status,   id,   bottom)   { eDiv =   document.getElementById('d'   +   this.obj   +   id); eJoin =   document.getElementById('j'   +   this.obj   +   id); if   (this.config.useIcons)   { eIcon =   document.getElementById('i'   +   this.obj   +   id); eIcon.src   =   (status)   ?   this.aNodes[id].iconOpen   :   this.aNodes[id].icon; } eJoin.src   =   (this.config.useLines)? ((status)?((bottom)?this.icon.minusBottom:this.icon.minus):((bottom)?this.icon.plusBottom:this.icon.plus)): ((status)?this.icon.nlMinus:this.icon.nlPlus); eDiv.style.display   =   (status)   ?   'block':   'none'; }; 
//   [Cookie]   Clears   a   cookie 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); }; 
//   [Cookie]   Sets   value   in   a   cookie dTree.prototype.setCookie   =   function(cookieName,   cookieValue,   expires,   path,   domain,   secure)   { document.cookie   = escape(cookieName)   +   '='   +   escape(cookieValue) +   (expires   ?   ';   expires='   +   expires.toGMTString()   :   '') +   (path   ?   ';   path='   +   path   :   '') +   (domain   ?   ';   domain='   +   domain   :   '') +   (secure   ?   ';   secure'   :   ''); }; 
//   [Cookie]   Gets   a   value   from   a   cookie 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); }; 
//   [Cookie]   Returns   ids   of   open   nodes   as   a   string 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); }; 
//   [Cookie]   Checks   if   a   node   id   is   in   a   cookie 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; }; 
//   If   Push   and   pop   is   not   implemented   by   the   browser 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()   { lastElement   =   this[this.length-1]; this.length   =   Math.max(this.length-1,0); return   lastElement; } };