 /////////////////////////////////////////////////////////////////////////
/// GALERIA VERTICAL COM SETAS ///////////////////////////////// V 1.1 //
/***********************************************************************
- CHANGE LOG:
1.1 - (24/06/2008) Sebastian: Novo propiedade VELOCIDADE.
1.0 - (23/06/2008) Sebastian: Criação do Componente.
************************************************************************/

// Sintaxis setasGaleria_V ( ID_DIV_GALERIA , NOME_OBJETO_CRIADO , VELOCIDADE )
function SetasGaleria_V (galeriaDiv_id, nomeObj, velocidade) {
	// Galeria - Por defeito: galeria
	var galeriaDiv_id = !galeriaDiv_id ? 'galeria' : galeriaDiv_id;
	// Conteiner  - Por defeito: itens_cont
	var itensCont_id = !galeriaDiv_id ? 'galeria_cont' : galeriaDiv_id+"_cont";
	// Quantidade de itens visiveis por vez
	this.qtdVisiveis = !this.qtdVisiveis ? 2 : this.qtdVisiveis;
	// Velocidade da animação
	var velocidade = !velocidade ? 5 : velocidade;

	// Dependendo do Browser pegamos os elementos
	if(document.getElementById) {
		var galeriaDiv = document.getElementById(galeriaDiv_id);
		var itensCont = document.getElementById(itensCont_id);
	}
	else {
		var galeriaDiv = document.all.galeriaDiv_id;
		var itensCont = document.all.itensCont_id;
	}
	
	// Quantidade de Itens
	var qtdItens = itensCont.getElementsByTagName('li').length;
	// Altura do Item
	var altItem = itensCont.getElementsByTagName('li')[0].offsetHeight;
	
	// Tamanho do Conteiner
	var altCont = altItem*qtdItens;
	itensCont.style.height = altCont+"px";
	
	// Distancia entre o nova posição e o itensCont
	var distancia = 0;
	
	// Margem de erro da seta UP**
	var setaUP_erro = velocidade-1
	
	// Limites da animação
	var maxPosY = 0;
	var minPosY = (altItem*this.qtdVisiveis)-altCont;
	
	// Coloca o Conteiner dos itens em 0px
	itensCont.style.top = maxPosY+"px";
	
	// Setas UP/DOWN
	var setaUp = document.getElementById(galeriaDiv_id+"_setaUp");
	var setaDown = document.getElementById(galeriaDiv_id+"_setaDown");	
	setaUp.nomeObj = setaDown.nomeObj = nomeObj;
	
	// Ações - CLICK
	// Seta UP
	setaUp.onclick = function (e) {
		// Pega a posição Y atual
		var novaPosY = parseInt(itensCont.style.top)+altItem+setaUP_erro; 
		// Soma 9 pelo margem de erro que tem
		// Verifica a existença de outro intervalo
		if(galeriaDiv.t_galeria) {
			itensCont.novaPosY = novaPosY;
		}
		else {
			galeriaDiv.t_galeria = setInterval(setaUp.nomeObj+".animaGaleria("+novaPosY+")", 10);
		}
	}
	// Seta DOWN
	setaDown.onclick = function (e) {		
		// Pega a posição Y atual
		var novaPosY = itensCont.style.top.replace("px","")-altItem; 
		
		// Verifica a existença de outro intervalo
		if(galeriaDiv.t_galeria) {
			itensCont.novaPosY = novaPosY;
		}
		else {
			galeriaDiv.t_galeria = setInterval(setaDown.nomeObj+".animaGaleria("+novaPosY+")", 10);
		}
	}
	
	// Anima a galeria
	this.animaGaleria = function (posY) {
		// Pegamos a nova posY
		var novaPosY = posY == "false" ? itensCont.novaPosY : posY;
				
		// Limpa a pos anterior
		posY = false;
				
		// Posição atual
		var atualPosY = itensCont.style.top.replace("px","");

		// Distancia entre a nova posY o itens conteiner
		var distancia = atualPosY-novaPosY;
				
		// Nova posição Y
		itensCont.style.top = Math.floor(atualPosY-(distancia/velocidade))+"px";
		
		// Margem de erro ao clicar a setaUp
		if(novaPosY > atualPosY) {
			novaPosY -= setaUP_erro;
		}
		
		// Limites da animação
		var minPosY = (altItem*this.qtdVisiveis)-altCont;
		
		// Travamos ele para que não passe dos Limites
		if(novaPosY > maxPosY) {
			itensCont.style.top = maxPosY+"px";
			paraAnimacao();
		}
		if(novaPosY < minPosY) {
			itensCont.style.top = minPosY+"px";
			paraAnimacao();
		}
		
		// Paramos a animação
		if(atualPosY == novaPosY ) {
			paraAnimacao();
		}
		
		// Função que para a animação
		function paraAnimacao () {
			clearInterval(galeriaDiv.t_galeria);
			galeriaDiv.t_galeria = false;
		}
	}
}
//////////////////////////////////////////////////////////////
