// JavaScript Document

// user settings

var currentImageId = 'currentImage';
var thumbnailsContainerId = 'thumbnails';
var speed = 4000;

// system settings

var allThumbs;
var currentImageIndex;
var lastIndex = false;
var autoscroll = true;
var autoscrollTimeout = Array();

addOnload(thumbnailClick);

function thumbnailClick() {
	global: allThumbs;
	allThumbs = document.getElementsByClassName("a","galleryThumbnail");
	for (i=0; i<allThumbs.length; i++) {
		allThumbs[i].onclick = displayThumbnail;
	}
}

function displayThumbnail() {
	global: currentImageId;
	clearPreview();
	var imgLocation = this.href;
	var currentImage = document.getElementById(currentImageId);
	currentImage.style.backgroundImage = "url('" + imgLocation + "')";
	scrollThumbnails();
	return false;
}

addOnload(setDefaultWidth);

function setDefaultWidth() {
	var thumbCount = document.getElementsByClassName("a","galleryThumbnail").length;
	document.getElementById('thumbReadjust').style.width = thumbCount*(120 + 6) + "px";
}

addOnload(scrollClick);

function scrollClick() {
	document.getElementById('scrollLeft').onclick = scrollThumbnails;
	document.getElementById('scrollRight').onclick = scrollThumbnails;
}

function scrollThumbnails() {
	global: allThumbs, currentImageId, thumbnailsContainerId, autoscroll, speed;
	var thumbnailsContainer = document.getElementById(thumbnailsContainerId);
	var scrollDirection = 0;
	var scrollDistance = 116;
	var thumbCount = document.getElementsByClassName("a","galleryThumbnail").length;
	var maxLeft = 0;
	var maxRight = thumbCount*120 - parseInt(thumbnailsContainer.offsetWidth) - 10;
	
	if ((this.id == "scrollLeft") || (this.id == "scrollRight")) clearPreview();
	
	if (this.id == "scrollLeft") scrollDirection = scrollDirection - scrollDistance;
		else if (thumbnailsContainer.scrollLeft < maxRight) scrollDirection = scrollDirection + scrollDistance;
	
	if (document.getElementById(currentImageId).style.backgroundImage == "url(" + allThumbs[allThumbs.length - 1] + ")") {
		setTimeout('goToFront(\'' + thumbnailsContainerId + '\', 10)', speed);
		lastIndex = false;
		autoscroll = true;
	}

	scrollDirection = scrollDirection - (scrollDirection % 2);
	
	if (Math.abs(scrollDirection) > 0) setTimeout("doScroll('" + thumbnailsContainerId + "'," + scrollDirection + "); ", 5);
}

function doScroll(id, distance) {
	var scrollStep = 0;
	obj = document.getElementById(id);
	if (distance > 0) scrollStep = 2; else scrollStep = -2;
	obj.scrollLeft = obj.scrollLeft + scrollStep;
	if (Math.abs(distance) > 0) {
		distance = distance - scrollStep;
		setTimeout("doScroll('" + id + "'," + distance + "); ", 5);
	}
}

function goToFront(id, step) {
	global: currentImageId;
	obj = document.getElementById(id);
	obj.scrollLeft = obj.scrollLeft - step;
	if (obj.scrollLeft != 0) setTimeout("goToFront('" + id + "'," + step + "); ", 1);
		else {
			var currentImage = document.getElementById(currentImageId);
			currentImage.style.backgroundImage = "url('" + allThumbs[0] + "')";
			initianlAutoScroll();
			return false;
		}
}

addOnload(initianlAutoScroll);

function initianlAutoScroll() {
	global: lastIndex, speed, autoscroll, autoscrollTimeout;
	if (autoscroll)
		if (!lastIndex)
			autoscrollTimeout.push(setTimeout("scrollThumbnails(); rotatePreview(); initianlAutoScroll();", speed));
		else
			autoscrollTimeout.push(setTimeout("scrollThumbnails();", speed));
}

function rotatePreview() {
	global: currentImageId, allThumbs, currentImageIndex, lastIndex, autoscroll;
	var currentImage = document.getElementById(currentImageId);
	var currentbackground = currentImage.style.backgroundImage;
	var backLength = currentbackground.length - 5;
	var currentbackgroundClean;
	if (currentbackground.indexOf("http://") != 4)  currentbackgroundClean = "http://" + location.host + "/" + currentbackground.substr(4,backLength);
		else currentbackgroundClean = currentbackground.substr(4,backLength);
	for (i=0; i<allThumbs.length; i++)  if (allThumbs[i] == currentbackgroundClean) backgroundsIndex = (( i + 1 ) % allThumbs.length);
	currentImage.style.backgroundImage = "url('" + allThumbs[backgroundsIndex] + "')";
	if (backgroundsIndex == (allThumbs.length - 1)) lastIndex = true;
}

function clearPreview() {
	global: autoscrollTimeout, autoscroll;
	autoscroll = false;
	for (i=0; i<autoscrollTimeout.length; i++)
		clearTimeout(autoscrollTimeout[i]);
}