/*
 * menuDropdown.js - implements an dropdown menu based on a HTML list
 * Author: Dave Lindquist (http://www.gazingus.org)
 */

/* routines tweeked by Shaun to fix mouse movement problems */

var currentMenu = null;

if (!document.getElementById)
{
	document.getElementById = function() { return null; }
}

var delayHideObj = null;
var blnInMenu = false;

function delayHide(m)
{
	doDelayHide();
	delayHideObj = m;
	setTimeout("doDelayHide()", 500); // half-second delay before hiding
}

function doDelayHide()
{
	if (delayHideObj != null)
	{
		delayHideObj.style.display = "none";
		delayHideobj = null;
	}
}

function initializeMenu(menuId, actuatorId)
{
	var menu = document.getElementById(menuId);
	var actuator = document.getElementById(actuatorId);

	if (menu == null || actuator == null) return;

	actuator.onmouseover = function() {
		if (currentMenu != null && currentMenu != menu)
		{
			delayHide(currentMenu);
			currentMenu = null;
			doDelayHide();
		}
		this.showMenu();
	}
	
	//////////////////////////////////////////////////
	menu.onmouseover = function() {
		blnInMenu = true;
		if (currentMenu != this)
		{
			delayHide(currentMenu);
			currentMenu = null;
			doDelayHide();
		}
		actuator.showMenu();
	}
	
	menu.onmouseout = function() {
		blnInMenu = false;
		if (currentMenu == this)
		{
			delayHide(this);
			currentMenu = null;
		}
	}
	
	actuator.onmouseout = function() {
		if (!blnInMenu)
		{
			if (currentMenu)
			{
				delayHide(currentMenu);
				currentMenu = null;
			}
		}
	}

	//////////////////////////////////////////////////

	//actuator.onmouseover = function() {
	//	if (currentMenu == null)
	//	{
	//		this.showMenu();
	//	}
	//	else
	//	{
	//		delayHide(currentMenu);
	//		currentMenu = null;
	//	}
	//
	//	return false;
	//}

	actuator.showMenu = function() {
		if (delayHideObj == menu)
		{
			delayHideObj = null;
		}
		else
		{
			doDelayHide();
		}
		menu.style.top = (this.offsetTop - 1) + "px";
		menu.style.display = "block";
		currentMenu = menu;
	}
}
