(function($){
  $.menu_decorator = function(options) { 
    var base = this;
    
    base.current_item = undefined;
    base.switch_timer = undefined;
    
    base.initialize = function() {
      $('#navigation a').mouseenter(function(event){
        base.selectItem($(event.currentTarget));
      });
      $('#navigation a').mouseleave(function(event){
        base.selectItem($(event.currentTarget));
      });
      $('#startslider').mouseenter(function(event){
        base.invalidate_switch_timer();
      });
      $('#startslider').mouseleave(function(event){
        base.schedule_switch_timer();
      });
      base.selectItem($('#item-1'));
      base.schedule_switch_timer();
    };
    base.invalidate_switch_timer = function() {
      window.clearTimeout(base.switch_timer);
      base.switch_timer = undefined;
    };
    base.schedule_switch_timer = function() {
      if (!base.switch_timer) {
        base.switch_timer = window.setTimeout(base.switchItem,5000);
      }
    };
    base.switchItem = function() {
      base.invalidate_switch_timer();
      base.selectItem($('#item-'+base.nextIndex()),true);
      base.schedule_switch_timer();
    };
    base.itemIndex = function(item) {
      return parseInt(item.attr('id').substr(5));
    }
    base.currentIndex = function() {
      return base.current_item ? base.itemIndex(base.current_item) : undefined;
    };
    base.lastIndex = function() {
      return base.itemIndex($("#navigation li:last a"));
    }
    base.nextIndex = function() {
      var index = base.currentIndex()+1;
      if (index > base.lastIndex()) {
        index = 1;
      }
      return index;
    }
    base.selectItem = function(item,animate) {
      base.current_item = item;
      $('#navigation li').removeClass('active');
      item.parent().addClass('active');
      if (animate) {
        $('#images div:visible').fadeOut('fast');
        $('#content-'+base.currentIndex()).fadeIn('fast');
      }
      else {
        $('#images div:visible').hide();
        $('#content-'+base.currentIndex()).show();
      }
    };
    base.initialize();
  };
})(jQuery);

