/*
 * slideshow 1.1 - Plugin for jQuery
 * 
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Depends:
 *   jquery.js
 * 
 *
 *  Copyright (c) 2008 Oleg Slobodskoi (ajaxsoft.de)
 */

;(function($) {


	$.fn.extend({
		slideshow: function ( images, options ) {
			return this.each(function() {
				new $.slideshow(this, images, options).init();
			});

		}
	});
	
	$.slideshow = function(elem, images, options)
	{
	
		var d = 
		{
			'fadeSpeed': 1000,
			'changeSpeed': 2000,
			'delayBeforeStart': 1000,
			zIndex: -10
		};
		
		$.extend(d, options);	
		
		var 
			$elem = $(elem),
			$visible,
			$hidden,
			size= {
				width: $elem.innerWidth(),
				height: $elem.innerHeight()
			},
			i = 1,
			prelImage
		;

		this.init = function()
		{	
			//filter elements without src
			images = $.grep(images, function(elem,index){
				if (typeof elem == 'object' && elem.src)
					return elem;
			});

			setTimeout(function(){
			
				preload(images[i]);			
				
			}, d.delayBeforeStart);
		};

		function preload(image)
		{

			prelImage = new Image();
			prelImage.onload=function(){
				setTimeout(show, d.changeSpeed);
			};
			prelImage.src= image.src;
		};		

		
		function show ()
		{
			$hidden = $('<img />').
			prependTo($elem).
			attr(images[i]).
			css({
				position: 'absolute',
				display: 'none',
				zIndex: d.zIndex+1,
				marginLeft: (size.width-prelImage.width),
				marginTop: (size.height-prelImage.height)/2
			});		
			$visible = $elem.find(':visible');

			$hidden.fadeIn(d.fadeSpeed, function(){
				$visible.remove();
				i = i<images.length-1 ? i+1 : 0;
				preload(images[i]);
				$hidden.css('z-index', d.zIndex);
			});	
			
		};
	
	};
})( jQuery );