// config

var TIME_BETWEEN_FIRST_SLIDE_AND_SECOND = 3000;
var TIME_BETWEEN_FADES_IN_FIRST_SET = 3000;
var FADE_TIME = 2000;
var TIME_BETWEEN_FADES = 4000;




$(document).ready(function(){
	
	randomizeArray(fromdatabase);
	loadFirstImageSet();
	
});




function loadFirstImageSet() {
	
	$.loadImages([
		BASE_URL+'images/home/'+fromdatabase[0].image1,
		BASE_URL+'images/home/'+fromdatabase[0].image2,
		BASE_URL+'images/home/'+fromdatabase[0].image3,
		BASE_URL+'images/home/'+fromdatabase[0].image4,
		BASE_URL+'images/home/'+fromdatabase[0].image5
	], function() {
		
		try {console.log("First set loaded");} catch (e) {};
		
		$("#image1").attr("src", BASE_URL+'images/home/'+fromdatabase[0].image1);
		$("#box1").animate({opacity: 1}, FADE_TIME);
		
		
		$("#image3").attr("src", BASE_URL+'images/home/'+fromdatabase[0].image4);
		$("#box3").delay(TIME_BETWEEN_FADES_IN_FIRST_SET*1).animate({opacity: 1}, FADE_TIME);
		
		
		$("#image2b").attr("src", BASE_URL+'images/home/'+fromdatabase[0].image2);
		$("#box2").delay(TIME_BETWEEN_FADES_IN_FIRST_SET*2).animate({opacity: 1}, FADE_TIME);
		$("#image2a").attr("src", BASE_URL+'images/home/'+fromdatabase[0].image3).fadeOut(0).delay(TIME_BETWEEN_FADES_IN_FIRST_SET*3).fadeIn(FADE_TIME);
		
		
		$("#image4").attr("src", BASE_URL+'images/home/'+fromdatabase[0].image5);
		$("#box4").delay(TIME_BETWEEN_FADES_IN_FIRST_SET*4).animate({opacity: 1}, FADE_TIME, function() {
			setTimeout(function() {
				try {console.log("Hit timer for start of continuous slideshow start");} catch (e) {};
				readyForContinuousSlideshow = true;
				startContinuousSlideshow();
			}, TIME_BETWEEN_FIRST_SLIDE_AND_SECOND);
		});


		
		try {console.log("Load the rest of the images");} catch (e) {};
		var theRestOfTheImages = [];
		for (var i in fromdatabase) {
			theRestOfTheImages.push(BASE_URL+'images/home/'+fromdatabase[i].image1);
			theRestOfTheImages.push(BASE_URL+'images/home/'+fromdatabase[i].image2);
			theRestOfTheImages.push(BASE_URL+'images/home/'+fromdatabase[i].image3);
			theRestOfTheImages.push(BASE_URL+'images/home/'+fromdatabase[i].image4);
			theRestOfTheImages.push(BASE_URL+'images/home/'+fromdatabase[i].image5);
		}
		$.loadImages(theRestOfTheImages, function() {
			try {console.log("All images loaded");} catch (e) {};
			allImagesLoaded = true;
			startContinuousSlideshow();
		});
	});
}


var readyForContinuousSlideshow = false;
var allImagesLoaded = false;

function startContinuousSlideshow() {
	if (!readyForContinuousSlideshow) return;
	if (!allImagesLoaded) return;
	
	try {console.log("Starting continuous slideshow");} catch (e) {};
	
	nextImageSet();
};



var timeOffsets = [0,1,2,3,4];
var placeInSet = 0;

function nextImageSet() {
	
	randomizeArray(timeOffsets);
	fromdatabase.push(fromdatabase.shift());
	
	$("#image1").delay(TIME_BETWEEN_FADES*timeOffsets[0]).fadeOut(FADE_TIME, function() {
		$(this).attr("src", BASE_URL+'images/home/'+fromdatabase[0].image1).fadeIn(FADE_TIME, function() {
			placeInSet++;
			startNextSet();
		});
	});
	$("#image3").delay(TIME_BETWEEN_FADES*timeOffsets[1]).fadeOut(FADE_TIME, function() {
		$(this).attr("src", BASE_URL+'images/home/'+fromdatabase[0].image4).fadeIn(FADE_TIME, function() {
			placeInSet++;
			startNextSet();
		});
	});
	$("#image2b").delay(TIME_BETWEEN_FADES*timeOffsets[2]).fadeOut(FADE_TIME, function() {
		$("#image2b").attr("src", BASE_URL+'images/home/'+fromdatabase[0].image2).fadeIn(FADE_TIME, function() {
			placeInSet++;
			startNextSet();
		});
	});
	$("#image2a").delay(TIME_BETWEEN_FADES*timeOffsets[3]).fadeOut(FADE_TIME, function() {
		$("#image2a").attr("src", BASE_URL+'images/home/'+fromdatabase[0].image3).fadeIn(FADE_TIME, function() {
			placeInSet++;
			startNextSet();
		});
	});
	$("#image4").delay(TIME_BETWEEN_FADES*timeOffsets[4]).fadeOut(FADE_TIME, function() {
		$(this).attr("src", BASE_URL+'images/home/'+fromdatabase[0].image5).fadeIn(FADE_TIME, function() {
			placeInSet++;
			startNextSet();
		});
	});
	
}

function startNextSet() {
	try {console.log("Checking whether it's time to start a new set");} catch (e) {};
	if (placeInSet == 5) {
		try {console.log("Yep, it is.");} catch (e) {};
		placeInSet = 0;
		nextImageSet();
	}
}






















function randomizeArray(a) {
	return a.sort(randomizer);
}
function randomizer() {
	return (Math.round(Math.random())-0.5);
}
