var rotationTime = 10000;
var fadeSpeed = 1000;
var imageHolderId = "imageHolder";

//NIETS AAN DOEN :P
var image;
var images = Array();
var running = false;
var currentImage = 0;
var currentFade = 0;
var fadeInterval;

function addImage(imageURL){
  images.push(imageURL);
}

function startRotation(){
  if(images.length>1){
    running = true;
    if(!image) {
	  image = document.createElement("img");
	  document.getElementById(imageHolderId).appendChild(image);
	  image.onload = imageLoaded;
	  setFade(0,image);
	  currentImage = Math.floor(Math.random()*images.length)
	  showNextImage();
	} else {
	  setTimeout(function() { fadeOutImage(); },rotationTime);
	}
  }
}

function stopRotation(){
  running = false;
}

function fadeOutImage(){
  clearInterval(fadeInterval);
  fadeInterval = setInterval(function() { _fadeOutImage();},30);
}

function _fadeOutImage(){
  if(currentFade<=0){
	clearInterval(fadeInterval);
	setFade(0,image);
	currentFade = 0;
	if(running) showNextImage();
  } else {
	currentFade -= 100 / (fadeSpeed / 30);
	setFade(currentFade,image);
  }
}

function fadeInImage(){
  clearInterval(fadeInterval);
  fadeInterval = setInterval(function() { _fadeInImage();},30);
}

function _fadeInImage(){
  if(currentFade>=100){
	clearInterval(fadeInterval);
	setFade(100,image);
	currentFade = 100;
	if(running) setTimeout(function() { fadeOutImage(); },rotationTime);
  } else {
	currentFade += 100 / (fadeSpeed / 30);
	setFade(currentFade,image);
  }
}

function imageLoaded(){
  fadeInImage();
}

function showNextImage(){
  image.src = images[currentImage];
  currentImage++;
  currentImage %= images.length;
}

function setFade(op, obj){
  var obj = obj.style;
  if (navigator.userAgent.indexOf("Firefox") != -1){
	if (op >= 100) { op = 99.999; }
  }
  obj.filter = "alpha(opacity=" + op + ")";
  obj.KhtmlOpacity = (op / 100);
  obj.MozOpacity = (op / 100);
  obj.opacity = (op / 100);
}