var Visible = new Array();
var VisCount = 0;

MenuCapable = false;
if (!(navigator.userAgent.indexOf("Mac") != -1 && navigator.userAgent.indexOf("MSIE") != -1) && document.getElementById) {
	MenuCapable = true;
}

function addVisible(MenuID) {
  Visible[VisCount] = MenuID;
  VisCount++;
}

function isVisible(MenuID) {
  for (Counter = 0; Counter < VisCount; Counter++) {
    if (Visible[Counter] == MenuID) {
      return true;
    }
  }
  return false;
}

function remVisible(MenuID) {
  for (Counter = 0; Counter < VisCount && Visible[Counter] != MenuID; Counter++) {
  }
  if (Counter != VisCount) {
    for (; Counter < VisCount - 1; Counter++) {
      Visible[Counter] = Visible[Counter + 1];
    }
    VisCount--;
  }
}

function menuOver(MenuID) {
	cancelMenuTimeout(MenuID);
}


function menuOut(MenuID) {
	setMenuTimeout(MenuID, 'hidden', 1000);
}

function activateMenu(MenuID) {
  for (Counter = 0; Counter < VisCount; Counter++) {
    cancelMenuTimeout(Visible[Counter]);
		if (MenuID.indexOf(Visible[Counter]) == -1) {
	    hideMenu(Visible[Counter]);
		}
  }
}

function showMenu(MenuID) {
	activateMenu(MenuID);
	setMenuTimeout(MenuID, 'Visible', 0);
}

function hideMenu(MenuID) {
	setMenuTimeout(MenuID, 'hidden', 0);
}

function cancelMenuTimeout (MenuID) {
	if (eval("window.Timeout" + MenuID)) {
		eval("clearTimeout(Timeout" + MenuID + ")");
	}
}

// turns menus on or off with or without delay
function setMenuTimeout(MenuID, State, Delay) {
  eval('Timeout' + MenuID + ' = setTimeout("setMenuState(\'' + MenuID + '\', \'' + State + '\')", ' + Delay + ')');
}

function setMenuState(MenuID, State) {
	document.getElementById(MenuID).style.visibility = State;

  if (State == "Visible") {
    addVisible(MenuID);
  }
  else if (isVisible(MenuID)) {
   	remVisible(MenuID);
  }
}
