
   
// Funcao executada quando a pagina e' carregada
function iniciar() {
	paginaCarregada = true;
	submenus = new Submenus("galeria");
}

/* Se o mouse estiver perto da borda superior da janela, rola a janela pra cima
   Se estiver perto da borda inferior, rola a janela pra baixo
   Tambem armazena a posicao do mouse nas variaveis globais posX e posY */
function acao(e) {
	var areaBaixo,areaCima;
	if(paginaCarregada) {
		if(browser.ns4 || browser.ns6) {                  // O Netscape captura a posicao do mouse relativa A PAGINA
			areaBaixo = paginaY() + alturaJanela() - 10;
			areaCima = paginaY() + 10;
		} else {                                        // O Internet Explorer captura a posicao do mouse relativa A JANELA
			areaBaixo = alturaJanela() - 10;
			areaCima = 10;
		}
		posX = eval(mouseX);
		posY = eval(mouseY);
		if(posY >= areaBaixo) {
			if(!rolandoTela) {
				rolarTela = setInterval("rolar('baixo')",100);
			}
			rolandoTela = true;
		} else if(posY <= areaCima) {
			if(!rolandoTela) {
				rolarTela = setInterval("rolar('cima')",100);
			}
			rolandoTela = true;
		} else if(rolandoTela) {
			clearInterval(rolarTela);
			rolandoTela = false;
		}
	}
}

// Rola a tela.
function rolar(direcao) {
	switch(direcao) {
		case "baixo":
			if((paginaY() + alturaJanela()) < alturaPagina()) {
				self.scrollBy(0,5);
			}
		break;
		case "cima":
			if(paginaY() > 0) {
				self.scrollBy(0,-5);
			}
		break;
	}
}

/* Cria os objetos que manipulam os layers dos submenus
   Os nomes dos layers devem ser passados como argumentos para a funcao */
function Submenus() {
	totalmenus = Submenus.arguments.length;
	for(var a = 0; a < totalmenus; a++) {
		this[a] = eval(doc + Submenus.arguments[a] + sty);
		this[a].height = alturaLayer(Submenus.arguments[a]);
	}
}

// Exibe o layer do indice passado como argumento e esconde os outros
function exibirSubmenu(indice) {
	for(var a = 0; a < totalmenus; a++) {
		submenus[a].visibility = (a == indice) ? "visible" : "hidden";
	}	
}

// Agenda a execucao da funcao "checarVisibilidade" para daqui a 100 milisegundos
function checarMenu(indice) {
	var str = "checarVisibilidade('" + indice + "')";
	setTimeout(str,100);
}

/* Checa se o mouse esta' sobre o submenu correspondente ao indice
   Se nao estiver, esconde o submenu */
function checarVisibilidade(indice) {
	var left = parseInt(submenus[indice].left);
	var top = parseInt(submenus[indice].top);
	var altura;

	if(browser.ie4) {
		altura = parseInt(submenus[indice].height) + paginaY();
		posY += paginaY();
	} else {
		altura = parseInt(submenus[indice].height);
	}
	if(submenus[indice].visibility == "visible" || submenus[indice].visibility == "show") {
		if(posX < left || posX > (left + 130) || posY < top || posY > (top + altura)) {
			submenus[indice].visibility = "hidden";
		}
	}
}

// Retorna a altura da area do browser de exibicao da pagina 
function alturaJanela() { return ((browser.ns4 || browser.ns6) ? self.innerHeight : document.body.clientHeight); }

// Retorna a altura da pagina
function alturaPagina() { return ((browser.ns4 || browser.ns6) ? document.height : document.body.scrollHeight); }

// Retorna a posicao vertical da barra de rolagem
function paginaY() { return ((browser.ns4 || browser.ns6) ? self.pageYOffset : document.body.scrollTop); }

// Retorna a altura do layer
function alturaLayer(idLayer) {
	if(browser.ns6) {
		return (eval("document.getElementById('" + idLayer + "').offsetHeight"));
	} else if(browser.ns4) {
		return (eval("document.layers['" + idLayer + "'].document.height"));
	} else {
		return (eval(doc + idLayer + ".clientHeight"));
	}
}

// Retorna a largura do layer
function larguraLayer(idLayer) {
	if(browser.ns4) {
		return(eval("document.layers['" + idLayer + "'].document.width"));
	} else if(browser.ns6) {
		return(eval("document.getElementById('" + idLayer + "').offsetWidth"));
	} else {
		return(eval(doc + idLayer + "clientWidth"));
	}
}

// Classe que identifica o browser
function Browser() {
	var nome = navigator.userAgent.toUpperCase();
	var versao = parseInt(navigator.appVersion);
	this.ns4 = (versao >= 4 && nome.indexOf("MOZILLA") != -1 && nome.indexOf("COMPATIBLE") == -1 && nome.indexOf("SPOOFER") == -1);
	this.ie4 = (versao >= 4 && nome.indexOf("MSIE") != -1);
	this.ns6 = (versao >= 5 && this.ns4);
	this.outro = !(this.ns4 || this.ie4 || this.ns6);
}

// Definicao de variaveis globais de acordo com o browser
browser = new Browser();

if(browser.ns6) {
	doc = "document.getElementById('";
	sty = "').style"
	mouseX = "e.pageX";
	mouseY = "e.pageY";
} else if(browser.ns4) {
	doc = "document.layers['";
	sty = "']";
	mouseX = "e.pageX";
	mouseY = "e.pageY";
} else {
	doc = "document.all.";
	sty = ".style";
	mouseX = "event.x";
	mouseY = "event.y";
}
paginaCarregada = false;
rolarTela = null;
rolandoTela = false;
submenus = null;
totalmenus = 0;
posX = 0;
posY = 0;

// Monitoramento da posicao do mouse.
if(browser.ns4 || browser.ns6) {
	document.captureEvents(Event.MOUSEMOVE);
}

document.onmousemove = acao;


