var mainMenu = (function() {

  var mmElement = null;
  var mmChildren = null;
  var mmChildActive = null;
  var mmChildHover = null;
  var mmChildHoverLast = null;
  var mmTimer = null;
  var mmTimerTimeout = 1000;

  var cssActive = 'active';
  var cssHover = 'hover';

  var childElement = 'li';

  var bindElementHover = function() {
    if (!mmChildren) return;
    mmChildren.hover(function() {
      clearTimeout(mmTimer);
      if (mmChildHoverLast) {
        $(mmChildHoverLast).removeClass(cssHover);
      }
      mmChildActive.removeClass(cssHover);
      $(this).addClass(cssHover);
      mmChildHoverLast= this;
    }, function() {
      mmTimer = setTimeout(function() {
        $(mmChildHoverLast).removeClass(cssHover);
        $(mmChildActive).addClass(cssHover);
      }, mmTimerTimeout);
    });
  }

  return {

    init : function(selector) {
      mmElement = $(selector);
      mmChildren = mmElement.children(childElement);
      mmChildActive = mmElement.children(childElement+'.'+cssActive);
      mmChildActive.addClass(cssHover);
      bindElementHover();
      return this;
    }

  }

})();


$(document).ready(function() {
  mainMenu.init('ul#menu');
});
