var currentPosition = 0;
var pauseElt;
var startElt;
var timer;
var timeout;
var diapoElt = 0;
var linkElt = null;
var diapoImgArray = new Array();
function preloadDiaporamaImg(jsonArray) {
	timeout = 4000;
	pauseElt = $('stop');
	startElt = $('start');
	if (startElt) startElt.observe('click', startTimer);
	if (pauseElt) pauseElt.observe('click', clearMyInterval);
	diapoElt = $('diapo');
	linkElt = $('linkDiapo');
	diapoImgArray[0] = new Image(); // ou document.createElement('img');
	diapoImgArray[0].src = jsonArray[0].src;
	if (!diapoImgArray[0].complete)
		diapoImgArray[0].onload = function (e) {startTimer();};
	else
		startTimer();
	for (var i = 0; i < jsonArray.length; i++) {
		diapoImgArray[i] = new Image(); // ou document.createElement('img');
		saveImgFromJson(i);
		if (!diapoImgArray[i].complete) {
			diapoImgArray[i].onload = function() {
				if (jsonArray[i+1])
					saveImgFromJson(i+1);
				this.onload = Prototype.emptyFunction; // Reinitialize because IE fait n'importe quoi sinon
			}
		} else {
			if (jsonArray[i+1]) {
				diapoImgArray[i+1] = new Image(); // ou document.createElement('img');
				saveImgFromJson(i+1);
			}
		}
	}
}
function startTimer() {
	clearMyInterval();
	showPicture(currentPosition);
	timer = window.setInterval(forward, timeout);
}
function clearMyInterval() {
	if (timer != null)
		clearInterval(timer);
}
function saveImgFromJson(index) {
		diapoImgArray[index].src = jsonArray[index].src;
		diapoImgArray[index].title = jsonArray[index].title;
		diapoImgArray[index].alt = jsonArray[index].alt;
}
function back() {
	currentPosition = (currentPosition-1 < 0) ? diapoImgArray.length-1 : currentPosition-1;
	showPicture(currentPosition);
}
function forward() {
	currentPosition = (currentPosition+1 == diapoImgArray.length) ? 0 : currentPosition+1;
	showPicture(currentPosition);
}
function showPicture(index) {
	if (!diapoImgArray[index].complete) {
		clearMyInterval();
		diapoImgArray[index].onload = function(e) {
				currentPosition = index;
				showPicture();
			}
	} else {
		diapoElt.src = diapoImgArray[index].src;
		diapoElt.alt = diapoImgArray[index].alt || diapoImgArray[index].title;
		diapoElt.title = diapoImgArray[index].title || diapoImgArray[index].alt;
		linkElt.href = jsonArray[index].full;
	}
}
function onKeyUp(e) {
	code = e.which || e.keyCode;
	if (code == Event.KEY_LEFT)
		back();
	else if (code == Event.KEY_RIGHT || code == Event.KEY_SPACE || code == Event.KEY_RETURN)
		forward();
}


document.observe('dom:loaded', function(e) {
  //document.observe('keyup', onKeyUp);
  preloadDiaporamaImg(jsonArray);
});
Event.observe(window, 'unload', clearMyInterval);