// JavaScript Document

var autoplay, current_slide, slide_count, slideShowTime, autoEffectDuration, userEffectDuration, transition_count, showSlideTimeout, effectTimeout, transitionFrom;

function initSlideshow() 
{
	//count slides
	slide_count = $("#slideshow ul li").size();
	
	//hide all but the current slide
	for (var i = 0; i < slide_count; i++)
	{
		if (i != current_slide)
		{
			$("#slideshow ul li").eq(i).fadeTo(1,0);
		}
	}
	
	//bind click events to buttons
	$('#slideshow_play').bind('click', function() {
		autoplay = true;
		playSliderFrame();
		$("#slideshow_play").hide();
		$("#slideshow_pause").show();
	});
	
	$('#slideshow_pause').bind('click', function() {
		autoplay = false;
		clearTimeout(showSlideTimeout);
		$("#slideshow_play").show();
		$("#slideshow_pause").hide();
	});
	
	$('#slideshow_prev').bind('click', function() {		
		$("#slideshow ul li").stop();
		clearTimeout(showSlideTimeout);
		clearTimeout(effectTimeout);
		previousSlide(userEffectDuration);		
	});
	
	$('#slideshow_next').bind('click', function() {
		$("#slideshow ul li").stop();
		clearTimeout(showSlideTimeout);
		clearTimeout(effectTimeout);
		nextSlide(userEffectDuration);
	});

	
	//hide play/pause button
	if (autoplay) {
		$("#slideshow_play").hide();
	} else {
		$("#slideshow_pause").hide();
	}
	
	//go play
	playSliderFrame();
}

function playSliderFrame()
{
	if (autoplay) {
		//$("#trace").append("start show slide timeout<br>");
		showSlideTimeout = setTimeout(function() {
			//$("#trace").append("end show slide timeout<br>");
			nextSlide();
		}, slideShowTime);
	}
}

function nextSlide(effectDuration)
{
	if (effectDuration == null) effectDuration = autoEffectDuration;
	//fade out current slide
	transitionFrom = current_slide;
	$("#slideshow ul li").eq(current_slide).fadeTo(effectDuration, 0);	
	//fade in new slide
	current_slide++;
	if (current_slide >= slide_count) current_slide = 0;
	$("#slideshow ul li").eq(current_slide).fadeTo(effectDuration, 1);
	//$("#trace").append("start next effect timeout<br>");
	effectTimeout = setTimeout(function() {
		//$("#trace").append("end next effect timeout<br>");								
		playSliderFrame();
		transitionFrom = null;
	}, effectDuration);
}

function previousSlide(effectDuration)
{
	if (effectDuration == null) effectDuration = autoEffectDuration;
	//fade out current slide
	transitionFrom = current_slide;
	$("#slideshow ul li").eq(current_slide).fadeTo(effectDuration, 0);	
	//fade in new slide
	current_slide--;
	if (current_slide < 0) current_slide = slide_count - 1;
	$("#slideshow ul li").eq(current_slide).fadeTo(effectDuration, 1);	
	//$("#trace").append("start prev effect timeout<br>");
	effectTimeout = setTimeout(function() {
		//$("#trace").append("end prev effect timeout<br>");
		playSliderFrame();
		transitionFrom = null;
	}, effectDuration);
}
