/* Photo gallery script */

var imagePreload; // holds the loading image before it's shown
var isScrolling = false;
var dirScrolling = '';
var timerID = 0;
var containerWidth = 0;
var scrollStep = 2;
var secondScrollStep = 3;
var timeBetweenScroll = 20;
var timeBeforeAccel = 100;
var timeScrolling = 0;
var crntImageIndex = 0;
var fadeTime = 0.5;

function prevImage ()
{
	var list = document.getElementById('gallerythumblist');
	
	if (list) {
		var thumbs = list.getElementsByTagName('img');
		
		if (crntImageIndex == 1) {
			crntImageIndex = thumbs.length + 1;
		}
		
		showImage(thumbs[crntImageIndex - 2], crntImageIndex - 1);
	}
}

function nextImage ()
{
	var list = document.getElementById('gallerythumblist');
	
	if (list) {
		var thumbs = list.getElementsByTagName('img');
		
		if (thumbs.length <= crntImageIndex) {
			crntImageIndex = 0;
		}
		
		showImage(thumbs[crntImageIndex], crntImageIndex + 1);
	}
}

function doScroll ()
{
	if (isScrolling) {
		var list = document.getElementById('gallerythumblist');
		timeScrolling++;
		
		var scrollOffset;
		
		if (timeScrolling * timeBetweenScroll >= timeBeforeAccel) {
			scrollOffset = secondScrollStep;
		} else {
			scrollOffset = scrollStep;
		}
		
		if (list) {
			var p = list.getElementsByTagName('p')[0];
			var off = p.style.left.substring(0, p.style.left.length - 2);
			if (off == '') { off = 0; }
			if (p) {
				if (dirScrolling == 'left') {
					if ((off + scrollOffset) < 0) {
						off = parseInt(off) + scrollOffset;
					} else {
						off = 0;
					}
				} else if (dirScrolling == 'right') {
					off = parseInt(off);
					if (p.offsetWidth > containerWidth && (p.offsetWidth + off > containerWidth)) {
						off = parseInt(off) - scrollOffset;
					} else {
						if (p.offsetWidth < containerWidth) {
							off = 0;
						} else {
							off = containerWidth - p.offsetWidth;
						}
					}
				}
			}
			
			p.style.left = off + 'px';
		}
	}
}

function gscrollLeft ()
{
	if (isScrolling == false) {
		isScrolling = true;
		timeScrolling = 0;
		dirScrolling = 'left';
		timerID = window.setInterval(doScroll, 20);
	}
}

function gscrollRight ()
{
	if (isScrolling == false) {
		isScrolling = true;
		timeScrolling = 0;
		dirScrolling = 'right';
		timerID = window.setInterval(doScroll, 20);
	}
}

function gscrollStop ()
{
	if (isScrolling == true) {
		timeScrolling = 0;
		window.clearInterval(timerID);
		isScrolling = false;
		dirScrolling = '';
	}
}

function onImageLoaded ()
{
	var mainImg = document.getElementById('giA');
	
	mainImg.title = imagePreload.title;
	mainImg.alt = mainImg.title;
	mainImg.src = imagePreload.src;
	
	ef = new Effect.Opacity('giB', {duration:fadeTime,from:1,to:0,transition:Effect.Transitions.sinoidal,afterFinish:cbAfterFinish});
}

function cbAfterFinish ()
{
	var desc = document.getElementById("gallerycomment");
	desc.innerHTML = '<strong>' + imgList[crntImageIndex].title + ':</strong> ' + imgList[crntImageIndex].comment;
	var imgb = document.getElementById('giB');
	var imga = document.getElementById('giA');
	
	imgb.title = imga.title;
	imgb.alt = imga.alt;
	imgb.src = imga.src;
	
	new Effect.Opacity('giB', {duration:0,from:1,to:1});
}

function showImage (img, idx)
{
	if (img.className != 'selected') {
		var desc = document.getElementById("gallerycomment");
		desc.innerHTML = '<strong>Loading...</strong>';

		imagePreload = new Image();
		imagePreload.onload = onImageLoaded;
		imagePreload.title = imgList[idx].title;
		imagePreload.src = imgList[idx].url;
		
		crntImageIndex = idx;

		deselectAllImages(img);
	}
}

function deselectAllImages (except)
{
	var list = document.getElementById('gallerythumblist');
	
	if (list) {
		var thumbs = document.getElementsByTagName('img');
		
		for (var i = 0; i != thumbs.length; i++) {
			if (thumbs[i] != except) {
				thumbs[i].className = '';
			} else {
				thumbs[i].className = 'selected';
			}
		}
	}
}

function initGallery ()
{
	var list = document.getElementById('gallerythumblist');
	
	if (list) {
		containerWidth = list.offsetWidth;
		var thumbs = list.getElementsByTagName('img');
				
		// Get the first image and schedule this to be shown
		showImage(thumbs[0], 1);
	}
}