(function($){
	$.fn.imagetransition= function(options) {

		var defaults = {
			pauseLength: 5000,
			transitionSpeed: 1000
		};
		var options = $.extend(defaults, options);

		var currentImageIndex=0;
		
		var obj = this;
		
		//initialise css properties...
		this.filter(":not(:first)").css({opacity: "0", display: "none"});
		
		QueueNextTransition();
					
		function RunTransition(from, to)
		{
			$(from).fadeTo(options.transitionSpeed, 0, function() {
				$(from).css("display", "none");
			});
			$(to).css("display", "block").fadeTo(options.transitionSpeed, 1);
			QueueNextTransition();
		}
		
		function QueueNextTransition()
		{
			setTimeout(function() {
				var nextImageIndex = obj.length == (currentImageIndex + 1)? 0 : currentImageIndex + 1;
				RunTransition(obj[currentImageIndex], obj[nextImageIndex]);
				currentImageIndex = nextImageIndex;
			}, options.pauseLength);			
		}
		
		return this;
	};	
})(jQuery);
