/* Setup variables
-----------------------------------------------------*/
var $j = jQuery.noConflict();

var num_images = "";
var curr_image = 0;
var image_name = "";
var image_text = "";
var image_number = "";
var image_left = "";
var image_top = "";

var prefix = "";

var bl = "";
var block_array = "";

var $content = "";

var img_array = "";





/* --------------------------------------------------------------------
 * --------------------------------------------------------------------
 *
 * General functions
 *
 * --------------------------------------------------------------------
 * ------------------------------------------------------------------*/

/* Initialize the stage
-----------------------------------------------------*/
function ib_initialize_script() {
	
	$content = $j('#content');
	
	// Save the image data
	img_array = $j('.img-data');
	num_images = img_array.length;
	
	// Save the table blocks
	block_array = Array();
	$j('#blockLayout').find('td').each(function(index) {
		block_array.push($j(this));
	});
	
	// Get the prefix
	if ($j('body').hasClass('level_1')) {
		prefix = "../";
	} else if ($j('body').hasClass('level_2')) {
		prefix = "../../";
	} else if ($j('body').hasClass('level_3')) {
		prefix = "../../../";
	} else if ($j('body').hasClass('level_4')) {
		prefix = "../../../../";
	}
	
	resetBlocks();
}

function resetBlocks() {
	
	$j('.img-container').each(function(index) {
		
		$j(this).children('*:first-child').fadeOut('fast', function() {
			// Remove the image
			$j(this).remove();	
		});
	});
	
	// Create the bl array
	bl = Array();
	for (var i=0; i<block_array.length; i++) {
		
		bl.push(i);
	}
	
	// Set the image name
	image_name = $j(img_array[curr_image]).children('.img-name').text();
	
	// Set the image number
	if ($j(img_array[curr_image]).children('.img-number').length > 0)
		image_number = $j(img_array[curr_image]).children('.img-number').text();
	else
		image_number = -1;
	
	timerStop();
	getRandomBlock();
	blockLoadStart();
}

function getRandomBlock() {
	
	var len = bl.length;
	var ran = Math.floor (Math.random() * len);
	
	showBlock(ran);	
}

function showBlock(ran) {
	
	// Remove that element
	var img_num = bl.splice(ran, 1);
	
	if (image_number == img_num) {
		if (bl.length > 0) getRandomBlock();
	} else {
		loadImage(img_num);
	}
}

function loadImage(img_num) {

	var path = prefix+"images/crops/"+image_name+"_"+img_num+".jpg";	
	
	var img = new Image();
	
	$j(img).load(function() {
		
		$j(this).hide();
	
		$j(block_array[img_num]).children('.img-container').append($j(this));
	
		$j(img).delay(500).fadeIn();	
	
	}).attr('src', path);
}

function setOrange() {
	
	$j(img_array[curr_image]).hide();
	$j(block_array[image_number]).children('.img-container').append($j(img_array[curr_image]));
	$j(img_array[curr_image]).delay(750).fadeIn();
	
}

/* Timers
-----------------------------------------------------*/
function blockLoadStart() {
	
	$j(this).everyTime(200, "blockload", function() {

		if (bl.length > 0) {
			getRandomBlock();
		} else {
			blockLoadStop();
			setOrange();
			if (num_images > 1) timerStart();	
		}
	});
}

function blockLoadStop() {
	
	// Stop the timer
	$j(this).stopTime("blockload");
}

function timerStart() {
	
	$j(this).everyTime(5000, "timer", function() {

		// Add to the curr_image
		curr_image++;
		if (curr_image == num_images) curr_image = 0;
		resetBlocks();

	});
}

function timerStop() {
	
	// Stop the timer
	$j(this).stopTime("timer");
}






/* --------------------------------------------------------------------
 * --------------------------------------------------------------------
 *
 * Events
 *
 * --------------------------------------------------------------------
 * ------------------------------------------------------------------*/

/* Add event listeners
-----------------------------------------------------*/
function ib_addEventListeners() {
	
	
}





/* --------------------------------------------------------------------
 * --------------------------------------------------------------------
 *
 * Document Ready
 *
 * --------------------------------------------------------------------
 * ------------------------------------------------------------------*/

/* Document ready listener
-----------------------------------------------------*/
$j(document).ready(function() {
	
	// Initialize the packages
	ib_initialize_script();
	
	// Add event listeners
	ib_addEventListeners();	
});
