var columnCount = 7;
var cellImageCount = 11;
var imageDir = "inc/topcells/";
var imageExt = ".gif";
var images = Array(cellImageCount);
var blankFilename = "blankcell.gif";
var delay = 100;
var imageQueue = Array();

function preload()
{
	for (i = 1; i <= cellImageCount; i++)
	{
		images[i - 1] = new Image();
		images[i - 1].src = i + imageExt;
	}
}

function populateImageQueue()
{
	poolSize = columnCount * 2 - 1; // account for one extra cell
	
	// create the pool
	pool = Array(poolSize);
	for (i = 0; i < poolSize; i++)
	{
		if (i >= cellImageCount)
		{
			pool[i] = blankFilename;
		}
		else
		{
			pool[i] = (i + 1) + imageExt;
		}
	}
	
	// create the queue
	lastBlankIndex = -1;
	evenEarlierBlankIndex = -1;
	for (i = 0; i < poolSize; i++)
	{
		do
		{
			index = Math.floor(Math.random() * pool.length);
			element = pool[index];
			isBlank = (element == blankFilename);
		}
		while (i >= 2 && i <= poolSize - 2 && isBlank && lastBlankIndex != -1 && (i - 1 == lastBlankIndex || i - 2 == evenEarlierBlankIndex));
												   
		if (isBlank)
		{
			evenEarlierBlankIndex = lastBlankIndex;
			lastBlankIndex = index;
		}
		
		pool.splice(index, 1);
		imageQueue[i] = element;
	}
}

function cycleImagesCallback(row, col, index)
{
	if (row == 1 && col == 0) // no such cell
	{
		row = 0;
		col = 1;
	}
	
	if (row < 0)
	{
		row = 1;
		col++;
	}
	
	if (col < columnCount)
	{
		id = "cellimage" + (row + 1) + "x" + (col + 1);
		obj = document.getElementById(id);
		obj.src = imageDir + imageQueue[index];
		window.setTimeout("cycleImagesCallback(" + (row - 1) + ", " + col + ", " + (index + 1) + ")", delay);
	}
}

function startImageCycle()
{
	populateImageQueue();
	cycleImagesCallback(0, 0, 0);
}