var FadeDurationMS = 1000;
function SetOpacity(object,opacityPct)
{
  // IE.
  object.style.filter = 'alpha(opacity=' + opacityPct + ')';
  // Old mozilla and firefox
  object.style.MozOpacity = opacityPct/100;
  // Everything else.
  object.style.opacity = opacityPct/100;
}

function ChangeOpacity(id,msDuration,msStart,fromO,toO)
{
	  var element=document.getElementById(id);
	  var msNow = (new Date()).getTime();
	  var opacity = fromO + (toO - fromO) * (msNow - msStart) / msDuration;
	  if (opacity>=100)
	  {
		    SetOpacity(element,100);
		    element.timer = undefined;
	  }
	  else if (opacity<=0)
	  {
		    SetOpacity(element,0);
		    element.timer = undefined;
	  }
	  else 
	  {
		    SetOpacity(element,opacity);
		    element.timer = window.setTimeout("ChangeOpacity('" + id + "'," + msDuration + "," + msStart + "," + fromO + "," + toO + ")",2);
	  }
}
function FadeInImage(foregroundID,newImage,backgroundID)
{
	var foreground = document.getElementById(foregroundID);
	if (foreground != null)
	{
		if (foreground.timer) 
			window.clearTimeout(foreground.timer);

		if (backgroundID)
		{
			var background=document.getElementById(backgroundID);
			if (background)
			{
				if (background.src)
				{
					foreground.src = background.src;
					SetOpacity(foreground,100);
				}
				background.src = newImage;
				background.style.backgroundImage = 'url(' + newImage + ')';
			    background.style.backgroundRepeat = 'no-repeat';
			    var startMS = (new Date()).getTime();
			    foreground.timer = window.setTimeout("ChangeOpacity('" + foregroundID + "'," + FadeDurationMS + "," + startMS + ",100,0)",5);
			}
		} 
		else 
		{
			foreground.src = newImage;
		}
	}
}

var elements;
var links;
var titles;
var type;
var play;
var index = 0;
var slideCache = new Array();
function RunSlideShow(pictureID,backgroundID,linkID,imageLinks,imageFiles,imageTitles,displaySecs,type)
{
	elements = imageFiles;
	links = imageLinks;
	titles = imageTitles;
		
	var imageSeparator = imageFiles.indexOf(";");
	var nextImage = imageFiles.substring(0,imageSeparator);
	
	setTimeout("FadeInImage('PictureForeground','"+nextImage+"','PictureBackground')",200);
	
	var futureImages = imageFiles.substring(imageSeparator+1,imageFiles.length)+ ';' + nextImage;
	
	var imageLinksSeperator = imageLinks.indexOf(";");
	var nextLink = imageLinks.substring(0,imageLinksSeperator);
	var futureLinks = imageLinks.substring(imageLinksSeperator+1,imageLinks.length)+ ';' + nextLink;
	
	var imageTitlesSeperator = imageTitles.indexOf(";");
	var nextTitle = imageTitles.substring(0,imageTitlesSeperator);
	var futureTitles = imageTitles.substring(imageTitlesSeperator+1,imageTitles.length)+ ';' + nextTitle;
	
	counter(type, nextTitle, nextLink);
	
	play = setTimeout("RunSlideShow('"+pictureID+"','"+backgroundID+"','"+linkID+"','"+futureLinks+"','"+futureImages+"','"+futureTitles+"',"+displaySecs+",'nextimage')",displaySecs*1000);  
	
	// Cache the next image to improve performance.
	imageSeparator = futureImages.indexOf(";");
	nextImage = futureImages.substring(0,imageSeparator);
	  
	if (slideCache[nextImage] == null)
	{
		slideCache[nextImage] = new Image;
		slideCache[nextImage].src = nextImage;
	}
}

function counter(type, nextTitle, nextLink)
{
	var elementsArray = elements.split(';');
	var items = elementsArray.length;
	
	if(index < items && type =="nextimage")
	{
		index++;
	}
	else if (index > 1 && type == "previmage")
	{
		index = index - 1;
	}
	else if (index >= items && type == "nextimage")
	{
		index = 1;
	}
	else if (index <= 1 && type =="previmage")
	{
		index = items;
	}
	
	if(document.getElementById("headerText"))
	{
		document.getElementById("headerText").innerHTML = nextTitle;
		document.getElementById("headerText").href = nextLink;
	}
	if(document.getElementById("amount"))
	{
		document.getElementById("amount").innerHTML =  	index + " van " + items;	
	}
}

function next()
{	
	clearTimeout(play);
	 
	var imageSeparator = elements.indexOf(";");
	var nextImage = elements.substring(0,imageSeparator);
	
	var futureImages = elements.substring(imageSeparator+1,elements.length)+ ';' + nextImage;
	
	var imageLinksSeperator = links.indexOf(";");
	var nextLink = links.substring(0,imageLinksSeperator);
	var futureLinks = links.substring(imageLinksSeperator+1,links.length)+ ';' + nextLink;
	
	var imageTitlesSeperator = titles.indexOf(";");
	var nextTitle = titles.substring(0,imageTitlesSeperator);
	var futureTitles = titles.substring(imageTitlesSeperator+1,titles.length)+ ';' + nextTitle;
	
	RunSlideShow("PictureForeground","PictureBackground","link",futureLinks,futureImages,futureTitles,6,"nextimage");
}
 
function previous()
{
	clearTimeout(play);
	 
	var imageSeparator = elements.lastIndexOf(";");
	var previousImage = elements.substring(imageSeparator+1);
	
	var futureImages = previousImage + ";" + elements.substring(0,imageSeparator);
	
	var imageLinksSeperator = links.lastIndexOf(";");
	var previousLink = links.substring(imageLinksSeperator+1);
	var futureLinks = previousLink + ";" + links.substring(0,imageLinksSeperator);
	
	var imageTitlesSeperator = titles.lastIndexOf(";");
	var previousTitle = titles.substring(imageTitlesSeperator+1);
	var futureTitles = previousTitle + ";" + titles.substring(0,imageTitlesSeperator);
	
	RunSlideShow("PictureForeground","PictureBackground","link",futureLinks,futureImages,futureTitles,6,"previmage");
}
