(function($) {
	// définition du plugin jQuery
	$j.fn.galerie = function(params) {
		// Fusionner les paramètres par défaut et ceux de l'utilisateur
		params = $j.extend( {largeur_fenetre: 720, hauteur_fenetre: 500, largeur_mini: 68, hauteur_mini: 68, espacement_miniatures: 4}, params);
		// Traverser tous les nœuds.
		this.each( function() {
			var l = $j(this).find('img').length;

			$j(this).css({width:1000000});
			$j(this).wrap('<div class="galerieContainer"></div>');
			$j(this).find('img').css({padding: '0 10px 0 0'});
			$j(this).parent('.galerieContainer').css({overflow:'hidden', width:params.largeur_fenetre, height:params.hauteur_fenetre + params.hauteur_mini + 10});

			for (var i=0; i<l; i++) {
				var imgSrc = $j($j(this).find('img')[i]).attr('src');
				$j($j(this).find('img')[i]).wrap('<div style="display:block; overflow:hidden; width:'+(params.largeur_fenetre-params.espacement_miniatures)+'px; height:'+params.hauteur_fenetre+'px; float:left; margin: 0 10px 0 0;" class="image"></div>');
				$j(this).parent('.galerieContainer').css({margin: '0 0 0 10px'}).append('<a style="border:0px none !important; display:block; float:left; overflow:hidden; width:'+params.largeur_mini+'px; height:'+params.hauteur_mini+'px; margin: '+params.espacement_miniatures+'px '+params.espacement_miniatures+'px 0 0" class="miniature" href="#"><img src="' + imgSrc + '" style="border:0px none !important;"/></a>');
			}
		});
		$j('.image img').load( function() {
			$j(this).hide();
			var imgSrc = ($j(this).attr('src'));
			var w = ($j(this).width());
			var h = ($j(this).height());
			var r = w/h;

			var h2=params.hauteur_fenetre;
			var w2=(r*h2);

			$j(this).attr({width:w2, height:h2, style:'margin: -'+ ((h2-params.hauteur_fenetre)/2) +'px 0 0 '+ (-(w2-params.largeur_fenetre)/2) +'px !important; padding:0'}).fadeIn("slow");
		});
		$j('.miniature img').load( function() {
			$j(this).hide();
			var imgSrc = ($j(this).attr('src'));
			var w = ($j(this).width());
			var h = ($j(this).height());
			var r = w/h;

			if (w>h) {
				var h2=params.hauteur_mini;
				var w2=parseInt(r*h2);
			} else {
				var w2=params.largeur_mini;
				var h2=parseInt(w2/r);
			}

			$j(this).attr({width:w2, height:h2, style:'margin: -'+ ((h2-params.hauteur_mini)/2) +'px 0 0 -'+ ((w2-params.largeur_mini)/2) +'px !important; padding:0; border:none'}).fadeIn("slow");
		});
		$j('a.miniature').live('click', function(e) {
			$j(this).focus();
			var idImg = $j(this).index()-1;

			$j(this).parent().children('.galerie').stop().animate({marginLeft: (-idImg*((params.largeur_fenetre-params.espacement_miniatures) + 10))}, 1000);
			e.preventDefault();
		});
		// Permettre le chaînage par jQuery
		return this;
	};
})(jQuery);
