function showElement(elementName){
	var myElement = document.getElementById(elementName);
	myElement.style.visibility = "visible";
	myElement.style.display = "block";
}

function hideElement(elementName){
	var myElement = document.getElementById(elementName);
	myElement.style.visibility = "hidden";
	myElement.style.display = "none";
}

function prependTextToElement(elementName, myString){
	var myElement = document.getElementById(elementName);
	if (myElement != null) { myElement.textContent = myString + myElement.textContent; }
}

function appendTextToElement(elementName, myString){
	var myElement = document.getElementById(elementName);
	myElement.textContent = myElement.textContent + mySting;
}

function getCurrentImage(){
	var imageString = "";
	if (location.href.lastIndexOf("#") != -1) {
		imageString = location.href.substr(location.href.lastIndexOf("#"));
		imageString = imageString.substr(6);
		return parseInt(imageString);
	} else {
		return 1;
	}
}

function setNextImage(currentImage){
	var nextImage = "";
	if (currentImage){
		nextImage = currentImage + 1;
	}
	var nextButton = document.getElementById("next-image");
	nextButton.href = "#image" + nextImage;
}

function setPreviousImage(){
	var currentImage = getCurrentImage();
	var previousImage = "";
	if (currentImage) {
		currentImage = parseInt(currentImage);
		previousImage = currentImage - 1;
	}
	var prevButton = document.getElementById("prev-image");
	if (previousImage < 1) {
		prevButton.style.visibility = "hidden";
		prevButton.style.display = "none";
	} else {
		prevButton.href = "#image" + previousImage;
	}
}

function deselectAllImages() {
	var currentImage = getCurrentImage();
	var imageList = document.getElementById("image-list");
	var listElements = imageList.childNodes;
	var aHref;
	for(var i=0; i < listElements.length; i++){
		if (listElements[i].firstChild){
			if (listElements[i].firstChild.nodeName == "A") {
				listElements[i].firstChild.className = "";
			}
		}
	}
}

function highlightCurrentImage(currentImage) {
	deselectAllImages();
	var imageList = document.getElementById("image-list");
	var listElements = imageList.childNodes;
	var aHref;
	var idStart;
	var idEnd;
	for(var i=0; i < listElements.length; i++){
		if (listElements[i].firstChild){
			/*window.alert("There is a link here!");*/
			if (listElements[i].firstChild.nodeName == "A") {
				idStart = listElements[i].firstChild.href.lastIndexOf("(") + 1;
				idEnd = listElements[i].firstChild.href.lastIndexOf(")") - idStart;
				aHref = listElements[i].firstChild.href.substr(idStart, idEnd)
				/*window.alert("This links HREF is: " + aHref +"\nBut I'm looking for: image" + currentImage);*/
				if ( aHref == currentImage ) {
					/*window.alert("Its the link we're looking for");*/
					listElements[i].firstChild.className = "selected";
				}
			}
		}
	}
}

function assignOnClickEvent(elementName, eventFunction){
	var myElement = document.getElementById(elementName);
	myElement.onclick = eventFunction;
	if (myElement.captureEvents) myElement.captureEvents(Event.CLICK);
}

function hideNoScript() {
	var myElement = document.getElementById("noscript");
	if (myElement != null)
	{
		myElement.style.visibility = "hidden";
		myElement.style.display = "none";
		
	}
}

function setState(action) {
	var loadedImage = getCurrentImage();
	var imageString = "";
	setNextImage(loadedImage);
	setPreviousImage(loadedImage);
	
	if (action == "getNext") {
		loadedImage = loadedImage + 1;
	} else if (action == "getPrevious") {
		loadedImage = loadedImage - 1;
	} else if (action.indexOf("image") != -1) {
		imageString = action.substr(6);
		loadedImage = parseInt(imageString);
	}
	
	//DEBUG: return the image being loaded.
	//window.alert("loaded image is "+loadedImage);	
	deselectAllImages();
	
	if (loadedImage < buttonCount) {
		showElement("next-image");
	} else{
		hideElement("next-image");
	}
	if (loadedImage > 1){
		showElement("prev-image");
	} else {
		hideElement("prev-image");
	}
		
	highlightCurrentImage(loadedImage);
}

function setInitialState(){
	hideNoScript();
	/*prependTextToElement("selector-text", "Or, ");*/

	var nextButton = document.getElementById("next-image");
	if (nextButton != null) { 
		nextButton.onclick = function() { setState("getNext") }; 
	
		if (nextButton.captureEvents) nextButton.captureEvents(Event.CLICK);
	}
	
	var prevButton = document.getElementById("prev-image");
	if (prevButton != null) { 
		prevButton.onclick = function() { setState("getPrevious") };
		
		if (prevButton.captureEvents) prevButton.captureEvents(Event.CLICK);
	}
	
	var aHref;
	var list = document.getElementById("image-list");
	var listElements;

	if (list != null)
	{
		listElements = list.childNodes;
		
		for(var i=0; i < listElements.length; i++){
			if (listElements[i].firstChild){
				if (listElements[i].firstChild.nodeName == "A") {
					buttonCount = buttonCount + 1;
					listElements[i].firstChild.onclick = function() { setState(this.hash) };
					if (listElements[i].firstChild.captureEvents) listElements[i].firstChild.captureEvents(Event.CLICK);
				}
			}
		}
		setState("load");
	}
}

var buttonCount = 0;
window.onload = setInitialState;
if (window.captureEvents) window.captureEvents(Event.LOAD)
	
