function slideShow(gallery_images,gallery_urls,gallery_captions,data_source,animationSpeed, animationTimeout,animation_type)
{
	var count = 0;
	var faded = true;
	var timer;
	var html = '<h2><a class="url" href=""><span class="caption">test</span></a></h2>';
	html += '<div class="imageLayers">';
	html += '<a class="imageUnders" href=""><img  class="imageUnder" src=""></a>';
	html += '<a class="imageOvers" href=""><img  class="imageOver" src=""></a></div>';
	$(data_source).append(html);

	function initialise()
	{
		var caption;
		if ( caption = gallery_captions[count] )
		{
			$(data_source + " .caption").html(caption);
		}

		var imageOver = $(gallery_images[count]).attr("src");
		$(data_source + " .imageOver").attr("src", imageOver);
		
		if ( gallery_images.length > count + 1 )
		{
			count++;
		}
		
		var imageUnder = $(gallery_images[count]).attr("src");
		$(data_source + " .imageUnder").attr("src", imageUnder);
	}
	
	function nextSlide()
	{
		if($(data_source + " .imageOver").css('z-index') == 1)
		{
			$(data_source + " .imageOver").css('z-index',0);
			$(data_source + " .imageUnder").css('z-index',1);
			var imageOver = $(gallery_images[count]).attr("src");
			$(data_source + " .imageOver").attr("src", imageOver);
		}
		else
		{
			$(data_source + " .imageOver").css('z-index',1);
			$(data_source + " .imageUnder").css('z-index',0);
			var imageOver = $(gallery_images[count]).attr("src");
			$(data_source + " .imageUnder").attr("src", imageOver);
		}
		count++;
		resets();
	}
	function transitionToNextSlide()
	{
		data_source;
		gallery_captions;
		gallery_urls;
		animationSpeed;
		animationTimeout;
		if(faded == true)
		{
			switch(animation_type)
			{
				case 'fade':
				if(gallery_urls[count] != null)
				{
					$(data_source + " a").attr('href',gallery_urls[count]); 
				}	
				if(gallery_captions[count] != null)
				{
					$(data_source + " h2 a span").html(gallery_captions[count]); 
				}	
				$(data_source + " .imageOver").animate({opacity: 0.0},animationSpeed);
				$(data_source + " .imageUnder").animate({opacity: 1.0},animationSpeed);
				break;
			}
			faded = false;
		}
		else
		{
			faded = true;
			switch(animation_type)
			{
				case 'fade':
				if(gallery_urls[count] != null)
				{
					$(data_source + " a").attr('href',gallery_urls[count]); 
				}
				if(gallery_captions[count] != null)
				{
					$(data_source + " h2 a span").html(gallery_captions[count]); 
				}	
				$(data_source + " .imageOver").animate({opacity: 1.0},animationSpeed);		
				$(data_source + " .imageUnder").animate({opacity: 0.0},animationSpeed);
				break;
			}
		}
		nextSlide();
		timer = setTimeout(function(){transitionToNextSlide();},animationTimeout);
	}
	function resets()
	{
		if($(gallery_images[count]).attr("src") == null)
		{
			count = 0;
		}
	}
	slideShow.prototype.start = function()
	{
		start();
	}
	function start()
	{
		initialise();
		transitionToNextSlide();
	}
	slideShow.prototype.stop = function()
	{
		stop();
	}
	function stop()
	{
		clearTimeout(timer);
	}
	function pause()
	{
		
	}
	slideShow.prototype.pause = function()
	{
		pause();
	}
}
