(function($){
	$.fn.fadeold = function(options){
		//default values
		var defaults = {
			delay: 5000,
			speed: 800
		};
		var opts = $.extend(defaults, options);
		
		return this.each(function(){
			var $this = $(this);
			var childcount = $this.children("li").length;
			
			if(childcount > 1){
				var start = $this.children("li.current");
				if(start.html() == null){
					$this.children("li:first-child").addClass("current");
					var start = $this.children("li.current");
					$this.children("li:not(.current)").hide();
				}
				var nextstart = start.next("li");
				if(nextstart.html() == null){
					nextstart = $this.children("li:first-child");
				}
				
				// add class "fadegal" for css styling
				(! $this.hasClass("fadeold")) ? $this.addClass("fadeold") : "";
				
				// add container div if missing, and define dimensions of list
				if($this.parent("#fadegal-container").html() == null){
					$this.before("<div id='fadegal-container'></div>");
					$this.prev("#fadegal-container").append($this);
					var cont = $this.parent("#fadegal-container");
					$this.width(cont.width()).height(cont.height());
				}
				
				// fade out current first picture
				start.delay(opts.delay).fadeOut(opts.speed, function(){
					start.removeClass("current");
				});
				
				// fade in next first picture, put previous first picture in the end of the list, start recursion
				nextstart.delay(opts.delay).fadeIn(opts.speed, function(){
					nextstart.addClass("current");
					$this.fadeold(opts);
				});
			}
		});
	};
})(jQuery);
