var MenuActive = false;
var MenuX, MenuY, MenuW, MenuH;
var CurrentMenu = null;

//For W3C browsers:
var CurrentMenuParent = null;

var MenuHoverBackground = "#CCCCCC";
var MenuStandardBackground = "";

function ShowMenu(PassedMenuObject){
	if(MenuActive == true && PassedMenuObject != CurrentMenu){
		HideMenu();
	}
	if(PassedMenuObject == null){
		return;
	}

	with(PassedMenuObject.style){
		display = "block";
	}

	MenuActive = true;
	//IE

	var ThisObj = PassedMenuObject;

	//Reset
	MenuX = 0;
	MenuY = 0;
	MenuW = ThisObj.offsetWidth;
	MenuH = ThisObj.offsetHeight;

	while(ThisObj != null){
		MenuX += ThisObj.offsetLeft;
		MenuY += ThisObj.offsetTop;
		ThisObj = ThisObj.offsetParent;
	}
	CurrentMenu = PassedMenuObject;
	CurrentMenuParent = PassedMenuObject.offsetParent;

	//Check Browser supports XMLDOM:
	if(CurrentMenuParent.childNodes != null){
		CurrentMenuParent.childNodes.item(0).style.background = MenuHoverBackground;
	}
}

function HideMenu(){
	if(CurrentMenu == null){
		return;
	}

	with(CurrentMenu.style){
		display = "none";
	}

	MenuActive = false;
	MenuX = null;
	MenuY = null;
	MenuW = null;
	MenuH = null;

	//Check Browser supports XMLDOM:
	if(CurrentMenuParent.childNodes != null){
		CurrentMenuParent.childNodes.item(0).style.background = MenuStandardBackground;
	}

	CurrentMenu = null;
	CurrentMenuParent = null;
}

if(document.layers){ // Netscape
	document.captureEvents(Event.MOUSEMOVE);
	document.onmousemove = captureMousePosition;
}
else if(document.all) { // Internet Explorer
	document.onmousemove = captureMousePosition;
}
else if (document.getElementById) { // Netcsape 6
	document.onmousemove = captureMousePosition;
}

var xMousePos;
var yMousePos;
var xMousePosMax;
var yMousePosMax;

var MouseMoveMethods = new Array();
function addMouseMoveMethod(method)
{
	MouseMoveMethods[MouseMoveMethods.length] = method;
}

function captureMousePosition(e){
	if(MenuActive == false){
		//return;
	}
	if(document.layers){
		xMousePos = e.pageX;
		yMousePos = e.pageY;
		xMousePosMax = window.innerWidth + window.pageXOffset;
		yMousePosMax = window.innerHeight + window.pageYOffset;
	}
	else if(document.all){
		xMousePos = event.clientX + document.documentElement.scrollLeft;
		yMousePos = event.clientY + document.documentElement.scrollTop;
		xMousePosMax = document.documentElement.clientWidth + document.documentElement.scrollLeft;
		yMousePosMax = document.documentElement.clientHeight + document.documentElement.scrollTop;
	}
	else if(document.getElementById){
		xMousePos = e.pageX;
		yMousePos = e.pageY;
		xMousePosMax = window.innerWidth + window.pageXOffset;
		yMousePosMax = window.innerHeight + window.pageYOffset;
	}

	//Methods in this array are called whenever a mouse move is detected:
	if(MouseMoveMethods.length > 0)
	{
		eval(MouseMoveMethods.join(";"));
	}


	if((xMousePos < MenuX) || (yMousePos < (MenuY - 25)) || ((yMousePos - MenuY) > MenuH) || ((xMousePos - MenuX) > MenuW) ){
		HideMenu();
		return;
	}

	//START
	/*
	# This section of code allows for the fact that the button on the top
	# of the page is 100px, and the menu is 200px. Should menu size adjust the
	# dimensions here will need to also be altered accordingly.
	*/
	if( (yMousePos > (MenuY - 25)) && (yMousePos < MenuY) && (xMousePos > (MenuX + 100)) ){
		//Hide the menu if it's too far across
		HideMenu();
		return;
	}
	// END
}