// JS document

var slideshowLen = 4000;
var currentImage = 1;
var play = true;

var timerlen = 5;
var slideAniLen = 500;
var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endPos = new Array();
var startPos = new Array();
var inStartPos = new Array();
var moveLen = new Array();
var moveIt = new Array();
var presPos = new Array();
var dir = new Array();

function setupSlideshow() {
	turnOffImages();
	hideInfoBoxes();
	setupControls();
	setupInfo();
	setInterval( "changeImage();" , slideshowLen );
}

function turnOffImages() {
	//turn images off if JS is enabled
	for(var i = 1; i < 100; i++ ) {
		if(document.getElementById) {
			if(document.getElementById("gallery-image"+i)) {
				var galleryImage = document.getElementById("gallery-image"+i);
				if(i != 1) 
					galleryImage.style.display = "none";
				else {
					//position the fisrt image if it is a landscape
					var galleryImageImg = galleryImage.getElementsByTagName('img')[0];
					var imgHeight = galleryImage.height;
					if( imgHeight < 240 ) {
						var topMargin = (240 - imgHeight) / 2;
						galleryImageImg.style.marginTop = topMargin + "px";
					}
				}
			} 
		}
	}
}
function hideInfoBoxes() {
	//turn images off if JS is enabled
	for(var i = 1; i < 100; i++ ) {
		if(document.getElementById) {
			if(document.getElementById("gallery-info-box"+i)) {
				var galleryText = document.getElementById("gallery-info-box"+i);
				galleryText.style.position = "absolute";
			} 
		}
	}
}

function setupControls() {
	//turn the controls on
	var nextButton = document.getElementById("gallery-next-button");
	var playButton = document.getElementById("gallery-play-button");
	var pauseButton = document.getElementById("gallery-pause-button");
	var prevButton = document.getElementById("gallery-prev-button");
	
	
	if(document.getElementById("gallery-controls")) {
		var controls = document.getElementById("gallery-controls");
		controls.style.display = "block";
	}
	//Give the control buttons onclick functionality
	nextButton.onclick = function()
	{
		pauseButton.style.display = "none";
		playButton.style.display = "block";
		play = false;
		moveImage('next')
		return false;
	}
	
	playButton.onclick = function()
	{
		playButton.style.display = "none";
		pauseButton.style.display = "block";
		play = true;
		return false;
	}
	
	pauseButton.onclick = function()
	{
		pauseButton.style.display = "none";
		playButton.style.display = "block";
		play = false;
		return false;
	}
		
	prevButton.onclick = function()
	{
		pauseButton.style.display = "none";
		playButton.style.display = "block";
		play = false;
		moveImage('previous');
		return false;
	}
	
}

function changeImage() {
	if(document.getElementById && play) {
		//turn off the current image
		var galleryImageCurrent = document.getElementById("gallery-image"+currentImage);
		galleryImageCurrent.style.display = "none";
		currentImage ++;
		//turn on the next image if it exists, if not go back to the start
		if(document.getElementById("gallery-image"+currentImage)) {
			var galleryImageNext = document.getElementById("gallery-image"+currentImage);
		} else {
			currentImage = 1;
			var galleryImageNext = document.getElementById("gallery-image"+currentImage);
		}
		galleryImageNext.style.display = "block";
		//add top margin if we have a landscape image
		var galleryImage = galleryImageNext.getElementsByTagName('img')[0];
		var imgHeight = galleryImage.height;
		if( imgHeight < 240 ) {
			var topMargin = (240 - imgHeight) / 2;
			galleryImage.style.marginTop = topMargin + "px";
		}
		
	}
	
}

function moveImage(direction) {
	if(document.getElementById) {
		//turn off the current image
		var galleryImageCurrent = document.getElementById("gallery-image"+currentImage);
		galleryImageCurrent.style.display = "none";
		//set the next image
		if(direction == "next")
			currentImage ++;
		else
			currentImage --;
		//turn on the next image if it exists, if not go back to the start
		if(document.getElementById("gallery-image"+currentImage)) {
			var galleryImageNext = document.getElementById("gallery-image"+currentImage);
		} else {
			currentImage = 1;
			var galleryImageNext = document.getElementById("gallery-image"+currentImage);
		}
		galleryImageNext.style.display = "block";
		var galleryImage = galleryImageNext.getElementsByTagName('img')[0];
		var imgHeight = galleryImage.height;
		if( imgHeight < 240 ) {
			var topMargin = (240 - imgHeight) / 2;
			galleryImage.style.marginTop = topMargin + "px";
		}
	}
	
}

function setupInfo() {
	//Give the info button onmouseover functionality
	if(document.getElementById("gallery-info-button")) {
		var infoButton = document.getElementById("gallery-info-button");
		infoButton.onclick = function()
		{
			for(var i = 1; i < 100; i++ ) {
				if(document.getElementById) {
					if(document.getElementById("gallery-info-box"+i)) {
						slide("gallery-info-box"+i);
					} 
				}
			}
			
			return false;
		}
	}
}

function slide(objname)
{
	if(dir[objname] == null)
		dir[objname] = "up";
	if(dir[objname] == "up") {
		dir[objname] = "down";
		slideup(objname);
	} else {
		dir[objname] = "up";
		slidedown(objname);
	}
}

function slideup(objname)
{
	obj[objname] = document.getElementById(objname);
	if(startPos[objname] != null)
		stopSlide(objname);
	//endPos[objname] = 122;
	//inStartPos[objname] = 197;
	endPos[objname] = 215;
	inStartPos[objname] = 260;
	if(startPos[objname] == null)
		startPos[objname] = inStartPos[objname];
	moveLen[objname] = startPos[objname] - endPos[objname];

	startTime[objname] = (new Date()).getTime();
	timerID[objname] = setInterval('clockTickUp(\'' + objname + '\');',timerlen);
}
function clockTickUp(objname)
{
	var elapsed = (new Date()).getTime() - startTime[objname];
	if (elapsed > slideAniLen)
		endSlideUp(objname)
	else {
		moveIt[objname]=Math.round(elapsed / slideAniLen * moveLen[objname]);
		presPos[objname] = startPos[objname] - moveIt[objname];

		obj[objname].style.top = presPos[objname] + "px";
	}
	return;
}

function endSlideUp(objname)
{
	obj[objname].style.top = endPos[objname] + "px";
	clearInterval(timerID[objname]);
	delete(timerID[objname]);
	delete(startTime[objname]);
	delete(moveLen[objname]);
	delete(startPos[objname]);
	delete(moveIt[objname]);
	delete(presPos[objname]);
	delete(obj[objname]);

	return;
}







function slidedown(objname)
{
	obj[objname] = document.getElementById(objname);
	if(startPos[objname] != null)
	stopSlide(objname);
	endPos[objname] = 260;
	inStartPos[objname] = 215;
	if(startPos[objname] == null)
	startPos[objname] = inStartPos[objname];
	moveLen[objname] = startPos[objname] - endPos[objname];

	startTime[objname] = (new Date()).getTime();
	timerID[objname] = setInterval('clockTickDown(\'' + objname + '\');',timerlen);
}

function clockTickDown(objname)
{
	var elapsed = (new Date()).getTime() - startTime[objname];
	if (elapsed > slideAniLen)
		endSlideDown(objname)
	else {
		moveIt[objname]=Math.round(elapsed / slideAniLen * moveLen[objname]);
		presPos[objname] = startPos[objname] - moveIt[objname];

		obj[objname].style.top = presPos[objname] + "px";
	}
	return;
}

function endSlideDown(objname)
{
	obj[objname].style.top = endPos[objname] + "px";
	clearInterval(timerID[objname]);
	delete(timerID[objname]);
	delete(startTime[objname]);
	delete(moveLen[objname]);
	delete(startPos[objname]);
	delete(moveIt[objname]);
	delete(presPos[objname]);
	delete(obj[objname]);

	return;
}




function stopSlide(objname)
{
	startPos[objname] = presPos[objname];
	clearInterval(timerID[objname]);
	delete(timerID[objname]);
	delete(startTime[objname]);
	delete(moveLen[objname]);
	delete(moveIt[objname]);
	delete(presPos[objname]);

	return;
}
