var globalSlideNum		= 0;; // Number to hold a reference to the current elements number
var lastSlideNum		= 0; // Number to hold a reference to the last elements number
var slideID				= 0; // setTimeout ID
var arrSlide			= new Array(); // Array to hold the element-sides to fade
var arrNumbers			= new Array(); // Array to hold each number element, used to color the the numbers
var tweenComplete		= true; // Boolean if the Effect isComplete. We can't press the arrows/numbers if false
var speedSlideInterval	= 5.0; // Number of seconds between each slide
var speedFade			= 1.0; // Number of seconds it takes to fade in/out each elemenet

function init_slideshow()
{
	$('arrow_left').onmouseover = function()
	{
		this.src = globalImageURL + 'arrow.left.hover.gif';
	};
	$('arrow_left').onmouseout = function()
	{
		this.src = globalImageURL + 'arrow.left.gif';
	};
	$('arrow_right').onmouseover = function()
	{
		this.src = globalImageURL + 'arrow.right.hover.gif';
	};
	$('arrow_right').onmouseout = function()
	{
		this.src = globalImageURL + 'arrow.right.gif';
	};

	arrNumbers	= getElementsByClassName('number');
	arrSlide	= getElementsByClassName('story');
	for(var i=0; i<arrSlide.length; i++)
	{
		arrSlide[i].style.zIndex	= arrSlide.length - i;
		arrSlide[i].className		= 'story shown';

		// Hide the elements below the first one
		if(i>0)
		{
			Effect.Fade(arrSlide[i], {
					from: 1.0,
					to: 0.0,
					duration: 0.1});
		}
	}
	//slideID	= setTimeout("fade_slide("+globalSlideNum+")",(speedSlideInterval*1000));
}

function fade_slide_in(num)
{
	tweenComplete	= false;
	lastSlideNum	= num;

	// Unmark the active and set element above everything
	arrNumbers[num].className	= 'number active';
	arrSlide[num].style.zIndex	= 10;

	// Fade in the element
	Effect.Appear(arrSlide[num], {
						from: 0.0,
						to: 1.0,
						duration: speedFade,
						afterFinish: function()
						{
							tweenComplete	= true;
							//slideID	= setTimeout("fade_slide("+globalSlideNum+")",(speedSlideInterval*1000));
						}});
}

function fade_slide_out(num)
{
	tweenComplete	= false;
	// Mark the active
	arrNumbers[num].className	= 'number';

	// Fade out the element
	Effect.Fade(arrSlide[num], {
					from: 1.0,
					to: 0.0,
					duration: speedFade,
					afterFinish: function()
					{
						fade_slide_in(globalSlideNum);
					}});
}

function fade_slide(num)
{
	tweenComplete	= false;
	fade_slide_out(num);

	// Increment global counter
	globalSlideNum++;
	globalSlideNum	= ( globalSlideNum < 0 ? arrSlide.length - 1 : globalSlideNum );
	globalSlideNum	= ( globalSlideNum >= arrSlide.length ? 0 : globalSlideNum );
}

function show_slide(num)
{
	if(tweenComplete === true)
	{
		// Clear the "on-going" tweens
		clearTimeout(slideID);

		// Start the tweens again
		fade_slide_out(lastSlideNum);
		globalSlideNum	= num-1;
		globalSlideNum	= ( globalSlideNum < 0 ? arrSlide.length - 1 : globalSlideNum );
		globalSlideNum	= ( globalSlideNum >= arrSlide.length ? 0 : globalSlideNum );
	}
}

function next_slide()
{
	if(tweenComplete === true)
	{
		// Clear the "on-going" tweens
		clearTimeout(slideID);
		globalSlideNum++;
		show_slide(globalSlideNum+1);
	}
}

function prev_slide()
{
	if(tweenComplete === true)
	{
		// Clear the "on-going" tweens
		clearTimeout(slideID);
		globalSlideNum--;
		show_slide(lastSlideNum);
	}
}

// Start the slideshow on page load
addLoadEvent(init_slideshow);