(function ($) {
        $.fn.fadeTransition = function(options) {
          var options = $.extend({pauseTime: 5000, transitionTime: 2000}, options);
          var transitionObject;

          Trans = function(obj) {
            var timer = null;
            var current = 0;
            var els = jQuery("> *", obj).css("display", "none").css("left", "0").css("top", "0").css("position", "absolute");
            jQuery(obj).css("position", "relative");
            jQuery(els[current]).css("display", "block");

            function transition(next) {
              jQuery(els[current]).fadeOut(options.transitionTime);
              jQuery(els[next]).fadeIn(options.transitionTime);
              current = next;
              cue();
            };

            function cue() {
              if (jQuery("> *", obj).length < 2) return false;
              if (timer) clearTimeout(timer);
              timer = setTimeout(function() { transition((current + 1) % els.length | 0)} , options.pauseTime);
            };
            
            this.showItem = function(item) {
              if (timer) clearTimeout(timer);
              transition(item);
            };

            cue();
          }

          this.showItem = function(item) {
            transitionObject.showItem(item);
          };

          return this.each(function() {
            transitionObject = new Trans(this);
          });
        }

      })(jQuery);
    
      var page = {
        tr: null,
        init: function() {
          page.tr = jQuery(".area").fadeTransition({pauseTime: 7000, transitionTime: 1000});
          jQuery("div.navigation").each(function() {
            jQuery(this).children().each( function(idx) {
              if (jQuery(this).is("a"))
                jQuery(this).click(function() { page.tr.showItem(idx); return false; })
            });
          });
        },

        show: function(idx) {
          if (page.tr.timer) clearTimeout(page.tr.timer);
          page.tr.showItem(idx);
        }
      };

      jQuery(document).ready(page.init);