<!-- //

// ************************************
// **********  IMAGE VIEWER  **********
// ************************************

	var allThumbnails = new Array();
	var thumbMaxWidth;
	var thumbMaxHeight;
	var fullImageMaxWidth;
	var fullImageMaxHeight;
	var imagePaths = new Array();
	var imageAlts = new Array();
	var viewerActive = false;
	var imageIndex = -1;
	var imageViewer;
	var imageViewerBG;
	var imageViewerY;
	var panelHeight = 460;
	var arrowsActive = false;
	var slideShow = false;
	var slideShowTimeout;
	var leftArrow;
	var rightArrow;
	var transition = true;
	var myHeight;
	var myWidth;
	
	window.onresize = function() {
		if(viewerActive) setViewerDepth();
	}
	
	function setDisplay(getElement,getValue) {
		if(getValue) {
			getElement.style.display = "block";
		} else {
			getElement.style.display = "none";
		}
	}

	function checkImageSize(srcImage,maxWidth,maxHeight) {
		getWidth = srcImage.width;
		getHeight = srcImage.height;
		if(getWidth>maxWidth || getHeight>maxHeight) {
			widthVariance = maxWidth/getWidth;
			heightVariance = maxHeight/getHeight;
			if(widthVariance<=heightVariance) scalePercentage = getWidth/maxWidth;
			else scalePercentage = getHeight/maxHeight;
			srcImage.width = getWidth/scalePercentage;
			srcImage.height = getHeight/scalePercentage;
		}
	}
	
	function setPos(getObject,getX,getY) {
		if(getObject.style.posTop) {
			getObject.style.posLeft = getX;
			getObject.style.posTop = getY;
		} else {
			getObject.style.left = getX + "px";
			getObject.style.top = getY + "px";
		}
	}

	function getImageData() {
		allThumbnails = document.getElementById("thumbnailImages").getElementsByTagName("A");
		allDDs = document.getElementById("thumbnailImages").getElementsByTagName("DD");
		// store thumbnail width and height limits
		if(allDDs.length > 0) {
			thumbMaxWidth = parseFloat(allDDs[0].getElementsByTagName("SPAN")[0].offsetWidth);
			thumbMaxHeight = parseFloat(allDDs[0].getElementsByTagName("SPAN")[0].offsetHeight);
		}
		// loop
		for(i=0;i<allDDs.length;i++) {
			// size and position thumbnails
			thisImage = allThumbnails[i].getElementsByTagName("IMG")[0];
			checkImageSize(thisImage,thumbMaxWidth,thumbMaxHeight);
			if(thisImage.width < thumbMaxWidth) {
				// center horizontally
				setPos(thisImage,(Math.floor((thumbMaxWidth - thisImage.width) / 2)),0);
			} else if(thisImage.height < thumbMaxHeight) {
				setPos(thisImage,0,(Math.floor((thumbMaxHeight - thisImage.height) / 2)));
			}
			// get link data
			imagePaths[i] = allThumbnails[i].href;
			imageAlts[i] = thisImage.alt;
			// add behaviour
			allThumbnails[i].index = i;
			allThumbnails[i].onmouseover = function() {
				if(!viewerActive && this.index != imageIndex) {
					if(imageIndex >= 0) {
						allThumbnails[imageIndex].className = "";
						imageIndex = -1;
					}
					this.className = "rollover";
				}
			}
			allThumbnails[i].onmouseout = function() {
				if(!viewerActive && this.index != imageIndex) this.className = "";
			}
			allThumbnails[i].onclick = function() {
				if(!viewerActive) {
					return openImage(this.index);
				}
			}
		}
		// create core viewer elements
		buildViewer();
	}
	
	function buildViewer() {
		// write viewer code
		imageViewer = document.getElementById("imageViewer");
		viewerCode = "<div id='imageViewerBG'><\/div>";
		imageViewer.innerHTML = viewerCode;
		imageViewerBG = document.getElementById("imageViewerBG");
		// more code
		if(window.XMLHttpRequest) {
			viewerCode = "<div id='imageViewerY' class='advanced'><\/div>";
		} else {
			viewerCode = "<div id='imageViewerY'><\/div>";
		}
		imageViewer.innerHTML += viewerCode;
		imageViewerY = document.getElementById("imageViewerY");
		// more code
		viewerCode = "<div id='imageViewerPanel'>";
			viewerCode += "<a id='closeButton' href='javascript:closeImageViewer();' title='Click here to close this viewer'><img src='/images/image-gallery/common/close-over.gif' border='0' \/><\/a>";
			viewerCode += "<h3><\/h3>";
			viewerCode += "<div id='imageViewerPanelImage'><\/div>";
			viewerCode += "<a id='leftArrow' class='off' href='javascript:prevImage()' title='Previous Tour'><img src='/images/image-gallery/common/previous-over.gif' border='0' \/><\/a>";
			viewerCode += "<a id='rightArrow' class='off' href='javascript:nextImage(true)' title='Next Tour'><img src='/images/image-gallery/common/next-over.gif' border='0' \/><\/a>";
		viewerCode += "<\/div>";
		// populate container
		imageViewerY.innerHTML += viewerCode;
		setDisplay(document.getElementById("imageViewerPanel"), false);
	}
	
	function openImage(getIndex) {
		if(!viewerActive) {
			// open viewer
			fadeUpViewerBG(getIndex);
		}
		return false;
	}
	
	function setViewerDepth() {
		// get window dimensions
		myHeight = 0;
		myWidth = 0;
		if(typeof( window.innerWidth ) == 'number' ) {
			//Non-IE
			myWidth = window.innerWidth;
			myHeight = window.innerHeight;
		} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
			//IE 6+ in 'standards compliant mode'
			myWidth = document.documentElement.clientWidth;
			myHeight = document.documentElement.clientHeight;
		} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
			//IE 4 compatible
			myWidth = document.body.clientWidth;
			myHeight = document.body.clientHeight;
		}
		// set imageViewer container dimensions + offsets
		if (window.innerHeight && window.scrollMaxY) {	
			viewerDepth = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight) {
			viewerDepth = document.body.scrollHeight;
		} else {
			viewerDepth = document.body.offsetHeight;
		}
		if(myHeight > viewerDepth) viewerDepth = myHeight;
		if(viewerDepth < 520) viewerDepth = 520;
		imageViewer.style.height = viewerDepth + "px";
	}
	
	function fadeUpViewerBG(getIndex) {
		// set imageViewer container dimensions + offsets
		setViewerDepth();
		setDisplay(document.getElementById("imageViewer"),true);
		setDisplay(document.getElementById("imageViewerPanel"),false);
		document.getElementById("imageViewerPanelImage").innerHTML = "";
		viewerActive = true;
		if(Spry) {
			Spry.Effect.DoFade("imageViewerBG", {duration: 500, from: 0, to: 70, toggle: false, finish: function() {openImageViewer(getIndex);}});
		} else {
			imageViewerBG.className = "opaque";
			openImageViewer(getIndex);
		}
	}
	
	function openImageViewer(getIndex) {
		setDisplay(document.getElementById("imageViewerPanel"),true);
		// get scroll offset
		yOffset = 0
		if (self.pageYOffset) {
			yOffset = self.pageYOffset;
		} else if (document.documentElement && document.documentElement.scrollTop) {
			yOffset = document.documentElement.scrollTop;
		} else if (document.body) {
			yOffset = document.body.scrollTop;
		}
		// set vertical offset for panel
		if(window.XMLHttpRequest) {
			panelY = (myHeight-panelHeight)/2;
		} else {
			panelY = ((myHeight-panelHeight) /2) + yOffset;
		}
		// reset if less than 10
		if(panelY < 10) panelY = 10;
		if(imageViewerY.style.posTop) {
			imageViewerY.style.posTop = panelY;
		} else {
			imageViewerY.style.top = panelY + "px";
		}
		// set up objects for navigation
		leftArrow = document.getElementById("leftArrow");
		rightArrow = document.getElementById("rightArrow");
		// continue
		imageViewerUpdate(getIndex);
	}
	
	function closeImageViewer() {
		setDisplay(document.getElementById("imageViewerPanel"),false);
		if(Spry) {
			Spry.Effect.DoFade("imageViewerBG", {duration: 500, from: 100, to: 0, toggle: false, finish: function() {resetImageViewer();}});
		} else {
			resetImageViewer();
		}
	}
	
	function resetImageViewer() {
		viewerActive = false;
		setDisplay(document.getElementById("imageViewer"),false);
		// reset variables
		arrowsActive = false;
		slideShow = false;
		transition = true;
	}
	
	function imageViewerUpdate(getIndex) {
		setDisplay(document.getElementById("imageViewerPanel"),true);
		fullImageMaxWidth = parseFloat(document.getElementById("imageViewerPanelImage").offsetWidth - 2);
		fullImageMaxHeight = parseFloat(document.getElementById("imageViewerPanelImage").offsetHeight - 2);
		if(getIndex != imageIndex) {
			transition = true;
			// make front image holder invisible
			loadNewImage(getIndex);
		}
	}
	
	function loadNewImage(getIndex) {
		
		// set new imageIndex etc
		if(imageIndex >= 0) allThumbnails[imageIndex].className = "";
		imageIndex = getIndex;
		allThumbnails[imageIndex].className = "selected";
		
		// update title
		imageViewerY.getElementsByTagName("H3")[0].innerHTML = "<span class='imageIndex'>" + (imageIndex+1) + "\/" + imageAlts.length + ":<\/span>&nbsp;&nbsp;" + imageAlts[imageIndex];
			
		// add virtual tour
		var tempFla = new flashEmbedCode(8, "virtualTour", imagePaths[getIndex], 600, 377); // flashVer, getID, getSrc, getWidth, getHeight
		tempFla.addParam("quality","high");
		tempFla.addParam("wmode","transparent");
		document.getElementById("imageViewerPanelImage").innerHTML = tempFla.buildFlashCode();
		finishNewImage();
	}
	
	function finishNewImage() {
		// navigation
		transition = false;
		setArrows(true);
	}
	
	function prevImage() {
		if(arrowsActive) {
			setArrows(false);
			nextIndex = imageIndex - 1;
			if(nextIndex < 0) nextIndex = (allThumbnails.length - 1);
			imageViewerUpdate(nextIndex);
		}
	}
	
	function nextImage(buttonClicked) {
		if((slideShow && !buttonClicked) || (buttonClicked && arrowsActive)) {
			setArrows(false);
			nextIndex = imageIndex + 1;
			if(nextIndex >= allThumbnails.length) nextIndex = 0;
			imageViewerUpdate(nextIndex);
		}
	}
	
	function setArrows(getMode) {
		if(getMode) {
			arrowsActive = true;
			leftArrow.className = "active";
			rightArrow.className = "active";
		} else {
			arrowsActive = false;
			leftArrow.className = "off";
			rightArrow.className = "off";
		}
	}		
	

// -->
