	var isIE = document.all && (navigator.appName.indexOf("Internet Explorer") > 0);
	var isSearchChanged = false;
	var isUsernameChanged = false;
	var isPasswordChanged = false;

	function getLayer(layerName) {
		if (isIE) {
			return document.all[layerName];
		} else {
			return document.getElementById(layerName);
		}
	}

	function SiteSearchClearDefault(el) {
		if (el)
			if (el.value == "") {
				el.className = "keywordsdefault";
				el.value = "Keyword Search";
				isSearchChanged = false;
			} else {
				if ((el.value == "Keyword Search") && !isSearchChanged) {
					el.className = "keywords";
					el.value = "";
				}
			}
	}

	function SiteSearchChanged() {
		isSearchChanged = true;
	}

	function LoginUsernameClearDefault(el) {
		if (el)
			if (el.value == "") {
				el.className = "usernamedefault";
				el.value = "Username";
				isSearchChanged = false;
			} else {
				if ((el.value == "Username") && !isUsernameChanged) {
					el.value = "";
					el.className = "username";
				}
			}
	}

	function LoginUsernameChanged() {
		isUsernameChanged = true;
	}

	function LoginPasswordShowDefault(el) {
		if (el)
			if (el.value == "") {
				getLayer("headerpassword").style.display = "none";
				getLayer("headerpassworddefaultfield").style.display = "block";
				isPasswordChanged = false;
			}
	}

	function LoginPasswordRemoveDefault(el) {
		if (el) {
			getLayer("headerpassworddefaultfield").style.display = "none";
			getLayer("headerpassword").style.display = "block";
			getLayer("headerpassword").focus();
		}
	}

	function LoginPasswordChanged() {
		isPasswordChanged = true;
	}

	function AddToDownloadBasket(pictureid, picturesizeid, el) {

		if (el)
			el.blur();

		// Create HTTP object to request XML data from photo
		httpObject = createHttpObject();
		if (httpObject) {

			// Turn on the wait indicator
			TurnOnWaitIndicator();

			// Build HTTP request
			httpObject.onreadystatechange = PhotoAddeddownloadbasket;
			httpObject.open("GET", "/download-basket-update.asp?action=add&pictureid=" + encodeURI(pictureid) + "&picturesizeid=" + encodeURI(picturesizeid), true);
			httpObject.setRequestHeader("Connection", "close");

			// Send HTTP request
			httpObject.send(null);

			return false;
		}
	}

	function RemoveFromDownloadBasket(pictureid, picturesizeid, el) {

		if (el)
			el.blur();

		// Create HTTP object to request XML data from photo
		httpObject = createHttpObject();
		if (httpObject) {

			// Turn on the wait indicator
			TurnOnWaitIndicator();

			// Build HTTP request
			httpObject.onreadystatechange = PhotoAddeddownloadbasket;
			httpObject.open("GET", "/download-basket-update.asp?action=remove&pictureid=" + encodeURI(pictureid) + "&picturesizeid=" + encodeURI(picturesizeid), true);
			httpObject.setRequestHeader("Connection", "close");

			// Send HTTP request
			httpObject.send(null);

			return false;
		}
	}

	function ClearDownloadBasket(el) {

		if (el)
			el.blur();

		// Create HTTP object to request XML data from photo
		httpObject = createHttpObject();
		if (httpObject) {

			// Turn on the wait indicator
			TurnOnWaitIndicator();

			// Build HTTP request
			httpObject.onreadystatechange = PhotoAddeddownloadbasket;
			httpObject.open("GET", "/download-basket-update.asp?action=clear", true);
			httpObject.setRequestHeader("Connection", "close");

			// Send HTTP request
			httpObject.send(null);

			return false;
		}
	}

	function PhotoAddeddownloadbasket() {

		// Check for ready state and HTTP response status
		if (httpObject.readyState == 4) {
			if (httpObject.status == 200) {

				// Initialize
				var totalpictures = -1;
				var errormessage = "";

				// Load the returned XML
				var xmlData = httpObject.responseXML;
				var basketNodeList = xmlData.getElementsByTagName("downloadbasket");

				// Check for at least one valid downloadbasket element, we only read the first downloadbasket element
				if (basketNodeList.length >= 1) {

					// Get child nodes of the downloadbasket element
					var basketChildNodes = basketNodeList[0].childNodes

					// Cycle through the child nodes, looking for data we want
					for (var i = 0; i < basketChildNodes.length; i++) {

						// Total Pictures
						if (basketChildNodes[i].nodeName.toLowerCase() == "totalpictures")
							totalpictures = basketChildNodes[i].firstChild.nodeValue;

						// Error Message
						if (basketChildNodes[i].nodeName.toLowerCase() == "errormessage")
							errormessage = basketChildNodes[i].firstChild.nodeValue;

					}

				}

				// Check if we have all required data
				if (totalpictures >= 0) {

					// Get element with total pictures count
					var downloadbasketTotalPictures = getLayer("downloadbaskettotalpictures");

					// Set total pictures
					if (downloadbasketTotalPictures)
						downloadbasketTotalPictures.innerHTML = totalpictures;

				}

				// Turn off wait indicator with a short delay (for the show ;-))
				setTimeout("TurnOffWaitIndicator()", 500);

				// Do we need to display an error
				if (errormessage != '') alert(errormessage);

				// If there are 0 pictures in the download queue, hide it after 5 seconds
				if (totalpictures == 0)
					setTimeout("Hidedownloadbasket()", 5000);

			} else {

				// Turn off wait indicator with a short delay (for the show ;-))
				setTimeout("TurnOffWaitIndicator()", 500);

				alert("Error " + httpObject.status + ": " + httpObject.statusText);
			}

		}

	}

	function TurnOnWaitIndicator() {
		var downloadbasket = getLayer("downloadbasket");
		var downloadbasketwait = getLayer("downloadbasketwait");
		var downloadbaskettext = getLayer("downloadbaskettext");
		if (downloadbasket && downloadbaskettext) {
			downloadbasket.style.display = "block";
			downloadbasketwait.style.height = downloadbaskettext.offsetHeight - 0 + "px";
			downloadbasketwait.style.display = "block";
		}
	}

	function TurnOffWaitIndicator() {
		var downloadbasketWait = getLayer("downloadbasketwait");
		if (downloadbasketWait) downloadbasketWait.style.display = "none";
	}

	function Hidedownloadbasket() {
		var downloadbasket = getLayer("downloadbasket");
		if (downloadbasket) downloadbasket.style.display = "none";
	}

	function createHttpObject() {

		var XMLHTTP = false;

		if (window.XMLHttpRequest) {
			// Modern browsers
			XMLHTTP = new XMLHttpRequest();
			if (XMLHTTP.overrideMimeType)
				XMLHTTP.overrideMimeType('text/xml');
		} else {
			// Old Internet Explorer
			if (window.ActiveXObject) {
				try {
					XMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");
				}
				catch (e) {
					try {
						XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
					}
					catch (e){}
				}
			}
		}

		return XMLHTTP;
	}

	function showToolTip(e, caption) {

		var tooltip = getLayer("tooltip");
		var tooltiptext = getLayer("tooltiptext");
		if (tooltip && tooltiptext) {

			tooltiptext.innerHTML = "<p>" + caption + "</p>";

			if (isIE) {

				tooltip.style.pixelLeft = event.clientX + document.documentElement.scrollLeft + 5;
				tooltip.style.pixelTop = event.clientY + document.documentElement.scrollTop + 5;

				if (tooltip.style.pixelLeft + tooltip.clientWidth >= document.documentElement.offsetWidth + document.documentElement.scrollLeft - 16)
					tooltip.style.pixelLeft = event.clientX - tooltip.clientWidth + document.documentElement.scrollLeft - 5;

				if (tooltip.style.pixelTop + tooltip.clientHeight >= document.documentElement.offsetHeight + document.documentElement.scrollTop - 16)
					tooltip.style.pixelTop = event.clientY - tooltip.clientHeight + document.documentElement.scrollTop - 5;

				tooltip.style.visibility = "visible";

			} else {

				tooltip.style.left = e.pageX + 5 + "px";
				tooltip.style.top = e.pageY + 5 + "px";

				if (e.pageX + 5 + tooltip.clientWidth >= window.innerWidth + window.pageXOffset - 16)
					tooltip.style.left = e.pageX - tooltip.clientWidth + window.pageXOffset - 5 + "px";

				if (e.pageY + 5 + tooltip.clientHeight >= window.innerHeight + window.pageYOffset - 16)
					tooltip.style.top = e.pageY - tooltip.clientHeight + window.pageYOffset - 5 + "px";

				tooltip.style.visibility = "visible";
			}
		}
	}

	function hideToolTip() {
		var tooltip = getLayer("tooltip");
		if (tooltip)
			tooltip.style.visibility = "hidden";
	}

