(function ($) {
  $.fn.fadeTransition = function(options) {
    var options = $.extend({pauseTime: 5000, 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]).find('p').fadeOut((options.transitionTime / 2), function(){
			$(els[current]).fadeOut(options.transitionTime);
			$(els[next]).find('p').css('display', 'none');
			$(els[next]).fadeIn(options.transitionTime, function(){
																 	$(this).find('p').fadeIn((options.transitionTime / 2));
																 });
														
			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);

