
var tryClosePause = 1000;
var currentMenuItem;
function showNavLevel2(whichMenu) {
  var tableToShow = xGetElementById("navMenu" + whichMenu);
  //
  // set all child tabs to Off state
  var myParent = xGetElementById("navLevel2Container");
  var navLevel2Tabs = xGetElementsByClassName("navLevel2Tab", myParent);
  for (var i = 0; i < navLevel2Tabs.length; i++) {
    offState(navLevel2Tabs[i]);
  }
  //
  // display menu
  if (tableToShow) {
    tableToShow.style.display = "block";
    var activeLevel1Tab = xGetElementById("navTab" + whichMenu);
    var xPosition = xPageX(activeLevel1Tab);
    xWidth(tableToShow, Math.max(xWidth(tableToShow),xWidth(activeLevel1Tab)));
    if (xPosition < 0) {
      xLeft(tableToShow,0);
    } else if((xPosition + xWidth(tableToShow)) > xClientWidth()) {
      xLeft(tableToShow,(xClientWidth() - xWidth(tableToShow)));
    } else {
      xLeft(tableToShow,xPosition);
    }
    xTop(tableToShow, (xPageY(activeLevel1Tab) + xHeight(activeLevel1Tab) + 1));
    showShim(tableToShow,'DivShimLevel2');
  }
}
function hideLevel2All() {
  var myParent = xGetElementById("navLevel2Container");
  var navLevel2Menus = xGetElementsByClassName("navLevel2Menu", myParent);
  for (var i = 0; i < navLevel2Menus.length; i++) {
    navLevel2Menus[i].style.display = "none";
  }
  hideShim('DivShimLevel2');
  hideShim('DivShimLevel3');
}
function showNavLevel3(whichMenu) {
}
function setCurrentMenuItem(ele) {
  currentMenuItem = ele;
}
function hideNavLevel3(whichMenu) {
}
var tmpMenuItem;
function tryClose(menuItem) {
  tmpMenuItem = menuItem;
  setTimeout("closeIt(tmpMenuItem)", tryClosePause);
}
function closeIt(menuItem) {
  if (!currentMenuItem) {
    menuItem.style.display = "none";
    //
    // Find Level 1 parent & set to off-state
    var itemName = xName(menuItem);
    var splitResult = itemName.split('-');
    var level1Tab = xGetElementById('navTab-' + splitResult[1]);
    offState(level1Tab)
    //
    // if this is a Level 2, close Level 3 menus
    if (splitResult.length == 2) {
      hideLevel3All();
      hideShim('DivShimLevel2');
    //
    // if it is a level 3, close Level 2 parent menu
    } else if (splitResult.length == 3) {
      xGetElementById('navMenu-' + splitResult[1]).style.display = "none";
      hideShim('DivShimLevel3');
      hideShim('DivShimLevel2');
    }
  }
}
function onState(ele) {
  if (ele.className.indexOf("Tab") > -1) {
    ele.className += "-on";
  }
}
function offState(ele) {
  if (ele.className.indexOf("Tab") > -1) {
    ele.className = ele.className.replace("-on", "");
  }
}
function level1MouseOverHandler(thisTab) {
   
  var whichItem = thisTab.id.substring(thisTab.id.indexOf("-"), thisTab.id.length);
  //
  // set other level 1's to off-state
  var siblingTabs = xGetElementsByClassName("navLevel1Tab", xGetElementById('navLevel1Container'));
  for (var i = 0; i < siblingTabs.length; i++) {
    offState(siblingTabs[i]);
    //
    // close Level 2 Menus
    if (xGetElementById('navMenu-' + ((xName(siblingTabs[i])).split('-'))[1])) {
      xGetElementById('navMenu-' + ((xName(siblingTabs[i])).split('-'))[1]).style.display = "none";
    }
  }
  onState(thisTab);
  setCurrentMenuItem(thisTab);
  hideLevel3All();
  hideLevel2All();
  showNavLevel2(whichItem);
}
function level1MouseOutHandler(thisTab) {
  var whichItem = thisTab.id.substring(thisTab.id.indexOf("-"), thisTab.id.length);
  currentMenuItem = null;
//  offState(thisTab);
  tryClose(xGetElementById('navMenu' + whichItem));
}
function level2MouseOverHandler(thisTab) {
  var whichItem = thisTab.id.substring(thisTab.id.indexOf("-"), thisTab.id.length);
  setCurrentMenuItem(thisTab);
  //
  // switch sibling level 2's to off-state
  var splitResult = whichItem.split('-');
  var parentMenu = xGetElementById('navMenu-' + splitResult[1]);
  var siblingTabs = xGetElementsByClassName("navLevel2Tab", parentMenu);
  for (var i = 0; i < siblingTabs.length; i++) {
    offState(siblingTabs[i]);
  }
  onState(thisTab);
  showNavLevel3(whichItem);
}
function level2MouseOutHandler(thisTab) {
  var whichItem = thisTab.id.substring(thisTab.id.indexOf("-"), thisTab.id.length);
  var thisTab = xGetElementById('navTab' + whichItem);
  currentMenuItem = null;
//  offState(thisTab);
  //
  // parse out level 2 menu index & try to close that menu
  var splitResult = whichItem.split('-');
  tryClose(xGetElementById('navMenu-' + splitResult[1]));
}
function level3MouseOverHandler(whichItem) {
  var thisTab = xGetElementById('navTab' + whichItem);
  onState(thisTab);
  setCurrentMenuItem(thisTab);
}
function level3MouseOutHandler(whichItem) {
  var thisTab = xGetElementById('navTab' + whichItem);
  currentMenuItem = null;
  offState(thisTab);
  //
  // parse out level 3 menu index & try to close that menu
  var splitResult = whichItem.split('-');
  tryClose(xGetElementById('navMenu-' + splitResult[1] + '-' + splitResult[2]));
}
function hideLevel3All() {
}
function showShim(DivRef,shimName) {
  var bName = navigator.appName;
  var bVer = navigator.appVersion;
  var bVerFloat = parseFloat(bVer.substring((bVer.indexOf('MSIE')+5),bVer.length));
  if (bName == "Microsoft Internet Explorer") {
    if (bVerFloat < 6) {
      if (xGetElementById("criteriaTable")) {
        var parentTable = xGetElementById("criteriaTable");
        var dropDowns = xGetElementsByTagName("select", parentTable);
        for (var i = 0; i < dropDowns.length; i++) {
          xHide(dropDowns[i]);
        }
      }
    } else {
      var IfrRef = xGetElementById(shimName);
      xWidth(IfrRef, xWidth(DivRef));
      xHeight(IfrRef, xHeight(DivRef));
      xLeft(IfrRef, xLeft(DivRef));
      xTop(IfrRef, xTop(DivRef));
      IfrRef.style.zIndex = DivRef.currentStyle.zIndex - 1;
      IfrRef.style.display = "block";
    }
  }
}
function hideShim(shimName) {
  var bName = navigator.appName;
  var bVer = navigator.appVersion;
  var bVerFloat = parseFloat(bVer.substring((bVer.indexOf('MSIE')+5),bVer.length));
  if (bName == "Microsoft Internet Explorer") {
    if (bVerFloat < 6) {
      if (xGetElementById("criteriaTable")) {
        var parentTable = xGetElementById("criteriaTable");
        var dropDowns = xGetElementsByTagName("select", parentTable);
        for (var i = 0; i < dropDowns.length; i++) {
          xShow(dropDowns[i]);
        }
      }
    } else {
      var IfrRef = xGetElementById(shimName);
      IfrRef.style.display = "none";
    }
  }
}
