(function($){    
		  
    $.fn.slide = function( params ) {
	
		var params = $.extend({
							delay 			: 500, 					// durée de la transition
							timeout 		: 5000, 				// temps d'attente entre 2 transitions
							typeTransition 	: 'slideHorizontal', 	// type de transition 3 valeurs (slideHorizontal, slideVertical, fadeInfadeOut)
							autorun			: true 					// défilement automatique (true or false)
						},params);
		
		var jqContent = this;
		
		/*Stocke les références des objets jquery à manipuler*/
		var jqueryEl = {
			contenu 		: $('div.contenuSlider', jqContent),
			btn				: $('.btnSlider a', jqContent),
			contentSlider 	: $('.contentSlider', jqContent)
		};
		
		var transition = {
			'slideHorizontal' 	: slideHorizontal, 
			'slideVertical' 	: slideVertical,
			'fadeInfadeOut'		: fadeInfadeOut
		};

		return this.each( function() {
			
			jqueryEl.btn.each( function(i) {	
				$(this).click( function(e) { next(e, i); });
			});
			
			setAutorun();
			
		});
		
		function next (e, i) {
			e.preventDefault();	
			
			if ( params.autorun ) { 
				clearTimeout ( jqContent.timer.t );
				jqContent.timer.z = i;
			};
			
			/*Marque l'élément en cours d'affichage*/
			setCurrentElement ( $(e.target) );
			
			//ne fait rien si on clique sur le bouton actif
			if( $(this).parent().hasClass('current') ) {
				return false;
			};
			
			/*Lance la fonction de transition définie dans les paramètres*/
			if( $.isFunction ( transition[params.typeTransition] ) ) { 
				transition[params.typeTransition]( i );
			};
			
		};

		function setAutorun () {
			
			if ( params.autorun ) {
				
				if( !jqContent.timer ) {
					jqContent.timer = {
						t : 0,
						z : 0
					}
				};
				
				jqContent.timer.t = setTimeout( function () {
					
					jqContent.timer.z = jqContent.timer.z == jqueryEl.contenu.length-1 ? 0 : ++jqContent.timer.z ;
					$(jqueryEl.btn[jqContent.timer.z]).trigger('click');
					
				}, params.timeout );
				
			};

		};
		
		function slideHorizontal ( i ) {
			
			/*Calcul de la position à atteindre en fonction de la position de l'élément cliqué*/
			
			/*alert(jqueryEl.contenu.css('margin-left'));*/
			
			var marginLeft = jqueryEl.contenu.css('margin-left') == 'auto' ? 0 : parseInt(jqueryEl.contenu.css('margin-left'));
			var marginRight = jqueryEl.contenu.css('margin-right') == 'auto' ? 0 : parseInt(jqueryEl.contenu.css('margin-right'));
			
			var diff = i*( jqueryEl.contenu.width() + marginLeft + marginRight );
			
			
			/*Si cette position est inférieur ou égale à la position de l'élément on se déplace vers la gauche (*-1) sinon vers la droite*/
			diff = parseInt(jqueryEl.contentSlider.css('left')) <= diff ? diff * -1 : diff; 
			
			jqueryEl.contentSlider.animate({
				left : diff
			},  params.delay, setAutorun() );
			
		};
		
		function slideVertical ( i ) {
			
			/*Calcul de la position à atteindre en fonction de la position de l'élément cliqué*/
			var diff = i*( jqueryEl.contenu.height() + parseInt(jqueryEl.contenu.css('margin-top')) + parseInt(jqueryEl.contenu.css('margin-bottom')) );
			/*Si cette position est inférieur ou égale à la position de l'élément on se déplace vers la gauche (*-1) sinon vers la droite*/
			diff = parseInt(jqueryEl.contentSlider.css('top')) <= diff ? diff * -1 : diff; 
			
			jqueryEl.contentSlider.animate({
				top : diff
			},  params.delay, setAutorun() );
			
		};
		
		function fadeInfadeOut( i ) {
			
			var elToShow = $(jqueryEl.contenu[i]);
			var elToHide = jqueryEl.contenu.filter(':visible');
			
			elToHide.fadeOut ( params.delay );
			
			elToShow.fadeIn ( params.delay, function () { setAutorun(); } );
			
		};
		
		/*Position la classe current sur l'élément cliqué*/
		function setCurrentElement ( el ) {
			
			$('.current', jqContent).removeClass();
			el.parent().addClass('current');
			
		};
		
	};
})(jQuery)