var images = null;
var imageNames = null;
var mainImage = null;
var imagePos = 0;
var thumbnails = null;
var loading = null;

function gallery(imageNames) {
	this.imageNames = imageNames;
	images = new Array(imageNames.length);
	mainImage = document.getElementById('mainImage');
	thumbnails = document.getElementById('imageThumbnails').getElementsByTagName('img');
	preloadImages();
}

function preloadImages() {
	mainImageName = getImageName(mainImage.src);
	imagePos = getImagePos(mainImageName);
	
	if(imagePos > 0 && images[imagePos - 1] == null) {
		loadImage(imagePos - 1);
	}
	
	if((imagePos + 1) < images.length && images[imagePos + 1] == null) {
		loadImage(imagePos + 1);
	}
}

function loadImage(pos) {
	images[pos] = new Image();
	images[pos].src = mainImage.src.substr(0, mainImage.src.lastIndexOf('/') + 1) + imageNames[pos];
}

function showNextImage() {
	if(imagePos + 1 < images.length) {
		showImage(imagePos + 1);	
	}
	return false;
}

function showPrevImage() {
	if(imagePos >= 1) {
		showImage(imagePos - 1);
	}
	return false;
}

function showImage(pos) {
	if(images[pos] == null) {
		loadImage(pos);
	}
	if(!images[pos].complete && loading == null) {
		loading = window.setInterval('showImage(' + pos + ')', 200);
	} else if(images[pos].complete) {
		if(loading != null) {
			window.clearInterval(loading);
			loading = null;
		}
		imagePos = pos;
		mainImage.src = images[pos].src;
		mainImage.width = images[pos].width;
		mainImage.height = images[pos].height;

		imageText = document.getElementById('imageName');
		if(imageText != null) {
			imageText.replaceChild(document.createTextNode(decodeURI(getImageName(mainImage.src))), imageText.firstChild);
		}
		updateThumbnails();
		preloadImages();
	}
	return false;
}

function updateThumbnails() {
	if(thumbnails != null && imagePos >= 2 && (imagePos + 2) < images.length) {
		j = imagePos - 2;
		for(i = 1; i < thumbnails.length - 1; i++) {
			thumbnails[i].src = thumbnails[i].src.substr(0, thumbnails[i].src.lastIndexOf('/') + 1) + imageNames[j];
			j++;
			thumbnails[i].parentNode.href = thumbnails[i].parentNode.href.substr(0, thumbnails[i].parentNode.href.lastIndexOf('-') + 1) + j + '.html';
		}		
	}
}

function getImageName(src) {
	return decodeURI(src.substr(src.lastIndexOf('/') + 1));
}

function showImageFromThumbnail(pos) {
	imageName = getImageName(thumbnails[pos].src);
	showImage(getImagePos(imageName));
	return false;
}

function getImagePos(imageName) {
	for(var i = 0; i < imageNames.length; i++) {
		if(imageNames[i] == imageName) {
			return i;
		}
	}
	return -1;
}
