﻿/*****************************
JavaScript Code for CSNTreeMenu
Version: Ver 1.02
Author : Zhonsir
E-Mail : zhongwx@comsites.net
MySite : http://www.ComSites.Net
Passed : XHtml 1.0, CSS 2.0, IE5.0+, FF1.0+, Opera8.5+
Update : 2009-6-12
*****************************/
function Ob(o){
 var o=document.getElementById(o)?document.getElementById(o):o;
 return o;
}
function Hd(o) {
 Ob(o).style.display="none";
}
function Sw(o) {
 Ob(o).style.display="";
}
function ExCls(o,a,b,n){
 var o=Ob(o);
 for(i=0;i<n;i++) {o=o.parentNode;}
 o.className=o.className==a?b:a;
}

function getChildLever(c,pid){
	var lever=0;
	var classType="";
	var o=Ob(c).parentNode;
	var pd=pid||"rootCatalog";
	while (o.id!="rootCatalog"){
		lever++;
		if(o.parentNode.className.indexOf("bottom") != -1){classType="|"+0+classType;}else{classType="|"+1+classType;}
		o=o.parentNode.parentNode;
	}
	return lever+"|"+classType
}

function CSNTreeMenu(id,TagName0) {
  this.id=id;
  this.TagName0=TagName0==""?"li":TagName0;
  this.AllNodes = Ob(this.id).getElementsByTagName(TagName0);
  this.InitCss = function (ClassName0,ClassName1,ClassName2,ClassName3,ClassName4,ClassName5,ImgUrl) {
	  /*argv: "Opened","Closed","leaf","Openedbottom","Closedbottom","leafbottom","css/s.gif" */
	  this.ClassName0=ClassName0||"Opened";
	  this.ClassName1=ClassName1||"Closed";
	  this.ClassName2=ClassName2||"leaf";
	  this.ClassName3=ClassName3||"Openedbottom";
	  this.ClassName4=ClassName4||"Closedbottom";
	  this.ClassName5=ClassName5||"leafbottom";  
	  this.ImgUrl=ImgUrl || "css/s.gif";
	  
	  var imgBlank="<img src=\""+this.ImgUrl+"\" class=\"imgblank\" align=\"absmiddle\" />";
	  var imgLine="<img src=\""+this.ImgUrl+"\" class=\"imgline\" align=\"absmiddle\" />";
  
	  var imgleaf="<img src=\""+this.ImgUrl+"\" class=\"sa\" align=\"absmiddle\" />" + "<img src=\""+this.ImgUrl+"\" class=\"sb\" align=\"absmiddle\" />";
	  
	  var imgfolder="<img src=\""+this.ImgUrl+"\" class=\"sa\" align=\"absmiddle\" onclick=\"ExCls(this,'"+ClassName0+"','"+ClassName1+"',1);\" alt=\"展开/折叠\" />" + "<img src=\""+this.ImgUrl+"\" class=\"sb\" align=\"absmiddle\" onclick=\"ExCls(this,'"+ClassName0+"','"+ClassName1+"',1);\" alt=\"展开/折叠\" />";
	  var imgfolderbottom="<img src=\""+this.ImgUrl+"\" class=\"sa\" align=\"absmiddle\" onclick=\"ExCls(this,'Openedbottom','Closedbottom',1);\" alt=\"展开/折叠\" />"+"<img src=\""+this.ImgUrl+"\" class=\"sb\" align=\"absmiddle\" onclick=\"ExCls(this,'Openedbottom','Closedbottom',1);\" alt=\"展开/折叠\" />";;
	
	  var insertImgLineNum,childLeverStr,insertImgStr;
	  for (i=0;i<this.AllNodes.length;i++ ) {
		this.AllNodes[i].className==""?this.AllNodes[i].className=ClassName1:"";
		insertImgStr="";
		childLeverStr=getChildLever(this.AllNodes[i]);
		insertImgLineNum=childLeverStr.split("||")[0];
		if(insertImgLineNum>0){
			insertImgStr=childLeverStr.split("||")[1].replace(/\|/g, '').replace(/0/g,imgBlank).replace(/1/g,imgLine);
		}
		this.AllNodes[i].innerHTML=insertImgStr+(this.AllNodes[i].className==ClassName2||this.AllNodes[i].className==ClassName5?imgleaf:((this.AllNodes[i].className==ClassName4||this.AllNodes[i].className==ClassName3)?imgfolderbottom:imgfolder))+this.AllNodes[i].innerHTML;
		}
	}
 
	this.SetNodes = function (n) {
		var sClsName=n==0?this.ClassName0:this.ClassName1;
		var bottomsClsName=n==0?this.ClassName3:this.ClassName4;
		for (i=0;i<this.AllNodes.length;i++ ) {
			this.AllNodes[i].className==this.ClassName2||this.AllNodes[i].className==this.ClassName5?"":((this.AllNodes[i].className==this.ClassName0||this.AllNodes[i].className==this.ClassName1)?this.AllNodes[i].className=sClsName:this.AllNodes[i].className=bottomsClsName);
		}
	}

	this.setCatalogSelectedShow = function(selectID,rootCataId,allOpenButtonID,allColseButtonID){
		var o=Ob(selectID).parentNode;
		if(typeof o=="undefined" || o.parentNode.id==rootCataId){
			this.SetNodes(1);Hd(allColseButtonID);Sw(allOpenButtonID);
		}
		else{
			while ( o.parentNode.id==""||o.parentNode.id!=rootCataId){o=o.parentNode.parentNode;if(o.className==this.ClassName3||o.className==this.ClassName4){o.className=this.ClassName3}else{o.className=this.ClassName0}}
		}
	}
	
}

/*
in files
var MyCSNTreeMenu1=new CSNTreeMenu("CSNTreeMenu1","li");
MyCSNTreeMenu1.InitCss("Opened","Closed","leaf","Openedbottom","Closedbottom","leafbottom","css/s.gif");
MyCSNTreeMenu1.setCatalogSelectedShow("currentShow","rootCatalog","AllOpen","AllClose")
*/
