var strContainerID = "OnlineMenu";

function buildLayer(id){
	var strLayerOut = "";
	var strItemsOut = "";
	var itemOffsetX = 0;
	var itemOffsetY = 0;
	var weight = 0;
	var lineheight = 19;
	var layerheight = 0;
	with(menuLayersJSM[id]){
		if(layer_parent == "root"){
		}else{
			if(!is_built){
				layer_ypos = layer_ypos * lineheight + menuLayersJSM[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
		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";
		strLayerOut += "<iframe id=\"iframe_" + layer_id + "\" style=\"position: absolute; z-index: 4; left: " + layer_xpos + "; top: " + layer_ypos + ";height: " + layerheight + ";width:144px;max-width:1;max-height:1px;visibility: hidden;\"></iframe>";
		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);
	}
	menuLayersJSM[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 menuLayersJSM){
		with(menuLayersJSM[menuLayer]){
			if (document.getElementById)
			{
				if (menuLayer.substr(0,5) == "layer")
				{
					layer_obj = document.getElementById(menuLayer).style;
					iframe_obj = document.getElementById("iframe_" + menuLayer).style;
				}
			}
			if (document.all)
			{
				if (menuLayer.substr(0,5) == "layer")
				{
					layer_obj = document.all[menuLayer].style;
					iframe_obj = document.all["iframe_" + 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(menuLayersJSM[menuItems[item].item_parent].layer_parent == "root"){
			return tree;
		}
		item = menuLayersJSM[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 = menuLayersJSM[id].layer_obj;
		objIF = menuLayersJSM[id].iframe_obj;
		if(obj.visibility == "visible" || obj.visibility == "show"){
			obj.visibility = "hidden";
			objIF.visibility = "hidden";
		}else{
			obj.visibility = "visible";
			objIF.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";
		}
	}
	if(id == menuBase.selected_item){
		obj = menuItems[id].over_obj;
		obj.visibility = "inherit";
		obj = menuItems[id].out_obj;
		obj.visibility = "hidden";
	}
}

function setItemSelected(id){
	if(menuBase){
		menuBase.si_isset = true;
	}else{
		setTimeout("setItemSelected(" + id + ");",10);
	}
}

setTimeout("setItemSelected(0);",2);
setTimeout("buildMenu();",5);

