var oRequest; // Global variable for Ajax functions

function initGallery() {
	adjustGalleryLinks();
	addIeMouseOver();
}

/* Adds fix for IE hover on li elements */
function addIeMouseOver() {
	if (document.all && document.getElementById) {
		var n, node;
		var thumbnails = document.getElementById("thumbnails").firstChild.childNodes;
		
		for (n = 0; n < thumbnails.length; n++) {
			node = thumbnails[n];
			
			if (node.nodeName == "LI") {
				node.onmouseover = function() {this.className = "over";};
				node.onmouseout = function() {this.className = "";};
			}
		}
	}
}

/* Modifies thumbnail links to make use of Ajax */
function adjustGalleryLinks() {
	if (document.getElementById) {
		var n, node, oImage, oImageContainer;
		var listItemArray = (!document.all) ? document.getElementById("thumbnails").childNodes[1].childNodes : document.getElementById("thumbnails").firstChild.childNodes;

		for (n = 0; n < listItemArray.length; n++) {
			node = listItemArray[n];

			if (node.nodeName.toLowerCase() == "li") {
				node.firstChild.onclick = function () {
					_sCurrentImg = this.firstChild.src.replace("thumb-", "");
					oImage = document.createElement("img");
					oImage.setAttribute("src", "/images/backgrounds/loading-gallery.gif");
					oImage.style.position = "absolute";
					oImage.style.top = "0";
					oImage.style.left = "118px";
					oImage.style.opacity = ".75";
					
					if (document.all) {
						oImage.style.filter = "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";
					}
					
					oImageContainer = document.getElementById("currentImageDetails");
					oImageContainer.insertBefore(oImage, oImageContainer.firstChild);
					getImageInfo(this.href);
					
					return false;
				};
			}
		}
	}
}

/* Sends request for images title and description */
function getImageInfo(sUrl) {
	var nImageId = sUrl.split("=")[1]; // Retrieve imageId from query string of link
	
	try {
		oRequest = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
	} catch (e) {
		// browser doesn't support ajax
		window.location = this.href;
	}
	
	oRequest.onreadystatechange = handleGalleryCallback;
	
	oRequest.open("GET", "/scripts/ajax/ajax-gallery.aspx?id=" + nImageId, true);
	oRequest.send(null);
}

/* Processes the response from the server */
function handleGalleryCallback() {
	if (oRequest.readyState == 4 && oRequest.status == 200) {
		var sTitle = getXmlNode("title");
		var sDesc = getXmlNode("description");
		var oImageContainer;
		
		document.getElementById("imgCurrent").src = "/images/backgrounds/loading-gallery.gif";
		document.getElementById("imgCurrent").src = _sCurrentImg;
		document.getElementById("hImageTitle").innerHTML = (sTitle) ? sTitle.nodeValue : "Untitled";
		document.getElementById("pImageDesc").innerHTML = (sDesc) ? sDesc.nodeValue : "";
		
		oImageContainer = document.getElementById("currentImageDetails");
		oImageContainer.removeChild(oImageContainer.firstChild);
	}
}

/* Returns requested XML node */
function getXmlNode(sTag) {
	if (oRequest.responseXML.getElementsByTagName(sTag)[0]) {
		return oRequest.responseXML.getElementsByTagName(sTag)[0].childNodes[0];
	} else {
		return false;
	}
}

window.onload = initGallery;