function menuToSubmenu(menu) {
    var item = $(menu).parent().index() - 1;
    if (item < 0) return null;
    return $($('#submenus').children()[item]);
}

$(function () {
  
  var $shownSubMenu;
  
  $('#main-nav a').hover(
    function(e) {
      $(this).addClass('nav-hover');
      var $submenu = menuToSubmenu(this);
      if ($submenu == null) return;
      var me = this;
      var toComplete = function() {
        $shownSubMenu = $submenu;
        $submenu.css('left', $(me).offset().left);
        $submenu.css('top', $(me).offset().top + 27);
        $submenu.stop(true, true).show('slide', { direction: "up" }, 200);
      };
      if ($shownSubMenu != null) {
        if($shownSubMenu[0] == $submenu[0]) return;
          $shownSubMenu.stop(true, true).hide('fade', 1, toComplete);
      } else {
        toComplete();
      }
    },
    function(e) {
      $(this).removeClass('nav-hover');
    }
  );
  
  var onMainNav = false, onSubMenu = false;
  
  function ensureMenuVisibility() {
    if(onMainNav || onSubMenu) return;
    if($shownSubMenu!=null) $shownSubMenu.stop(true, true).hide('fade', 100);
    $shownSubMenu = null;
  }
  
  $('#submenus a').hover(
    function(e) {
      $(this).parent().addClass('nav-hover');
    },
    function(e) {
      $(this).parent().removeClass('nav-hover');
    }
  );
  
  $('#submenus').children().hover(
    function (e) {
      onSubMenu = true;
    },
    function (e) {
      onSubMenu = false;
      window.setTimeout(ensureMenuVisibility, 300);
    }
  );
  
  $('#main-nav').hover(
    function(e) {
      onMainNav = true;      
    },
    function(e) {
      onMainNav = false;
      window.setTimeout(ensureMenuVisibility, 300);
    }
  );
  
});
