var menuMouseOutDelayedHandle = undefined;

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

function getEventTarget(x){
  x = x || window.event;
  return x.target || x.srcElement;
} 

//alternate
function getElementByClassName(needle)
{
  var my_array = document.getElementsByTagName("a");
  
  var retvalue = new Array();
  var i;
  var j;

  for (i = 0, j = 0; i < my_array.length; i++)
  {
    var c = " " + my_array[i].className + " ";
    if (c.indexOf(" " + needle + " ") != -1)
      retvalue[j++] = my_array[i];
  }
  var my_array = document.getElementsByTagName("div");
  for (i = 0, j = 0; i < my_array.length; i++)
  {
    var c = " " + my_array[i].className + " ";
    if (c.indexOf(" " + needle + " ") != -1)
      retvalue[j++] = my_array[i];
  }
  return retvalue;
}


function showsubmenu(elem) {
  hideMenus();
  var re = /[^0-9]*_([0-9]+)$/;
  var id = elem.id.replace(re, "$1");
  document.getElementById('submenu_' + id).style.display='block';
}

function setCallbacks() {
  elems = getElementByClassName('menuhassubmenu');
  var i;
  for (i = 0; i < elems.length; i++) {
    var intid = elems[i].id.substr(9);
    elems[i].onmouseover = function () {showsubmenu(this);};
    elems[i].onmouseout = hideMenusDelayed;
  }
  
  elems = getElementByClassName('submenu');
  for (i = 0; i < elems.length; i++) {
    elems[i].onmouseover = hideMenusDisable;
    elems[i].onmouseout = hideMenusDelayed;
  }
}

function hideMenus() {
  elems = getElementByClassName('submenu');
  var i;
  for (i = 0; i < elems.length; i++){
    elems[i].style.display="none";
  }
  hideMenusDisable();
}

function hideMenusDelayed() {
  menuMouseOutDelayedHandle = setTimeout(hideMenus,1000);
}

function hideMenusDisable() {
  if (menuMouseOutDelayedHandle != undefined) {
    clearTimeout(menuMouseOutDelayedHandle);
    menuMouseOutDelayedHandle = undefined;
  }
}


addLoadEvent(setCallbacks)

