
var menuIsOpen = false;

function findPos(obj) {
        var curleft = curtop = 0;
        if (obj.offsetParent) {
                curleft = obj.offsetLeft
                curtop = obj.offsetTop
                while (obj = obj.offsetParent) {
                        curleft += obj.offsetLeft
                        curtop += obj.offsetTop
                }
        }
        return {"x":curleft,"y":curtop};
}

function mousePos (evt)
{
	if (evt.pageX) return {"x":evt.pageX, "y":evt.pageY};
	else if (evt.clientX)
		return {"x":evt.clientX + (document.documentElement.scrollLeft ?
			document.documentElement.scrollLeft :
			document.body.scrollLeft),
			"y":evt.clientY + (document.documentElement.scrollTop ?
			document.documentElement.scrollTop :
			document.body.scrollTop)};
	else return {"x":0, "y":0};
}

function openMenu (anchorName, divName, event, closeFunction)
{
	closeFunction = closeFunction || 'onmouseover';

	//var coordinates = findPos(document.getElementById(anchorName));
	var coordinates = mousePos(event);
	
	var menuDiv = document.getElementById(divName);
	//menuDiv.style.left = coordinates.x;
	menuDiv.style.left = coordinates.x - menuDiv.offsetWidth;
	menuDiv.style.top  = coordinates.y;
	menuDiv.style.visibility = 'visible';
	
	//document.getElementById(anchorName).style.visibility = 'hidden';
	document.body[closeFunction] = new Function('event', 'closeMenu("' + anchorName + '", "' + divName + '", event, "' + closeFunction + '");');
	
	if (event.stopPropagation)
		event.stopPropagation();
	else
		event.cancelBubble = true;
	
	menuIsOpen = true;
}

function closeMenu (anchorName, divName, event, closeFunction)
{
	closeFunction = closeFunction || 'onmouseover';

	var menuDiv = document.getElementById(divName);
	var anchor = document.getElementById(anchorName);
	var object = eventObject(event);
	if ((contained(object, menuDiv) || contained(object, anchor)) &&
		closeFunction != 'onclick')
		return;

	menuDiv.style.left = 0;
	menuDiv.style.top  = 0;
	menuDiv.style.visibility = 'hidden';
	
	document.getElementById(anchorName).style.visibility = 'visible';
	document.body[closeFunction] = new Function(''); 

	menuIsOpen = false;
}

function eventObject (event)
{
	if (!event)
		var event = window.event;
	
	if (event.target)
		var target = event.target;
	else if (event.srcElement)
		var target = event.srcElement;
		
	if (target.nodeType == 3) // defeat Safari bug
		target = target.parentNode;
		
	return target;
}

function contained (object, container) {
	if (!object)
		return; // in case alt-tab away while hovering (prevent error)
	while (object.parentNode)
	{
		object = object.parentNode;
		if (object == container)
			return true;
	}
	return false;
}
