// JavaScript Document

/* Document written by Christopher White */

// Global Variables //

var imagearea = new Array();
var width = new Array();
var height = new Array();
var object = new Array();
var pause = new Array();
var fade = new Array();
var slideTimeout = new Array();
var fadeTimeout = new Array();
var currentSlide = new Array();
var slideshowImages = new Array();
var slideshowPreloader = new Array();
var slideshowStarted = new Array();

// Functions //

function mySlideshowSetup(slideshow_id, slideshow_width, slideshow_height, slideshow_pause, slideshow_fade)
{
	var id = slideshow_id.replace(/slideshow_(.*?)/i, "$1").toString();
	if (typeof(document.getElementById(slideshow_id)) != 'undefined')
	{
		var slideshow = document.getElementById(slideshow_id);
		object[id] = slideshow;
		pause[id] = parseInt(slideshow_pause);
		fade[id] = parseInt(slideshow_fade);
		slideTimeout[id] = new Array();
		fadeTimeout[id] = new Array();
		if (typeof(slideshow.getElementsByTagName("div")) != 'undefined')
		{
			var divs = slideshow.getElementsByTagName("div");
			for (var d = 0; d < divs.length; d++)
			{
				if (divs[d].id == 'slideshow_image_area')
				{
					imagearea[id] = divs[d];
				}
			}
			width[id] = slideshow_width;
			height[id] = slideshow_height;
			imagearea[id].style.width = width[id]+"px";
			imagearea[id].style.height = height[id]+"px";
			imagearea[id].style.visibility = "visible";
			var list = slideshow.getElementsByTagName("ul")[0].getElementsByTagName("li");
			slideshowImages[id] = new Array();
			for (var li = 0; li < list.length; li++)
			{
				image = list[li].getElementsByTagName("img")[0];
				image.id = "image_"+li;
				slideshowImages[id][li] = new Image();
				slideshowImages[id][li].src = image.src;
				if (list[li].id == 'slideshow_active')
				{
					imagearea[id].innerHTML = "<a href=\"javascript:mySlideshowNextImage('"+id+"', true);\"><img src=\""+slideshowImages[id][li].src+"\" alt=\"\" style=\"width: "+width[id]+"px; height: "+height[id]+"px; position: absolute; visibility: hidden;\" /><img src=\""+slideshowImages[id][li].src+"\" alt=\"\" style=\"width: "+width[id]+"px; height: "+height[id]+"px; position: absolute; visibility: hidden;\" /></a>";
					var start = li;
				}
				list[li].innerHTML = "<a href='javascript:mySlideshowSwapImage(\""+slideshow_id+"\", \"image_"+li+"\");'>"+image.parentNode.innerHTML+"</a>";
			}
			mySlideshowReady(id, start);
		}
		else
		{
			return alert("The image area could not be found in "+slideshow_id.replace("_", " ")+"!");
		}
	}
	else
	{
		return alert("The slideshow could not be found in "+slideshow_id.replace("_", " ")+"!");
	}
}

function mySlideshowReady(id, start)
{
	if (imagearea[id].childNodes[0].childNodes[0].complete && imagearea[id].childNodes[0].childNodes[1].complete)
	{
		return mySlideshowSwapImage(id, start);
	}
	setTimeout("mySlideshowReady('"+id+"', "+start+")", 10);
}

function mySlideshowNextImage(id, skipped)
{
	if (typeof(skipped) == 'undefined')
	{
		skipped = false;
	}
	for (clr in slideTimeout[id])
	{
		clearTimeout(slideTimeout[id][clr]);
	}
	for (clr in fadeTimeout[id])
	{
		clearTimeout(fadeTimeout[id][clr]);
	}
	return mySlideshowSwapImage(id, (currentSlide[id] + 1), skipped)
}

function mySlideshowSwapImage(id, start, skipped)
{
	var slideshow_id = object[id].id;
	if (typeof(document.getElementById(slideshow_id)) != 'undefined')
	{
		var slideshow = document.getElementById(slideshow_id);
		if (typeof(imagearea[id]) != 'undefined')
		{
			if (typeof(start) != 'undefined')
			{
				currentSlide[id] = start;
			}
			if (currentSlide[id] >= slideshowImages[id].length)
			{
				currentSlide[id] = 0;
			}
			thisSlide = currentSlide[id];
			nextSlide = thisSlide + 1;
			if (nextSlide >= slideshowImages[id].length)
			{
				nextSlide = 0;
			}
			if (typeof(slideshowImages[id][thisSlide]) != 'undefined')
			{
				if (typeof(slideshowImages[id][nextSlide]) != 'undefined')
				{
					imagearea[id].childNodes[0].childNodes[0].src = eval("slideshowImages['"+id+"']["+thisSlide+"].src");
					imagearea[id].childNodes[0].childNodes[1].src = eval("slideshowImages['"+id+"']["+nextSlide+"].src");
					if (skipped)
					{
						mySlideshowSetOpacity(id, 1, 0);
					}
					slideTimeout[id][0] = setTimeout("mySlideshowSetOpacity('"+id+"', 1, 0);", (pause[id] + fade[id]));
					slideTimeout[id][1] = setTimeout("mySlideshowFade('"+id+"', 1, 0, 100, "+fade[id]+");", pause[id]);
					slideTimeout[id][2] = setTimeout("mySlideshowNextImage('"+id+"');", (pause[id] + fade[id]));
					if (typeof(slideshowStarted[id]) == 'undefined')
					{
						mySlideshowSetOpacity(id, 1, 0);
						imagearea[id].childNodes[0].childNodes[0].style.visibility = "visible";
						imagearea[id].childNodes[0].childNodes[1].style.visibility = "visible";
						slideshowStarted[id] = true;
					}
				}
				else
				{
					return alert("The next slide could not be found in "+slideshow_id.replace("_", " ")+"!");
				}
			}
			else
			{
				return alert("The current slide could not be found in "+slideshow_id.replace("_", " ")+"!");
			}
		}
		else
		{
			return alert("The image area could not be found in "+slideshow_id.replace("_", " ")+"!");
		}
	}
	else
	{
		return alert("The slideshow could not be found in "+slideshow_id.replace("_", " ")+"!");
	}
}

function mySlideshowFade(id, node, start, end, fade)
{
	var speed = Math.floor(fade / 100) - 1;
	var timer = 1;
	if (start > end)
	{
		for (i = start; i >= end; i--)
		{
			fadeTimeout[id][i] = setTimeout("mySlideshowSetOpacity('"+id+"', "+node+", "+i+")", (timer * speed));
			timer++;
		}
	}
	else if (start < end)
	{
		for (i = start; i <= end; i++)
		{
			fadeTimeout[id][i] = setTimeout("mySlideshowSetOpacity('"+id+"', "+node+", "+i+")", (timer * speed));
			timer++;
		}
	}
}

function mySlideshowSetOpacity(id, node, opacity)
{
	imagearea[id].childNodes[0].childNodes[node].style.opacity = (opacity / 100);
	imagearea[id].childNodes[0].childNodes[node].style.MozOpacity = (opacity / 100);
	imagearea[id].childNodes[0].childNodes[node].style.KhtmlOpacity = (opacity / 100);
	imagearea[id].childNodes[0].childNodes[node].style.filter = "alpha(opacity="+opacity+")";
}
