var hideselectrule = -1;

if(!document.getElementById && document.all) {
  document.getElementById = function(id) {
    return document.all[id];
  }
}

function initMenu(name) {
  var menu = document.getElementById(name);
  var node = menu.firstChild;
  while (node) {
    if (node.nodeName == 'DIV') {
      menuItem = node.getElementsByTagName('A')[0];
      if (menuItem) initMenuItem(menuItem);
    }
    node = node.nextSibling;
  }
}

function initMenuItem(item) {
  var subMenu = getSubMenu(item);
  setMenuItemPadding(item, 10);
  item.mainMenuItem = true;
  if (subMenu) initSubMenu(subMenu);
  item.onmouseover = _menuItemMouseOver;
  item.onmouseout = _setTimeout;
}

function setMenuItemPadding(item, padding) {
  var s = item.getElementsByTagName('SPAN')[0];
  if (s) {
    s.style.paddingLeft = padding + 'px';
    s.style.paddingRight = padding + 'px';
  }
}

function initSubMenu(subMenu) {
  var maxWidth = 0;
  var c = subMenu.firstChild;
  while (c) {
    if (c.nodeName == 'A') {
      initSubMenuItem(c);
      if (maxWidth < c.offsetWidth) maxWidth = c.offsetWidth; 
    }
    c = c.nextSibling;
  }
  subMenu.style.width = maxWidth + 4 + 'px';
  subMenu.style.visibility = 'hidden';
}

function initSubMenuItem(item) {
  var subMenu = getSubMenu(item);
  setMenuItemPadding(item, 20);
  if (subMenu) initSubMenu(subMenu);
  item.onmouseover = _menuItemMouseOver;
  item.onmouseout = _setTimeout;
}

function getSubMenu(menuItem) {
  var result = false;
  var c = menuItem.nextSibling;
  while (c) {
    if (c.nodeName == 'DIV') {
      if (c.className != 'winbug') {
        result = c;
        break;
      }
    }
    if (c.nodeName == 'A') break;
    c = c.nextSibling;
  }
  return(result);
}

function _menuItemMouseOver(e) { 
  // !!! tady zhasnout selekty
  if (document.styleSheets[0].addRule && (hideselectrule == -1) ) {
    document.styleSheets[0].addRule("select", "visibility : hidden;");
    hideselectrule = document.styleSheets[0].rules.length - 1;
  }
                        
  var item = getTarget(e);
  if (item.mainMenuItem) {
    hideMenus(getMenu(item));
  } else {
    hideSubMenus(item.parentNode);
  }
  var subMenu = getSubMenu(item);
  if (subMenu) {
    subMenu.style.visibility = 'visible';
  }
  menu = getMenu(item);
  unsetTimeout(menu);
}

function hideSubMenus(item) {
  var c = item.firstChild;
  while (c) {
    if (c.nodeName == 'DIV') {
      hideSubMenus(c);
      c.style.visibility = 'hidden';
    }
    c = c.nextSibling;
  }
}

function getMenu(item) {
  while (item.className != 'menu') {
    if (item.nodeName == 'BODY') return(false);
    item = item.parentNode;
  }
  return(item);
}

function hideMenusId(menuId) {
  hideMenus(document.getElementById(menuId));
  // !!! tady rozsvitit selekty
  if (document.styleSheets[0].removeRule && (hideselectrule != -1) ) {
    document.styleSheets[0].removeRule(hideselectrule);
    hideselectrule = -1;
  }
                        
}

function hideMenus(menu) {
  var node = menu.firstChild;
  while (node) {
    if (node.nodeName == 'DIV') {
      hideSubMenus(node);
    }
    node = node.nextSibling;
  }
}

function getTarget(e) {
  if (!e) e = window.event;
  var item = e.srcElement;
  if (!item) item = e.target;
  if (item.nodeName == 'SPAN') item = item.parentNode;
  return(item);
}

function _setTimeout(e) {
 var menu = getMenu(getTarget(e));
 if (menu.className == 'menu') {
   unsetTimeout(menu);
   menu.menuTimeout = setTimeout('hideMenusId("' + menu.id + '")', 300);
 }
}

function unsetTimeout(menu) {
  if (menu.menuTimeout) clearTimeout(menu.menuTimeout);
  menu.menuTimeout = false;
}
