/*
 * Controle de navegacao
 * Copyright 2003 AgênciaClick - http://www.agenciaclick.com.br
 * $Author: dflf $
 * $Date: 2004/08/12 10:56:36 $
 * $Revision: 1.2 $
 */

// Inicializacoes
function navInit(nav){
	// instancia objetos Decada
	dec50Obj = new Decada('50', '1950', 'EAE9E9', 'B3B2B2', nav);
	dec60Obj = new Decada('60', '1960', 'EEE4E3', 'EACCCD', nav);
	dec70Obj = new Decada('70', '1970', 'F8F0FB', 'CDA0DF', nav);
	dec80Obj = new Decada('80', '1980', 'FEF5D6', 'F7C721', nav);
	dec90Obj = new Decada('90', '1990', 'E0E7EC', '246E9D', nav);
	dec00Obj = new Decada('00', '2000', 'E0EAED', '54892C', nav);
	dec10Obj = new Decada('10', '2010', 'EDEDED', 'CCCCCC', nav);
	
	// Preload do botao de navegacao
	pI('/img/cab_bt_0.gif');
	pI('/img/cab_bt_1.gif');
	
	// Botao de navegacao
	navBtObj = new Navegacao(); // instancia objeto navegacao

	// Atribue valores dinamicos
	var flagAtual = false;
	var h = winH() - 75; // altura do documento
	for (var i=0; i<=DecadaObjArr.length-1; i++) {
		var T = DecadaObjArr[i];
		T.atual = ((nav.getSection(0) == T.id) ? true : false);
		if (nav.getSection(0) == T.id) flagAtual = true;
		if (!flagAtual) {
			navBtObj.x1F += 28;
			navBtObj.x2I += 28;
		}
	
		// Instancia objeto dos layers barras verticais
		eval('fx' + DecadaObjArr[i].id + 'DL = new DL(\'fx' + DecadaObjArr[i].id + 'Div\')');
		
		// Ajustar o tamanho vertical das barras verticais
		eval('fx' + DecadaObjArr[i].id + 'DL').rTo(null, h);
		
	}
	
	fxNextDecDL = new DL('fxNextDecDiv');
	// Ajustar o tamanho vertical do miolo
	fxNextDecDL.rTo(null, h);
	
	// Instancia titulo da navegacao
	navTitDL = new DL('navTitDiv');
	// Instancia layer com pixel transparente e mapeamento de links que chamam as homes das decadas
	mapDecDL = new DL('mapDecDiv');
	mapDecDL.sh();
}


// Classe Decada
var DecadaObjArr = new Array();
function Decada (i, d, f, b, n) {
	var T = this;
	T.id = i; // id
	T.dir = d; // diretorio
	T.fgColor = f; // cor principal
	T.bgColor = b; // cor secundaria
	T.selected = (i == n.getSection(0)); // decada atual (true/false)
	eval('dec' + i + 'DL = new DL(\'dec' + i + 'Div\')'); // instancia DLs
	T.dl = eval('dec' + i + 'DL'); // objeto DL
	T.pxOr = T.dl.l; // Left original
	DecadaObjArr[DecadaObjArr.length] = T; // popula array de objetos
}


// Classe Navegacao
function Navegacao() {
	var T = this;
	T.id = 'navBtObj';
	T.idMask = 'navBtMaskObj';
	T.dir=0;
	T.x1I = 0;
	T.x1F = 29;
	T.x2I = 611;
	T.x2F = 780;
	
	// Metodos
	T.navSlide = NavSlide;
	T.stopSlide = NavStopSlide;
	T.slideToDec = NavSlideToDec;
	T.fade = NavFade;
	T.fadeTimeout = null;
	T.clrFadeTimeout = NavClrFadeTimeout;
	T.setFadeTimeout = NavSetFadeTimeout;
	T.snapTimeout = NavSnapTimeout;
	T.snap = NavSnap;
	T.returnTimeout = null;
	T.clrReturnTimeout = NavClrReturnTimeout;
	T.setReturnTimeout = NavSetReturnTimeout;
	
	// Instancia os DLs
	navBtDL = new DL('navBtDiv');
	navMaskDL = new DL('navMaskDiv');
	T.BtDL = eval('navBtDL');
	T.MaskDL = eval('navMaskDL');
	navCliqueDL = new DL('navClique');
	
	// Executa o fade-in
	T.fade(0,1);
}

// Executa mudanca de decada
function navGoToDec(dec, nav){
	
	// Para dar um forward sem os efeitos de transicao (por ex. para algum browser nao suportado)
	//fxEnd(dec);
	//return;
	
	navTitDL.hd();
	mapDecDL.hd();
	navCliqueDL.hd();
	
	// Para o slide
	document.onmousemove = null;
	setTimeout('navBtObj.BtDL.stopSlide()',250);
	setTimeout('navBtObj.MaskDL.stopSlide()',250);
	navBtObj.BtDL.hd();
	navBtObj.MaskDL.hd();

	// Esconde o footer
	getElm('footerDiv').style.display='none';
	
	// Troca o innerHTML do conteudo, colocando uma tag div com a altura ate o fim da pagina
	if (isDef( 'contDiv' ))
	{
		getElm('contDiv').innerHTML = '<div style="width: 602px; height: ' + (winH() - 85) + '; background-color: #' + eval('dec' + dec + 'Obj').bgColor + '"></div>';	
	}

	// Esconde os layers das homes
	if (isDef('foto50Div')) foto50DL.hd();
	if (isDef('foto60Div')) foto60DL.hd();
	if (isDef('foto70Div')) foto70DL.hd();
	if (isDef('foto80Div')) foto80DL.hd();
	if (isDef('foto90Div')) foto90DL.hd();
	if (isDef('foto00Div')) foto00DL.hd();
	if (isDef('foto10Div')) foto10DL.hd();
	if (isDef('avisoDiv')) avisoDL.hd();
	if (isDef('avisobgDiv')) avisobgDL.hd();
		
	
	// Cria array de decadas a serem ativadas
	// verifica posicao das decadas (direcao do slide)
	
	var pos1, pos2 = 0
	var pN = 0; // Posicao do miolo
	
	for (var i=0; i<=DecadaObjArr.length-1; i++) {
		
		eval('fx' + DecadaObjArr[i].id + 'DL').sh();
		
		// Calcula quais divs de efeitos devem ser ativados
		if (dec == DecadaObjArr[i].id) {
			pos1 = i + 1;
			pN = i * 28;
		}
		if (nav.getSection(0) == DecadaObjArr[i].id) pos2 = i + 1;
		
		// Calcula a direcao do movimento
		if (pos1 > pos2) dir = -1;
		else if (pos1 == pos2) dir = 0;
		else dir = 1;
		
	}
	
	// Mostra a faixa atual
	var tFxDL = eval('fx' + dec + 'DL');
	tFxDL.css.backgroundColor = eval('dec' + dec + 'Obj').fgColor;
	tFxDL.sh();
	
	// Mostra o miolo
	fxNextDecDL.mTo(pN, null);
	fxNextDecDL.css.backgroundColor = eval('dec' + dec + 'Obj').bgColor;
	fxNextDecDL.sh();
	
	// Cria array de efeitos
	var fxAr = new Array();
	if (dir == 1) {
		fxAr = DecadaObjArr.slice(pos1, pos2);
	} else if (dir == -1) {
		fxAr = DecadaObjArr.slice(pos2,  pos1);
	} else if (dir == 0) {
		fxEnd(dec); // vai para a home da decada
	}
	
	// Aciona os slides
	for (var i=0; i<fxAr.length; i++) {
		var tFxDecDL = eval('fx' + fxAr[i].id + 'DL');
		tFxDecDL.sh();
		tFxDecDL.slideBy((612-28) * dir, null, 80, 20, 10);
		eval('dec' + fxAr[i].id + 'DL').slideBy((612-29) * dir, null, 80, 20, 10, 'fxEnd(' + dec + ')');
	}
	
}

//var bFxEnd = false;
//function fxEnd(d) {
	// Chamada para a home da decada
	//if (!bFxEnd){
		//document.decada.DECADA.value = d;
		//document.decada.submit();
	 	//window.location = '/br/' + eval('dec' + ((d==0)?'00':d) + 'Obj').dir + '/index.jsp';
	//}
	//if (!bFxEnd) window.location = '_produtos_homeprodutos.jsp?DECADA=' + d;
	//bFxEnd = true;
//}


// Efeitos de transicao
function NavSlideToDec(dec){
	// altera a visibilidade do conteudo
	getElm('contDiv').style.visibility='hidden';
	this.fade(100,0);
	return true;
}

// Fade in/out do botao de navegacao
function NavFade(opc,type) {
	var T = this;
	opc += ((type) ? 10 : -10);
	if (is.ie) {
		T.BtDL.css.filter = 'alpha(opacity='+opc+')';
		T.MaskDL.css.filter = 'alpha(opacity='+opc+')';
	} else if (is.ns6) {
		T.BtDL.css.MozOpacity = opc + '%';
		T.MaskDL.css.MozOpacity = opc + '%';
	}
	if ((type) && (opc >= 100)) T.clrFadeTimeout();
	else if ((!type) && (opc <= 0)) T.clrFadeTimeout();
	else T.setFadeTimeout(opc, 10, type);
}

// Fade Timeout
function NavSetFadeTimeout(opc, t, type) {
	clearTimeout(this.fadeTimeout);
	this.fadeTimeout = setTimeout(this.id + '.fade(' + opc + ',' + type + ')',t);
}

function NavClrFadeTimeout() {
	clearTimeout(this.fadeTimeout);
}


// Evento OnMouseMove
var waitTime = null;
function NavSlideEvent(e){
	var d = document;
	var x1 = (is.ie) ? event.x+d.body.scrollLeft : e.pageX;
	var y1 = (is.ie) ? event.y+d.body.scrollLeft : e.pageY;
	if (isDef('navBtObj')) { // verifica se navBtObj esta definido
	var T = eval('navBtObj');
//		var pY = 12; // corrige posicao vertical para a home
		var pY = ( (nav.getSection(1)=='home') ? 12 : 12 ); // corrige posicao vertical para a home
		// Verifica a posicao do mouse na barra de navegacao e ativa o slide do botao
		if ( ( (x1>T.x1I && x1<T.x1F) || (x1>T.x2I && x1<T.x2F) ) && (y1>(54+pY) && y1<(76+pY)) ) waitTime = setTimeout(T.id+".navSlide("+x1+")",250);
	else clearTimeout(waitTime);
	}
}
	
// Drag com mousemove (x = posição final)
function NavSlide(x) {
	var T = this;
	
	// Verifica sentido do movimento
	if (x>T.x1F && (!T.dir)) {
		T.dir = 1;
	} else if (x<T.x1F && (T.dir)) {
		T.dir = 0;
	}
	
	// Calcula posicao final do slide
	var pMouse = 17;
	pxSlide = 0;
	if ((x - pMouse) < T.x1F) pxSlide = x - 15;
	else if ((x - pMouse) > T.x1F) pxSlide = x - 12;//45;
	if (pxSlide < 0) pxSlide = 0;
	if (pxSlide > (780 - 29)) pxSlide = 780 - 29;
	
	// Executa Slide	
	T.BtDL.slideTo(pxSlide, null);
	T.MaskDL.slideTo(pxSlide + 5, null, null, null, null, T.id + '.snapTimeout()'); // TODO - verificar necessidade deste timeout
	
}

// Para o slide quando clica em alguma decada
function NavStopSlide() {
	this.BtDL.stopSlide();
	this.MaskDL.stopSlide();
}

function NavSnapTimeout() {
	eval(this.id + '.snap()'); // ativa snap
	setTimeout(this.id + '.snap()',20); // ativa snap apos um tempo
}


// Snap
function NavSnap() {
	var T = this;
	var pL = T.BtDL.l;
	var pF = 0;
	var mL = 15;
	var mR = 14;
	var d = '';
	
	// Calcula posicoes
	if (pL >= (dec60DL.l-mR) && pL < (dec60DL.l + mL)) d = '60';
	else if (pL >= (dec70DL.l - mR) && pL < (dec70DL.l + mL)) d = '70';
	else if (pL >= (dec80DL.l - mR) && pL < (dec80DL.l + mL)) d = '80';
	else if (pL >= (dec90DL.l - mR) && pL < (dec90DL.l + mL)) d = '90';
	else if (pL >= (dec00DL.l - mR) && pL < (dec00DL.l + mL)) d = '00';
	else if (pL >= (dec10DL.l - mR)) d = '10';
	else d = '50';
	pF = eval('dec' + d + 'DL').l;
	
	// Move o botao
	T.BtDL.mTo(pF, null);
	T.MaskDL.mTo(pF + 5, null); // corrige posicao da mascara
	T.MaskDL.css.backgroundColor = eval('dec' + d + 'Obj').bgColor;
	
	// Seta um timeout para retorno a posição inicial
	if (d != nav.getSection(0)) T.setReturnTimeout();
}

// Return Timeout
function NavSetReturnTimeout() {
	clearTimeout(this.returnTimeout);
	var pOr = eval('dec'+nav.getSection(0)+'Obj').pxOr + 10; // Recupera a posição inicial
	this.returnTimeout = setTimeout(this.id + '.navSlide(' + pOr + ')', 2000); // Retorna para a posição da década atual após 3 segundos
}

function NavClrReturnTimeout() {
	clearTimeout(this.returnTimeout);
}

/**/