(function ($) {
  $.fn.fadeTransition = function(options) {
    var options = $.extend({pauseTime: 8000, transitionTime: 2000}, options);
    
    Trans = function(obj) {
      var timer = null;
      var current = 0;
      var els = $("> *", obj).css("display", "none").css("left", "0").css("top", "0").css("position", "absolute");
      $(obj).css("position", "relative");
      $(els[current]).css("display", "block");
      
      function transition() {
        var next = (current + 1) % els.length | 0;
        $(els[current]).fadeOut(options.transitionTime);
        $(els[next]).fadeIn(options.transitionTime);
        current = next;
        cue();
      };
      
      function cue() {
        if ($("> *", obj).length < 2) return false;
        if (timer) clearTimeout(timer);
        timer = setTimeout(transition, options.pauseTime);
      };
  
      cue();
    }
    
    return this.each(function() {
      var t = new Trans(this);
    });
  }
})(jQuery);

