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

jQuery.fn.carousel = function(previous, next, options){
	var sliderList = jQuery(this).children()[0];
	
	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;
		
		if(options == 'spc-slider-list'){
            if(typeof(_month) != 'undefined'){
                
                if(numElmts-_month >= 9){
                    jQuery('.spc-slider-list').css('left', "-" + _month*increment + "px");
                    firstElementOnViewPort = _month+1;
                }else{
                    jQuery('.spc-slider-list').css('left', "-" + 10*increment + "px");
                    firstElementOnViewPort = 11;
                }
            }
        }
		
        //martelo
        shownInViewport = numElmts;
		for (i = 0; i < shownInViewport; i++) {
		    
			jQuery(sliderList).css('width',(numElmts)*increment + increment+590 + "px");
			
			if(!options){  
			    jQuery(sliderList).append(jQuery(elmnts[i]).clone());
			}else if(options == 'stop_carrousel' && numElmts >= 9){
			    jQuery(sliderList).append(jQuery(elmnts[i]).clone());
			}
		}
		
		jQuery(previous).click(function(event){
		    if(!options){ 
                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;
                }
			}else{
			     if(options == 'stop_carrousel'){
			          if(numElmts < 9){
                          if(firstElementOnViewPort > 1){
                                 firstElementOnViewPort--;
                                 
                                jQuery(sliderList).animate({
                                    left: "+=" + increment,
                                    y: 0,
                                    queue: true
                                }, "swing", function(){isAnimating = false;});
                                isAnimating = true;
                            }
                      }else{
                          
                           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;
                      }
                        
			    }else{
                    //Slider 
                    if (!isAnimating) {
                        
                        if(firstElementOnViewPort > 1){
                             firstElementOnViewPort--;
                             
                            jQuery(sliderList).animate({
                                left: "+=" + increment,
                                y: 0,
                                queue: true
                            }, "swing", function(){isAnimating = false;});
                            isAnimating = true;
                        }
                    }
                }
			}
		});
		
		jQuery(next).click(function(event){
		                     
		    if(!options){ 
                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;
                }
			}else{
			    if(options == 'stop_carrousel'){
			        
			        if (!isAnimating) {
			            if(numElmts < 9){
			                
                            if(firstElementOnViewPort <= numElmts-2){
                                firstElementOnViewPort++;
                                
                                jQuery(sliderList).animate({
                                    left: "-=" + increment,
                                    y: 0,
                                    queue: true
                                }, "swing", function(){isAnimating = false;});
                                isAnimating = true;
                            }
                        }else{
                            
                            if (firstElementOnViewPort >= numElmts-1) {
                                firstElementOnViewPort = 2;
                                jQuery(sliderList).css('left', "0px");
                            }
                            else {
                                firstElementOnViewPort++;
                            }
                            jQuery(sliderList).animate({
                                left: "-=" + increment,
                                y: 0,
                                queue: true
                            }, "swing", function(){isAnimating = false;});
                            isAnimating = true;
                        
                        }
                    } 
			    
			    }else{
                    if (!isAnimating) {
                        
                        if(firstElementOnViewPort <= numElmts-10){
                            firstElementOnViewPort++;
                            
                            jQuery(sliderList).animate({
                                left: "-=" + increment,
                                y: 0,
                                queue: true
                            }, "swing", function(){isAnimating = false;});
                            isAnimating = true;
                        }
                    }  
                }
			}
		});
	}
};

