
/*
* Metalúrgica Metal Master Ltda.
* Desenvolvido: Leandro P.
* Data: 22/02/05
* Alterado: Leandro P.
* Rev.: 1.1 - 01/02/05
*/

//Variaveis gerais
var timeout;
var timeout_sub;
var time_fechar;
var cor_deselec = "";
var cor_deselecT = "";
var item_selec = "";
var item_selec_sub = "";
var final = false;			// Indica o final da criação do menu
var b_navComp;				// Indica a compatibilidade do browser com o recurso de fade

var tempo_fade = 1;			// Tempo de espera para incrementar o fade
var incremento = 100		// Quanto vai ser incrementado em cada passagem do fade
var tempo_fechar = 400;		// Tempo para fechar o menu
var atual = 0;				// Menu exibido atualmente
var atual_sub = 0;			// Submenu exibido atualmente



/*--itMenu
* Cria o objeto menu
* Parametros:
* 0 - Habilita/Desabilita o efeito de fade
*/

itMenu = function(){
	
	//------------------------Propriedades privadas
	var arr_menu = new Array();		// Array com menus e seus itens
	var arr_pMenu = new Array();	// Array com os parametros dos menus
	var arr_sub = new Array();		// Array com submenus e seus itens
	var arr_pSub = new Array();		// Array com os parametros dos submenus
	var arr_item = new Array();		// Array com os itens
	var obj = this;					// Faz referencia a instancia desta classe para quando em tempo de execucao
	
	b_navComp = ((navigator.appVersion.indexOf("MSIE 6.0") != -1 || navigator.appVersion.indexOf("MSIE 5.5") != -1))?true:false; // Testa se é IE 6 ou 5.5

	if(b_navComp&&(navigator.userAgent.indexOf("Opera") != -1)) //Desabilitar para o navegador Opera
		b_navComp = false;

	if(arguments.length > 0 && b_navComp)
		b_navComp = Boolean(arguments[0]);
	
	
	
	//------------------------Metodos publicos
	/*--newMenu
	* Cria um novo menu
	* Retorna um identificador deste menu
	* Parametros:
	* 0 - Posicao X do menu
	* 1 - Posicao Y do menu
	* 2 - Largura do menu
	*/
	newMenu = function(){
		arr_menu.push(new Array());
		arr_pMenu.push(new Array(arguments[0],arguments[1],arguments[2]));		
		return arr_menu.length-1;
	}	

	/*--addItem
	* Adiciona um novo item a um determinado menu ou submenu
	* Retorna verdadeiro ou falso quanto ao sucesso da adição
	* Parametros:
	* 0 - Identicador do menu ou submenu a receber este item (obrigatório)
	* 1 - Texto a ser exibido (obrigatório)
	* 2 - URL a ser chamada (opcional)
	* 3 - Target a ser utilizado quando da existencia do parametro 2 (opcional, padrão _self)
	*/
	addItem = function(){
		var id_menu;
		var nome;
		var url;
		var target;
				
		switch(arguments.length){
			case 2:
				id_menu = arguments[0];
				nome = arguments[1];
				url = "";
				target = "";
			break;
			case 3:
				id_menu = arguments[0];
				nome = arguments[1];
				url = arguments[2];
				target = "_self";
			break;
			case 4:
				id_menu = arguments[0];
				nome = arguments[1];
				url = arguments[2];
				target = arguments[3];
			break;
			default :
				return false;
		}
		
		if(id_menu >= 1000)
		{
			id_menu -= 1000;
			arr_item.push(new Array(nome,url,target,false));
			arr_sub[id_menu-1].push(arr_item.length-1);
		}
		else
		{
			arr_item.push(new Array(nome,url,target,false));
			arr_menu[id_menu].push(arr_item.length-1);
		}
		return true;
	}	

	/*--newSub
	* Cria um novo submenu
	* Retorna um identificador deste submenu
	* 0 - Menu que vai receber este submenu (obrigatório)
	* 1 - Texto a ser exibido (obrigatório)
	* 2 - Largura do submenu
	*/
	newSub = function(){
		if(arguments.length >= 2)
		{	
			arr_sub.push(new Array());
			arr_pSub.push(new Array(String(arguments[2])));
			arr_item.push(new Array(arguments[1],"","",arr_sub.length + 999));	
			arr_menu[arguments[0]].push(arr_item.length-1);
			return arr_sub.length + 1000; // Soma 1000 para identicar como submenu
		}
	}

	/*--create
	* Cria todos os menus
	* Sem retorno
	* Parametros:
	* 00 - Fade (0/1)
	* 01 - Cor da sombra
	* 02 - Tam. da sombra
	* 03 - Altura das células
	* 04 - Cor do menu
	* 05 - Tamanha da borda em pixels
	* 06 - Cor da borda
	* 07 - Cor do texto quando normal
	* 08 - Cor do texto quando selecionado
	* 09 - Nome da fonte do texto
	* 10 - Tamanho da fonte do texto em pixels
	* 11 - Define se o texto deve ser negrito (0/1)
	* 12 - Define se o texto deve ser italico (0/1)
	* 13 - Cor da celula quando selecionada
	*/
	create = function(b_Fade,s_corSombra,n_tamSombra,n_altMenu,s_corMenu,n_bordaMenu,s_corBorda,s_corTextoN,s_corTextoS,s_fonteTexto,n_fonteTexto,b_textoNegrito,b_textoItalico,s_corCelula){
		for(i=0; i < arr_menu.length; i++)
		{
			b_navComp = b_navComp & b_Fade;
			if(b_navComp && b_Fade)
				str = "<div id=\"menu" + i + "\" style=\"visibility: hidden; position:absolute; width:" + arr_pMenu[i][2] + "px; z-index:3; left: " + arr_pMenu[i][0] + "px; top: " + arr_pMenu[i][1] + "px;filter:progid:DXImageTransform.Microsoft.Alpha( Opacity=0, FinishOpacity=0, Style=1, StartX=50,  FinishX=50, StartY=0, FinishY=100) progid:DXImageTransform.Microsoft.Shadow(color='" + s_corSombra + "', Direction=135, Strength=" + n_tamSombra + ")\" onMouseOver=\"javascript:clearTimeout(time_fechar);\" onMouseOut=\"javascript:fechar(" + i + ");\">"; //Com fade
			else
				str = "<div id=\"menu" + i + "\" style=\"visibility: hidden; position:absolute; width:" + arr_pMenu[i][2] + "px; z-index:3; left: " + arr_pMenu[i][0] + "px; top: " + arr_pMenu[i][1] + "px; onMouseOver=\"javascript:clearTimeout(time_fechar);\" onMouseOut=\"javascript:fechar(" + i + ");\">"; // Sem fade
			str += "<table width=" + arr_pMenu[i][2] + " border=0 cellpadding=0 cellspacing=0 id=\"t_menu" + i + "\" style=\"border:"+n_bordaMenu+"px solid "+s_corBorda+"; background-color: "+s_corMenu+";\" onMouseOver=\"javascript:clearTimeout(time_fechar);\">";
			for(j = 0; j < arr_menu[i].length; j++)
			{
				id_menu = arr_menu[i][j];
				if(arr_item[id_menu][3])
					str += "<tr><td height=\""+n_altMenu+"\" onMouseOver=\"javascript:selec(this,'"+s_corCelula+"','"+s_corTextoS+"');showsub("+arr_item[id_menu][3]+","+arr_pMenu[i][0]+","+(arr_pMenu[i][1]+(j*n_altMenu))+","+arr_pMenu[i][2]+")\" style=\"cursor: hand;\"><div align=\"left\" style=\"font-family: "+s_fonteTexto+"; font-size: "+n_fonteTexto+"px; color: "+s_corTextoN+"; text-decoration: none; font-weight: "+((b_textoNegrito)?"bold":"normal")+"; font-style: "+((b_textoItalico)?"italic":"normal")+";\" target=\"" + arr_item[id_menu][2] + "\">&nbsp;" + arr_item[id_menu][0] + "</div></td><td width=10><img src=\"imagens\\seta_1.gif\"></td></tr>"; //Link para sub menu
				else
					str += "<tr><td height=\""+n_altMenu+"\" onMouseOver=\"javascript:selec(this,'"+s_corCelula+"','"+s_corTextoS+"');hidesub();\" onClick=\"javascript:go(this)\" style=\"cursor: hand;\"><div align=\"left\"><a href=\"" + arr_item[id_menu][1] + "\" style=\"font-family: "+s_fonteTexto+"; font-size: "+n_fonteTexto+"px; color: "+s_corTextoN+"; text-decoration: none; font-weight: "+((b_textoNegrito)?"bold":"normal")+"; font-style: "+((b_textoItalico)?"italic":"normal")+";\" target=\"" + arr_item[id_menu][2] + "\">&nbsp;" + arr_item[id_menu][0] + "</a></div></td><td width=0></td></tr>"; //Link normal
			}
			str += "</table></div>";
			document.write(str);
		}
		for(i=0; i < arr_sub.length; i++)
		{
			
			if(b_navComp && b_Fade)
				str = "<div id=\"menu" + (i + 1000) + "\" width=" + arr_pSub[i][0] + " style=\"visibility: hidden; position:absolute; z-index:4; width:" + arr_pSub[i][0] + "px; filter:progid:DXImageTransform.Microsoft.Alpha( Opacity=0, FinishOpacity=0, Style=1, StartX=50,  FinishX=50, StartY=0, FinishY=100) progid:DXImageTransform.Microsoft.Shadow(color='" + s_corSombra + "', Direction=135, Strength=" + n_tamSombra + ")\" onMouseOver=\"javascript:clearTimeout(time_fechar);\" onMouseOut=\"javascript:fecharsub(" + (i + 1000) + ");\">"; //Com fade
			else
				str = "<div id=\"menu" + (i + 1000) + "\" width=" + arr_pSub[i][0] + " style=\"visibility: hidden; position:absolute; z-index:4; width:" + arr_pSub[i][0] + "px;\" onMouseOver=\"javascript:clearTimeout(time_fechar);\" onMouseOut=\"javascript:fecharsub(" + (i + 1000)+ ");\">"; // Sem fade
			str += "<table width=" + arr_pSub[i][0] + " border=0 cellpadding=0 cellspacing=2 id=\"t_menu" + (i + 1000) + "\" style=\"border:"+n_bordaMenu+"px solid "+s_corBorda+"; background-color: "+s_corMenu+";\">";
			for(j = 0; j < arr_sub[i].length; j++)
			{
				id_sub = arr_sub[i][j];
				str += "<tr><td height=\""+n_altMenu+"\" onMouseOver=\"javascript:selec_sub(this,'"+s_corCelula+"','"+s_corTextoS+"')\" onClick=\"javascript:go(this)\" style=\"cursor: hand;\"><div align=\"left\"><a href=\"" + arr_item[id_sub][1] + "\" style=\"font-family: "+s_fonteTexto+"; font-size: "+n_fonteTexto+"px; color: "+s_corTextoN+"; text-decoration: none; font-weight: "+((b_textoNegrito)?"bold":"normal")+"; font-style: "+((b_textoItalico)?"italic":"normal")+";\" target=\"" + arr_item[id_sub][2] + "\">&nbsp;" + arr_item[id_sub][0] + "</a></div></td></tr>"; //Link normal
			}
			str += "</table></div>";
			document.write(str);
		}
		final = true;
	}	
	
	this.newMenu = newMenu;
	this.addItem = addItem;	
	this.newSub = newSub;
	this.create = create;
}



/**********************************************************
***********************************************************
***********************************************************
**********************************************************/

// Selecione o item de menu sob o mouse
function selec(td,cor_celula,cor_texto){
	deselec(item_selec);
	cor_deselec = td.style.backgroundColor;
	if(td.children.tags('DIV')[0].children.tags('A')[0] != undefined)
	{
		cor_deselecT = td.children.tags('DIV')[0].children.tags('A')[0].style.color;
		td.children.tags('DIV')[0].children.tags('A')[0].style.color = cor_texto;
	}
	else
	{
		cor_deselecT = td.children.tags('DIV')[0].style.color;
		td.children.tags('DIV')[0].style.color = cor_texto;	
		//if(td.parentElement.children.tags('TD')[1] != undefined)
		td.parentElement.children.tags('TD')[1].children.tags('IMG')[0].src = "imagens\\seta_2.gif";			
	}
	td.style.backgroundColor = cor_celula;
	//if(td.parentElement.children.tags('TD')[1] != undefined)
	td.parentElement.children.tags('TD')[1].style.backgroundColor = cor_celula;
	item_selec = td;
}

// Selecione o item de menu sob o mouse
function selec_sub(td,cor_celula,cor_texto){
	deselec(item_selec_sub);
	cor_deselec_sub = td.style.backgroundColor;
	if(td.children.tags('DIV')[0].children.tags('A')[0] != undefined)
	{
		cor_deselecT = td.children.tags('DIV')[0].children.tags('A')[0].style.color;
		td.children.tags('DIV')[0].children.tags('A')[0].style.color = cor_texto;
	}
	else
	{
		cor_deselecT = td.children.tags('DIV')[0].style.color;
		td.children.tags('DIV')[0].style.color = cor_texto;	
	}
	td.style.backgroundColor = cor_celula;
	item_selec_sub = td;
}

// Deseleciona o item de menu sob o mouse
function deselec(td){
	if (td!=""){
		td.style.backgroundColor = cor_deselec;
		if(td.parentElement.children.tags('TD')[1] != undefined)
			td.parentElement.children.tags('TD')[1].style.backgroundColor = cor_deselec;
		if(td.children.tags('DIV')[0].children.tags('A')[0] != undefined)		
			td.children.tags('DIV')[0].children.tags('A')[0].style.color = cor_deselecT;
		else
		{
			td.children.tags('DIV')[0].style.color = cor_deselecT;
			if(td.parentElement.children.tags('TD')[1] != undefined)
				td.parentElement.children.tags('TD')[1].children.tags('IMG')[0].src = "imagens\\seta_1.gif";			
		}
	}
}

// Ocultar o menu aberto
function hide(){
	if(final){
			hidesub();
			deselec(item_selec);
			clearTimeout(timeout); // Para de fazer o fade dos menus caso algum não tenha terminado
			if(b_navComp){
				document.all['menu'+atual].filters.item('DXImageTransform.Microsoft.Alpha').opacity = 0; // Zera o valor do fade
				document.all['menu'+atual].filters.item('DXImageTransform.Microsoft.Alpha').finishopacity = 0; // Zera o valor do fade		
				document.all['menu'+atual_sub].filters.item('DXImageTransform.Microsoft.Alpha').opacity = 0; // Zera o valor do fade
				document.all['menu'+atual_sub].filters.item('DXImageTransform.Microsoft.Alpha').finishopacity = 0; // Zera o valor do fade		
			}
			document.all['menu'+atual_sub].style.visibility = 'hidden'; // Oculta o menu, para que as suas ações de onMouse parem de responder
			document.all['menu'+atual].style.visibility = 'hidden'; // Oculta o menu, para que as suas ações de onMouse parem de responder
			atual = 0; // Nenhum menu selecionado atualmente
			atual_sub = 0; // Nenhum menu selecionado atualmente
	}
}

// Ocultar o submenu aberto
function hidesub(){
	if(final){
			deselec(item_selec_sub);
			clearTimeout(timeout_sub); // Para de fazer o fade dos submenus caso algum não tenha terminado
			if(atual_sub != 0){
				if(b_navComp){
					document.all['menu'+atual_sub].filters.item('DXImageTransform.Microsoft.Alpha').opacity = 0; // Zera o valor do fade
					document.all['menu'+atual_sub].filters.item('DXImageTransform.Microsoft.Alpha').finishopacity = 0; // Zera o valor do fade		
				}
				document.all['menu'+atual_sub].style.visibility = 'hidden'; // Oculta o menu, para que as suas ações de onMouse parem de responder
			}
			atual_sub = 0; // Nenhum menu selecionado atualmente
	}
}

// Inicia o fade com a primeira metade do menu (abre)
function fade_inic(obj){
	document.all[obj].filters.item('DXImageTransform.Microsoft.Alpha').opacity += incremento; //Incrementa o fade
	if(document.all[obj].filters.item('DXImageTransform.Microsoft.Alpha').opacity >= 100){
		clearTimeout(timeout); // Para o loop
		timeout = setTimeout("fade_fim('"+obj+"')", tempo_fade); // Chama a  função para o fade da segunda metade
	}else{
		timeout = setTimeout("fade_inic('"+obj+"')", tempo_fade); // Loop	
	}
}

// Inicia o fade com a segunda metade do menu (abre)
function fade_fim(obj){
	document.all[obj].filters.item('DXImageTransform.Microsoft.Alpha').finishopacity += incremento;
	if(document.all[obj].filters.item('DXImageTransform.Microsoft.Alpha').finishopacity < 100){
		timeout = setTimeout("fade_fim('"+obj+"')", tempo_fade);	
	}else{
		clearTimeout(timeout);
	}
}

// Inicia o fade de fechar com a primeira metade do menu (fecha)
function fechar_inic(obj,sub){
	if(!sub)
		hidesub();
	document.all[obj].filters.item('DXImageTransform.Microsoft.Alpha').opacity -= incremento;
	if(document.all[obj].filters.item('DXImageTransform.Microsoft.Alpha').opacity <= 0){
		clearTimeout(timeout);
		timeout = setTimeout("fechar_fim('"+obj+"',"+sub+")", tempo_fade);		
	}else{
		timeout = setTimeout("fechar_inic('"+obj+"',"+sub+")", tempo_fade);	
	}
}

// Inicia o fade de fechar com a segunda metade do menu (fecha)
function fechar_fim(obj,sub){
	document.all[obj].filters.item('DXImageTransform.Microsoft.Alpha').finishopacity -= incremento;
	if(document.all[obj].filters.item('DXImageTransform.Microsoft.Alpha').finishopacity > 0){
		timeout = setTimeout("fechar_fim('"+obj+"',"+sub+")", tempo_fade);	
	}else{
		clearTimeout(timeout);
		document.all[obj].style.visibility = 'hidden';
		deselec(item_selec);
		if(sub){
			fechar_inic("menu"+atual,false);
		}
	}
}

//Exibe um determinado menu
function show(i){
	clearTimeout(time_fechar);
	if(final && document.all['menu'+i].style.visibility != 'visible'){
		hide(); // Oculta o menu atual
		atual = i; // Seta o menu atual
		document.all['menu'+i].style.visibility = 'visible'; // Seta o menu como visible, mas ele não será exibido ainda
		if(b_navComp)
			fade_inic('menu'+i); // Inicia o fade para exibir o menu
	}
}

//Exibe um determinado submenu
function showsub(i,x,y,w){
	clearTimeout(time_fechar);
	if(final && document.all['menu'+i].style.visibility != 'visible'){
		hidesub(); // Oculta o menu atual
		atual_sub = i; // Seta o menu atual
		if(document.body.offsetWidth > x + w + Number(document.all['menu'+i].width))
			document.all['menu'+i].style.left = x + w - 3;
		else
			document.all['menu'+i].style.left = x - document.all['menu'+i].width + 3;		
		document.all['menu'+i].style.top = y;	
		document.all['menu'+i].style.visibility = 'visible'; // Seta o menu como visible, mas ele não será exibido ainda
		if(b_navComp)
			fade_inic('menu'+i); // Inicia o fade para exibir o menu
	}
}

//Fecha um determinado menu
function fechar(i){
	if(final){
		if(b_navComp)
			time_fechar = setTimeout("fechar_inic('menu"+i+"',false)",tempo_fechar); // Aguarde o tempo determinado em 'tempo_fechar' antes de fechar o menu
		else
			time_fechar = setTimeout("hide()",tempo_fechar); // Aguarde o tempo determinado em 'tempo_fechar' antes de fechar o menu
	}
}

//Fecha um determinado submenu
function fecharsub(i){
	if(final){
		if(b_navComp)
			time_fechar = setTimeout("fechar_inic('menu"+i+"',true)",tempo_fechar); // Aguarde o tempo determinado em 'tempo_fechar' antes de fechar o menu
		else
			time_fechar = setTimeout("hidesub()",tempo_fechar); // Aguarde o tempo determinado em 'tempo_fechar' antes de fechar o menu
	}
}

function go(src)
{
	if(event.srcElement.tagName=='TD' || event.srcElement.tagName=='DIV'){
		src.children.tags('DIV')[0].children.tags('A')[0].click();
		hide();
	}
}


