
(function($) {

	$.fn.slideNextPrev = function (options) {
		var defaults = {
			restartDurationSlide : 1000,
			pauseDurationSlide : 1500,
			transitionDuration : 800,
			blockElList : '',
			width : 0,
			nbElVisible: 3,
			autoSlide : false,
			aElClick : true
		};

		var playTimerSlide = 0;
		var playingSlide = 0;
		var animateSense = 'left';
		var restartDurationSlide = 1000;
		var pauseDurationSlide = 1500;
		//var activSlideId = null;
		//var nextSlide = null;
		//var firstSlide = null;
		//var secondSlide = null;
		//var lastSlide = null;
		var moving = 0;
		
		var params = $.extend(defaults,options);
		var width = params.width;
		var indexElActiv = (params.nbElVisible-1);
		var autoSlide = params.autoSlide;
		var aElClick = params.aElClick;

		function initSlide(){
			params.blockElList.each(function(){
				var blockEl = $(this);
				var btnNext = blockEl.find('a.next');
				var btnPrev = blockEl.find('a.prev');

				btnNext.unbind('click').click(function(){
					animateSlide(blockEl,'left',false);
					return false;
				});		

				btnPrev.unbind('click').click(function(){
						animateSlide(blockEl,'right',false);
					return false;
				});		
				function playSlide(){
					playingSlide = 1;
					playTimerSlide = window.setTimeout(function(){animateSlide(blockEl,animateSense,true)}, restartDurationSlide);
				}

				function stopSlide(){
					playingSlide = 0;
					if(playTimerSlide != 0){ clearTimeout(playTimerSlide); }			
					clearTimeout(playTimerSlide);
				}

				if(autoSlide){				
					blockEl.hover(function(){
						stopSlide();
					},function(){
						playSlide();
					});
					playSlide();
				}

				if(!aElClick){
					blockEl.find('div[class$="inner"]').find('a').each(function(){
						$(this).unbind('click').click(function(){return false;});
					});
				}

			});


		}

		function animateSlide(block,sense,auto){
			// modification du sens si auto
			if(auto){
				if(sense=='left'){
					var blockNext = block.find('div.activ:eq('+indexElActiv+')').next('div');
					if(blockNext.length == 0 && moving == 0){
						animateSense = 'right';
						sense = 'right';
					}
				}else{
					var blockPrev = block.find('div.activ:eq(0)').prev('div');
					if(blockPrev.length == 0 && moving == 0){
						animateSense = 'left';
						sense = 'left';
					}
				}
			}

			if(sense=='left'){
				var blockNext = block.find('div.activ:eq('+indexElActiv+')').next('div:first');
				if(blockNext.length && moving == 0){
					moving = 1;
					var blockMove = block.find('div[class$="inner"]');
					var blockMoveMargin = blockMove.css('margin-left').replace('px','');
					blockMove.animate({marginLeft:(parseInt(blockMoveMargin)-width)},500,'easeInOutCubic',function(){
						moving = 0;
						block.find('div.activ:eq(0)').removeClass('activ');
						blockNext.addClass('activ');
						if(auto && playingSlide){
							playTimerSlide = window.setTimeout(function(){animateSlide(block,animateSense,auto)}, pauseDurationSlide);
						}
					});
				}
			}else{
				var blockPrev = block.find('div.activ:eq(0)').prev('div');
				if(blockPrev.length && moving == 0){
					moving = 1;

					var blockMove = block.find('div[class$=inner]');
					var blockMoveMargin = blockMove.css('margin-left').replace('px','');
					blockMove.animate({marginLeft:(parseInt(blockMoveMargin)+width)},500,'easeInOutCubic',function(){
						moving = 0;
						block.find('div.activ:eq('+indexElActiv+')').removeClass('activ');
						blockPrev.addClass('activ');
						if(auto && playingSlide){
							playTimerSlide = window.setTimeout(function(){animateSlide(block,animateSense,auto)}, pauseDurationSlide);
						}
					});
				}
			}
		}

		initSlide();
		return $(this);

	};

})(jQuery);

