$(document).ready(function() {
  
  $('#menu li > div')
    .addClass('invisible')
    .show()
      .children('ul')
        .each(function(){
          $(this).css({
            height : $(this).parent().height() + 'px'
          })
          .parent()
            .hide()
            .removeClass('invisible');
        });
  
  $('#menu > ul.categories')
    .hover(function () {
      if ($(this).data('fadeDelay')) {
        clearTimeout($(this).data('fadeDelay'));
        $(this)
          .removeData('fadeDelay');
      }
      fadeMenuIn();
      $('#menu')
        .addClass('active')
    }, function () {
      var delay = setTimeout(function () {
          fadeMenuOut();
        }, 1000);
      $(this)
        .data('fadeDelay', delay);
      $('#menu')
        .removeClass('active')
    });

  $('#menu > ul.categories > li')
    .mouseenter(function() {
      if ($(this).siblings('.active').length > 0) {
        $('#menu .active')
          .removeClass('active')
          .find('.subcats')
            .hide();
        $(this)
          .find('.subcats')
            .show();
      }
      $(this)
        .addClass('active')
    });
  
  function fadeMenuIn () {
    var $menu =
      $('#menu .active .subcats')
        .stop(true, true);
    $menu
      .fadeIn(500);
  }

  function fadeMenuOut () {
    var $menu =
      $('#menu .active .subcats');
    $menu
      .stop(true, true)
      .fadeOut(500);
  }

});
