// JavaScript Document
/* 基于ehm要求的头部导航
//-----------------------------------------------------------------------------
//	topNav 1.0  |  create it for EHM WCM 4-5 2007-12-11
//-----------------------------------------------------------------------------
//struct：							 	  |-obj1
navlist--|-----topnavOn-|-----pcid		  |-obj1
		 |				|-----responseObj-|-obj1					（被响应的页面对象）
		 |.....			|-----cnode-|-----cid						（子频道id）
		 |....			|[栏目下级]	|-----clink						（频道连接）
		 |...			|			|-----ctopic					（频道名称）
		 |..			|			|-----css1						（原始样式）
		 |.				|			|-----css2						（鼠标触发样式）
		 |.				|.....{其他扩展属性}			
//-----------------------------------------------------------------------------
//	Copyright (c) 2007-12-11 ehm zhangchao
//-----------------------------------------------------------------------------
*/

function $$(id)
{
	if(document.getElementById(id))
	{return document.getElementById(id);}
	else{return null}
}

function nav_ON_min(cid,pcid,topic,links,images)//初级封装数据
{
this.cid = cid;
this.pcid = pcid;
this.topic = topic;
this.links = links;
this.images = images;
this.son = [];
}

function databuilder(pcid) 
{
var arrs = channelStr.split(";");
var temparr = [] ;
var arrson = [] ;

	for(var arrs_index=0;arrs_index<arrs.length;arrs_index++)
	{
	temparr = arrs[arrs_index].split(",");
	if(temparr[1]==pcid)
	{
	arrson[arrson.length] = new nav_ON_min(temparr[0],temparr[1],temparr[2],temparr[3],temparr[4]);
	}
	}
	arrs = null
	temparr=null
	return arrson;

}

function webrootbean(id,rootname)//站点的bean
{this.id=id;
this.rootname =rootname;}

function topnavOn(pcid,cid,clink,ctopic,css1,css2,responseObj)//下拉菜单的bean
{
this.pcid = pcid;
this.responseObj=[];
try{if(responseObj)this.responseObj=responseObj;
}catch(e){}
this.cnode = [];
this.cnode = new cnodeOn(cid,clink,ctopic,css1,css2)
}

function cnodeOn(cid,clink,ctopic,css1,css2)//子频道的bean
{
this.cid=cid;
this.clink=clink;
this.ctopic=ctopic;
this.css1=css1;
this.css2=css2;
}
/*
用来取得obj中的相关属性
 有点画蛇添足 2008-03-21-zc
*/
function argumentBean(obj)
{	this.obj = obj;
	this.getResponse=function(){
		if(this.obj){
			if(this.obj.response && this.obj.response!="")
			{
				return this.obj.response;
			}else
			{
				return "";
			}			
		}else{
			return "";
		}
	}
	this.getWidth=function(){
		if(this.obj){
			if(this.obj.width && this.obj.width!="")
			{
				return this.obj.width;
			}else
			{
				return "";
			}			
		}else{
			return "";
		}		
	}
//	this.getDscription=function(){
//		if(this.obj){
//			if(this.obj.dscription && this.obj.dscription!="")
//			{
//				return this.obj.dscription;
//			}else
//			{
//				return "";
//			}			
//		}else{
//			return "";
//		}
//	}
}

/*
业务主要实现类（两种显示风格，渐显[未完成]，跳出）
	封装对象；实现菜单的隐藏显示；
	更改add方法第6个传入参数 为对象模式{width:"",dscription:"",response:""}
	新添加方法 可以使菜单自我调整宽度 --2007 zc
	新添加方法 可以在菜单显示时隐藏其他页面对象 2008-03-21-zc
*/
function topNav()
{	
	this.nowindex = -1;
	this.navlist=[];
	this.Dargflag = false;
	this.timeID = "";
	this.upflag=false;
	this.downflag=false;
	this.Y_index = -1;
	this.X_index = 6;
	this.webroot={id:0,rootname:""}
	this.windowScrollTop = document.body.scrollTop;
	this.windowScrollLeft =document.body.scrollLeft ;
	this.useDrag = function(tag){this.Dargflag = tag;}
	this.setwebroot = function (){
		id= arguments[0];
		var portnum=(document.URL.replace("http://"+document.domain,"").split("/")[0]);
		var domainstr="http://"+document.domain+portnum;
		var rootname=location.href;
		rootname = rootname.replace("http://","");
		rootname = rootname.split("/")[1];
		var alink=document.getElementById("topnav_"+id).childNodes[0];
        if(arguments[1]){if(!(rootname==arguments[1])){rootname=""}}
		
		alink.href=(alink.href.indexOf(rootname)>=0)?alink.href:"/"+rootname+alink.href.replace(domainstr,"");

		this.webroot=new webrootbean(id,rootname);
		}
		
	this.add = function (pcid,cid,clink,ctopic,css1,css2)//加载菜单的对象（一次加载为外框价，二次加载为子频道）
	{	
	var clink=(parseInt(pcid)==parseInt(this.webroot.id) && !(clink.indexOf(this.webroot.rootname)>=0))?(this.webroot.rootname+clink):clink;
   
    clink =(clink.indexOf("/")==0)?clink:("/"+clink)
	ctopic = "<a href='"+clink+"'>"+ctopic+"</a>"
	var widthStr="";
	var responseObj=[];//用来响应此下拉条的对象
	if(arguments[6]){//用来获取第六个参数集合............zc
		var arguObj=new argumentBean(arguments[6]);
		widthStr=(arguObj.getWidth()!="")?" width:"+arguObj.getWidth()+"px;":"";
		responseObj=(arguObj.getResponse()!="")?this.getResponseObj(arguObj.getResponse()):responseObj;
		//alert(responseObj.length)
		}	

	var tempdiv = "";
	var tempdiv2 ="";
		this.nowindex = this.getIndex(pcid)

		var StyleStr = (this.Dargflag)?"display:block; OVERFLOW: hidden; height:0px;"+widthStr:"display:none;"+widthStr;
		tempdiv2 = "<div class='"+css1+"' onmouseout='this.className=\""+css1+"\"' onmouseover='this.className=\""+css2+"\"'  style='float:left'>"+ctopic+"</div>"
		if(this.nowindex>=0)//本组第二次加载
		{
			this.navlist[this.nowindex].cnode[this.navlist[this.nowindex].cnode.length] = new cnodeOn(cid,clink,ctopic,css1,css2);
			if($$("ch_"+pcid)){$$("ch_"+pcid).innerHTML =  $$("ch_"+pcid).innerHTML+tempdiv2;}
		}else{
			this.navlist[this.navlist.length] = new topnavOn(pcid,cid,clink,ctopic,css1,css2,responseObj);
			//alert(this.navlist[this.navlist.length-1].responseObj)
			//外面的下拉木快
			tempdiv = "<div id='ch_"+pcid+"' style='position:absolute;z-index:1; bottom:5px; left:0px; "+StyleStr+" ' ></div>"
			
			var clientY_div="<div style='left:0px; ' ><image src='' height='4'></div>";
			if($$("topnav_"+pcid)){
				$$("topnav_"+pcid).innerHTML =  $$("topnav_"+pcid).innerHTML+tempdiv;				
				}
			if($$("ch_"+pcid)){
				$$("ch_"+pcid).innerHTML =clientY_div+tempdiv2;
				}
			
		}

		if($$("topnav_"+pcid)){
		$$("topnav_"+pcid).onmouseover =  this.BtnMouseOver;
		$$("topnav_"+pcid).onmouseout =  this.BtnMouseOut;
		}
	
	}
	
	//根据字符串获取相关对象 并返回数组
	this.getResponseObj = function (Str)
	{
	var Strarr=Str.split(" ");
	var objArr=[];//	Strarr
	for(var objArr_i=0;objArr_i<Strarr.length;objArr_i++){
		if(Strarr[objArr_i]!=""){
			objArr.push(Strarr[objArr_i]);
			}
		}
		//alert(objArr.length)
	return objArr;
	}
	
	//获取页面中的div在对象中所对应的id
	this.getTrueId = function (nowid)
	{if(nowid.indexOf("_")>0){return nowid.split("_")[1]}else{return null;}}	
	
	this.getIndex = function(pcid)
	{
		for(var Cindex=0;Cindex<this.navlist.length;Cindex++)
		{
		if (this.navlist[Cindex].pcid == pcid){return Cindex;}
		}
		return -1;
	}
	//获取所有频道中的其中一个菜单的元素
	this.getNavElementOn= function(id){
		for(var glt_index=0;glt_index<this.navlist.length;glt_index++)
		{if(this.navlist[glt_index].pcid==id){return this.navlist[glt_index];}}
		return null;
		}
	
		this.BtnMouseOver= function()
	{
		var pcid;
		if (event.srcElement.tagName != "A") 
		{ pcid = event.srcElement.id;}
		else{
			var alink = event.srcElement;
			 pcid = event.srcElement.parentElement.id
		}
			
		if(topNavlist.getTrueId(pcid))
			{
			pcid=topNavlist.getTrueId(pcid)
			if($$("ch_"+pcid).style.top<10)//矫正菜单显示位置
			{
			$$("ch_"+pcid).style.left=event.clientX-event.offsetX-topNavlist.X_index+document.body.scrollLeft ;
			$$("ch_"+pcid).style.top=event.clientY-event.offsetY+$$("topnav_"+pcid).clientHeight+topNavlist.Y_index+document.documentElement.scrollTop;
			   }
			//显示本菜单
			topNavlist.showDiv("ch_"+pcid);		
			//隐藏需要隐藏的对象
			//alert(topNavlist.getNavElementOn(pcid).responseObj)
			if(topNavlist.getNavElementOn(pcid).responseObj&&topNavlist.getNavElementOn(pcid).responseObj.length>0){
				topNavlist.hiddenResponse(topNavlist.getNavElementOn(pcid).responseObj)
				}
			
		  }
		
	}

			
		this.BtnMouseOut= function()
	{	var pcid;
		if(event.srcElement.id==""){
		if(event.srcElement.parentElement.id==""){
		pcid = event.srcElement.parentElement.parentElement.id
		}else{
		pcid = event.srcElement.parentElement.id
		}
		 
		}else{
		pcid = event.srcElement.id;
		}
		pcid=topNavlist.getTrueId(pcid)
		try{
		var ishidden=$$("topnav_"+pcid).contains(document.elementFromPoint(event.clientX,event.clientY))
		}catch(e){}
		if(ishidden)   
		{}else{
		this.upflag=false;
		this.downflag=true;
		if(topNavlist.getNavElementOn(pcid).responseObj&&topNavlist.getNavElementOn(pcid).responseObj.length>0){
			topNavlist.showResponse(topNavlist.getNavElementOn(pcid).responseObj)
			}
		topNavlist.hiddenDiv("ch_"+pcid)
		}
	}
	//隐藏所有与此id相关联的对象
		this.hiddenResponse= function(hiddenArr)	{
			for(var hi_index=0;hi_index<hiddenArr.length;hi_index++){
				if(document.getElementById(hiddenArr[hi_index])){
					$$(hiddenArr[hi_index]).style.display="none";
					}
				}
			}
	//显示所有与此id相关联的对象
		this.showResponse= function(hiddenArr)	{
			for(var hi_index=0;hi_index<hiddenArr.length;hi_index++){
				if(document.getElementById(hiddenArr[hi_index])){
					$$(hiddenArr[hi_index]).style.display="";
					}
				}
			}
	//隐藏对象
	this.hiddenDiv = function(obj_id)
	{	var obj=$$(obj_id)
		if(this.Dargflag)
		{
		var y=0,offset=3;
		y = parseInt(obj.style.height.replace("px",""))-offset;
		y = (y<0)?0:y;
		 obj.style.height=y+"px" 
		 if(y>0)
		 {
		 	this.upflag=false;
			this.downflag=true;
		 }else{
		 this.upflag=false;
		this.downflag=false;
		}
		   if(this.downflag) {this.timeID=window.setTimeout("topNavlist.hiddenDiv('"+obj_id+"')",120); }
		   else{window.clearTimeout(this.timeID)
			return;
		   }
		
		}else{
		obj.style.display="none";			
		}

	}
	
	this.showDiv = function(obj_id)
	{
		var obj=$$(obj_id)
		if(this.Dargflag)
		{	var y=0,offset=3;
		y = parseInt(obj.style.height.replace("px",""))+offset;
		 obj.style.height=y+"px" 
		 if(y<=obj.scrollHeight){
		 	this.upflag=true;
			this.downflag=false;
		 }else{this.upflag=false;
			this.downflag=false;}
	   if(this.upflag) this.timeID=window.setTimeout("topNavlist.showDiv('"+obj_id+"')",120)
	   else{try{window.clearTimeout(this.timeID)}catch(e){}}
	   
	  	}else{
			/*if(obj.childNodes.length>0)
			{ var div_width_str=obj.childNodes[0].offsetWidth;
				//var div_width=parseInt(div_width_str.replace("px",''))+2
				//obj.style.width=(div_width*obj.childNodes.length)+'px'
				alert(div_width_str)
			}
			*/
			//alert(obj.innerHTML)
		obj.style.display="block";			
		}
	}
	

}


/*
主程序 用来初步整合数据;声明菜单对象；装载菜单；主业务逻辑
-2008-03-21 zhangchao@ehm 
*/

function getnavlist()//主程序
{
this.arr = [];
topNavlist = new topNav();
topNavlist.useDrag(false)
this.setXzone = function(x){topNavlist.X_index=x}
this.setYzone = function(y){topNavlist.Y_index=y}
this.setwebroot =  function(id,rootname){topNavlist.setwebroot(id,rootname)}
this.setnavId= function(id,css1,css2)
	{
		this.arr=databuilder(id)
		for(var arr_index=0;arr_index<this.arr.length;arr_index++)
		{
			if(arguments[3])
			{
				//alert(arguments[3])
			topNavlist.add(id,this.arr[arr_index].cid,this.arr[arr_index].links,this.arr[arr_index].topic,css1,css2,arguments[3]);
			}else{
			topNavlist.add(id,this.arr[arr_index].cid,this.arr[arr_index].links,this.arr[arr_index].topic,css1,css2);
			}
		}
	}
}