// Copyright © 2002 Aureus (http://www.aureus.com)

var menuTimer, menuObj, menuItemObj, menuStick;
var hideIFrames=(navigator.appVersion.indexOf("MSIE 5.0")!=-1);

function elements_overlap(el) {
  var left=0;
  var top=0;
  var width=el.offsetWidth;
  var height=el.offsetHeight;
  while(el) {
    left+=el.offsetLeft;
    top+=el.offsetTop;
    el=el.offsetParent;
  }
  return((left<menuObj.offsetLeft+menuObj.offsetWidth)&&(left+width>menuObj.offsetLeft)
    &&(top<menuObj.offsetTop+menuObj.offsetHeight)&&(top+height>menuObj.offsetTop));
}

function windowed_element_visibility(tagName, change) {
  var els=document.getElementsByTagName(tagName);
  var i;
  for(i=0; i<els.length; i++) {
    var el=els.item(i);
    if(elements_overlap(el)) {
      if(change<0) {
        if(el.visLevel) el.visLevel+=change;
        else el.visLevel=change;
        if(el.visLevel==-1) {
          el.visibilitySave=el.style.visibility;
          el.style.visibility='hidden';
        }
      }
      else if(el.visLevel) {
        el.visLevel+=change;
        if(el.visLevel==0) el.style.visibility=el.visibilitySave;
      }
    }
  }
}

function hide_elements(tagName) {
  windowed_element_visibility(tagName, -1);
}

function show_elements(tagName) {
  windowed_element_visibility(tagName, 1);
}

function menuOver(menuItem, menu) {
  inMenu=true;
  if(menuStick) return;
  menuReturn();
  if(menuObj!=menu) {
    menuHide();
    menuObj=menu;
    menuItemObj=menuItem;
    if(menuObj) {
      menuObj.style.display='';
      if(menuObj.offsetLeft+menuObj.offsetWidth>document.body.clientWidth) menuObj.style.right='0px';
      menuItemObj.className='hov';
      hide_elements("SELECT");
      hide_elements("OBJECT");
      if(hideIFrames) hide_elements("IFRAME");
    }
  }
}

function menuReturn() {
  inMenu=true;
  if(menuTimer) {
    window.clearTimeout(menuTimer);
    menuTimer=null;
  }
}

function menuFocus() {
  menuStick=true;
}

function menuHide() {
  if(menuTimer) {
    window.clearTimeout(menuTimer);
    menuTimer=null;
  }
  if(menuObj) {
    show_elements("SELECT");
    show_elements("OBJECT");
    if(hideIFrames) show_elements("IFRAME");
    menuObj.style.display='none';
    menuObj=null;
    menuItemObj.className='';
    menuItemObj=null;
  }
}

function menuOut() {
  inMenu=false;
  if(menuStick) return;
  if(!menuTimer)
    menuTimer=window.setTimeout('menuHide();', 400);
}

function menuBlur() {
  menuStick=false;
  if(!inMenu) menuHide();
}