
function debugList(list, title, reset) {
	if(reset == true) {
		var db = '<div style="border:1px solid #f00; padding:10px; margin:10px;"><h3>'+title+'</h3>';
	} else {
		var db = $('#debug').html()+'<div style="border:1px solid #f00; padding:10px; margin:10px;"><h3>'+title+'</h3>';
	}
	for(var i=0;i < list.length; i++) { 
		db+='[ '+i+' = '+list[i]+' ]<br />'; 
	} 
	db += 'Length: '+i;
	db += '</div>';
	
	$('#debug').html(db);
}

//Change Elements

changeElement = Object();
changeElement.activeObjects		= [];
changeElement.usedObjects		= [];
changeElement.usedTextObj		= [];
changeElement.activePositions	= [];
changeElement.elementList		= [];
changeElement.newElement		= false;
changeElement.stopMe			= false;

changeElement.init = function() {
	// this.usedObject[fadeInId] = true;
};


changeElement.getActiveElements = function() {
	var activeElements = [];
	var a = 0;
	
	for(i=0; i<$('#imageWall div.imageWallElement').length; i++) {
		if(this.usedObjects[i]!=true) {
			activeElements[a] = i;
			a++;
		};
	};
	
	return activeElements;
};



changeElement.getActiveTextElements = function() {
	var activeElements = [];
	var a = 0;
	
	for(i=0; i<$('#textElements .imageWallElement').length; i++) {
		if(this.usedTextObj[i]!=true) {
			activeElements[a] = i;
			a++;
		};
	};
	
	return activeElements;
};


changeElement.getElementPositions = function(type) {
	var out = [];
	var key = 0;
	for(i=0; i<=23; i++) {
		if(this.activePositions[i]["type"] == type) {
			out[key] = i;
			key++;
		}
	}
	
	return out;
}


changeElement.setTextElementToPosition = function(position) {
	
	var activeTextElements		= this.getActiveTextElements();
	if(activeTextElements.length < 1) return false;
	
	var rand			= randMe.getListOfRandNumbers(1,0, activeTextElements.length-1);
	this.newElement		= $($('#textElements .imageWallElement')[activeTextElements[rand[0]]]).clone(true);

	
	this.usedTextObj[activeTextElements[rand[0]]]	= true;
	this.activePositions[position]["type"] 			= "text";
	this.activePositions[position]["position"]		= activeTextElements[rand[0]];
	
	window.setTimeout('changeElement.changeAnElementToNew('+position+');',500);
}


changeElement.setImageElementToPosition = function(position) {
	
	var activeElements		= this.getActiveElements();
	if(activeElements.length < 1) return false;
	
	var rand			= randMe.getListOfRandNumbers(1,0, activeElements.length-1);
	this.newElement		= $($('#imageWall div.imageWallElement')[activeElements[rand[0]]]).clone(true);
	
	this.usedObjects[activeElements[rand[0]]]		= true;
	this.activePositions[position]["type"] 			= "image";
	this.activePositions[position]["position"]		= activeElements[rand[0]];
	
	window.setTimeout('changeElement.changeAnElementToNew('+position+');',500);
}


changeElement.changeAnElement = function() {
	
	var rand2					= Math.round(Math.random() * 23);
	
	var textElementPositions	= this.getElementPositions("text");
	var textElCount				= textElementPositions.length;
	
	/*
	var imageElementPositions	= this.getElementPositions("image");
	var imgElCount				= imageElementPositions.length;
	*/
	
	if(textElCount > 7) {
		var randTextPos			= Math.round(Math.random() * (textElCount-1));
		rand2					= textElementPositions[randTextPos];
	}
	
	$('#selectionDiv'+rand2+' .imageWallElement').fadeOut("slow");
	
	if(this.activePositions[rand2]["type"] == "image") {
	
		var unUseObjectPos					= this.activePositions[rand2]["position"];
		this.setTextElementToPosition(rand2);
		this.usedObjects[unUseObjectPos]	= false;

	} else {
		
		var unUseObjectPos					= this.activePositions[rand2]["position"];
		this.setImageElementToPosition(rand2);
		this.usedTextObj[unUseObjectPos] 	= false;
	}
	
	return false;
};

changeElement.changeAnElementToNew = function(elementPosition) {
	var divId = '#selectionDiv'+elementPosition;
	
	$(divId).html('');
	this.newElement.appendTo(divId);
	$(divId+' .imageWallElement').hide().fadeIn("slow");
};


changeElement.getRandomElement = function() {
	var activeElements						= this.getActiveElements();
	if(activeElements.length < 1) return false;
	
	rand									= Math.round(Math.random() * (activeElements.length-1));
	this.usedObjects[activeElements[rand]]	= true;
	
	return activeElements[rand];
};


function Numsort (a, b) {
  return a - b;
};



randMe = Object();
randMe.activeObjects			= [];
randMe.usedObjects				= [];
randMe.start					= false;
randMe.end						= false;

randMe.setActiveObjects			= function() {
	this.activeObjects			= [];
	var key	= 0;
	for(i=this.start; i<=this.end; i++) {
		if(this.usedObjects[i] != true) {
			this.activeObjects[key] = i;
			key++;
		}
	}
}

randMe.getRandNumber			= function() {
	this.setActiveObjects();
	
	var length									= this.activeObjects.length-1;
	rand										= Math.floor(Math.random() * length);
	this.usedObjects[this.activeObjects[rand]]	= true;
	return this.activeObjects[rand];
}

randMe.getListOfRandNumbers		= function(listCount, start, end) {
	var diff	= end-start;
	if(diff < 1 || listCount < 1) return false;
	
	this.activeObjects	= [];
	this.usedObjects	= [];
	this.start			= start;
	this.end			= end;
	var list			= [];
	
	for(var i=0;i<listCount;i++) {
		list[i]	= this.getRandNumber();
	}
	
	list.sort(Numsort);
	return list;
}





$(window).load(function () {
  
	//Load Elements

	var divElementContent = '';
	for(var i=0;i <= 23; i++) {
		divElementContent += '<div id="selectionDiv'+i+'"></div>';
	}
	$('#selection').html(divElementContent);
	
	
	var loadElements 	= [];
	var rand			= false;

	var loops			= 0;
	var randList		= randMe.getListOfRandNumbers(6,0,24);
	var randList2		= randMe.getListOfRandNumbers(6,0,$('#textElements .imageWallElement').length-1);
	
	var loadTextPos		= randList[0];
	var textListPos		= 1;
	
	for(var i=0;i <= 23; i++) {
		if(loadTextPos == i) {

			loadElements[i]										= new Object();
			loadElements[i]["position"]							= randList2[textListPos-1];
			loadElements[i]["type"]								= "text";
			
			changeElement.usedTextObj[randList2[textListPos-1]]	= true;
			
			loadTextPos											= randList[textListPos];
			textListPos++;
			
		} else {
			rand								= changeElement.getRandomElement();
			
			loadElements[i]						= new Object();
			loadElements[i]["position"]			= rand;
			loadElements[i]["type"]				= "image";
		}
	}

	changeElement.activePositions 			= loadElements;
	
	var contentElements 					= $('#imageWall div.imageWallElement');
	var textElements 						= $('#textElements .imageWallElement');
	
	var content = '';
	
	for(var i=0; i < loadElements.length; i++) {
		if(loadElements[i]["type"] == "image") {
			content = $(contentElements[loadElements[i]["position"]]);
			content.clone(true).appendTo('#selectionDiv'+i);
		} else {
			content = $(textElements[loadElements[i]["position"]]);
			content.clone(true).appendTo('#selectionDiv'+i);
		}
	}
	
	//Rollover Effect
	$('div.imageWallElement .hoverBlock').hide();
	$('div.imageDescription').hide();
	
	
	$('div.imageWallElement').hover(function() {
		$(this).find('.hoverBlock').fadeIn("fast", function(){
			$(this).css('filter','');
		});
		$(this).find('div.imageDescription').slideDown("fast");
	},function() {});
	
	$('div.imageWallElement .hoverBlock').mouseleave(function() {
		$(this).hide();
		$(this).find('div.imageDescription').hide();
	});
	
});


window.setInterval('changeElement.changeAnElement();', 2500);
// window.setTimeout('changeElement.changeAnElement();', 100);

