function init() {
	start_slideshow('slide-images3', 3000, [{delay: 1000, duration: 0.1}, {delay: 600, duration: 0.1}, {delay: 500, duration: 0.1}, {delay: 400, duration: 0.1}, {delay: 200, duration: 0.1}, {delay: 200, duration: 0.2}, {delay: 200, duration: 0.3}, {delay: 300, duration: 0.3}, {delay: 200, duration: 0.1}, {delay: 200, duration: 0.1}, {delay: 200, duration: 0.1}, {delay: 1500, duration: 0.1}, {delay: 200, duration: 0.2}, {delay: 500, duration: 0.1}, {delay: 200, duration: 0.1}, {delay: 2000, duration: 10}, {delay: 500, duration: 0.9}, {delay: 500, duration: 0.1}, {delay: 500, duration: 0.1}, {delay: 500, duration: 0.1}, {delay: 500, duration: 0.1}, {delay: 500, duration: 0.1}, {delay: 500, duration: 0.1}, {delay: 500, duration: 0.1}, {delay: 500, duration: 0.1}, {delay: 500, duration: 0.1}, {delay: 500, duration: 0.1}, {delay: 1000, duration: 0.9}, {delay: 600, duration: 0.3}, {delay: 500, duration: 0.1}, {delay: 600, duration: 0.1}, {delay: 500, duration: 0.1}, {delay: 500, duration: 0.1}, {delay: 200, duration: 0.1}, {delay: 500, duration: 0.1}, {delay: 500, duration: 0.1}, {delay: 800, duration: 0.1}, {delay: 500, duration: 0.1}, {delay: 200, duration: 0.9}, {delay: 500, duration: 0.9}, {delay: 500, duration: 0.9}, {delay: 800, duration: 0.9}, {delay: 1500, duration: 0.9}, {delay: 1500, duration: 0.9}]);
	start_slideshow('slide-images2', 2000, [{delay: 5000, duration: 2}, {delay: 5000, duration: 2}, {delay: 5000, duration: 2}]);
	start_slideshow('slide-images', 1000, [{delay: 5000, duration: 2}, {delay: 5000, duration: 2}, {delay: 5000, duration: 2}, {delay: 5000, duration: 2}, {delay: 5000, duration: 2}, {delay: 5000, duration: 2},{delay: 5000, duration: 2}]);
}

function start_slideshow(elementId, initialDelay, infos) {
	setTimeout(fadeInOut(elementId, 0, infos), initialDelay);
}


/* Affiche l'image i et fait disparaitre l'image i-2 */
function fadeInOut(elementId, frame, infos) {
	return (function() {
		// La liste des images
		lis = $(elementId).getElementsByTagName('li');

		// L'image a afficher
		currentFrame = nextFrame(infos, frame);
		
		// L'image a cacher (l'avant-derniere pour ne pas perdre l'effet de fondu)
		Effect.Fade(lis[previousFrame(infos, frame)]);
		
		// On affiche la nouvelle image
		Effect.Appear(lis[currentFrame], {duration: infos[currentFrame].duration});

		// Si on est sur la premiere image, on cache egalement la derniere (pas de fondu ici)
		if ( currentFrame == 0 ) {
			Effect.Fade(lis[lis.length-1]);
		}

		//Et on relance la boucle avec le delai
		setTimeout(fadeInOut(elementId, currentFrame, infos), infos[currentFrame].delay);
	})

}

/* Retourne l'image suivante */
function nextFrame(infos, current) {
	if ( current == (infos.length-1) ) return 0;
	else return current + 1;
}

/* Retourne l'image precedente */
function previousFrame(infos, current) {
	if ( current == 0 ) return infos.length - 1;
	else return current - 1;
}

Event.observe(window, 'load', init, false);