var treeCfg={
	imgRoot:"",
	hrefRoot:"",
	topImgUrl:"",
	nodeList:null,
	nodeListVar:null,
	loadState:"",//"finish",""
	waitCount:0,
	switchElem:null,
	highLightPath:null
}

function getNodeHtml(nodeList,htmlList){
	for(var i=0;i<nodeList.length;i++){
		if(!nodeList[i]) continue;
		var hasSubNode=nodeList[i].nodeList&&nodeList[i].nodeList.length>0;
		htmlList.push("<div class='menutitle' id='treeNode");
		htmlList.push(nodeList[i].id);
		htmlList.push("' ");
		if(hasSubNode) htmlList.push(" onClick='switchMenu(this)' ");
		htmlList.push(">");
		if(hasSubNode){
		  htmlList.push("<img id='nodeImg' border=0 src='");
		  htmlList.push(treeCfg.imgRoot);
		  htmlList.push(nodeList[i].open?"/-.gif'/>":"/+.gif'/>");
	  }else{
	  	htmlList.push("&nbsp;&nbsp;&nbsp;&nbsp;");
	  }
		if(hasHref(nodeList[i])){
			htmlList.push("<a onFocus='this.blur()' href='");
			htmlList.push(nodeList[i].href?nodeList[i].href:(treeCfg.hrefRoot+"/forum.jsp?fid="+nodeList[i].id));
			htmlList.push("' ");
			if(nodeList[i].target=="_blank"){
				htmlList.push("style='color:#FFFF33' target='");
				htmlList.push(nodeList[i].target);
				htmlList.push("'");
			}
			htmlList.push(" >");
		}
		htmlList.push(nodeList[i].name);
		if(hasHref(nodeList[i])){
			htmlList.push("</a>");
		}
		htmlList.push("</div>");
		if(hasSubNode){
      putSubNode(nodeList[i].nodeList,htmlList,true,nodeList[i].open);
		}
	}
}

function putSubNode(nodeList,htmlList,addSpan,isOpen){
		htmlList.push("<div id='masterdiv' style='display:");
		htmlList.push(isOpen?"block":"none");
		htmlList.push("'>");
		if(addSpan){
			htmlList.push("<span class='submenu' style='display:block;margin:0px'>");
		}else{//为旧的全网css做的特殊处理
			htmlList.push("<div class='subNodeDiv'>");
			//htmlList.push("<div style='padding-left:20px;'>");
		}
		for(var j=0;j<nodeList.length;j++){
			var node=nodeList[j];
			if(!node) continue;
			var hasSubNode=node.nodeList&&node.nodeList.length>0;
			htmlList.push("<div style=height:22px");
			if(hasSubNode) htmlList.push(" onClick='switchMenu(this)' style='width:500px'");
		  htmlList.push(">");
		  htmlList.push("<img id='subNodeImg' border=0 src='");
			htmlList.push(treeCfg.imgRoot);
		  if(hasSubNode&&!node.open){
			  htmlList.push("/new_open.gif'/>");
		  }else{
			  htmlList.push("/new_close.gif'/>");
		  }
			if(hasHref(node)){
				htmlList.push("<a id='treeNode");
				htmlList.push(node.id);
				htmlList.push("' onFocus='this.blur()' href='");
				htmlList.push(node.href?node.href:(treeCfg.hrefRoot+"/forum.jsp?fid="+node.id));
				htmlList.push("' ");
				if(node.target=="_blank"){
					htmlList.push("target='");
					htmlList.push(node.target);
					htmlList.push("'");
				}
				htmlList.push(" >");
			}
			htmlList.push(node.name);
			if(hasHref(node)){
				htmlList.push("</a>");
			}
			if(node.tailHtml){
				htmlList.push(node.tailHtml);
			}
			htmlList.push("</div>");
			if(hasSubNode){
	      putSubNode(node.nodeList,htmlList,false,node.isOpen);
			}
		}
		if(addSpan){
			htmlList.push("</span>");
		}else{
			htmlList.push("</div>");
		}
		htmlList.push("</div>");
}

function hasHref(node){
	return !node.noHref;
}

function switchMenu(elem){
	if(treeCfg.loadState!="finish"){
		treeCfg.switchElem=elem;
		return;
	}else if(!elem){
		elem=treeCfg.switchElem;
	}
	if(typeof  elem == "string"){
		elem=document.getElementById("treeNode"+elem);
		if(elem==null) return;
	}
	var sibling=elem.nextSibling;
	var img=elem.childNodes[0];
	var isSubNode=(img.id=="subNodeImg");
	if(sibling.style.display=="none"){
		sibling.style.display="block";
		img.src=isSubNode?treeCfg.imgRoot+"/new_close.gif":treeCfg.imgRoot+"/-.gif";
	}else{
		sibling.style.display="none";
		img.src=isSubNode?treeCfg.imgRoot+"/new_open.gif":treeCfg.imgRoot+"/+.gif";
	}
}

function getCookieValue(name)
{
    var mycookie = document.cookie; 
		var start = mycookie.indexOf(name + "=");
		if (start != -1){
			start=mycookie.indexOf("=",start)+1; 
			var end = mycookie.indexOf(";",start);
			if (end==-1)
		  {
			   end=mycookie.length;
			}
			var value=unescape(mycookie.substring(start,end));
			return value;
	 }
}


function highLight(path){
	if(treeCfg.loadState!="finish"){
		treeCfg.highLightPath=path;
		return;
	}else if(!path){
		path=treeCfg.highLightPath;
	}
	var list=path.replace("null","").split("/");
	var elment;
	for(var i=list.length-1;i>-1;i--){
		if(list[i]!=""){
			 elment=document.getElementById("treeNode"+list[i]);
			 if(elment!=null){
			 	 break;
			 }
		}
	}
	if(elment!=null){
		if(elment.tagName=="A"){
			elment.className = 'forum_highlight';
			elment=elment.parentNode;
			while(elment&&elment.tagName=="DIV"){
				if(elment.nextSibling&&elment.nextSibling.style.display=="none"&&elment.onclick){
					elment.onclick();
				}
				elment=elment.parentNode;
				if(elment){
					elment=elment.parentNode;
				}
				if(elment){
					elment=elment.previousSibling;
				}
			}
		}else{
			var list=elment.childNodes;
			for(var i=0;i<list.length;i++){
				if(list[i].tagName=="A"){
				  list[i].className = 'forum_highlight';
			  }
			}
			if(elment.onclick){
				elment.onclick();
			}
		}
	}
}

function treeControlClick(elem){
	var stl = document.getElementById("mainPanelDiv").style;
	var toHide = elem.id=='treeControlHideDiv';
	stl.marginLeft= (toHide?'11px':'175px');
	document.getElementById("divForumTree").style.display = (toHide?'none':'');
	if(toHide){
		elem.style.display="none";
		document.getElementById("treeControlShowDiv").style.display="";
		document.cookie='hideForumTree=true;path=/; expires=Fri, 31 Dec 9999 23:59:59 GMT';
	}else{
		elem.style.display="none";
		document.getElementById("treeControlHideDiv").style.display="";
		document.cookie='hideForumTree=false;path=/; expires=Fri, 31 Dec 9999 23:59:59 GMT';
	}
	return false;
}

function displayTree(list,topImgUrl,imgRoot,hrefRoot,nodeListVar){
	if(treeCfg.waitCount==0){//采集参数
		treeCfg.topImgUrl=topImgUrl;
		treeCfg.imgRoot=imgRoot;
		treeCfg.hrefRoot=hrefRoot;
		treeCfg.nodeList=list;
		treeCfg.nodeListVar=nodeListVar;
	}
	if(treeCfg.nodeList==null&&treeCfg.waitCount<10&&treeCfg.nodeListVar){//如果nodeList还没生成，并且有定义获取方法，则试图等待获取nodeList
		treeCfg.nodeList=eval(treeCfg.nodeListVar);
		if(treeCfg.nodeList==null){
			if(treeCfg.waitCount==0){
				document.write('<div id="treeOuterDiv"></div><div id="mainPanelDiv">');
			}
			treeCfg.waitCount++;
			setTimeout("displayTree();",500);
			return;
		}
	}
	if(treeCfg.nodeList==null){
		treeCfg.nodeList=[];
	}
	var htmlList=new Array();
	htmlList.push("<div id='divForumTree'>");
	htmlList.push('<table width="161" border="0" cellpadding="0" cellspacing="0"><tr><td height="78">');//为了兼容前面的css，此处仍然使用table
	if(treeCfg.topImgUrl&&treeCfg.topImgUrl!=""){
		htmlList.push('<a href=http://bbs.zgbfw.com><img src="');
		htmlList.push(treeCfg.topImgUrl);
		htmlList.push('" border="0" /></a>');
	}
	htmlList.push('</td></tr></table>');
	getNodeHtml(treeCfg.nodeList,htmlList);
	htmlList.push('</div><div id="treeControlHideDiv" class="treeControl" style="background-image: url( ');
	htmlList.push(treeCfg.imgRoot);
	htmlList.push('/hide2.gif );" onclick="treeControlClick(this)"></div>');
	htmlList.push('<div id="treeControlShowDiv" class="treeControl" style="display:none;background-image: url( ');
	htmlList.push(treeCfg.imgRoot);
	htmlList.push('/show2.gif );" onclick="treeControlClick(this)"></div>');
	
	var outerDiv=document.getElementById("treeOuterDiv");
	if(outerDiv==null){
		document.write('<div id="treeOuterDiv">'+htmlList.join("")+'</div><div id="mainPanelDiv">');
	}else{
		outerDiv.innerHTML=htmlList.join("");
	}
	
	treeCfg.loadState="finish";
	if(treeCfg.switchElem!=null){
		switchMenu();
	}
	if(treeCfg.highLightPath!=null){
		highLight();
	}
	var toHide=getCookieValue("hideForumTree");
	if(toHide&&toHide=="true"){
		treeControlClick(document.getElementById("treeControlHideDiv"));
	}
}
