  // Menu functies voor openen en sluiten van menu en submenu items.

  var timer_submenu;
  var timer_mainmenu;

  var menu_delay = 300;

  // Hoofmenu openen
  function open_main_menu(menu_id)
  {
    close_all_main_menus();
    document.getElementById(menu_id).style.display = '';
  }

  // Hoofdmenu sluiten
  function close_main_menu(menu_id)
  {
    document.getElementById(menu_id).style.display = 'none';
    close_all_sub_menus();
    stop_timer_to_close_main_menu();
  }

  //Alle hoofdmenu's sluiten
  function close_all_main_menus()
  {
    for(var i=0;i<main_menus.length;i++)
    {
      close_main_menu(main_menus[i]);
    }
  }

  // Submenu openen.
  function open_sub_menu(menu_id)
  {
    // Sluit openstaande submenu's
    close_all_sub_menus();
    // Open het submenu.
    document.getElementById(menu_id).style.display = '';
  }

  // Submenu sluiten.
  function close_sub_menu(menu_id)
  {
    // Sluiten.
    document.getElementById(menu_id).style.display='none';
  }

  // Alle submenu's sluiten
  function close_all_sub_menus()
  {
    for(var i=0;i<sub_menus.length;i++)
    {
      document.getElementById(sub_menus[i]).style.display = 'none';
    }
    stop_timer_to_close_sub_menu();
  }


  // Functie om het 'event bubbling' effect te ondervangen.
  function check_mouseout(e,handler)
  {
    // We checken of de muis nog in het menu is.
    if(e)
    {
      if (e.type != 'mouseout' && e.type != 'mouseover') return false;
      var reltg = e.relatedTarget ? e.relatedTarget : e.type == 'mouseout' ? e.toElement : e.fromElement;
      while (reltg && reltg != handler) reltg = reltg.parentNode;
      return (reltg != handler);
    }
    else { return false; }
  }




  // Vertraagde sluiting submenu
  function start_timer_to_close_sub_menu(menu_id)
  {
    timer_submenu=setTimeout("close_sub_menu('"+menu_id+"')",menu_delay);
  }

  // Reset timer submenu
  function stop_timer_to_close_sub_menu()
  {
    if(timer_submenu){ clearTimeout(timer_submenu); }
  }

  // Vertraagde sluiting mainmenu
  function start_timer_to_close_main_menu(menu_id)
  {
    timer_mainmenu=setTimeout("close_main_menu('"+menu_id+"')",menu_delay);
  }

  // Reset timer mainmenu
  function stop_timer_to_close_main_menu()
  {
    if(timer_mainmenu){ clearTimeout(timer_mainmenu); }
  }