﻿// JScript File

var thumbWidth = 34; // Be sure to add padding/margin/border (in pixels)
var scrollItems = 13;
var delayTime = 100; // Smaller = faster
var bigImageId = "bigImage";
var imageListId = "bigImageList";
var textTargetId = "description";
var textListId = "descriptiveTextList";

var timerActive = false;
var scrollAmount;
var containerWidth;
var viewerWidth;

function initThumbs() {
	var tv = document.getElementById("thumbViewer");
	var tc = document.getElementById("thumbContainer");
	viewerWidth = tv.clientWidth;
	// To calculate the width in Firefox, it's necessary to pull some stupid stunts...
	// (Firefox doesn't properly calculate width of elements within a well-defined parent)
	var tempPosition = tv.style.position;
	var tempOverflow = tv.style.overflow;
	var tempWidth = tv.style.width
	tv.style.position = "static";
	tv.style.overflow = "visible";
	tv.style.width = "auto";
	containerWidth = tc.scrollWidth;
	tv.style.width = tempWidth;
	tv.style.overflow = tempOverflow;
	tv.style.position = tempPosition;
	scrollAmount = thumbWidth * scrollItems;
}

function showItem(n) {
	var i = document.getElementById(bigImageId);
	var imgs = document.getElementById(imageListId);
	var d = document.getElementById(textTargetId);
	var txts = document.getElementById(textListId);
	var img = imgs.getElementsByTagName("img")[n-1];
	if (img) {
		i.src = img.src;
		setContent(d, getContent(txts.getElementsByTagName("div")[n-1]));	
	}
}

function viewPrev() {
	var t = document.getElementById("thumbContainer");
	var leftPos = stripUnits(t.style.left);
	if (leftPos < 0)
		leftPos += scrollAmount;
	if (leftPos > 0)
		leftPos = 0;
	//t.style.left = leftPos + "px";
	fancySlide(t.id, leftPos);
}

function viewNext() {
	var t = document.getElementById("thumbContainer");
	var leftPos = stripUnits(t.style.left);
	if (leftPos > -(containerWidth - viewerWidth))
		leftPos -= scrollAmount;
	//t.style.left = leftPos + "px";
	fancySlide(t.id, leftPos);
}

function stripUnits(txt) {
	if (txt.length == 0)
		return 0;
	else {
		var re = /[^0-9\-]/g;
		return new Number(txt.replace(re, ""));
	}
}

// Moves an object in a graceful fashion - fast at first and slow near the end
function fancySlide(objID, targetX) {
	if (timerActive)
		return;
	var o = document.getElementById(objID);
	var originX = stripUnits(o.style.left);
	var newX;
	var diff = Math.ceil(Math.abs(targetX - originX) / 4);
	if (targetX > originX) {
		newX = originX + diff;
		o.style.left = newX + "px";
		 if (newX < targetX) {
			timerActive = true;
			window.setTimeout("timerActive = false; fancySlide('" + objID + "', " + targetX + ");", delayTime);
		}			
	} else {
		newX = originX - diff;
		o.style.left = newX + "px";
		 if (newX > targetX) {
			timerActive = true;
			window.setTimeout("timerActive = false; fancySlide('" + objID + "', " + targetX + ");", delayTime);
		}
	}
}

// Because FireFox doesn't support innerHTML or innerText...
function getContent(o) {
	if (o.innerHTML)
		return o.innerHTML;
	else
		return o.textContent;
}

// Because FireFox doesn't support innerHTML or innerText...
function setContent(o, content) {
	if (o.innerHTML)
		o.innerHTML = content;
	else
		o.textContent = content;
}