/**
 * @author Gabriel Memmel (gabimem[]gmail.com)
 * @extends jquery
 *
 */

(function($){
	$.extend($.fn, {
		carousel: function(previous, next, options){
			options.delay = options.delay || 50;
			options.increment = options.increment || 1;
			var sliderList = jQuery(this).children()[0];
			if(sliderList){
				jQuery(this).css({overflow: 'hidden'});
				jQuery(sliderList).css({float: 'left',position: 'relative'});
				
				var items = jQuery(sliderList).children();
				if(items.length > 0){
					$(items).css('float', 'left');
					var increment = jQuery(sliderList).children().outerWidth("true"),
					numItems = items.length,
					sizeFirstItem = increment,
					shownInViewport = Math.ceil(jQuery(this).width() / sizeFirstItem),
					firstElementOnViewPort = 1,
					isAnimating = false;
					
					var ancho = numItems * parseInt(increment);
					
					jQuery(sliderList).css('width', (numItems + shownInViewport) * increment + increment + "px");
			
					for(i = 0; i < shownInViewport; i++){
						jQuery(sliderList).append(jQuery(items[i % numItems]).clone());
					}
					
					
					if(options.autoscroll == true){
						function autoscroll(){
							var lft = parseInt(sliderList.style.left) || 0;
							var nlft = lft - parseInt(options.increment);
							if(nlft < -ancho){
								nlft += ancho;
							}
							//jQuery(sliderList).css({left: (nlft + 'px')});
							sliderList.style.left = nlft + 'px';
						}
						
						var tOut = this.tOut;
						tOut = setInterval(autoscroll, parseInt(options.delay));
						
						jQuery(sliderList).hover(
							function(){
								clearInterval(tOut);
							},
							function(){
								tOut = setInterval(autoscroll, parseInt(options.delay));		
							}
						)
					}
					
					
				
					/*jQuery(previous).click(function(event){
						if (!isAnimating) {
							if (firstElementOnViewPort == 1) {
								jQuery(sliderList).css('left', "-" + numItems * sizeFirstItem + "px");
								firstElementOnViewPort = numItems;
							}
							else {
								firstElementOnViewPort--;
							}
							
							jQuery(sliderList).animate({
								left: "+=" + increment,
								y: 0,
								queue: true
							}, "swing", function(){isAnimating = false;});
							isAnimating = true;
						}
						
					});
				
					jQuery(next).click(function(event){
						if (!isAnimating) {
							if (firstElementOnViewPort > numItems) {
								firstElementOnViewPort = 2;
								jQuery(sliderList).css('left', "0px");
							}
							else {
								firstElementOnViewPort++;
							}
							jQuery(sliderList).animate({
								left: "-=" + increment,
								y: 0,
								queue: true
							}, "swing", function(){isAnimating = false;});
							isAnimating = true;
						}
					});*/
				}
			}
		}
	})
})(jQuery);

