﻿// JScript File
   if(typeof ajaxTreeNode =="undefined"){
             //ID,值，优先级,父ID
             function ajaxTreeNode(keyId,keyValue,pIdx,keyPri,isTop){
                    this.keyId=keyId ;
                    this.keyValue=keyValue ;
                    this.keyPri=keyPri ;
                    this.pIdx=pIdx;
                    this.IsTop=isTop ;
                    this.pLevel=0;
                    this.pNode=null ;
                    this.pState=1;//当前状态 0：展开，1：收起---------------------默认值为1
                    this.subs=new Array ();                   
             }   
    }
    Array.prototype.sort= function(cb)      
    {      
       for(var i=0;i<this.length;i++)
         for(var j=i+1;j<this.length;j++){
             var r=cb(this[i],this[j]);
             if(r>0){
                  var tmp=this[i];
                  this[i]=this[j];
                  this[j]=tmp;
             }  
         }
    }
    if(typeof ajaxTreeView=="undefined"){
             function ajaxTreeView(ownerId,dirId,sortOrder,dirType,selectedNodeId){
                  this.Owner=ownerId ;
                  this.RootDirId=dirId ;
                  this.SortDirection=sortOrder ;
                  this.DirType=dirType ;
                  this.SelectedId=selectedNodeId;
                  this.RootTreeNode=new Array ();
                  this.DirData="";
                  this.Container=false ;
                  this.FetchDataOver=false ;
                  this.RenderOk=false ;
                  this.tmp=new Array ();
                  var  cTh=this;
                
                  this.createHttp=function () {
                        var http=false ;
                        if(typeof ActiveXObject !="undefined"){
                            try
                            {
                                http=new ActiveXObject("Msxml2.XMLHTTP");
                            }
                            catch(e)
                            {
                                try
                                {
                                    http=new ActiveXObject("Microsoft.XMLHTTP");
                                }
                                catch(E)
                                {
                                    http=false ;
                                }
                            }
                        } else if(XMLHttpRequest ){
                               try
                               {
                                   http=new XMLHttpRequest();
                               }
                               catch(e)
                               {
                                   http=false ;
                               }
                        }
                        return http ;
                    
                 }
                 this.init=function(){
                     var xmlHttp=cTh.createHttp();
                     if(!xmlHttp )
                        return ;
                     var url="DatumDirGet.aspx?Arg=kb" ;
                     xmlHttp.open("GET",url ,true );
                     xmlHttp.onreadystatechange=function (){
                          if(xmlHttp.readyState==4){
                             if(xmlHttp.status==200){
                                     cTh.DirData =xmlHttp.responseText;
                                     {//生成树
                                       try{
                                            var rows=cTh.DirData.split(";");
                                            var i=rows.length;
                                            for(var j=0;j<i;j++){
                                                var dir=rows[j].split(",");
                                                var cd=new ajaxTreeNode(dir[0], dir[1],dir[2],dir[3],dir[4]);
                                                cTh.addTreeNode(cd);
                                            }
                                            if(cTh.SortDirection =="asc"){
                                                cTh.RootTreeNode.sort(cTh.ascSortCallback );
                                            } else {
                                                cTh.RootTreeNode.sort(cTh.descSortCallback );
                                            }
                                            for(var i=0;i<cTh.RootTreeNode.length;i++){
                                                   cTh.createTree(cTh.RootTreeNode[i]);
                                            }
                                        } catch(e){}
                                     }
                                     
                                  
                                     cTh.FetchDataOver =true ;
                                     cTh.render();
                             }   
                          }  
                     }
                     xmlHttp.send(null );
                 }
                    //排序
                 this.ascSortCallback=function(x,y){
                        return x.keyPri-y.keyPri
                 }
                 this.descSortCallback=function(x,y){
                       return  y.keyPri-x.keyPri
                 }
                 
                 this.addTreeNode=function(treeNode){
                         if(treeNode.IsTop==1){
                            var b=false ;
                            for(var i=0;i<cTh.RootTreeNode.length ;i++){
                                if(cTh.RootTreeNode[i].keyId==treeNode.keyId){
                                    b=true;
                                    break;
                                }
                            }
                            if(!b){ 
                                    cTh.RootTreeNode.push(treeNode ); 
                            }
                         } else {
                             var find=false ;
                             for(var i=0;i<cTh.tmp.length ;i++){
                                  if(cTh.tmp[i].keyId==treeNode.keyId){
                                      find =true ;
                                      break;
                                  }
                             }
                             if(!find){
                                     cTh.tmp.push(treeNode);
                             }
                         }
                  }
                  this.getTreeNode=function(treeNode,idx){
                          //根据ID查找当前ID。
                          var cn;
                          if(treeNode.keyId==idx)                               
                                 cn= treeNode ;
                          else 
                               for(var i=0;i<treeNode.subs.length;i++){
                                 cn= cTh.getTreeNode(treeNode.subs[i],idx);
                                 if(cn)
                                    break;
                               }
                          return cn ;
                  }
                  this.close=function(treeNode){
                        
                        treeNode.pState=1;
                        for(var i=0;i<treeNode.subs.length;i++){
                            cTh.close(treeNode.subs[i]);
                        }
                  }
                  this.expand=function(treeNode){
                        treeNode.pState=0;
                        var cxp=treeNode.pNode;
                        while(cxp !=null){  
                            cxp.pState=0;
                            cxp =cxp.pNode;
                        }
                  }
                 
                 this.render=function(){
                        
                        if(cTh.Container ==false  ||   cTh.FetchDataOver ==false  ){
                             //   alert("loading  unOver");
                                return ;
                        }
                        if(cTh.RenderOk )  return ;
                        cTh.RenderOk =true ;
                        if(cTh.SelectedId!=0){
                                var selectedNode;
                                if(cTh.SelectedId<0){
                                      for(var i=0;i<cTh.RootTreeNode.length;i++){
                                        if(cTh.RootTreeNode[i].keyId==cTh.SelectedId){
                                           selectedNode=cTh.RootTreeNode[i];
                                           break;
                                        }
                                     }
                                    
                                } else {
                                     for(var i=0;i<cTh.RootTreeNode.length;i++){
                                        if(!selectedNode){
                                            selectedNode=cTh.getTreeNode(cTh.RootTreeNode[i],cTh.SelectedId);
                                            if(selectedNode)
                                            break;
                                       }
                                     }
                                }
                                if(selectedNode){
                                     cTh.expand(selectedNode);
                                }
                        }
                        for(var i=0;i<cTh.RootTreeNode.length;i++){
                               cTh.clientShow(cTh.RootTreeNode[i]);
                        }
                        
                        
                  }
                  this.getSubs=function(treeNode){
                         var subs=new Array ();
                         for(var i=0;i<cTh.tmp.length;i ++){
                              if(cTh.tmp[i].pIdx==treeNode.keyId){
                                     subs.push(cTh.tmp[i]);
                              }
                         }
                        if(cTh.SortDirection =="asc"){
                           subs.sort(cTh.ascSortCallback );
                        } else {
                           subs.sort(cTh.descSortCallback );
                        }
                        return subs ;
                  }
                  this.createTree=function(treeNode){
                        var subs=cTh.getSubs(treeNode);
                        for(var i=0;i<subs.length;i++){
                             subs[i].pNode=treeNode ;
                             subs[i].pLevel=treeNode.pLevel+1;
                             treeNode.subs.push(subs[i]); 
                             cTh.createTree(subs[i]);
                        }                      
                  }
                  this.clientSub=function(treeNode,divContainerId){
                       var dv=document.createElement("div");
                       dv.setAttribute(window.attachEvent ? "className":"class","v"+treeNode.pLevel);
                    
                       if(treeNode.subs.length>0)
                       {
                            var btn=document.createElement("img");
                            btn.setAttribute("idx",treeNode.keyId);
                                if(treeNode.pState==0){
                                      btn.setAttribute("src","../image/collaps_sub.gif");
                                } else {
                                     btn.setAttribute("src","../image/expand_sub.gif");
                                }
                           btn.setAttribute(window.attachEvent ? "className":"class","img1");
                           if(window.attachEvent){
                                btn.attachEvent("onclick",cTh.onClick );
                           } else {
                                btn.addEventListener("click",cTh.onClick,false);
                           }
                           dv.appendChild(btn);
                       }else {
                           var hack=document.createElement("img");
                           hack.setAttribute("src","../image/leave.gif");
                           dv.appendChild(hack);
                        }
                       {
                             var ahref=document.createElement("a");
                                 ahref.setAttribute("href","/kb/i"+treeNode.keyId+".htm");
                             //SelectedNode
                             if(treeNode.keyId==cTh.SelectedId){
                                 ahref.setAttribute(window.attachEvent ? "className":"class","SelectedNode");
                             } else {
                                 ahref.setAttribute(window.attachEvent ? "className":"class","UnSelectedNode");
                             }
                             ahref.setAttribute("title",treeNode.keyValue);
                             ahref.appendChild(document.createTextNode(treeNode.keyValue));
                             dv.appendChild(ahref );
                       }
                       divContainerId.appendChild(dv);
                       if(treeNode.pState==0){
                                   //----------------展开
                               for(var i=0;i<treeNode.subs.length;i++){
                                   cTh.clientSub(treeNode.subs[i],divContainerId);
                               }
                       } 
                  }
                 
                  this.clientShow=function (treeNode){
                        var rootDiv=document.createElement("div");
                        rootDiv.setAttribute(window.attachEvent ? "className":"class","DirRoot");
                        if(treeNode.subs.length>0)
                        {       
                                var btn=document.createElement("img");
                                btn.setAttribute("idx",treeNode.keyId);
                                if(treeNode.pState==0){
                                      btn.setAttribute("src","../image/collaps.gif");
                                } else {
                                     btn.setAttribute("src","../image/expand.gif");
                                }
                               btn.setAttribute(window.attachEvent ? "className":"class","img1");    
                               if(window.attachEvent){
                                   btn.attachEvent("onclick",cTh.onClick );
                               } else {
                                    btn.addEventListener("click",cTh.onClick,false);
                               }
                               rootDiv.appendChild(btn);
                        }  
                        {
                            var ahref=document.createElement("a");
                            ahref.setAttribute("href","/kb/top1_i"+treeNode.keyId*-1+".htm");
                            if(ahref.attachEvent){
                                 ahref.attachEvent("onclick",cTh.onClick);
                            }  else {
                                 ahref.addEventListener("click",cTh.onClick,false);
                            }
                            if(treeNode.keyId==cTh.SelectedId){
                                 ahref.setAttribute(window.attachEvent ? "className":"class","SelectedNode");
                             } else {
                                 ahref.setAttribute(window.attachEvent ? "className":"class","UnSelectedNode");
                             }
                            ahref.appendChild(document.createTextNode(treeNode.keyValue));
                            rootDiv.appendChild(ahref);
                        }
                        document.getElementById(cTh.Owner).appendChild(rootDiv);
                        if(treeNode.pState==0 && treeNode.subs.length>0){
                            var subDiv=document.createElement("div");
                            subDiv.setAttribute(window.attachEvent ? "className":"class","leftNav");
                            for(var i=0;i<treeNode.subs.length;i++){
                                cTh.clientSub(treeNode.subs[i],subDiv);
                            }
                            document.getElementById(cTh.Owner).appendChild(subDiv);
                        }
                        
                  }  

                 
                  this.onClick=function(evt){
                        var dirId;
                        if(window.event){
                           dirId=window.event.srcElement["idx"];
                        } else {
                           dirId=evt.target.attributes[0].nodeValue;
                        }
                        if(!dirId ){
                          //alert("DirID="+dirId);
                           return ;
                        }
                           var ct;
                           var bFind=false;
                       for(var i=0;i<cTh.RootTreeNode.length ;i++){
                          ct=cTh.getTreeNode(cTh.RootTreeNode[i],dirId );
                          if(ct){
                             bFind=true;
                             break;
                          }
                       }
                       if(!bFind){
                          //alert("NotFound");
                          return;
                       }
                       if(ct.pState==1){
                          cTh.expand(ct);
                       }  else {
                          cTh.close(ct );
                       }
                       
                       var lc=document.getElementById(cTh.Owner).childNodes.length ;
                       for(var  i=lc -1;i>=0;i--){
                           document.getElementById(cTh.Owner).removeChild(document.getElementById(cTh.Owner).childNodes[i]);
                       }
                       for(var i=0;i<cTh.RootTreeNode.length;i++){
                               cTh.clientShow(cTh.RootTreeNode[i]);
                       }
                  }
                  this.onContainerLoad=function(){
                          cTh.Container=true ;
                          cTh.render();
                  }
                  
             }
    }
 
