$.fn.slideshow = function(o){

	if (!o) return false;
	
	jQuery.extend($.slideshow.params, o);
	
	var loaded = 0;

	for(i = 0; i < o.imageArray.length; i++) {
		img     = new Image();
		img.src = o.imageArray[i];
		$(img).load(wait_preload);
	}

	
	function wait_preload(){
		loaded++;
		var img = this;
		
		if (loaded == o.imageArray.length){ 

			var imgWidth  = img.width;
			var imgHeight = img.height;
			
			$('#mContainer').append('<div id=\"photo\"></div>');
			$('#mContainer').css({width: imgWidth+'px', height: imgHeight+'px'});
			
			$('#photo').css({	backgroundImage: 'url('+$.slideshow.params.imageArray[0]+')', 
								width: imgWidth+'px', 
								height: imgHeight+'px'
			});
			
			$('a').click($.slideshow.slideStop);
		
			$.slideshow.slideStart();		
		
		}
	}
	
}

$.slideshow = {
	params: {
		imageArray: [],
		duration  : 2000,
		speed     : 3000
	},
	
	interval  : 0,
	counter   : 0,
	
	slideStart: function(){
		var p = $.slideshow.params;

		$.slideshow.interval = setInterval($.slideshow.slideFade, p.speed);
	},
	
	slideStop: function(){

		if ($.slideshow.interval) {
			clearInterval($.slideshow.interval);
			$.slideshow.interval = 0;
		}else{
			$.slideshow.slideStart();
		}
		
	},
	
	slideFade: function(){
		var p = $.slideshow.params;
		
		var count      = $.slideshow.counter;
		var imageArray = p.imageArray;
		
		var photo     = $('#photo');
		var container = $('#mContainer');
		
		var photoDisplay = $(photo).css('display');
		

		count++;
		if (count >= imageArray.length ) {
			count = 0;
		}
			
		set     = (photoDisplay != 'none') ? container : photo;

		$(set).css({backgroundImage: 'url('+imageArray[count]+')'});	
		
		if (photoDisplay != 'none') {
			$(photo).fadeOut(p.duration);
		}else{
			$(photo).fadeIn(p.duration);
		}


		$.slideshow.counter = count;
	}
	
}
