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

jQuery.fn.start = function(){
	//alert("init");
	firstElementOnViewPort = 1,
	allElementsWidth = 0;
	stopAppend = false;
	jQuery('#slider-stage').carousel();
}
 
 

jQuery.fn.carousel = function(options){
	temp++;

	var sliderList = jQuery(this).children()[0];
	
	if (this && 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++) {
		if (temp == 1) {
				if (stopAppend != true) {
					numElmtsStart = numElmts;
					//jQuery(sliderList).append(jQuery(elmnts[i]).clone());
				}
			}
		
			jQuery(sliderList).css('width',(numElmts+shownInViewport)*increment + "px");
		
		
			if(!(temp % (numElmtsStart))){
				if (stopAppend != true) {
					jQuery(sliderList).append(jQuery(elmnts[i]).clone());
                }
			}
		}

		var u = 0;
		
		var splitter = new Array();
		splitter = jQuery(sliderList).css('left').split('px');
		splitterInt = parseInt(splitter[0]);
		currentElementWidth = splitterInt - allElementsWidth;
		allElementsWidth = allElementsWidth + splitterInt;
		
		if ((temp-1) == numElmtsStart && allElementsWidth < splitterInt) {		
			allElementsWidth = 0;
			temp = 1;
			jQuery(sliderList).css('left', "-18px");
			stopAppend = true;
		}
		
		if (!isAnimating) {
			if (firstElementOnViewPort > numElmts) {
				firstElementOnViewPort = 2;
				jQuery(sliderList).css('left', "-18px");
			}
			else {
				firstElementOnViewPort++;
			}
			jQuery(sliderList).animate({
				left: "-=" + increment,
				y: 0,
				queue: true
				},12000, "linear", function(){
				isAnimating = false;
				if(u % 2){
					jQuery('#slider-stage').carousel('#previous', '#next');
				}
				u++;
			});
			isAnimating = true;
		}
	}
};
