/*
 * 读取html中的树数据，构造树结构
 * 需要ftiens4.js ua.js 支持
 * 2007-02-12
 * 马宝刚
 */
 
 /* 
		节点数据

		<div treedata="yes" id="树主键" style="display:none;" name="树名" link="节点链接" textcolor="节点文本颜色" isopen="是否默认选择"  target="连接目标">
			<div id="forderid"  name="中间节点名" link="节点链接，应用在href上" >
				<div id="documentid" name="末端节点名" link="节点链接"></div>
				<div id="forderid"  name="中间节点名" link="节点链接" >
					<div id="documentid" name="末端节点名" link="节点链接" ></div>
				</div>
			</div>
		</div>
 */
 
 

/**
 * 调用入口方法 初始化树数据
 * @param paras  [0]数据块标签主键 [1]显示树标签节点
 * 2007-02-12
 */
function initTreeByData(paras){

	if (paras==null){
		return;
	}
	var treeDataTagId = paras[0]; //树数据块主键
	var showTreeTagId = paras[1]; //树显示块主键
	//获取树数据段
	var treeDataObject = document.getElementById(treeDataTagId);
	if (treeDataObject==null || treeDataObject.firstChild==null){
		return;
	}
	//alert(treeDataTagId);
	var treeShowObject = document.getElementById(showTreeTagId);
	if (treeShowObject==null){
		return;
	}
	treeShowObject.innerHTML = ""; //清空树
	
	var treeData = []; //树数据
	//alert(treeDataObject.innerHTML);
	//设置树数据
	treeData = setTreeData(treeDataObject);
	//初始化树
	new tree(treeShowObject,treeData,TREE_TPL);
}

/**
 * 设置树数据
 */
function setTreeData(treeDataObject,treeData){

	if (treeDataObject==null 
			|| treeDataObject.nodeName!="DIV"){
		return treeData;
	}
	if (treeData==null){
		treeData = [];
	}
	if (getNodeAttribute(treeDataObject,"treedatabody")=="yes"){
		treeData[treeData.length] = setTreeItemData(treeDataObject);
	}else{
		var elements;
		var nodeCount; //子节点数量
		try{
			elements = treeDataObject.childNodes; //获取当前树的子节点数组
			nodeCount = elements.length; //获取子节点数
		}catch(e){}
		if (nodeCount>0){
			var i=0;
			while (i<nodeCount){
				setTreeData(elements[i],treeData);
				i++;
			}
		}
	}
	return treeData;
}


/**
 * 设置树数据（递归函数）
 * 0节点名	1节点链接 2节点字体颜色 3是否默认打开	4点击后显示目标 5子节点
 * @param treeDataObject 树数据块对象
 * @param treeData 树数据
 * @return 数数据
 * 2007-02-12
 */
function setTreeItemData(treeDataObject){

	var nodeCount = 0; //当前树节点的子节点数量
	var elements = null; //当前树节点的子节点数组
	var treeData = []; //返回值

	treeData[0] = getNodeAttribute(treeDataObject,"name"); //节点名
	treeData[1] = getNodeAttribute(treeDataObject,"link"); //节点连接
	treeData[2] = getNodeAttribute(treeDataObject,"textcolor"); //节点字体颜色
	treeData[3] = getNodeAttribute(treeDataObject,"isopen"); //默认是否打开
	treeData[4] = getNodeAttribute(treeDataObject,"target"); //点击后显示目标
		
	try{
		elements = treeDataObject.childNodes; //获取当前树的子节点数组
		nodeCount = elements.length; //获取子节点数
	}catch(e){}
	//如果存在子节点，说明该节点是中间节点
	if (nodeCount>0){
		var i = 0; //子节点指针
		//不能用for循环，因为循环变量并不是在末尾递增的
		while(i<nodeCount){
			//设置子节点数据
			treeData[treeData.length] = setTreeItemData(elements[i]);
			i++; //递增
		}
	}
	return treeData;
}



/**
 * 根据节点的属性名获取属性值 不会抛异常
 * @param node 指定节点
 * @param attribName 节点属性名
 * @return 返回节点属性值
 */
function getNodeAttribute(node,attribName){
	var res = ""; //构造返回值
	try{
		//获取节点指定属性
		res = node.getAttribute(attribName);
	}catch(e){}
	return res;
}
