﻿/* criar funcao do plugin	*/
(function($){
	$.fn.cSlider = function(parametros){
		//1- parametros padroes
		var padrao = {
			velocidade 	: 200 ,
			circular 	: true ,
			mouseOver	: true ,
			auto		: 100,
			visivel		: 5,
			inicial		: 0,
			slide		: 1,
		}
		//2- selecionar parametros
		var fx = $.extend({},padrao,parametros);
		return this.each(function(){
			var $div = $(this),
				$ul = $div.find('> ul'),
				$li = $ul.find('> li'),
				size = $li.length,
				largura = $li.outerWidth(),
				paginas = Math.ceil(size/fx.visivel),
				atual = (fx.inicial / fx.visivel),
				parar = false;
				
			//1 - se circular append e preppend
			if(fx.circular){
				$ul.prepend( $li.slice(-fx.visivel).clone().addClass("clonado"));
				$ul.append( $li.slice(0,fx.visivel).clone().addClass("clonado"));
				fx.inicial += fx.visivel;				
				$li = $ul.find('> li');
				size = $li.length ;
				paginas = Math.ceil(size/fx.visivel);
			}
			//2 - modifica o css preparando para o slider
			$div.css({
				overflow	: 'hidden'
			}).width( largura * fx.visivel );
			$ul.css({
				listStyle	: 'none' ,
				padding		: 0,
				position	: 'relative'
			}).width( size * largura );
			$li.css({
				margin		: 0,
				float		: 'left',
			})
			//3 - se automatico setInterval
			if(fx.auto != null){
				setInterval(function(){
					gotoPage(atual - (size / fx.visivel));
				}, fx.auto)
			}
			//4 - se mouseover on mouseover stop
			if(fx.mouseOver){
				$div.mouseover(function(){
					parar = true;
				});
				$div.mouseout(function(){
					parar = false;
				});
			}
			//5 - set posicao inicial
			$div.scrollLeft(largura * fx.inicial);
			
			//6 - funcao para slide
			function gotoPage(pagina){				
				var direcao = pagina < atual ? 1 : -1,
					atual = ($div.scrollLeft() / largura) / fx.visivel,
					n = Math.abs(atual - pagina) * direcao,
					scroll = n * largura *fx.visivel;
				if(fx.circular){
					if(atual >= paginas - 1){
						$div.stop().scrollLeft(fx.visivel * largura);
						atual = 1;
					}
					if (atual <= 0){
						$div.stop().scrollLeft((((paginas - 2) * fx.visivel) * largura) - 29);
						atual = paginas;
					}
				}				
				if(!parar){
					$div.filter(':not(:animated)').animate({
							scrollLeft	: '+=' + scroll,
						}, fx.velocidade, "linear"
					);
				}else{
					$div.stop();
				}
				
			}
			window.gotoPage = gotoPage;
		});		
	}
})(jQuery);


