function Gallery(elt) {

	var liste = $(elt);
	var imgItems = $$('#'+elt+' img');
	var linkItems = new Array();
	
	// Affiche la galerie
	this.show = function() {
		// On remplace toutes les images par des liens contenant les miniatures des images, qu'on rend presque transparentes
		imgItems.each(function(imgItem) {
			imgItem.addClass('secondaire');
			imgItem.setStyle('opacity', 0);
			var link = new Element('a', {href: 'javascript:;'});
			imgItem.inject(link);
			// On attribue une action au clic sur le lien
			link.addEvent('click', function(e) {
				e = new Event(e).stop();
				var imgSrc = link.getFirst('img').getProperty('src');
				Gallery.update(imgSrc);
			});
			// On place le lien qu'on vient de créer dans le tableau linkItems
			linkItems.push(link);
		});
		// On crée un conteneur pour la grande image, et l'image elle-même
		var bigPicWrapper = new Element('div', {id: 'bigPicWrapper'});
		var bigPic = new Element('img', {id: 'bigPic', src: imgItems[0].getProperty('src'), alt: ''});
		bigPic.addClass('principale');
		bigPic.inject(bigPicWrapper);
		// On l'insère dans la page, juste avant avant la galerie
		bigPicWrapper.inject(liste, 'top');
		// On crée une "chaine" pour l'effet d'apparition des miniatures l'une après l'autre
		var itemsChain = new Chain();
		linkItems.each(function(le) {
			le.inject(liste);
			itemsChain.chain(function() {
				var firstChildsId = le.getFirst('img').getProperty('id');
				fx = new Fx.Styles(firstChildsId, {'duration': 400});
				fx.start({'opacity': 1});
			});
		});
		// On exécute la chaine
		var runChain = function() {
			itemsChain.callChain();
			if (itemsChain.chains.length == 0) { runChain = $clear(timer); } 
		}
		var timer = runChain.periodical(500);
	}
	
	// Met à jour la grande image
	Gallery.update = function(src) {
		var fade = new Fx.Style($('bigPic'), 'opacity', {'duration': 350});
		fade.start(0);
		(function() { $('bigPic').setProperty('src', src); }).delay(350);
		(function() { fade.start(1); }).delay(900);
	}
	
}
