	/*
		Copyright ROTATOR.dk Aps 2006
		
		(DK)
		Alle rettigheder forbeholdes.
		Må ikke kopieres uden forfatterens udtrykkelige samtykke.
		
		(Int)
		All rights reserved.
		Do not copy without the author's written consent.		
	*/
	
	function patchMenu_Main(iVertexID, bDirectly)
	{
		
		for( var i = 0; i < 10; i++ )
		{
			var oItem = document.getElementById("item_" + iVertexID + "l" + i);
			if( oItem )
			{
				oItem.className += " selected";
				var oMenu = getMenuFromItem(oItem);
				if( oMenu ) {
					patchMenu_Main(1*oMenu.id.substring(5), false);	
				}
				break;
			}		
		}
	}
	
	function hideVertex_Main(iVertexID) {
		for( var i = 0; i < 10; i++ )
		{
			var oItem = document.getElementById("item_" + iVertexID + "l" + i);
			if( oItem )
			{
				oItem.parentElement.removeChild(oItem);
			}		
		}
	}
	
	function getMenuFromItem(oItem)
	{
		var o = oItem;
		while( o ) {			
			if( o.id ) {
				if( o.id.indexOf("menu_") == 0 ) {				 
					return o;
				} else if( o.id == "menu" )
					return null;
			}			
			o = o.parentNode;				
		}
		return null;
	}
	
	function getMenuItemInfo(oEvent) {
		var o = oEvent.target ? oEvent.target : oEvent.srcElement; 		
		while( o ) {			
			if( o.id ) {
				if( o.id.indexOf("item_") == 0 ) {
					var c = o.id.substring(5).split("l"); 
					return {itemID: o.id, menuID: "menu_" + c[0], id: c[0], level: 1*c[1] };
				} else if( o.id == "menu" )
					return null;
			}			
			o = o.parentNode;				
		}			
		return null;		
	}
	
	var oMenuStack = [];
	function showMenu(oMenuInfo)
	{
		hideMenus(oMenuInfo.level);	
		var oItem = document.getElementById(oMenuInfo.itemID);				
		var oMenu = document.getElementById(oMenuInfo.menuID);		
		if( oMenu ) {
			oMenu.style.display = "inline";
			var iTop = findPosY(oItem) - findPosY(document.getElementById("menu"));
			var iLeft = findPosX(oItem) - findPosX(document.getElementById("menu"));
			oMenuInfo.level == 0 ?
				iTop += oItem.offsetHeight : iLeft += oItem.offsetWidth;
			
			oMenu.style.top = iTop + "px";
			oMenu.style.left = iLeft + "px";
			
			oMenuStack.push(oMenuInfo);
		}
	}	
	
	var toHideMenu = null;
	function hideMenus(iLevel)
	{
		while( oMenuStack.length > iLevel )
			document.getElementById(oMenuStack.pop().menuID).style.display = "none";
	}
	
	function menu_onmouseover(e)
	{
		clearTimeout(toHideMenu);
		var oMenuInfo = getMenuItemInfo(e);
		if( oMenuInfo )	{
			showMenu(oMenuInfo);			
		}		
		e.cancelBubble = true;
	}
	
	function menu_onmouseout(e)
	{
		toHideMenu = setTimeout("hideMenus(0)", 500);
		e.cancelBubble = true;
	}
	
	
	function findPosX(obj)
	{
		var curleft = 0;
		if (obj.offsetParent)
		{
			while (obj.offsetParent)
			{
				curleft += obj.offsetLeft
				if( obj.currentstyle && obj.tagName.toLowerCase() == "td" && obj.currentStyle.borderLeftStyle != "none" )
				{
					var iBorderLeftWidth = parseInt(obj.currentStyle.borderLeftWidth);
					if( !isNaN(iBorderLeftWidth) )
						curleft += parseInt(obj.currentStyle.borderLeftWidth);				
				}
			
				obj = obj.offsetParent;
			}
		}
		else if (obj.x)
			curleft += obj.x;
		return curleft;
	}
	
	function findPosY(obj)
	{
		var curtop = 0;	
		if (obj.offsetParent)
		{
			while (obj.offsetParent)
			{
				curtop += obj.offsetTop;
				if( obj.currentstyle && obj.tagName.toLowerCase() == "td" && obj.currentStyle.borderTopStyle != "none" )
				{
					curtop += parseInt(obj.currentStyle.borderTopWidth);				
				}
				obj = obj.offsetParent;
			}
		}
		else if (obj.y)
			curtop += obj.y;
		return curtop;
	}
