/*
 * menuDropdown.js - implements an dropdown menu based on a HTML list
 * Author: Steve Ralph
 */

var currentMenu = null;
var currentActuator = null;
var menuTimeoutID = null;

if (!document.getElementById)
    	document.getElementById = function() { return null; }

function hideMenu() {
	if(currentMenu) {
		currentMenu.style.visibility = "hidden";
		currentMenu = 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) {
            	currentMenu.style.visibility = "hidden";
            	this.showMenu();
        	}
        	else {
           		this.showMenu();
        	}

		if(menuTimeoutID) clearTimeout(menuTimeoutID);
    	}
  
    	actuator.onclick = function() {
        	if (currentMenu == null) {
            	this.showMenu();
        	}
        	else {
            	currentMenu.style.visibility = "hidden";
            	currentMenu = null;
        	}

        	return false;
    	}

	actuator.showMenu = function(setTimer) {
		menu.style.left = this.offsetLeft + "px";
        	menu.style.top = this.offsetTop + this.offsetHeight + "px";
        	menu.style.visibility = "visible";
        	currentMenu = menu;

		if(menuTimeoutID) clearTimeout(menuTimeoutID);
		if(setTimer)	menuTimeoutID = setTimeout('hideMenu()', 500);
	}
	
	actuator.onmouseout = function() {
		if(menuTimeoutID) clearTimeout(menuTimeoutID);
		menuTimeoutID = setTimeout('hideMenu()', 500);		
		
	}
	
	menu.onmouseout = actuator.onmouseout;
	
	menu.onmouseover = function() {
		if(menuTimeoutID) clearTimeout(menuTimeoutID);
	}
}

