var isSafari = (navigator.userAgent.toLowerCase().indexOf("webkit")!=-1);

var curMenu = null, curMenuItem = null;

function popMenu(menuname)
{
	if (curMenu)
		unpopMenu();

	curMenu = $("popmenu_"+menuname);

	curMenuItem = $("menuitem_"+menuname);
	curMenuItem.style.backgroundColor = "#4c3564";
	curMenuItem.style.color = "white";

	curMenu.style.top = (GetAbsoluteY(curMenuItem) + (isSafari ? 27 : 36)) + "px";
	curMenu.style.left = (GetAbsoluteX(curMenuItem)) + "px";
	curMenu.style.display = "block";

	StartTrap();
}

function unpopMenu()
{
	if (curMenu)
	{
		curMenu.style.display = "none";
		curMenu = null;
		curMenuItem.style.backgroundColor = "white";
		curMenuItem.style.color = "";
	}
}

function StartTrap()
{
	document.onmousemove = TrapMove;
}

function StopTrap()
{
	document.onmousemove = function() { }
	unpopMenu();
}

function TrapMove(e)
{
	if (!e) e = window.event;

	if (e.srcElement)	//IE
		var el = e.srcElement;
	else					//Firefox, Safari?
		var el = e.target;

	var found = false;
	while (el && !found)
	{
		if (el == curMenu || el == curMenuItem)
			found = true;
		el = el.parentNode;
	}

	if (!found)
		StopTrap();
}

//Helper functions
function $(a) { return document.getElementById(a); }

function GetAbsoluteX(control)
{
	var ret = 0;
	while (control)
	{
		if (control.offsetLeft)
			ret += control.offsetLeft;
		else if (control.clientLeft)
			ret += control.clientLeft;
		control = control.offsetParent;
	}
	return ret;
}

function GetAbsoluteY(control)
{
	var ret = 0;
	while (control)
	{
		if (control.offsetTop)
			ret += control.offsetTop;
		else if (control.clientTop)
			ret += control.clientTop;
		control = control.offsetParent;
	}
	return ret;
}