var loadedImages = new Array();
var lastPosition = 0;
var usedImages = new Array();
var timer = Math.random();

function loadImage(src, position, rapid)
{
	if (document.getElementById('images-1-1') == null) return false;
	
  var image = new Image();
  image.src = src;

  loadedImages[position] = src;
  
  var timeouts = new Array(0, 150, 300, 450);
  
  fisherYates(timeouts);
  
  if (rapid)
    timeouts[0] = timeouts[1] = timeouts[2] = timeouts[3] = 0;
  setTimeout("var q1 = document.getElementById('images-" + position + "-1'); q1.style.backgroundImage = 'url(" + src + ")';", timeouts[0]);
  setTimeout("var q2 = document.getElementById('images-" + position + "-2'); q2.style.backgroundImage = 'url(" + src + ")';", timeouts[1]);
  setTimeout("var q3 = document.getElementById('images-" + position + "-3'); q3.style.backgroundImage = 'url(" + src + ")';", timeouts[2]);
  setTimeout("var q4 = document.getElementById('images-" + position + "-4'); q4.style.backgroundImage = 'url(" + src + ")';", timeouts[3]);
	
	return true;
}

function fisherYates ( myArray ) {
  var i = myArray.length;
  if ( i == 0 ) return false;
  while ( --i ) {
     var j = Math.floor( Math.random() * ( i + 1 ) );
     var tempi = myArray[i];
     var tempj = myArray[j];
     myArray[i] = tempj;
     myArray[j] = tempi;
   }
}

function alreadyBeingDisplay(src)
{
  for (var i = 0; i < loadedImages.length; i++)
  {
    if (loadedImages[i] == src) return true;
  } 
  
  for (var i = 0; i < usedImages.length; i++)
  {
    if (usedImages[i] == src) return true;
  } 
  
  return false;
}

function randomlySwapImage(t)
{
	if (t != timer) return false;
  var k = Math.floor( Math.random() * ( 21 ) ) + 1;
  var src = '/images/image-' + k + '.jpg';
  
  while (alreadyBeingDisplay(src))
  {
    k = Math.floor( Math.random() * ( 21 ) ) + 1;
    src = '/images/image-' + k + '.jpg';
  }
  
  var j = Math.floor( Math.random() * ( 5 ) ) + 1;
  
  while (j == lastPosition)
    j = Math.floor( Math.random() * ( 5 ) ) + 1;
  
  lastPosition = j;

  usedImages.push(src);
  if (usedImages.length > 10) usedImages.shift();
  
  if (loadImage(src, j)) 
	{
		timer = Math.random();
		setTimeout('randomlySwapImage(' + timer + ')', 5000);  
	}
}

timer = Math.random();
setTimeout('randomlySwapImage(' + timer + ')', 5000);
