// Simple Gallery
// Thomas Abraham, 2010

function initGallery()
{
	innerHeight = 0;
	innerWidth = 0;
	currentImageId=0;
	maxImages=0;
	imgInstances = new Array();
}

function displayImage(current_id,width,height)
{
if( ! document.onkeyup ){
	document.onkeyup=getKey;
	if(navigator.appName.indexOf("Microsoft") != -1 && navigator.appVersion.substring(0,1) < 9 ){
		document.getElementById('gallery-image-container').style.filter='alpha(opacity=50)';
	}
}


if(maxImages==0){
// Create image instances to save ressources and prevent from losing objects
	for(i=1;i<120;i++){
		if( ! document.getElementById('gallery-' + i) ){
			maxImages = i-1;
			break;
		}
		imgInstances[i] = createImageInstance('gallery-' + i, width, height);
	}
}

	var diff = innerHeight - height;
	if(diff > 40 ){
		document.getElementById('gallery-image').style.marginTop = diff/2 + 'px';
	}

	document.getElementById('gallery-image-view').src = imgInstances[current_id][0].src;
	document.getElementById('gallery-image-view').style.width=width + 'px';
	document.getElementById('gallery-image-view').style.height=height + 'px';
	document.getElementById('gallery-image-title').firstChild.nodeValue = imgInstances[current_id][3];
	document.getElementById('gallery-image-container').style.visibility='visible';
	document.getElementById('gallery-nav').style.width=width + 'px';
	document.getElementById('gallery-image').style.visibility='visible';

	currentImageId = current_id;
}

function createImageInstance(id, width, height)
{
	exp = /^.*\/([^\/]+)$/ ;
	exp.exec(document.getElementById(id).src);
	src = RegExp.$1.replace(/_thumb/, '');
	img = new Array();
	img[0] = new Image();
	img[0].src = image_path +'/'+ src;
	img[1] = width;
	img[2] = height;
	img[3] = document.getElementById(id).title;
	
	return img;
}

function hideImage()
{
	document.onkeyup = null;
	document.getElementById('gallery-image').style.visibility='hidden';
	document.getElementById('gallery-image-container').style.visibility='hidden';
}

function nextImage()
{
	if(currentImageId >=maxImages ){
		currentImageId = 0;
	}

	if(imgInstances[currentImageId+1]){
		displayImage(currentImageId+1, imgInstances[currentImageId+1][1], imgInstances[currentImageId+1][2]);
	}
	else {
		hideImage();
	}
}

function previousImage()
{
	if(currentImageId <=1 ){
		currentImageId = maxImages+1;
	}

	if(imgInstances[currentImageId-1]){
		displayImage(currentImageId-1, imgInstances[currentImageId-1][1], imgInstances[currentImageId-1][2]);
	}
	else {
		hideImage();
	}
}

function getKey (e) {
      eo = window.event ? event : e;
      code = eo.CharCode ? eo.CharCode : eo.keyCode;
/*
escape		27
backspace	8
right arrow	39
left arrow	37
space		32
*/
	switch(code){
		case 37:
		previousImage();
		break;
		case 39:
		nextImage();
		break;
		case 27:
		hideImage();
	}

}

