var closures = [];
// Returns a closure (that merely calls the given closure) that can be
// assigned to DOM objects without <=IE6 leaking memory.
function closure(clos)
{
	closures[closures.length] = clos;
	clos = closures.length-1;
	return function()	{return closures[clos].apply(this, arguments);};
}

/* Add/remove events cross-browser */
function addEventSimple(obj,evt,fn) {
	if (obj.attachEvent) {
		obj.attachEvent('on'+evt,fn);
	}
	else if (obj.addEventListener) {
		obj.addEventListener(evt,fn,false);
	}
}

function removeEventSimple(obj,evt,fn) {
	if (obj.detachEvent) {
		obj.detachEvent('on'+evt,fn);
	}
	else if (obj.removeEventListener) {
		obj.removeEventListener(evt,fn,false);
	}
}


/* Recursive offset finder for menu open event */
function getXCoordinate(el)
{
	var x = 0;
	while (el)	{
		x+=el.offsetLeft;
		el=el.offsetParent;
	}
	return x;
}
function getYCoordinate(el)
{
	var y = 0;
	while (el)	{
		y+=el.offsetTop;
		el=el.offsetParent;
	}
	return y;
}

function DoMenu(item, menu)
{
	var originalCSSclass = item.parentElement?item.parentElement.className:'';
	
	var MenuIn = closure(function(e){
		offsetX = getXCoordinate(item);
		offsetY = getYCoordinate(item) + item.offsetHeight;
		menu.style.left = offsetX+'px';
		menu.style.top = offsetY+'px';
		menu.style.display = 'block';
		menu.style.visibility = 'visible';
		if(item.parentElement)
			item.parentElement.className += ' selected';
	});
	
	var MenuOut = closure(function(e){
		e=e||event;
		var to = e.relatedTarget || e.toElement;
		while(to&&to!=item&&to!=menu)
			to = to.parentElement||to.parentNode;
		if (to) return;
		
		menu.style.display = 'none';
		menu.style.visibility = 'hidden';
		if (item.parentElement)
			item.parentElement.className = originalCSSclass;
	});
	
	addEventSimple(item, "mouseover", MenuIn);
	addEventSimple(item, "mouseout", MenuOut);
	addEventSimple(menu, "mouseout", MenuOut);
}

/* Create event handlers */
function createHandlers()
{
	var accountMenuButton = document.getElementById('accountMenuButton'), accountMenu = document.getElementById('accountMenu');
	if (accountMenuButton && accountMenu)
		DoMenu(accountMenuButton, accountMenu);
}

/* Add onload */
addEventSimple(window, "load", createHandlers);