ssIndex = 0;
delay = 5000;
elementsFile = "/images/site/home/slideshow/picList.xml";
ssElements = new Array();
ts = new Date().getTime();
mode = "automatic";
debugging = false;
timeoutID = -1;

function parsePicList(data) {
	if(debugging) alert("parsePicList() called");
	$(data).find("element").each(function() {
		ssElements.push({fullsize:$(this).find("image").text(), thumbnail:$(this).find("thumb").text(), link:$(this).find("link").text()});
	});
	prepLink();
}

function prepLink() {
	updateLink();
	showThumbnails();
}

function updateLink() {
	for(var j = 0; j < ssElements.length; ++j) {
		// if the current background image file name matches this element's filename...
		if($('#background').css("background-image").indexOf(getFilename(ssElements[j]["fullsize"])) >= 0) {
			// if there's a link associated with this element
			if( (ssElements[j]["link"] != undefined) && (ssElements[j]["link"] != "") ) {
				if($('#ssLink').length == 0) {
					//alert("adding link");
					$('#background').append("<a id='ssLink'></a>");
				}
				$('#ssLink').attr("href", ssElements[j]["link"]);
				break;
			}
			// if there is not a link associated with this element, remove the anchor tag
			else {
				if($('#ssLink').length > 0) {
					$('#ssLink').remove();
				}
			}
		}
	}
}

function showThumbnails() {
	if(debugging) alert("showThumbnails() called");
	$('#topContent').append("<div id='thumbnails'>");
	$('#thumbnails').append("<ul>");
	for(var j = 0; j < ssElements.length; j++) {
		// Check to see if we are currently displaying this image
		if($('#background').css("background-image").indexOf(getFilename(ssElements[j]["fullsize"])) >= 0) {
			$('#thumbnails ul').append("<li><a href='#' onclick='ssLoad(" + j + ");return false;'><img src='" + ssElements[j]["thumbnail"] + "' class='active' alt='' /></a></li>");
		}
		else {
			$('#thumbnails ul').append("<li><a href='#' onclick='ssLoad(" + j + ");return false;'><img src='" + ssElements[j]["thumbnail"] + "' alt='' /></a></li>");
		}
	}
	$('#thumbnails').append("</ul>");
	$('#topContent').append("</div>");
	ssLoad(-1);
}

function getNextImage() {
	if(debugging) alert("getNextImage() called");
	++ssIndex;
	(ssIndex > (ssElements.length - 1)) ? ssIndex = 0 : ssIndex = ssIndex;
	return ssElements[ssIndex]["fullsize"];
}
	
function ssLoad(j) {
	if(debugging) alert("ssLoad() called");
	ts = new Date().getTime();
	img = new Image();
	
	// Most common case - slideshow active
	if(j < 0) { // Most common case
		img.src = getNextImage();
	}
	// A specific image was requested
	else {
		if( (j != undefined) && (j >= 0) && (j < (ssElements.length)) ) {
			mode = "manual";
			clearTimeout(timeoutID);
			ssIndex = j;
		}
		img.src = ssElements[ssIndex]["fullsize"];
	}
	// Fade out the current image
	if(img.complete == true) { // see if image was loaded out of cache
		ssFadeOut();
	}
	else {
		img.onload = ssFadeOut;
	}
}

function getFilename(path) {
	if(path == undefined || path == "") return "";
	return path.match(/[-_\w]+[.][\w]+$/i)[0];
}

function setActiveThumbnail() {
	if(debugging) alert("setActiveThumbnail");
	var filename = getFilename(ssElements[ssIndex]["fullsize"]);
	$("#thumbnails img").each(function(){if(getFilename(this.src) == filename) this.className = "active"; else{this.className = "";}});
	ssFadeIn();
}

function ssFadeOut() {
	var diff = new Date().getTime() - ts;
	if( mode == "automatic" && (diff < delay) ) {
		if(debugging) alert("ssFadeOut called...setting timeout to call it again");
		timeoutID = setTimeout(ssFadeOut, (delay - diff));
	}
	else {
		if(debugging) alert("ssFadeOut called...beginning animation");
		$('#background').fadeOut(500, setActiveThumbnail);
	}
}

function ssFadeIn() {
	if(debugging) alert("ssFadeIn() called");
	$('#background').css("background-image", "url(" + ssElements[ssIndex]["fullsize"] + ")");
	updateLink();
	if(mode == "automatic") {
		$('#background').fadeIn(500, function(){ssLoad(-1);});
	}
	else {
		$('#background').fadeIn(500);
	}
}

$(document).ready(function(){$.get(elementsFile, parsePicList);});

