// JavaScript Document
// Duration slide is shown
var duration = 7000;
var timeout = 7000;

// Width of slide images
var slideWidth = 520;
var slideHeight = 350;

// Internal variables
var currentSlide = 0;
var nextSlide = 0;
var previousSlide = 0;
var working = false;
var paused = false;

// Tranition to the next slide
function goForward() {
	// Make sure previous transition is complete before proceeding
	if (!working) {
		working = true;
		
		var slides = $$('div.slideContainer');
	
		// Slideshow has just started
		if (currentSlide < 1) currentSlide = 1;
	
		// Set next slide, start over if we are at the end
		if (currentSlide < slides.length) nextSlide = currentSlide+1;
		else nextSlide = 1;

		// Transition to next slide
		if ($('slide'+currentSlide).hasClassName('fade')) {
			// Fade transition		
			$('slide'+currentSlide).setStyle({left:'0px',
										 top:'0px',
										 display:'inline',
										 zIndex:'2'});
		
			$('slide'+nextSlide).setStyle({left:'0px',
										  top:'0px',
										  display:'inline',
										  zIndex:'1'});
		
			new Effect.Appear('slide'+nextSlide);
		
			new Effect.Fade('slide'+currentSlide, {
							afterFinish: function(){
								working = false;} });
		} else if ($('slide'+currentSlide).hasClassName('slide')) {
			// Slide transtion
			$('slide'+currentSlide).setStyle({left:'0px',
											 top:'0px',
											 display:'inline',
											 zIndex:'2'});
		
			$('slide'+nextSlide).setStyle({left:slideWidth+'px',
										  top:'0px',
										  display:'inline',
										  zIndex:'1'});
		
			new Effect.Morph('slide'+currentSlide, {
							 style: {left:'-'+slideWidth+'px'} });
		
			new Effect.Morph('slide'+nextSlide, {
							 style: {left:'0px'},
							 afterFinish: function(){
								 working = false;} });
		} else if ($('slide'+currentSlide).hasClassName('blind')) {
			// Blind transtion
			$('slide'+currentSlide).setStyle({left:'0px',
											 top:'0px',
											 display:'inline',
											 zIndex:'2'});
		
			$('slide'+nextSlide).setStyle({left:'0px',
										  top:slideHeight+'px',
										  display:'inline',
										  zIndex:'1'});
		
			new Effect.Morph('slide'+currentSlide, {
							 style: {top:'-'+slideHeight+'px'} });
		
			new Effect.Morph('slide'+nextSlide, {
							 style: {top:'0px'},
							 afterFinish: function(){
								 working = false;} });
		}

		currentSlide = nextSlide;
		clearTimeout(duration);
		duration = setTimeout('goForward()',timeout);
	}
}

// Transition to the previous slide
function goBack() {
	// Make sure previous transition is complete before proceeding
	if (!working) {
		working = true;	
		
		var slides = $$('div.slideContainer');
	
		// Slideshow has just started
		if (currentSlide < 1) currentSlide = 1;
	
		if (currentSlide == 1) {
			previousSlide = slides.length;
		} else previousSlide = currentSlide-1;

		if ($('slide'+previousSlide).hasClassName('fade')) {
			// Fade transition		
			$('slide'+currentSlide).setStyle({left:'0px',
											 top:'0px',
											 zIndex:'2'});
		
			$('slide'+previousSlide).setStyle({left:'0px',
											  top:'0px',
											  zIndex:'1'});
		
			new Effect.Fade('slide'+currentSlide);
			
			new Effect.Appear('slide'+previousSlide, {
							  afterFinish: function(){
								  working = false;} });
		
		} else if ($('slide'+previousSlide).hasClassName('slide')) {
			// Slide transtion
			$('slide'+previousSlide).setStyle({left:'-'+slideWidth+'px',
											  top:'0px',
											  display:'inline',
											  zIndex:'1'});
		
			$('slide'+currentSlide).setStyle({left:'0px',
											 top:'0px',
											 zIndex:'2'});
		
			new Effect.Morph('slide'+previousSlide, {
							 style: {left:'0px'} });
		
			new Effect.Morph('slide'+currentSlide, {
							 style: {left:slideWidth+'px'},
							 afterFinish: function(){
								 working = false;} });
		
		} else if ($('slide'+previousSlide).hasClassName('blind')) {
			// Blind transtion
			$('slide'+previousSlide).setStyle({left:'0px',
											  top:'-'+slideHeight+'px',
											  display:'inline',
											  zIndex:'1'});
		
			$('slide'+currentSlide).setStyle({left:'0px',
											 top:'0px',
											 zIndex:'2'});
		
			new Effect.Morph('slide'+previousSlide, {
							 style: {top:'0px'} });
		
			new Effect.Morph('slide'+currentSlide, {
							 style: {top:slideHeight+'px'},
							 afterFinish: function(){
								 working = false;} });
		}
	
		currentSlide = previousSlide;
		clearTimeout(duration);
		duration = setTimeout('goForward()',timeout);
	}
}

// Pause slideshow
function pause() {
	clearTimeout(duration);
	paused = true;
	$('pauseButton').hide();
	$('playButton').show();
}

// Start/Resume slideshow
function play() {
	if (!$('slide1').visible() && !paused) Effect.Appear('slide1');
	duration = setTimeout('goForward()',timeout);
	$('playButton').hide();
	$('pauseButton').show();
}
