/**
 * @author Stéphane Roucheray 
 * @extends jquery
 */


$.fn.carousel = function(previous, next, elmntAtivo, options, isPremiacao){
	
	var sliderList = $(this).children()[0];
	
	if (sliderList) {
		var increment = $(sliderList).children().outerWidth("true"),
		elmnts = $(sliderList).children(),
		numElmts = elmnts.length,
		sizeFirstElmnt = increment,
		shownInViewport = Math.round($(this).width() / sizeFirstElmnt),
		firstElementOnViewPort = 1,
		isAnimating = false;

		if( isPremiacao == true ) 
		{
			slideMinElem = 3;
		}
		else
		{
			slideMinElem = 5;
		}

                if(numElmts > slideMinElem)
                {
                    for (i = 0; i < shownInViewport; i++) 
					{
						$(sliderList).css('width',(numElmts+shownInViewport)*increment + increment + "px");
						$(sliderList).append($(elmnts[i]).clone());
        			}
        		
					$(previous).click(function(event){
			
							if (!isAnimating) 
							{
								if (firstElementOnViewPort == 1)
								{
									$(sliderList).css('left', "-" + numElmts * sizeFirstElmnt + "px");
									firstElementOnViewPort = numElmts;
								}
								else 
								{
								firstElementOnViewPort--;
								}
							
								$(sliderList).animate({
									left: "+=" + increment,
									y: 0,
									queue: true
								}, "swing", function(){isAnimating = false;});
								isAnimating = true;
							}
					});
			
					$(next).click(function(event){
						if (!isAnimating) 
						{
							if (firstElementOnViewPort > numElmts) 
							{
								firstElementOnViewPort = 2;
								$(sliderList).css('left', "0px");
							}
							else 
							{
								firstElementOnViewPort++;
							}
							$(sliderList).animate({
								left: "-=" + increment,
								y: 0,
								queue: true
							}, "swing", function(){isAnimating = false;});
							isAnimating = true;
						}
			
					});
		 		}
				else
				{
                     $(".previousSeries").css("cursor", "default");
                     $(".nextSeries").css("cursor", "default");
                }

	}

	if( isPremiacao == true ) 
	{
		if( elmntAtivo == 1 ) {
			val =  numElmts - 1;
			firstElementOnViewPort = numElmts;
		} else {
			val = ( elmntAtivo - 2);
			firstElementOnViewPort = elmntAtivo - 1;
		}

	        $(sliderList).css('left', "-" + val * sizeFirstElmnt + "px");
	}
	
    

};
