function TreeItem(text,action)
{
 this.text=text; 
 this.action=action; 
 this.children=new Array();
 this.tree=null;
 this.id=""; 
 this.parent=null;
 this.addChild=TreeItem_addChild;
}
function Tree(instanceName,text,action)
{
 this.AUTHOR="liaomingxue";
 this.FILE_IMG="img/file.gif";
 this.FOLDER_IMG="img/fold.gif";
 this.UNFOLD_IMG="img/unfold.gif";
 this.LINE_IMG="img/line.gif";
 this.UPLINE_IMG="img/upline.gif";
 this.MIDDLELINE_IMG="img/middleline.gif";
 this.EMPTY_IMG="img/empty.gif";
 this.VERSIONS="aboutTree/versions.xml";
 this.REFERENCE="aboutTree/class.xml";
 this.name=instanceName;
 this.elementClicked="";
 this.fontHeight=14;
 this.itemHeight=20;
 this.withSelfItem=true;
 this.itemColor="#000000";
 this.itemBackground="#ffffff";
 this.itemOverColor="#ff0000";
 this.selectedItemBackground="#ffffff";
 this.root=new TreeItem(text,action);
 this.root.id="TREEMENU"+"_0";
 this.root.tree=this;
 this.selfItem=new TreeItem("关于我们","");
 this.versionsItem=new TreeItem("版本","");
 this.referenceItem=new TreeItem("合作伙伴","");
 this.findItem=Tree_findItem;
 this.findUnderlines=Tree_findUnderlines;
 this.click=Tree_click;
 this.show=Tree_show;
}
function Tree_findUnderlines(str)
{
 var i,j;
 for(i=0,j=0;i<str.length;i++) if(str.charAt(i)==='_') j++;
 return j;
}
function TreeItem_addChild()
{
 var child;
 var i;
 for(i=0;i<arguments.length;i++)
 {
  child=arguments[i];
  this.children[this.children.length]=child;
  child.id=this.id+"_"+(this.children.length-1);
  child.tree=this.tree;
  child.parent=this;
 }
}
function Tree_show()
{
 var rowStr="<tr height="+this.itemHeight+" style='background:"+this.itemBackground;
 var rowDisplay=rowStr+";display:;'><td nowrap id=";
 var rowHide=rowStr+";display:none;'><td nowrap id=";
 var collapseStr="<img height="+this.itemHeight+" width="+this.itemHeight+" align=absmiddle style='cursor:hand;' onclick='"+this.name+".click(this.parentNode.id);' src='";
 var collapseStr1=collapseStr+this.UNFOLD_IMG+"'>";
 var collapseStr2=collapseStr+this.FOLDER_IMG+"'>";//没有连接URL
 var collapseStr3=collapseStr+this.FILE_IMG+"'>";//有连接URL
 var actionStr="<a onmouseover='this.style.color=\""+this.itemOverColor+"\";' "+
           "onmouseout='this.style.color=\""+this.itemColor+"\";' "+
    "style='color:"+this.itemColor+";cursor:hand;font-family:times new roman;font-size:"+
     (this.fontHeight)+"px;' onclick='"+this.name+".click(this.parentNode.id);'>";
 var indentStr="<img align=absmiddle width="+this.itemHeight+" height="+this.itemHeight+" src='";
 var indentStrLine=indentStr+this.LINE_IMG+"'>";
 var indentStrEmpty=indentStr+this.EMPTY_IMG+"'>";
 var indentStrUpLine=indentStr+this.UPLINE_IMG+"'>";
 var indentStrMiddleLine=indentStr+this.MIDDLELINE_IMG+"'>";
 var temp="";
 var n,i,top,stack,parent,chain=new Array(),tail;

 //this.root.addChild(this.selfItem);
 //this.selfItem.addChild(this.versionsItem,this.referenceItem);
 document.write("<table cellspacing=0 cellpadding=0  style='table-layout:fixed;'>");
 stack=new Array(); 
 stack[0]=this.root;
 while(stack.length>0)
 { 
  top=stack[stack.length-1];
  stack.length--;
  n=this.findUnderlines(top.id);
  if(n<3)  temp=rowDisplay+top.id+">";
  else  temp=rowHide+top.id+">";
  chain.length=0;
  tail=top;
  while(tail!=null) {chain[chain.length]=tail;tail=tail.parent;}
  for(i=chain.length-1;i>=2;i--)
  {
      if(chain[i-1].id!=chain[i].children[chain[i].children.length-1].id)
         temp+=indentStrLine;
      else
         temp+=indentStrEmpty;
  }
  if(n>1 && top.id==top.parent.children[top.parent.children.length-1].id)
         temp+=indentStrUpLine;
  else if(n>1)
         temp+=indentStrMiddleLine;
 
  if(top.children.length>0)
  if(n==1)temp+=collapseStr1;
  else
  {
	  temp+=collapseStr2;
	  //alert(top.id)
	  //this.name.click();
	  //alert(top.lastChild.previousSibling.src)
	  //Tree_click(top.id);
  }
  else temp+=collapseStr3;
  temp+=(actionStr+top.text+"</a></td></tr>");
  for(i=top.children.length-1;i>=0;i--) stack[stack.length]=top.children[i];
  document.write(temp);
 }
 document.write("</table>");
 var root=this.root;
 var item=root;
 var i;
 for(i=root.children.length-1;i>0;i--)
 {
  item=root.children[i];
  if(item.children.length!=0)
  {
    document.all(item.id).lastChild.previousSibling.click();
  }
 }
 
}




function Tree_click(itemID)
{
 var length;
 var e=window.event.srcElement;
 var item=this.findItem(itemID);
 if((e.tagName.toLowerCase()=="a")&&(item.action!="")) 
 {
	 eval(item.action);
 }
 else if((e.tagName.toLowerCase()=="a")&&(item.action==""))
 {
	 if(document.all(itemID).lastChild.previousSibling.src.indexOf(this.FOLDER_IMG)>=0)
	 {
    document.all(itemID).lastChild.previousSibling.src=this.UNFOLD_IMG;
    var stack=new Array();
    length=item.children.length;
    for(i=length-1;i>=0;i--)stack[stack.length]=item.children[i];
    var top;
    while(stack.length>0)
    {
     top=stack[stack.length-1];stack.length--;
     document.all(top.id).parentNode.style.display="";
     if(top.children.length>0 && document.all(top.id).lastChild.previousSibling.src.indexOf(this.UNFOLD_IMG)>=0)
        for(i=top.children.length-1;i>=0;i--)stack[stack.length]=top.children[i];
    }   
	 }
	 else
	 {
    document.all(itemID).lastChild.previousSibling.src=this.FOLDER_IMG;
    var stack=new Array();
    for(i=item.children.length-1;i>=0;i--)
     stack[stack.length]=item.children[i];
    var top;
    while(stack.length>0)
    {
     top=stack[stack.length-1];stack.length--;
     document.all(top.id).parentNode.style.display="none";
     for(i=top.children.length-1;i>=0;i--) stack[stack.length]=top.children[i];
    }             
		 
	 }
 }
 else
 {  
  var i,s;
  if(item.children.length>0)
  {
   if(e.src.indexOf(this.FOLDER_IMG)>=0)
   {
    e.src=this.UNFOLD_IMG;
    var stack=new Array();
    length=item.children.length;
    for(i=length-1;i>=0;i--)stack[stack.length]=item.children[i];
    var top;
    while(stack.length>0)
    {
     top=stack[stack.length-1];stack.length--;
     document.all(top.id).parentNode.style.display="";
     if(top.children.length>0 && document.all(top.id).lastChild.previousSibling.src.indexOf(this.UNFOLD_IMG)>=0)
        for(i=top.children.length-1;i>=0;i--)stack[stack.length]=top.children[i];
    }             
   }
   else
   {
    e.src=this.FOLDER_IMG;
    var stack=new Array();
    for(i=item.children.length-1;i>=0;i--)
     stack[stack.length]=item.children[i];
    var top;
    while(stack.length>0)
    {
     top=stack[stack.length-1];stack.length--;
     document.all(top.id).parentNode.style.display="none";
     for(i=top.children.length-1;i>=0;i--) stack[stack.length]=top.children[i];
    }             
   }
  } 
 }
 if(this.elementClicked.length!=0)
  document.all(this.elementClicked).lastChild.style.background=this.itemBackground;
 this.elementClicked=itemID; 
 document.all(this.elementClicked).lastChild.style.background=this.selectedItemBackground;
}
function Tree_findItem(id)
{
 var root=this.root;
 var item=root;
 if(item.id==id) return item;
 
 var i;
 for(i=0;i<root.children.length;i++)
 {
  item=root.children[i];
  if(item.id==id) return item;
  if(this.findUnderlines(item.id)>this.findUnderlines(id)) return null;
  if(id.indexOf(item.id)==0 && id.charAt(item.id.length)=='_')
  {
   i=-1;root=item;
  }
 }
 return null;
}
