var steps = new Number();
var stepsOut = new Number();
var stepsIn = new Number();
var time = new Number();
var shown = new Array();
var sections = new Array("building", "industrial", "soil", "solar", "solarconcentrator");
var images = new Array(1, 3, 3, 3, 1);
var slideshowTimerId = new Number();
var faderTimerId = new Number();

Array.prototype.sum = function sum()
{
	for(var i=0, sum=0; i<this.length; sum+=this[i++]);

	return sum;
}

function addToShown(i, j)
{
	shown[shown.length] = '(' + i + ',' + j + ')';
}
function inShown(i, j)
{
	if (shown.join().match('(' + i + ',' + j + ')'))
		return true;
	else
		return false;
}

function slideshow(last)
{
	if (last)
	{
		var lastArray = shown[shown.length - 2].match(/\((\d+),(\d+)\)/);
		var sectionNumber = lastArray[1];
		var imageNumber = lastArray[2];
	}
	else
	{
		var sectionNumber = getRandomNumber(0, sections.length - 1);
		var imageNumber = getRandomNumber(1, images[sectionNumber]);
	
		while (inShown(sectionNumber, imageNumber))
		{
			var sectionNumber = getRandomNumber(0, sections.length - 1);
			var imageNumber = getRandomNumber(1, images[sectionNumber]);
		}
	}

	var section = sections[sectionNumber];

	var sectionFile = "/images/slideshow/" + section + ".gif";
	var imageFile = "/images/slideshow/" + section + "_image_" + imageNumber + ".jpg";

	switch (section)
	{
		case "soil":
			var href = "/applications/meteorologyAndSoil.html";
			break;
		case "building":
			var href = "/applications/buildingPhysics.html";
			break;
		case "industrial":
			var href = "/applications/industryAndFire.html";
			break;
		case "solar":
			var href = "/applications/broadbandRadiometry.html";
			break;
		case "solarconcentrator":
			var href = "/applications/solarConcentrator.html";
			break;
	}

	fade(sectionFile, href, 'leftImage');
	fade(imageFile, href, 'rightImage');

	addToShown(sectionNumber, imageNumber);

	if (shown.length > images.sum() - 1)
		shown = new Array();

	slideshowTimerId = setTimeout("slideshow()", 10000);
}

function getRandomNumber(lower, upper)
{
	var number = Math.round(upper * Math.random());

	while (number < lower || number > upper)
		var number = Math.round(upper * Math.random());

	return number;
}

function fade(fileSrc, href, pId)
{
	var p = document.getElementById(pId);

	p.style.opacity = 0;
	p.style.MozOpacity = 0;
	p.style.KHTMLOpacity = 0;
	p.style.filter = "alpha(opacity:0)";
	p.innerHTML = '<span class="center"><a href="' + href + '"><img src="' + fileSrc + '" alt="" title="" /></a></span>';

	stepsIn = 0;

	doFadeIn(pId);
}

function doFadeIn(div)
{
	var p = document.getElementById(div);

	var opacity = stepsIn / 20;

	p.style.opacity = opacity;
	p.style.MozOpacity = opacity;
	p.style.KHTMLOpacity = opacity;
	p.style.filter = "alpha(opacity:" + opacity * 100 + ")";

	stepsIn++;

	if (stepsIn < 20)
		faderTimerId = setTimeout("doFadeIn('" + div + "')", 25);
}

function next()
{
	clearTimeout(slideshowTimerId);
	clearTimeout(faderTimerId);

	slideshow();
}
function pause()
{
	clearTimeout(slideshowTimerId);
	clearTimeout(faderTimerId);
}
function prev()
{
	if (shown.length > 1)
	{
		clearTimeout(slideshowTimerId);
		clearTimeout(faderTimerId);
		slideshow(true);
	}
}