//===================//
// Dropdown Menus	 //
//===================//
var menuUL;
var menuLinks;

var menuDisplayTime = 3000;
var menuCloseTimer = null;

var c = new commonFunctions();

function m_addMenuEvents(id) {
	menuUl = document.getElementById(id);
	menuLinks = menuUl.getElementsByTagName('a');
	for( var i=0; i < menuLinks.length; i++ ) {
		if( menuLinks[i].parentNode.parentNode.className != "sub_menu" ) {
			c.addEvent( menuLinks[i], "click", m_showMenu , false );
		}
	}
}

function m_showMenu(e) {
	m_hideAllMenus();
	
	var clickedMenu = c.getTarget(e);
	
	var listItem = clickedMenu.parentNode;
	var subMenu = listItem.getElementsByTagName('ul');
	if( subMenu.length > 0 ) { // Theres a sub menu, lets show it.
		subMenu[0].style.display = "block";
		c.stopDefaultAction(e);
	}else{ // No sub menu, follow the link.
		return;
	}
	
	
	// Add the event listener to detect when the mouse has rolled out.
	c.addEvent( subMenu[0], "mouseover", m_subMenuRollOver , false );
	c.addEvent( subMenu[0], "mouseout", m_subMenuRollOut , false );
	m_subMenuRollOut(); // Just incase they open the menu but don't look at whats inside.
}

function m_hideAllMenus() {
	for( var i=0; i < menuLinks.length; i++ ) {
		var menu = menuLinks[i].parentNode;
		var subMenu = menu.getElementsByTagName('ul');
		if( subMenu.length > 0 ) {
			subMenu[0].style.display = "none";
		}
		clearTimeout( menuCloseTimer ); // Clear the Timeout
		m_menuCloseTimer = null; // Mark it as cleared
	}
}

function m_subMenuRollOver(e) {
	clearTimeout( menuCloseTimer ); // Clear the timeout
	menuCloseTimer = null // Mark it as cleared
}
function m_subMenuRollOut(e) {
	clearTimeout( menuCloseTimer ); // Clear the existing timeout (just in case);
	menuCloseTimer = setTimeout( "m_hideAllMenus()", menuDisplayTime); // Start a new one.
}