jQuery.fn.carousel = function(previous, next, options){
	var sliderList = jQuery(this).children()[0];
	if (sliderList) {
		
		
		var increment = jQuery(sliderList).children().outerWidth("true");
		var elmnts = jQuery(sliderList).children();
		var numElmts = elmnts.length;
		var sizeFirstElmnt = increment;
		var shownInViewport = Math.round(jQuery(this).width() / sizeFirstElmnt);		
		var firstElementOnViewPort = 1;
		var isAnimating = false;
	
	
		for (i = 0; i < numElmts; i++) { //correction apportée en fonction du nb d elem contribue 			
			jQuery(sliderList).append(jQuery(elmnts[i]).clone());			
		}
		jQuery(sliderList).css('width',(numElmts*2)*increment + "px");

		jQuery(previous).mouseover(function(event){
			if (!isAnimating) {		
				
				if (firstElementOnViewPort == 1) {
					jQuery(sliderList).css('left', "-" + (numElmts) * sizeFirstElmnt + "px");
					firstElementOnViewPort = numElmts;
				}
				else {
					firstElementOnViewPort--;
				}
				jQuery(sliderList).animate({
					left: "+=" + increment,
					y: 0,
					queue: true
				}, "swing", function(){isAnimating = false;});
				isAnimating = true;
				
				/* --- */
				c1PrevInt = setInterval(function(){
					if (firstElementOnViewPort == 1) {								
						jQuery(sliderList).css('left', "-" + numElmts * sizeFirstElmnt + "px");						
						firstElementOnViewPort = numElmts;
					}
					else {
						firstElementOnViewPort--;
					}
					jQuery(sliderList).animate({
						left: "+=" + increment,
						y: 0,
						queue: true
					}, "swing", function(){isAnimating = false;});
					isAnimating = true;
				}, 700);
				/* --- */
			}

		});

		/* --- */
		jQuery(previous).mouseout(function(){	        
			clearInterval(c1PrevInt);
		});
		/* --- */

		jQuery(next).mouseover(function(event){
			if (!isAnimating) {
				if (firstElementOnViewPort > numElmts) {
					firstElementOnViewPort = 2;
					jQuery(sliderList).css('left', "0px");
				}
				else {
					firstElementOnViewPort++;
				}
				jQuery(sliderList).animate({
					left: "-=" + increment,
					y: 0,
					queue: true
				}, "swing", function(){isAnimating = false;});
				isAnimating = true;
				
				/* --- */
				c1NextInt = setInterval(function(){
					if (firstElementOnViewPort > numElmts) {
						firstElementOnViewPort = 2;
						jQuery(sliderList).css('left', "0px");
					}
					else {
						firstElementOnViewPort++;
					}
					jQuery(sliderList).animate({
						left: "-=" + increment,
						y: 0,
						queue: true
					}, "swing", function(){isAnimating = false;});
					isAnimating = true;
				}, 700);
				/* --- */
			}
		});
		
		/* --- */
		jQuery(next).mouseout(function(event){			    
			clearInterval(c1NextInt);
		});
		/* --- */
	}
};

jQuery(window).load(function(){
	
	/* --- */
	var valueOfMarginTop = -296;
	var indexOfLink = 1;
	var playLoop = true;

	setInterval(function(){
		
		if (playLoop)
		{
			if (valueOfMarginTop == -1184) valueOfMarginTop = 0;
			
			if (indexOfLink == 4) indexOfLink = 0;
			
			jQuery("#controls td").removeClass("active");
			jQuery("#controls td:eq("+indexOfLink+")").addClass("active");

			indexOfLink++;
			jQuery("#frame ul").css({
				"margin-top": valueOfMarginTop + "px"
			});

			valueOfMarginTop -= 296;
		}
	}, 2000);
	
	jQuery("td.nav").mouseover(function(){		

		playLoop = false;

		jQuery("td.active").removeClass("active");
		jQuery(this).addClass('active');

		indexOfLink = jQuery("#menu td").index(this);

		valueOfMarginTop = -indexOfLink*296;

		jQuery("#frame ul").css({
			'margin-top': valueOfMarginTop + "px"
		});

	});

	jQuery("td.nav").mouseout(function(){
		playLoop = true;
	});
	/* --- */	
	jQuery("#carousel1_mask").carousel("#previous1", "#next1");
	jQuery("#carousel2_mask").carousel("#previous2", "#next2");

});