var TIMER_DELAY = 5000;
var TRANSITION_DURATION = 600;
var PRELOAD_DELAY = 500;

var timerID;
var currPhoto = -1;
var collection;

var userAction = 0;

function Init() {
	$('#img0').css('backgroundImage', "url('" + images[0] + "')");
	
	collection = $('.Photo');
	collection.hide();

	PreloadManager();
	
	NextPhoto();
	StartTimer();
}

function StartTimer() {
	try {
		clearTimeout(timerID);	// Probeer eerst eerdere setTimeouts te verwijderen
	} catch(e) {}
	
	// Als er zojuist genavigeerd is met de pijltjestoetsen, dan wachten we twee keer zo lang, om de gebruiker de kans te geven iets langer naar de foto te kijken.
	timerID = setTimeout("NextPhoto()", (1 + parseInt(userAction)) * TIMER_DELAY);
	
	userAction = 0;
}

function KeyHandler(e) {
	if (!e) var e = window.event;
	if (e.keyCode) code = e.keyCode;
	else if (e.which) code = e.which;
	
	if (code == 39 || code == 40) {
		userAction = 1;
		NextPhoto();
	} else if (code == 37 || code == 38) {
		userAction = 1;
		PrevPhoto();
	}
}

function PrevPhoto() {
	StartTimer();

	collection.eq(currPhoto).fadeOut(TRANSITION_DURATION);
	
	currPhoto--;
	if (currPhoto < 0) {
		currPhoto =  collection.length - 1;
	}
	
	collection.eq(currPhoto).fadeIn(TRANSITION_DURATION);

	var prevPhoto = currPhoto - 1;
	if (prevPhoto < 0) {
		prevPhoto = collection.length - 1;
	}
	Preload(prevPhoto);
}

function NextPhoto() {
	StartTimer();

	//HidePhoto(collection.eq(currPhoto));
	collection.eq(currPhoto).fadeOut(TRANSITION_DURATION);
	
	currPhoto++;
	if (currPhoto >= collection.length) {
		currPhoto = 0;
	}
	//alert(collection.eq(currPhoto).attr('id'));
	collection.eq(currPhoto).fadeIn(TRANSITION_DURATION);
	
	Preload(currPhoto + 1);
}

function Preload(imgNr) {
	if (imgNr > 0 && imgNr < collection.length) {
		if ($('#img' + imgNr).css('backgroundImage') == 'none' || $('#img' + imgNr).css('backgroundImage').indexOf('spinner.gif') > -1) {
			$('#img' + imgNr).css('backgroundImage', "url('" + images[imgNr] + "')");
		}
	}
}

function PreloadManager() {
	for (var i = 0; i < collection.length; i++) {
		setTimeout("Preload(" + i + ");", i * PRELOAD_DELAY);
	}
}
