(function($){
	$.fn.carousel = function(params){
		var params = $.extend({
			source: "carousel", // id du div de la source 
			direction: "horizontal", // direction
			widthElement: "130", // largeur du bloc qui doit être déplacé (margin et padding compris avec)
			heightElement: "130", // hauteur du bloc qui doit être déplacé (margin et padding compris avec)
			nbColumn: "3", // nombre de colonnes
			nbLine: "1" // nombre de lignes
		}, params);
		
		var source = params["source"];
		var direction = params["direction"];
		var widthElement = params["widthElement"];
		var heightElement = params["heightElement"];
		var nbColumn = params["nbColumn"];
		var nbLine = params["nbLine"];
		
		var urlImage = "fileadmin/user_upload/images/";
		
		// entourage de tout le contenu avec le div .carousel
		$('.'+source).wrapAll('<div class="carousel" style="float:left;"><div class="mySlide"></div></div>');
		
		// Affichage du bouton prev ou top selon la direction
		if(direction == "horizontal") {
			$('<a href="#"><img class="hideimg" id="prev'+source+'" src="'+urlImage+'prev.png" alt="Précédent" title="Précédent" /></a>').insertBefore('div#'+source+' .carousel');//('.first_'+source);
		}
		else {
			$('<a href="#"><img class="hideimg" id="top'+source+'" src="'+urlImage+'top.png" alt="Top" title="Top" /></a>').insertBefore('div#'+source+' .carousel');
		}
		
		// Comptage du nombre d'éléments
		var nbElement = new Array();
		nbElement[source] = $('div#'+source+' .carousel div.'+source).size();
		// styles supplémentaires si msie
		if($.browser.name == 'msie') {
			$('div#'+source+' div.mySlide').css('left','0px').css('position','relative').css('width',Number(widthElement)*nbElement[source]);// (Number(params["width"]) * NbElement[params["source"]])+(Number(params["margin"])+(Number(buttonWidth) * 2))+300);
			
			$('div.carousel').css('position','relative');
		}
		
		// Affichage  de nbColumn sur nbLine éléments
		if($.browser.name == 'msie') {
			$('div#'+source+' .carousel').css('width', nbColumn * Number(widthElement)-12).css('height', nbLine * Number(heightElement));
		}
		else{
			$('div#'+source+' .carousel').css('width', nbColumn * Number(widthElement)).css('height', nbLine * Number(heightElement));
		}
		// Affichage du bouton next ou bottom selon la direction
		if(direction == "horizontal") {
			$('div#'+source+' .carousel').after('<a href="#"><img id="next'+source+'" src="'+urlImage+'next.png" alt="Suivant" title="Suivant" /></a>');
		}
		else {
			$('div#'+source+' .carousel').after('<a href="#"><img id="bottom'+source+'" src="'+urlImage+'bottom.png" alt="Suivant" title="Suivant" /></a>');
		}
		
		// Actions sur les boutons
		var counter=0;
		
		if(direction == "horizontal") {
			
			$('#next'+source).click(function() {
				if(counter < Math.round((nbElement[source] / Number(nbLine)) - Number(nbColumn))) {
					counter++;
					
					if($.browser.name == 'msie')
						$('div#'+source+' .carousel div.mySlide').animate({ 'left' : - (widthElement * counter) });
					else
						$('div#'+source+' .carousel div.mySlide').animate({ marginLeft : - (widthElement * counter) });
				}
				
				if(counter == Math.round((nbElement[source] / Number(nbLine)) - Number(nbColumn)))
					$('#next'+params["source"]).addClass("hideimg");
				if(counter != 0)
					$('#prev'+params["source"]).removeClass("hideimg");
					
				return false;
			});
			
			$('#prev'+source).click(function() {
				if(counter > 0) {
					counter--;
					if($.browser.name == 'msie')
						$('div#'+source+' .carousel div.mySlide').animate({ 'left' : - (widthElement * counter) });
					else
						$('div#'+source+' .carousel div.mySlide').animate({ marginLeft : - (widthElement * counter) });
				}
				
				if(counter == 1){
					$('#next'+params["source"]).removeClass("hideimg");
				}
				if(counter == 0){
					$('#prev'+params["source"]).addClass("hideimg");
				}
				
				return false;
			});
		}
		else {
			$('#bottom'+source).click(function() {
				alert("bottom");
				if(counter < Math.round((nbElement[source] / Number(nbColumn))-Number(nbLine))) {
					counter++;
					if($.browser.name == 'msie')
						$('div#'+source+' .carousel div.mySlide').animate({ 'top' : - (heightElement * counter) }); 
					else
						$('div#'+source+' .carousel div.mySlide').animate({ marginTop : - (heightElement * counter) });
				}
				
				if(counter != 0)
					$('#top'+params["source"]).removeClass("hideimg");
				if(counter == Math.round((nbElement[source] / Number(nbColumn))-Number(nbLine))){
					$('#bottom'+params["source"]).addClass("hideimg");
					$('#top'+params["source"]).removeClass("hideimg");
				}
				
				return false;
			});
			
			$('#top'+source).click(function() {
				alert("top");
				if(counter > 0) {
					counter--;
					if($.browser.name == 'msie')
						$('div#'+source+' .carousel div.mySlide').animate({ 'top' : - (heightElement * counter) });
					else
						$('div#'+source+' .carousel div.mySlide').animate({ marginTop : - (heightElement * counter) });
				}
				
				if(counter > 0){
					$('#bottom'+params["source"]).removeClass("hideimg");
					$('#top'+params["source"]).removeClass("hideimg");
				}
				if(counter == 0){
					$('#top'+params["source"]).addClass("hideimg");
					$('#bottom'+params["source"]).removeClass("hideimg");
				}
				return false;
			});
		}
	} 
})(jQuery);	