/*
photo.js
lastUpdate = "09 April 2006 20:14 UTC+1";
*/

/*
Function: __push()
Description: Implement push() for old browsers
Returns:
History:
20060409 2249BST	v1		Andrew Urquhart		Created
*/
function __push(varVar) {
	this[this.length] = varVar;
}
if (!Array().push) {
	Array.prototype.push = __push;
}


/*
Function: GetElementById()
Description:
Returns:
History:
20040207 2008UTC	v1	Andrew Urquhart		Created
*/
function GetElementById(id) {
	if (document.getElementById && document.getElementById(id)) {
		return document.getElementById(id);
	}
	else if (document.all && document.all[id]) {
		return document.all[id];
	}
	else {
		return null;
	}
}


/*
Function: doShowPhoto()
Description:
Returns:
History:
20040207 2007UTC	v1		Andrew Urquhart		Created
20041226 1340UTC	v1.1	Andrew Urquhart		Added timeout on hash redirection
*/
function doShowPhoto(strURI, width, height, strNodeId_image, strNodeId_category) {
	var objDisplayArea	= GetElementById("enlargement");

	if (objDisplayArea && strURI && width && height && strNodeId_image && strNodeId_category) {
		var objImage	= GetElementById(strNodeId_image);

		if (objImage) {
			var strTitle		= objImage.getAttribute("title");
			var backWidth		= Math.floor(width / 3);
			var forwardWidth	= backWidth;
			var middleWidth		= width - forwardWidth - backWidth + 2;

			(/^.*_(\d+)$/).test(strNodeId_image);
			var intImageIndex	= parseInt(RegExp.$1, 10);
			var strForwardId	= "";
			var strBackId		= "";
			if (intImageIndex) {
				strForwardId	= strNodeId_category + "_" + (intImageIndex + 1);
				strBackId		= strNodeId_category + "_" + (intImageIndex - 1);
			}

			var objForwardImg	= document.getElementById(strForwardId);
			var objBackImg		= document.getElementById(strBackId);

			var arrOut		= [];
			arrOut.push("<h2 id=\"enlargementTitle\">Enlargement</h2>");
			arrOut.push("<a name=\"enlargementArea\"></a>");
			arrOut.push("<div id=\"photoandcaption\" style=\"width: " + (width + 2) + "px;\">");

			if (objBackImg && objBackImg.parentNode && objBackImg.parentNode.getAttribute("onclick")) {
				var strOnclick = objBackImg.parentNode.getAttribute("onclick")
				if (typeof strOnclick.arguments == "object") {
					// IE erroneously returns parsed event handler anonymous() function, not contents of attribute :(
					strOnclick = strOnclick.toString();
					strOnclick = strOnclick.substring(strOnclick.indexOf("{") + 1, strOnclick.lastIndexOf("}"));
				}
				arrOut.push("<div id=\"photo_backlink\" style=\"width: " + backWidth + "px; height: " + height + "px;\" title=\"View the previous photo\" onclick=\"" + strOnclick + "\" onmouseover=\"this.className='photo_backlink_hover';\" onmouseout=\"this.className=''\"></div>");
			}

			arrOut.push("<div id=\"photo_middlelink\" style=\"width: " + middleWidth + "px; height: " + height + "px; left: " + (backWidth+10) + "px;\" title=\"Return to the category listing\" onclick=\"doReturnToCategory('" + strNodeId_category + "');\" onmouseover=\"this.className='photo_middlelink_hover';\" onmouseout=\"this.className=''\"></div>");

			if (objForwardImg && objForwardImg.parentNode && objForwardImg.parentNode.getAttribute("onclick")) {
				var strOnclick = objForwardImg.parentNode.getAttribute("onclick")
				if (typeof strOnclick.arguments == "object") {
					// IE erroneously returns parsed event handler anonymous() function, not contents of attribute :(
					strOnclick = strOnclick.toString();
					strOnclick = strOnclick.substring(strOnclick.indexOf("{") + 1, strOnclick.lastIndexOf("}"));
				}
				arrOut.push("<div id=\"photo_forwardlink\" style=\"width: " + forwardWidth + "px; height: " + height + "px;\" title=\"View the next photo\" onclick=\"" + strOnclick + "\" onmouseover=\"this.className='photo_forwardlink_hover';\" onmouseout=\"this.className=''\"></div>");
			}


			arrOut.push("<div id=\"photo_img\" style=\"background-image: url(" + strURI + "); background-repeat: no-repeat; background-position: 0 0; width:" + width + "px; height:" + height + "px;\"></div>");
//			arrOut.push("<img src=\"" + strURI + "\" alt=\"" + strTitle + "\" width=\"" + width + "\" height=\"" + height + "\" />");
			arrOut.push("<p id=\"caption\">" + strTitle + "</p>");
			arrOut.push("</div>");

			objDisplayArea.innerHTML = arrOut.join("");
			setTimeout("location.hash = \"enlargementArea\"", 100);
		}
		return false; // Success
	}
	return true; // Fail
}


/*
Function: doReturnToCategory()
Description:
Returns:
History:
20040208 0120UTC	v1	Andrew Urquhart		Created
*/
function doReturnToCategory(strNodeId_category) {
	window.location.href = "#" + strNodeId_category;
}

