/**
 * Slider avec effet fondu
 * 
 * Html :
 * <ul id="nslider">
 *				<li><img src="images/slide-civil-1.jpg" alt="" /></li>
 *				<li><img src="images/slide-civil-2.jpg" alt="" /></li>
 *				<li><img src="images/slide-env-1.jpg" alt="" /></li>
 *				<li><img src="images/slide-env-2.jpg" alt="" /></li>
 *			</ul>
 *			<div id="menu"></div>
 *
 * Javascript :
 * $('#nslider').nsliderfade({
 *          'speed':            'slow',
 *          'timeout':          2000,
 *			'menu':				'#menu'
 *       });
 */
(function($) {

	var actif = 0;
	var n_last = 0;
	var elements;
	var settings;
	var timeout;
	
	$.fn.nsliderfade = function(options) {
        return this.each(function() {   
            $.nsliderfade(this, options);
        });
    };
	
	$.nsliderfade = function(conteneur, options) {
		var base = this;
		
		settings = {
            'speed':            'slow',
            'timeout':          2000,
			'menu':				'#menu'
        };
		
		if (options)
            $.extend(settings, options);
		
		// On récupère les enfants du conteneur
		elements = $(conteneur).children();
		
		if (elements.length > 1) {
		
			$(settings.menu).append('<a class="bt_stop"></a>');
			$('.bt_stop').click(function() { $.nsliderfade.stop(); return false; });
			
			// Génération du menu
			for (var i = 0; i < elements.length; i++) {
				$(settings.menu).append('<a href="#" class="bt_slide_'+i+'" onclick="$.nsliderfade.goto('+i+');return false;">'+(i+1)+'</a>');
				$(elements[i]).addClass('slide'+i);
			}
			
			$('.slide0').css('display','block');
			$('.bt_slide_0').addClass('actif');
			
			timeout = setTimeout(function() {
				$.nsliderfade.next(elements, settings, 1, 0);
			}, settings.timeout);
		}else if (elements.length == 1) {
			$(elements[0]).css('display','block');
			$(settings.menu).css('display','none');
		}
	}
	
	$.nsliderfade.goto = function(el) {
		$('.slide'+n_last).fadeOut(settings.speed);
		$('.slide'+el).fadeIn(settings.speed);
		
		$('.bt_slide_'+n_last).removeClass('actif');
		$('.bt_slide_'+el).addClass('actif');
		 
		if ((el + 1) < elements.length) {
			el = el + 1;
			n_last = el - 1;
		} else {
			el = 0;
			n_last = elements.length - 1;
		}
		
		actif = el;
		
		elements
		 
		$.nsliderfade.stop();
	}
	
	$.nsliderfade.next = function(elements, settings, current, last) {
		$(elements[last]).fadeOut(settings.speed);
        $(elements[current]).fadeIn(settings.speed);
		
		$('.bt_slide_'+last).removeClass('actif');
		$('.bt_slide_'+current).addClass('actif');
		
		if ((current + 1) < elements.length) {
			current = current + 1;
			last = current - 1;
		} else {
			current = 0;
			last = elements.length - 1;
		}
		
		actif = current;
		n_last = last;
		
		timeout = setTimeout((function() {
            $.nsliderfade.next(elements, settings, current, last);
        }), settings.timeout);
	}
	
	$.nsliderfade.stop = function() {
		clearTimeout(timeout);
		$('.bt_stop').addClass('play');
		$(".bt_stop").unbind("click");
		$(".bt_stop").bind("click", function() { $.nsliderfade.play(); });
	}
	
	$.nsliderfade.play = function() {
		$('.bt_stop').removeClass('play');
		$(".bt_stop").unbind("click");
		$(".bt_stop").bind("click", function() { $.nsliderfade.stop(); });
		
		timeout = setTimeout((function() {
			$.nsliderfade.next(elements, settings, actif, n_last);
		}), settings.timeout);
	}
	
})(jQuery);
