var strContainerID = "jsMenuDGI";

var docWidth = 0;
docWidth = document.body.clientWidth - menuBase.menu_xpos;

function buildLayer(id){
	var strLayerOut = "";
	var strItemsOut = "";
	var itemOffsetX = 0;
	var itemOffsetY = 0;
	var weight = 0;
	var lineheight = 22;
	var layerheight = 0;
	with(menuLayers[id]){
		if(layer_parent == "root"){
		}else{
			if(!is_built){
				layer_ypos = layer_ypos + menuLayers[menuItems[layer_parent].item_parent].layer_ypos + menuItems[layer_parent].item_weight * lineheight;
			}
		} // end if
		for(var menuItem in menuItems){
			with(menuItems[menuItem]){
				if(menuItems[menuItem].item_parent == layer_id){
					strItemsOut += "<li onMouseOver=\"popOver('" + item_id + "');\" onMouseOut=\"popOut('" + item_id + "');\">";
					strItemsOut += "<a target=\"_top\" href=\"" + item_href + "\">" + item_text + "</a>";
					strItemsOut += "</li>";
					item_weight = weight;
					weight += 1;
				} // end if
			} // end with
		} // end for
		if (layer_id == "layer1")
		{
			strLayerOut += "<ul id=\"" + layer_id + "\" class=\"root\" style=\"position: absolute; z-index: 5; left: " + layer_xpos + "; top: " + layer_ypos + "; visibility: hidden;\">";
		}
		else
		{
			strLayerOut += "<ul id=\"" + layer_id + "\" style=\"position: absolute; z-index: 5; left: " + layer_xpos + "; top: " + layer_ypos + "; visibility: hidden;\">";
		}
		layerheight = lineheight * weight;
		strLayerOut += strItemsOut;
		strLayerOut += "</ul>\n";
		is_built = true;
	} // end with
	return(strLayerOut);
}

function buildLayers(layerId,outStr){
	outStr += buildLayer(layerId);
	for(var menuItem in menuItems){
		with(menuItems[menuItem]){
			if(menuItems[menuItem].item_parent == layerId){
				if(item_child != "none"){
					outStr = buildLayers(item_child,outStr);
				}
			}
		}
	}
	return(outStr);
}

function initMenu(){
	if(menuBase.selected_item){
		invertVisibility(menuBase.selected_item);
	}
	menuLayers[menuBase.root_layer].layer_obj.visibility = "visible";
}

function buildMenu(){
	if(!menuBase.si_isset){
		setTimeout("buildMenu();",10);
		return(false);
	}
	var outStr = "";
	outStr = buildLayers(menuBase.root_layer,outStr);
	
	if (document.getElementById)
	{
		document.getElementById(strContainerID).innerHTML = outStr;
	}
	else if (document.all)
	{
		document.all[strContainerID].innerHTML = outStr;
	}
	
	var menuLayer;
	for(menuLayer in menuLayers){
		with(menuLayers[menuLayer]){
			if (document.getElementById)
			{
				if (menuLayer.substr(0,5) == "layer")
				{
					layer_obj = document.getElementById(menuLayer).style;
				}
			}
			else if (document.all)
			{
				if (menuLayer.substr(0,5) == "layer")
				{
					document.all[menuLayer].style;
				}
			}
		}
	}
	
	for(var menuItem in menuItems){
		with(menuItems[menuItem]){
		}
	}
	initMenu();
}

function popOver(sender){
	clearTimeout(closeTimer);
	openTree = getTree(sender);
	changeVisibility();
}

function popOut(sender){
	closeTree = getTree(sender);
	closeTimer = setTimeout("changeVisibility();", 200);
}

function getTree(item){
	var tree = new Array();
	for(i = 0;i < 100; i++){
		tree[i] = menuItems[item].item_id;
		if(menuLayers[menuItems[item].item_parent].layer_parent == "root"){
			return tree;
		}
		item = menuLayers[menuItems[item].item_parent].layer_parent;
	}
}

function changeVisibility(){
	if(openTree.length < closeTree.length){
		refTree = closeTree;
		compTree = openTree;
	}else{
		refTree = openTree;
		compTree = closeTree;
	}
	
	for(i = (refTree.length-1); i >= 0; i--){
		if(i >= compTree.length){
			invertVisibility(refTree[i]);
			if(menuItems[refTree[i]].item_child != "none"){
				invertVisibility(menuItems[refTree[i]].item_child);
		}
		}else{
			if(refTree[i] != compTree[i]){
				invertVisibility(refTree[i]);
				if(menuItems[refTree[i]].item_child != "none"){
					invertVisibility(menuItems[refTree[i]].item_child);
				}
				invertVisibility(compTree[i]);
				if(menuItems[compTree[i]].item_child != "none"){
					invertVisibility(menuItems[compTree[i]].item_child);
				}
			}
		}
	}
	openTree = new Array();
	closeTree = new Array();
}

function invertVisibility(id){
	var obj = false;
	var objIF = false;
	if(id.substr(0,5) == "layer"){
		obj = menuLayers[id].layer_obj;
		if(obj.visibility == "visible" || obj.visibility == "show"){
			obj.visibility = "hidden";
		}else{
			obj.visibility = "visible";
		}
	}
	if(id.substr(0,4) == "item"){
		obj = menuItems[id].over_obj;
		if(obj.visibility == "inherit"){
			obj.visibility = "hidden";
		}else{
			obj.visibility = "inherit";
		}
		obj = menuItems[id].out_obj;
		if(obj.visibility == "inherit"){
			obj.visibility = "hidden";
		}else{
			obj.visibility = "inherit";
		}
	}
}

function setItemSelected(id){
	if(menuBase){
		menuBase.si_isset = true;
	}else{
		setTimeout("setItemSelected(" + id + ");",10);
	}
}

setTimeout("setItemSelected(0);",2);
setTimeout("buildMenu();",5);







 