var currentMenu;
var shadow = new Shadow();

function InitializeMenus()
{
	document.body.onclick = CloseMenu;
}

function SetXY(MenuId, X, Y)
{
	// get menu div
	var menuDiv = document.getElementById(MenuId);
	
	if (menuDiv)
	{
		menuDiv.style.left = X;
		menuDiv.style.top = Y;
	}
}

function AddOnClickEvent(ItemId)
{
	// get menu div
	var itemDiv = document.getElementById(ItemId);
	
	if (itemDiv)
	{
		itemDiv.onclick = OpenMenu;
	}
}

function OpenMenu()
{
	var itemDiv, menuDiv, menuId;
	
	if (browser.Ie)
	{
		itemDiv = event.srcElement;
		
	}
	else if (browser.Gecko)
	{
		itemDiv = arguments[0].currentTarget;
	}
	if (itemDiv)
	{
		menuDiv = document.getElementById('menu_' + itemDiv.id.substr(2));
		//alert('menuDiv=' + menuDiv.id);
	}
	
	if (menuDiv)
	{
		if (menuDiv != currentMenu)
		{
			CloseMenu();
	
			// adjust sizes
			//alert('[' + itemDiv.id + ']');
			//alert('GetRealTop='+GetRealTop(itemDiv)+'   menuTopOffset='+menuTopOffset);
			var realTop = GetRealTop(itemDiv) + menuTopOffset //25;
			//var realTop = event.offsetY?(event.offsetY):event.pageY-document.getElementById(itemDiv.id).offsetTop;
			var bodyHeight = document.body.offsetHeight + document.body.scrollTop;
			if (realTop > (bodyHeight - menuDiv.offsetHeight))
			{
				realTop = bodyHeight - menuDiv.offsetHeight - 150;
			}
			if (realTop < document.body.scrollTop)
			{
				realTop = document.body.scrollTop;
			}
			menuDiv.style.top = realTop + "px";
			//menuDiv.style.left = GetRealLeft(itemDiv) + itemDiv.offsetWidth - 39;
			//alert('[' + menuDiv.style.left + '] [' + itemDiv.offsetWidth + ']');
			menuDiv.style.left = GetRealLeft(itemDiv) + menuLeftOffset + "px";
			// make it visible
			menuDiv.style.visibility = "visible";
			menuDiv.style.zIndex = 2003;
			// create shadow
			shadow.Show(menuDiv);
			// set as current menu
			currentMenu = menuDiv;
		}
		else
		{
			CloseMenu();
		}
	}
	

	// cancel click
	if (browser.Ie)
	{
		event.cancelBubble = true;
		event.returnValue = false;
	}
	else if (browser.Gecko)
	{
		with (arguments[0])
		{
			stopPropagation();
			preventDefault();
		}
	}
}


function CloseMenu()
{
	// hide current menu
	if (currentMenu)
	{
		currentMenu.style.visibility = "hidden";
		shadow.Hide();
	}
	currentMenu = null;
}

// Shadow Object
function Shadow()
{
	if (browser.FiltersAndBehaviors)
	{
		this.Show = Show;
		this.Hide = Hide;
	}
	else
	{
		this.Show = Stub;
		this.Hide = Stub;
	}
	
	function Initialize()
	{
		if (typeof PopUpShadow == 'undefined')
		{
			document.body.insertAdjacentHTML("beforeEnd", "<div id=\"PopUpShadow\"></div>");
			with(PopUpShadow.style)
			{
				backgroundColor = "#666666";
				position = "absolute";
				visibility = "hidden";
				zIndex = 2001;
				filter = "progid:DXImageTransform.Microsoft.Blur(PixelRadius='5', MakeShadow='true', ShadowOpacity='0.15')";
			}
		}
	}
	
	function Show(parentObj)
	{
		Initialize();
		if (parentObj)
		{
			with (PopUpShadow.style)
			{
				top = parentObj.style.top;
				left = parentObj.style.left;
				width = parentObj.offsetWidth;
				height = parentObj.offsetHeight;
				visibility = "visible";
			}
		}
	}
	
	function Hide()
	{
		if (PopUpShadow)
		{
			with (PopUpShadow.style)
			{
				visibility = "hidden";
				top = 0;
				left = 0;
			}
		}
	}
	
	function Stub()
	{
	}

}



