/*<script>
 * menuDropdown.js - implements an dropdown menu based on a HTML list
 * Author: Dave Lindquist (dave@gazingus.org)
 */

var currentMenu = null;
var menuDropDown = true;
if (!document.getElementById)
  document.getElementById = function() { return null; }

function initializeMenu(menuId, actuatorId) {
	var menu = document.getElementById(menuId);
	var actuator = document.getElementById(actuatorId);

	if (menu == null || actuator == null) return;

	if (window.opera) return; // I'm too tired

	actuator.onmouseover = function() {
		if (currentMenu == null) {
			this.showMenu();
		} else if (currentMenu) {
		   currentMenu.style.display = "none";
		   this.showMenu();
		}
	}

	actuator.onclick = function() {
		if (currentMenu == null) {
		   this.showMenu();
		}
		else {
		   currentMenu.style.display = "none";
		   currentMenu = null;
	 	}
	 	this.blur();
	 	return true;
	}

	actuator.showMenu = function() {
		menu.style.left = (this.offsetLeft + this.offsetWidth) + "px";
		menu.style.top = (this.offsetTop-1) + "px";
		menu.style.display = "block";
		menu.style.zIndex = "2";
		currentMenu = menu;
	}
}

function closeAllMenus() {
	if (currentMenu) {
	   currentMenu.style.display = 'none';
	   currentMenu = null;
	}
}

function handleClick(srcEvent) {
	if (srcEvent) {
	   if (srcEvent.srcElement && srcEvent.srcElement.tagName != 'A') { // MSIE 
	   	closeAllMenus();
	   } else if(srcEvent.target && srcEvent.target.tagName != 'A') { // Mozilla
	   	closeAllMenus();
	   }
	}
}

function handleMouseOver(srcEvent) {
	if(srcEvent) {
		var srcObj = srcEvent.srcElement ? srcEvent.srcElement : (srcEvent.target ? srcEvent.target : null);
		if(srcObj == null) return false;
		
		if(isCurrentMenuChild(srcObj)) {
			srcEvent.cancelBubble = true;
		} else {
			closeAllMenus();
		}
	}
}

function isCurrentMenuChild(element) {
	var cmid = currentMenu ? currentMenu.id : '';
	if(element.parentNode == null || currentMenu == null) {
		return false;
	} else if (element.id == currentMenu.id+'Actuator') {
		return true;
	} else if (element == currentMenu) {
		return true;
	} else {
		return isCurrentMenuChild(element.parentNode);
	}
}
