/**
 * Script by traininghaus: [info@traininghaus.ie]
 * Last Updated: Jan 2007
 */

// create the effect
addEventHandler(window, "load", prepareGallery);

// and select a random image to begin with
//addEventHandler(window, "load", selectRandom);
addEventHandler(window, "load", selectFirst);

/*
 * utility function, to handle adding event listeners to compliant browsers
 * and IE
 */
function addEventHandler(obj, eventType, fnHandler) {
	// feature detection
	if (obj.addEventListener) {
		// DOM Level 2 compliant browsers
		obj.addEventListener(eventType, fnHandler, false);
	} else if (obj.attachEvent) {
		// IE
		obj.attachEvent("on"+eventType, fnHandler);
	}
}

function prepareGallery() {
	if (!document.getElementsByTagName) return false;
	if (!document.getElementById) return false;
	if (!document.getElementById("img_gallery")) return false;
	if (!document.getElementById("img_placeholder")) return false;

	var gallery = document.getElementById("img_gallery");
	var links = gallery.getElementsByTagName("a");

	for (var i=0; i<links.length; i++ ) {
		links[i].onclick = function() {
			return showPic(this);
		}
	}
}

function showPic(whichpic) {
	var placeholder, image, description;
	// if there's no placeholder, leave the click happen naturally
	if (!(placeholder = document.getElementById("img_placeholder"))) return true;

	var tmp_images = placeholder.getElementsByTagName("IMG");
	// if there's no img tag within the placeholder, leave the click happen naturally
	if (!(image = tmp_images[0])) return true;

	var source = whichpic.getAttribute("href");
	
	image.setAttribute("src", source);
	image.setAttribute("title", whichpic.getAttribute("title"));

	// set a different border around the selected image
	if (whichpic.childNodes[0].nodeName == "IMG") {
		var gallery = document.getElementById("img_gallery");
		var images = gallery.getElementsByTagName("IMG");
		for (var i=0; i<images.length; i++ ) {
			images[i].className = "";
		}
		whichpic.childNodes[0].className = "img_selected";

		// and update the alt text too!
		image.setAttribute("alt", whichpic.childNodes[0].getAttribute("alt"));
	}

	// if there's no description, we're done
	var tmp_dds = placeholder.getElementsByTagName("DD");
	if (!(description = tmp_dds[0])) return false;

	var text = whichpic.getAttribute("title") ? whichpic.getAttribute("title") : "";

	if (description.firstChild.nodeType == 3) {
		description.firstChild.nodeValue = text;
	}

	// we're done, but stop the click happening
	return false;
}

function selectRandom() {
	if (!document.getElementsByTagName) return false;
	if (!document.getElementById) return false;
	if (!document.getElementById("img_gallery")) return false;

	var gallery = document.getElementById("img_gallery");
	var links = gallery.getElementsByTagName("a");

	var index = Math.floor(Math.random()*links.length);

	showPic(links[index]);
}

function selectFirst() {
	if (!document.getElementsByTagName) return false;
	if (!document.getElementById) return false;
	if (!document.getElementById("img_gallery")) return false;

	var gallery = document.getElementById("img_gallery");
	var links = gallery.getElementsByTagName("a");

	showPic(links[0]);
}

