var mmOpenContainer = null;
var mmOpenMenus = null;
var mmHideMenuTimer = null;

function MM_menuStartTimeout(hideTimeout) {
	mmHideMenuTimer = setTimeout("MM_menuHideMenus()", hideTimeout);	
}

function MM_menuHideMenus() {
	MM_menuResetTimeout();
	if(mmOpenContainer) {
		var c = document.getElementById(mmOpenContainer);
		c.style.visibility = "inherit";
		mmOpenContainer = null;
	}
	if( mmOpenMenus ) {
		for(var i = 0; i < mmOpenMenus.length ; i++) {
			var m = document.getElementById(mmOpenMenus[i]);
			m.style.visibility = "hidden";			
		}
		mmOpenMenus = null;
	}
}

function MM_menuHideSubmenus(menuName) {
	if( mmOpenMenus ) {
		var h = false;
		var c = 0;
		for(var i = 0; i < mmOpenMenus.length ; i++) {
			if( h ) {
				var m = document.getElementById(mmOpenMenus[i]);
				m.style.visibility = "hidden";
			} else if( mmOpenMenus[i] == menuName ) {
				h = true;
			} else {
				c++;
			}
		}
		mmOpenMenus.length = c+1;
	}
}

function MM_menuOverMenuItem(menuName, subMenuSuffix) {
	MM_menuResetTimeout();
	MM_menuHideSubmenus(menuName);
	if( subMenuSuffix ) {
		var subMenuName = "" + menuName + "_" + subMenuSuffix;
		MM_menuShowSubMenu(subMenuName);
	}
}

function MM_menuShowSubMenu(subMenuName) {
	MM_menuResetTimeout();
	var e = document.getElementById(subMenuName);
	e.style.visibility = "inherit";
	if( !mmOpenMenus ) {
		mmOpenMenus = new Array;
	}
	mmOpenMenus[mmOpenMenus.length] = "" + subMenuName;
}

function MM_menuResetTimeout() {
	if (mmHideMenuTimer) clearTimeout(mmHideMenuTimer);
	mmHideMenuTimer = null;
}

function MM_menuShowMenu(containName, menuName, xOffset, yOffset, triggerName) {
	MM_menuHideMenus();
	MM_menuResetTimeout();
	MM_menuShowMenuContainer(containName, xOffset, yOffset, triggerName);
	MM_menuShowSubMenu(menuName);
}

function MM_menuShowMenuContainer(containName, x, y, triggerName) {	
	var c = document.getElementById(containName);
	var s = c.style;
	
	x = calculateNewXPos (x, triggerName);
	y = calculateNewYPos (y, triggerName);
	s.left = x+"px";
	s.top = y+"px";
	
	s.visibility = "inherit";
	
	mmOpenContainer = "" + containName;
}

function calculateNewXPos (x, triggerName) 
{
	if (typeof(event) != "undefined"
		&& typeof(document.documentElement.scrollLeft) != "undefined"
		&& typeof(document.documentElement.clientLeft) != "undefined"
		&& (event.clientX >= 0 || event.offsetX >= 0) )
  {
		return (x + event.clientX - event.offsetX + document.documentElement.scrollLeft - document.documentElement.clientLeft);
	} 
	else
  {
		if (typeof(document.images[triggerName].x) != "undefined"
			&& document.images[triggerName].x > 0) 
		{
			if (typeof(document.images[triggerName].offsetLeft) != "undefined")
			{
				return (x + document.images[triggerName].x);
			}
		} 
	}
}

function calculateNewYPos (y, triggerName) 
{
	if (typeof(event) != "undefined"
	  && typeof(document.documentElement.scrollTop) != "undefined"
	  && typeof(document.documentElement.clientTop) != "undefined"
	  && (event.clientY >= 0 || event.offsetY >= 0)) 
	{
		return (y + event.clientY - event.offsetY + document.documentElement.scrollTop - document.documentElement.clientTop);
	} 
	else
  {
		if (typeof(document.images[triggerName].y) != "undefined"
		  && document.images[triggerName].y > 0) 
		{
			if (typeof(document.images[triggerName].offsetTop) != "undefined")
		  {
				return (y + document.images[triggerName].y);
			} 
		} 
	}
}