﻿/**
 * imagerotator - does whatever with images
 *
 * Copyright (c) 2008 Litium Affärskommunikation AB (http://www.litium.se)
 *
 * Built on top of the jQuery library
 *   http://jquery.com
 *
 */

jQuery.fn.imagerotator = function(settings){
	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",
		noImagesText: "No images loaded."
	}, settings);
	
	if(settings.images != null && settings.images.length > 0)
	{
		// 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 );
	}
	else
	{
		$(o).append("<span>" + settings.noImagesText + "</span>");
	}
};

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 );
		});
	}
}
