/**
 * @author Stéphane Roucheray 
 * @extends jquery
 */

jQuery.fn.carousel = function(previous, next, rightSubHeadings, rightContent, leftHeadings, linkContent, linkURL, options){
	var sliderList = jQuery(this).children()[0];
	var currentSlide = 0;
	
	
	jQuery('#main_nav').mouseenter(function() {
 		 $('#rightTextContainer').stop(true, true).fadeOut('slow', queue=false, function() {
			 
		 });
		 
		 $('#leftTextContainer').stop(true, true).fadeOut('slow', queue=false, function() {
		 });
		 
		});
		
	jQuery('#main_nav').mouseleave(function() {
 		  $('#rightTextContainer').stop(true, true).fadeIn('slow', queue=false, function() {
			 
		 });
		 
		  $('#leftTextContainer').stop(true, true).fadeIn('slow', queue=false, function() {
		 });
		 
		 
		 
		});
		
		
		
	
	if (sliderList) {
		var increment = jQuery(sliderList).children().outerWidth("true"),
		elmnts = jQuery(sliderList).children(),
		numElmts = elmnts.length,
		sizeFirstElmnt = increment,
		shownInViewport = Math.round(jQuery(this).width() / sizeFirstElmnt),
		firstElementOnViewPort = 1,
		isAnimating = false;
		
		for (i = 0; i < shownInViewport; i++) {
			jQuery(sliderList).css('width',(numElmts+shownInViewport)*increment + increment + "px");
			jQuery(sliderList).append(jQuery(elmnts[i]).clone());
		}
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		jQuery(previous).click(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
				},800, "easeInOutExpo", function(){isAnimating = false;});
				
					currentSlide--;
				
				if (currentSlide < 0){
					currentSlide = numElmts - 1;
				}
				
				$('#rightTextContainer').fadeOut('slow', queue=false, function() {
				$('#rightSubHeadingText').html(rightSubHeadings[currentSlide]);
				$('#rightContentText').html(rightContent[currentSlide]);
				$('#rightBottomText').html(linkContent[currentSlide] + " >>"); 
				$('#rightBottomText').attr('href', linkURL[currentSlide]); 				
				});
				
				$('#leftTextContainer').fadeOut('slow', queue=false, function() {
				$('#leftHeadingText').html(leftHeadings[currentSlide]);				
				});
				
				$('#rightTextContainer').fadeIn('slow', queue=false);
				$('#leftTextContainer').fadeIn('slow', queue=false);
				
				isAnimating = true;
			}
			
		});
		
		jQuery(next).click(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
				},800, "easeInOutExpo", function(){isAnimating = false;});
				
					currentSlide++;
				
				if (currentSlide >= numElmts){
					currentSlide = 0;
				}
				
				$('#rightTextContainer').fadeOut('slow', queue=false, function() {
				$('#rightSubHeadingText').html(rightSubHeadings[currentSlide]);
				$('#rightContentText').html(rightContent[currentSlide]); 
				$('#rightBottomText').html(linkContent[currentSlide] + " >>");
				$('#rightBottomText').attr('href', linkURL[currentSlide]); 				
				});
				
				$('#leftTextContainer').fadeOut('slow', queue=false, function() {
				$('#leftHeadingText').html(leftHeadings[currentSlide]);				
				});
				
				$('#rightTextContainer').fadeIn('slow', queue=false);
				$('#leftTextContainer').fadeIn('slow', queue=false);
				
				
				
				isAnimating = true;
			}
		});
	}
};

