// Copyright 2004, Case Methods, LLC  All Rights Reserved
// For licensed use only, subject to Case Methods End User License Agreement.

var activeMenus = new Array();
var closeDelayTimer = 0;
var openDelayTimer = 0;
var openDelayMenu;
var openDelayLevel = 0;
function FIND(item) {
	if(document.all) return(document.all[item]);
	if(document.getElementById) return(document.getElementById(item));
	return(false);
}
function DelayCloseMenus(msTimeout) {
  ClearTimers();
  if(msTimeout == 0) {
    CloseMenusNow();
  } else {
    closeDelayTimer = setTimeout("CloseMenusNow()", msTimeout);
  }
}
function DelayOpenMenus(menu, below, msTimeout) {
  ClearTimers();
  if(msTimeout == 0 || activeMenus[0] != null) {
    PopupMenu(menu, below);
  } else {
    openDelayMenu = menu;
    openDelayLevel = below;
    openDelayTimer = setTimeout("PopupMenuNow()", msTimeout);
  }
}
function ClearTimers() {
  if(closeDelayTimer != 0) {
    clearTimeout(closeDelayTimer);
    closeDelayTimer = 0;
  }
  if(openDelayTimer != 0) {
    clearTimeout(openDelayTimer);
    openDelayTimer = 0;
  }
}
function CloseMenusNow() {
  ClearTimers();
  CloseMenusBelowLevel(0);
}
function CloseMenusBelowLevel(level) {
  var clearLevel = level;
  while(activeMenus[clearLevel] != null) {
    var menu = activeMenus[clearLevel];
    menu.className = menu.className.replace("Active", "");
    var popupName = menu.id + "_Popup";
    var popup = FIND(popupName);
    if(popup != null) {
      popup.style.display = "none";
    }
    activeMenus[clearLevel] = null;
    ++clearLevel;
  }      
}
function PopupMenuNow() {
  PopupMenu(openDelayMenu, openDelayLevel);
}
function PopupMenu(menu, below) {
  ClearTimers();
  var subMenuName = menu.id + "_Popup";
  var subMenu = FIND(subMenuName);
  var level = GetLevelFromName(menu.id);
  CloseMenusBelowLevel(level);
  if(menu.className.indexOf("Active") == -1) {
    menu.className = menu.className + "Active";
  }
  if(subMenu != null) {
    if(below == false) {
      subMenu.style.left = GetAbsoluteLeft(menu) + menu.offsetWidth - 1;
      subMenu.style.top = GetAbsoluteTop(menu);
    } else {
      subMenu.style.left = GetAbsoluteLeft(menu);
      //subMenu.style.left = 500;
      subMenu.style.top = GetAbsoluteTop(menu) + menu.offsetHeight - 1;
    }
    subMenu.style.display = "block";
  }
  activeMenus[level] = menu;
}

function GetAbsoluteLeft(obj) {
  if(obj == null) {
    return 0;
  } else {
    return obj.offsetLeft + GetAbsoluteLeft(obj.offsetParent);
  }
}
function GetAbsoluteTop(obj) {
  if(obj == null) {
    return 0;
  } else {
    return obj.offsetTop + GetAbsoluteTop(obj.offsetParent);
  }
}
function GetLevelFromName(menuName) {
  var level = 0;
  for(i = 0; i < menuName.length; ++i) {
    if(menuName.charAt(i) == "_") {
      ++level;
    }
  }
  return level;
}

