﻿/**
 * imagerotator - does whatever with images
 *
 * Copyright (c) 2007 Litium Affärskommunikation AB (http://www.litium.se)
 *
 * Built on top of the jQuery library
 *   http://jquery.com
 *
 */

jQuery.fn.imagerotator = function(settings){
	/**
     * Spins images for each selected element
     */
	return this.each(function(){
		jQuery.imagerotator(this, settings);
	});
};

jQuery.imagerotator = function(o, settings){
	settings = jQuery.extend(
	{
		delay: "3500",
		speed: "slow",
		images: [""],
		index: 1,
		imageClass: "jqueryImageRotatorImage"
	}, settings);
	
	// Preloading images
	$(settings.images).each(function()
		{
			var imgObj = new Image();
			imgObj.src = this;
		}
	);
	
	$(o).append("<img id=\"jqueryImageRotatorImage1\" style=\"z-index:1000\" src=\"" + settings.images[0] + "\" />");
	$(o).append("<img id=\"jqueryImageRotatorImage2\" style=\"display:none; z-index:999\" src=\"" + settings.images[1] + "\" />");
	
	settings.i1 = $("#jqueryImageRotatorImage1");
	settings.i2 = $("#jqueryImageRotatorImage2");
	
	if(settings.imageClass != null)
	{
		$(settings.i1).attr("class", settings.imageClass);
		$(settings.i2).attr("class", settings.imageClass);
	}
	
	
	if(settings.images.length > 1){
	    setTimeout( function(){ next(o, settings); }, settings.delay );
	}
};

function next(o, settings)
{
	if($(settings.i2).css("display") == "none")
	{
		jQuery(settings.i1).fadeTo(settings.speed, 0);
		jQuery(settings.i2).show();
		jQuery(settings.i2).fadeTo(settings.speed, 1, function(){
			jQuery(settings.i1).hide();
			if(settings.index < settings.images.length - 1){
				settings.index++;
			}
			else{
				settings.index = 0;
			}
			jQuery(settings.i1).attr("src", settings.images[settings.index]);
			
			setTimeout( function(){ next(o, settings); }, settings.delay );
		});
	}
	else
	{
		jQuery(settings.i2).fadeTo(settings.speed, 0);
		jQuery(settings.i1).show();
		jQuery(settings.i1).fadeTo(settings.speed, 1, function(){
			jQuery(settings.i2).hide();
			if(settings.index < settings.images.length - 1){
				settings.index++;
			}
			else{
				settings.index = 0;
			}
			jQuery(settings.i2).attr("src", settings.images[settings.index]);
			
			setTimeout( function(){ next(o, settings); }, settings.delay );
		});
	}
}