// JavaScript Document

/**
 *	@version - brScroll 1.5	
 *
 *	@author Bruno Adolfo Hoffmann -- bruno_mc_dj@hotmail.com -- 05/09/2011
 *	
 *	@jquery - aplicação construida usando uma versão 1.4.x	
 */

var brScrollInstances = new Array();
jQuery.fn.brScroll = function(options){
	
	var settings = {
					type: 'horizontal', // tipo do scroll ( horizontal e vertical )
					direct: 'left', // direção do scroll
					delay: 40, // Velocidade do scroll
					margin: 100 // distancia em pixels dos objetos do scroll 
				   };
	options = jQuery.extend(settings,options);
		
	/* armazena instancia */
	brScrollInstances[jQuery(this).attr('id')] = {settings: options};
	var config = brScrollInstances[jQuery(this).attr('id')];
	
	/* consfigura objAtual */
	var objAtual = jQuery(this);
	
	/* pega as dimensões do scroll */
	var widScroll = objAtual.width();
	var heiScroll = objAtual.height(); 
	
	/* executa o scroll de acordo com tipo selecionado */
	setTimeout(config.settings.type + '()');
	
	horizontal = function(){ 
		
		/* soma o tamanho das lis */
		var somaWid = Number(10); // soma para o efeito do scroll
		var somaWidUl = Number(10); // soma para atribui o tamanha da ul
		var marginInicial = Number(widScroll + 10); // valor default para LEFT
		function horMargin(){
			
			objAtual.find('li').each(function(index,value){
				var margin = 0;
				if(index > 0){
					margin = config.settings.margin;
				}
				somaWid = Number(somaWid + jQuery(this).width() + margin);	
				jQuery(this).css('margin-left',margin+'px');
			});	

			somaWidUl = somaWid;
			
			if(config.settings.direct=='left'){
				objAtual.find('ul').css('margin-'+config.settings.direct, marginInicial + 'px');	
			}
			if(config.settings.direct=='right'){
				marginInicial = Number('-'+somaWid);
				objAtual.find('ul').css('margin-left', marginInicial + 'px');		
			}
			
		}
		
		/* configura margins */
		horMargin();
		
		/* atribui o tamanho da ul */
		objAtual.find('ul').css('width',somaWidUl+'px');
		
		/* inicia o scroll */
		horAtiva();
		
		/* função que efetua o scroll */
		var horInterval = null;
		var horIntervalBool = true;
		var marginCurrent = marginInicial;
		function horAtiva(){
			horInterval = setInterval(function(){
				if(horIntervalBool){
					/* calcula valor do px scroll */
					var calcScroll = Number(0.0119 * config.settings.delay);
					var pxScroll = calcScroll.toFixed(2);
					
					if(config.settings.direct == 'left'){
						marginCurrent = (marginCurrent - pxScroll);
						if(marginCurrent < '-'+somaWid){
							marginCurrent = marginInicial;
							objAtual.find('ul').css('margin-'+config.settings.direct, Number(marginCurrent) + 'px');	
						}	
					}
					if(config.settings.direct == 'right'){
						marginCurrent = (marginCurrent + pxScroll);
						if(marginCurrent > Number(widScroll + 10)){
							marginCurrent = marginInicial;
							objAtual.find('ul').css('margin-left', Number(marginCurrent) + 'px');	
						}	
					}
					objAtual.find('ul').css('margin-left', marginCurrent + 'px');
				}
			},10);
		}

		/* manipula ações do mouse */
		objAtual.mouseover(function(){
			horIntervalBool = false;	
		});
		objAtual.mouseout(function(){
			horIntervalBool = true;	
		});
		
	};
	
};
