$(function () {
  $("#search input").not("[type='submit']").focus(function () {
    $(this).animate({ width: "250px"}, "fast");
  }).blur(function () {
    $(this).animate({ width: "150px"}, "fast");
  });
  
  $("#show_grid").attr('href', 'javascript:void(0);').click(function () {
    $(".grid-demo").toggle();
  });
  
  $("ul.menu li > a").each(function () {
    var link = $(this);
    var menu = link.parent().find("> *").not(link);
    if (menu.exists()) {
      var isMouseOverLink = false;
      var isMouseOverMenu = false;
      //var isMouseOverSubmenu = false;
      var shown = false;
      
      link.hover(function () { isMouseOverLink = true; }, function () { isMouseOverLink = false; });
      menu.hover(function () { isMouseOverMenu = true; }, function () { isMouseOverMenu = false; });
      //menu.bind('submenu-in', function () { isMouseOverSubmenu = true; }).bind('submenu-out', function () { isMouseOverSubmenu = false; });
      //var parentMenu = link.parent().parent();
      //menu.hover(function () { parentMenu.trigger('submenu-in'); }, function () { parentMenu.trigger('submenu-out'); });
      
      function show () {
        hideOthers();
        menu.slideDown("fast");
        shown = true;
      }
  
      function hideMenu (menu) { menu.fadeOut("fast"); }
      function hide () {
        hideMenu(menu);
        shown = false;
      }
  
      function hideOthers () {
        var allLinks = $("ul.menu li > a");
        var allOthers = allLinks.parent().find("> *").not(allLinks);
        hideMenu(allOthers);
      }
      
      function menuIn () {
        if ((isMouseOverLink || isMouseOverMenu) && !shown)
          show();
      }
      
      function menuOut () {
        if (!isMouseOverLink && !isMouseOverMenu)
          hide();
      }
      
      link.hover(function () { setTimeout(menuIn, 100); }, function () { setTimeout(menuOut, 100); });
      menu.hover(null, function () { setTimeout(menuOut, 100); });
    }
  });
});

