window.defaultStatus = 'Senar Minas';
/*
@COMPONENTE_NOME 		"funcoes_gerais.js"
@COMPONENTE_DESCRICAO 	"Arquivo que contém funções em JavaScript para serem utilizadas em todo o Portal xDR"
@COMPONENTE_TIPO 		"JavaScript"
@COMPONENTE_AUTOR 		"Thiago Toledo"
@COMPONENTE_CRIACAO		29/03/2005
@COMPONENTE_EMPRESA 	"HTP"
*/

function RetornaData( Data ){
	if (showModalDialog){
		if(Data.disabled == false){
			var sRtn;
			sRtn = showModalDialog(Url_XDR + "funcionalidades/calendario.html","","center=yes;status=no;dialogWidth=310px;dialogHeight=240px");
			if (sRtn == "undefined"){
				alert("Data indefinida.");
				Data.focus();
				Data.value = ""
			}
			else{
				if (sRtn.length == 9){
					Data.value = '0' + sRtn
				}
				else{
					Data.value = sRtn
				}
			}
		}
	}
	else{
		alert("Internet Explorer 4.0 or later is required.")
	}
}

/*-----------------------------------------------------------------------------------------
@METODO_NOME 			"padraoExportar"
@METODO_DESCRICAO 		"Método jscript que abre uma janela com uma página parametro"
@METODO_AUTOR 			"Hélio Ribeiro Neto"
@METODO_CRIACAO 		14/04/2005	
@PARAMETRO_NOME 		""
@PARAMETRO_DESCRICAO	""
------------------------------------------------------------------------------------------*/    

function padraoExportar()
{
	window.open(Url_ROOT + 'xdr/funcionalidades/padrao_exportacao.asp', 'Dados_do_Filtro', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,,width=650,height=300,left = 170,top = 200');
}

/*-----------------------------------------------------------------------------------------
@METODO_NOME 			"limpaCombo"
@METODO_DESCRICAO 		"Limpa os demais elementos de um combo deixando apenas o registro previamente selecionado"
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		09/03/2005
@PARAMETRO_NOME			"obj"
@PARAMETRO_DESCRICAO	"um elemento select (html)"
@RETORNO_DESCRICAO		""	
------------------------------------------------------------------------------------------*/

function limpaCombo ( obj ){

	tamLimpaCombo = obj.options.length;
	selecionado   = obj.options[ obj.selectedIndex ];
	obj.clearAttributes();
	for(indLimpaCombo = 0; indLimpaCombo < tamLimpaCombo; indLimpaCombo++)
		obj.remove(0);
	obj.options.add( selecionado );
}

/*-----------------------------------------------------------------------------------------
@METODO_NOME 			"isIn"
@METODO_DESCRICAO 		"Verifica se existe um valor dentro de um grupo de outros valores separados por vígula"
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		09/03/2005
@PARAMETRO_NOME			"vlr1"
@PARAMETRO_DESCRICAO	"valor a ser achado"
@PARAMETRO_NOME			"vlr2"
@PARAMETRO_DESCRICAO	"grupo de valores separados por vírgula"
@RETORNO_DESCRICAO		"boleano"	
------------------------------------------------------------------------------------------*/

function isIn(vlr1, vlr2){
	try{
		var aVlrs = vlr2.split(",");
		for(indexIsIn = 0; indexIsIn < aVlrs.length; indexIsIn ++){
			if(aVlrs[indexIsIn] == vlr1){
				return true;
			}
		}
	}
	catch(e){
		return false;
	}
	return false;
}

/*-----------------------------------------------------------------------------------------
@METODO_NOME 			"dateMask"
@METODO_DESCRICAO 		"Função para mascarar uma data a medida que o usuário digita."
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		10/03/2005	
@PARAMETRO_NOME 		"obj"
@PARAMETRO_DESCRICAO	"Text da Data que será validada."
@PARAMETRO_NOME 		"allowNull"
@PARAMETRO_DESCRICAO	"Em qual formato a data que será validada. 0 (dd/mm/yyyy), 1 (mm/dd/yyyy)"
@RETORNO_DESCRICAO		"Retorna um 'Boolean' se a Data passada é válida ou não."
------------------------------------------------------------------------------------------*/

function dateMask(obj){
	if(obj.value.length == 2 || obj.value.length == 5){
		obj.value = obj.value + "/";
	}
}


/*
@METODO_NOME 			"sendToClipboard"
@METODO_DESCRICAO 		"Função que envia para a 'área de transferência' (clipboard) o texto
						passado por parâmetro."
@METODO_AUTOR 			"Thiago Toledo/Hélio Ribeiro Neto"
@METODO_CRIACAO 		20/04/2005
@PARAMETRO_NOME 		"texto"
@PARAMETRO_DESCRICAO 	"texto qualquer as ser enviado para o clipboard"
*/

function sendToClipboard( texto ){
	if( window.clipboardData && window.clipboardData.setData ){
		window.clipboardData.setData('Text', texto);
	}else{
		alert("Internet Explorer required");
	}
}

/*
'@METODO_NOME 			"setValidate"
'@METODO_DESCRICAO 		"Inverte os valores do validate presente no objeto passado como parametro"
'@METODO_AUTOR 			"Thiago Toledo/Hélio Ribeiro Neto"
'@METODO_CRIACAO 		20/04/2005
'@PARAMETRO_NOME 		"obj"
'@PARAMETRO_DESCRICAO 	"Objeto qualquer"
'@PARAMETRO_NOME 		"valor"
'@PARAMETRO_DESCRICAO 	"booleano"
*/
function setValidate (obj,valor){
	if (obj.attributes != null){
		if (obj.getAttribute("validate") != null) { //se a tag tiver o atributo validate
			obj.setAttribute("validate", valor);
		}
	}
}

/*
'@METODO_NOME 			"escondeCampoPorPermissao"
'@METODO_DESCRICAO 		"Esconde os campos passados pelo parametro que conterem o atributo permissao igual a variavel permissao passada por parametro"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		29/04/2005
'@PARAMETRO_NOME 		"objField"
'@PARAMETRO_DESCRICAO 	"Colecao de objetos HTML"
'@PARAMETRO_NOME 		"permissao"
'@PARAMETRO_DESCRICAO 	"permissao dos objetos que devem ser escondidos"
'@RETORNO_DESCRICAO 	"void"
*/
function escondeCampoPorPermissao( objField, permissao){	

	for(var indexPermissao = 0; indexPermissao < objField.length;  indexPermissao++ )
	{
		try{
			if(isIn(permissao, objField[indexPermissao].permissao)){
				objField[indexPermissao].style.display = 'none';
				setValidate(camposSelect[i],false);
			}
		}catch(e){}
	}
}




/*
'@METODO_NOME 			"escondeCamposPorPermissao"
'@METODO_DESCRICAO 		"Esconde os campos do formulario que possuem a permissao igual a variavel permissao passada por parametro"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		29/04/2005
'@PARAMETRO_NOME 		"permissao"
'@PARAMETRO_DESCRICAO 	"permissao dos objetos que devem ser escondidos"
'@RETORNO_DESCRICAO 	"void"
*/
function escondeCamposPorPermissao(permissao){	
	obj = document.getElementsByTagName("FORM");
	
	var objField = obj[0].getElementsByTagName("SPAN");
	escondeCampoPorPermissao(objField, permissao);
	
	var camposInput = obj[0].getElementsByTagName("INPUT");
	for(i = 0; i< camposInput.length; i++)
	{
		try{
			if(isIn(permissao, camposInput[i].permissao)){
				setValidate(camposInput[i],false);
				if (camposInput[i].type == "button"){
					camposInput[i].style.display = 'none';
				}	
				else{
					camposInput[i].style.display = 'none';
					setValidate(camposInput[i],false);
					if(camposInput[i].vType == 'date'){
						try{
							camposInput[i].nextSibling.nextSibling.style.display = 'none';
						}catch(e){}
					}
				}	
			}
		}catch(e){}
	}

	var camposSelect = obj[0].getElementsByTagName("select");
	escondeCampoPorPermissao(camposSelect, permissao);

	var camposTextArea = obj[0].getElementsByTagName("textarea");
	escondeCampoPorPermissao(camposTextArea, permissao);
}

/*
'@METODO_NOME 			"mostraCampoPorPermissao"
'@METODO_DESCRICAO 		"Mostra os campos passados pelo parametro que conterem o atributo permissao igual a variavel permissao passada por parametro"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		16/06/2005
'@PARAMETRO_NOME 		"objField"
'@PARAMETRO_DESCRICAO 	"Colecao de objetos HTML"
'@PARAMETRO_NOME 		"permissao"
'@PARAMETRO_DESCRICAO 	"permissao dos objetos que devem ser mostrados"
'@RETORNO_DESCRICAO 	"void"
*/
function mostraCampoPorPermissao( objField, permissao){	
	for(var indexPermissao = 0; indexPermissao < objField.length;  indexPermissao++ )
	{
		try{
			if(isIn(permissao, objField[indexPermissao].permissao)){
				objField[indexPermissao].style.display = 'block';
				setValidate(camposSelect[i],false);
			}
		}catch(e){}
	}
}

/*
'@METODO_NOME 			"mostraCamposPorPermissao"
'@METODO_DESCRICAO 		"Mostra os campos do formulario que possuem a permissao igual a variavel permissao passada por parametro"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		16/06/2005
'@PARAMETRO_NOME 		"permissao"
'@PARAMETRO_DESCRICAO 	"permissao dos objetos que devem ser escondidos"
'@RETORNO_DESCRICAO 	"void"
*/
function mostraCamposPorPermissao(permissao){
	
	obj = document.getElementsByTagName("FORM");
	
	var objField = obj[0].getElementsByTagName("SPAN");
	mostraCampoPorPermissao(objField, permissao);
	
	var camposInput = obj[0].getElementsByTagName("INPUT");
	for(i = 0; i< camposInput.length; i++)
	{
		try{
			if(isIn(permissao, camposInput[i].permissao)){
				setValidate(camposInput[i],false);
				if (camposInput[i].type == "button"){
					camposInput[i].style.display = 'block';
				}	
				else{
					camposInput[i].style.display = 'block';
					setValidate(camposInput[i],false);
					if(camposInput[i].vType == 'date'){
						try{
							camposInput[i].nextSibling.nextSibling.style.display = 'block';
						}catch(e){}
					}
				}	
			}
		}catch(e){}
	}

	var camposSelect = obj[0].getElementsByTagName("select");
	mostraCampoPorPermissao(camposSelect, permissao);

	var camposTextArea = obj[0].getElementsByTagName("textarea");
	mostraCampoPorPermissao(camposTextArea, permissao);
	
	//var camposTextArea = obj[0].getElementsByTagName("");
	//mostraCampoPorPermissao(camposTextArea, permissao);
	
}


/*-----------------------------------------------------------------------------------------
@METODO_NOME 			"travaCamposPorPermissao"
@METODO_DESCRICAO 		"Trava os campos com determinada permissão (para isso colocamos  
						dentro da tag em questão a string permissao="x" , 
						onde x é o valor que identifica a permissão. ex.: permissao ="1" "
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		09/03/2005
@PARAMETRO_NOME			"permissao"
@PARAMETRO_DESCRICAO	"string qualquer referente a uma permissao"
@RETORNO_DESCRICAO		""	
------------------------------------------------------------------------------------------*/

function travaCamposPorPermissao( permissao ){
	travaCamposDoObjetoPorPermissao( document.getElementsByTagName("FORM")[0], permissao )
}

/*-----------------------------------------------------------------------------------------
@METODO_NOME 			"travaCamposDoObjetoPorPermissao"
@METODO_DESCRICAO 		"Trava os campos incluidos em um objeto html com determinada permissão (para isso colocamos  
						dentro da tag em questão a string permissao="x" , 
						onde x é o valor que identifica a permissão. ex.: permissao ="1" "
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		09/03/2005
@PARAMETRO_NOME			"permissao"
@PARAMETRO_DESCRICAO	"string qualquer referente a uma permissao"
@RETORNO_DESCRICAO		""	
------------------------------------------------------------------------------------------*/
function travaCamposDoObjetoPorPermissao( obj, permissao ){
	var camposInput = obj.getElementsByTagName("INPUT");
	for(var i = 0; i< camposInput.length; i++)
	{
		try{
			if(isIn(permissao, camposInput[i].permissao)){
			
				if (camposInput[i].type == "button")
				{
					camposInput[i].disabled = true;
					setValidate(camposInput[i],false);
				}	
				else
				{
					camposInput[i].disabled = true;					
					camposInput[i].readOnly = true;
					setValidate(camposInput[i],false);
					
					if(camposInput[i].vType == 'date')
					{
						camposInput[i].nextSibling.nextSibling.style.display = 'none';
											
					}
				}	
			}
		}catch(e){}
	}

	var camposSelect = obj.getElementsByTagName("select");
	tamCombo = camposSelect.length;
	for(i = 0; i < tamCombo; i++)
	{
		try{
			if(isIn(permissao, camposSelect[i].permissao)){
				camposSelect[i].disabled = true;
				setValidate(camposSelect[i],false);
					
			}
		}catch(e){}
	}

	var camposTextArea = obj.getElementsByTagName("textarea");
	for(i = 0; i< camposTextArea.length; i++)
	{
		try{
			if(isIn(permissao, camposTextArea[i].permissao)){
				camposTextArea[i].readOnly = true;
				setValidate(camposTextArea[i],false);
			}
		}catch(e){}
	}
	
	var camposSpan = obj.getElementsByTagName("SPAN");
	for(i = 0; i< camposSpan.length; i++)
	{
		try{
			if(isIn(permissao, camposSpan[i].permissao)){
				lockNodes( camposSpan[i] );
			}
		}catch(e){}
	}
}

function lockNodes( node ){
	try{
		if( node.attributes != null){
			node.disabled = true;
		}
		setValidate(node, false);
		for(var indLockNode = 0; indLockNode < node.childNodes.length; indLockNode ++){
			lockNodes( node.childNodes.item( indLockNode ) );
		}
	}catch(e){}
}



/*-----------------------------------------------------------------------------------------
@METODO_NOME 			"liberaCamposPorPermissao"
@METODO_DESCRICAO 		"Libera os campos travados pela função travaCamposPorPemissao
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		06/04/2005
@PARAMETRO_NOME			"permissao"
@PARAMETRO_DESCRICAO	"string qualquer referente a uma permissao"
@RETORNO_DESCRICAO		""	
------------------------------------------------------------------------------------------*/

function liberaCamposPorPermissao( permissao ){
	liberaCamposDoObjetoPorPermissao( document.getElementsByTagName("FORM")[0], permissao );
}

/*-----------------------------------------------------------------------------------------
@METODO_NOME 			"liberaCamposDoObjetoPorPermissao"
@METODO_DESCRICAO 		"Libera os campos de um objeto, travados pela função travaCamposPorPemissao ou travaCamposDoObjetoPorPemissao
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		06/04/2005
@PARAMETRO_NOME			"permissao"
@PARAMETRO_DESCRICAO	"string qualquer referente a uma permissao"
@RETORNO_DESCRICAO		""	
------------------------------------------------------------------------------------------*/

function liberaCamposDoObjetoPorPermissao( obj, permissao ){
		
	var camposInput = obj.getElementsByTagName("INPUT");
	for(i = 0; i< camposInput.length; i++)
	{
		try{
			if(isIn(permissao, camposInput[i].permissao)){
			
				if (camposInput[i].type == "button")
				{
					camposInput[i].disabled = false;
					setValidate(camposInput[i],true);
					
				}	
				else
				{
					camposInput[i].readOnly = false;
					camposInput[i].disabled = false;
					
					setValidate(camposInput[i],true);
					
					if(camposInput[i].vType == 'date')
					{
						camposInput[i].nextSibling.nextSibling.style.display = 'none';
					}
				}	
			}
		}catch(e){}
	}

	var camposSelect = obj.getElementsByTagName("select");
	tamCombo = camposSelect.length;
	for(i = 0; i < tamCombo; i++)
	{
		try{
			if(isIn(permissao, camposSelect[i].permissao)){
				camposSelect[i].disabled = false;
				setValidate(camposSelect[i],true);
			}
		}catch(e){}
	}

	var camposTextArea = obj.getElementsByTagName("textarea");
	for(i = 0; i< camposTextArea.length; i++)
	{
		try{
			if(isIn(permissao, camposTextArea[i].permissao)){
				camposTextArea[i].readOnly = false;
				setValidate(camposTextArea[i],true);				
			}
		}catch(e){}
	}

	var camposSpan = obj.getElementsByTagName("SPAN");
	for(i = 0; i< camposSpan.length; i++)
	{
		try{
			if(isIn(permissao, camposSpan[i].permissao)){
				unlockNodes( camposSpan[i] );
			}
		}catch(e){}
	}
}

function unlockNodes(node){
	try{
		if( node.attributes != null){
			node.disabled = false;
		}
		setValidate(node, true);
		for(var indLockNode = 0; indLockNode < node.childNodes.length; indLockNode ++){
			unlockNodes( node.childNodes.item( indLockNode ) );
		}
	}catch(e){}

}
/*
'@METODO_NOME 			"confirma"
'@METODO_DESCRICAO 		"Função que mostra uma mensagem de confirmação (similar ao 'confirm' do JavaScript)."
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		30/03/2005
'@PARAMETRO_NOME 		"codigo"
'@PARAMETRO_DESCRICAO 	"Código da mensagem a ser recuperada do arquivo XML de mensagens."
*/
function confirma(codigo){
	var retorno = false;
	retorno = window.showModalDialog(Url_XDR + 'msg_sistema/mensagem_confirma.asp?codigo=' + codigo,'','help:no; status:no; dialogHeight:150px; dialogWidth:300px;help:no');
	return retorno;
}

/*
'@METODO_NOME 			"confirmaCustom"
'@METODO_DESCRICAO 		"Função que mostra uma mensagem de confirmação (similar ao 'confirm' do JavaScript), porém, de forma customizada."
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		29/03/2005
'@PARAMETRO_NOME 		"codigo"
'@PARAMETRO_DESCRICAO 	"Código da mensagem a ser recuperada do arquivo XML de mensagens."
'@PARAMETRO_NOME 		"width"
'@PARAMETRO_DESCRICAO 	"Largura da janela."
'@PARAMETRO_NOME 		"height"
'@PARAMETRO_DESCRICAO 	"Altura da janela."
*/

function confirmaCustom(codigo, width, height){
	var retorno = false;
	var retorno = window.showModalDialog(Url_ROOT + 'xdr/msg_sistema/mensagem_confirma.asp?codigo=' + codigo,'','help:no; status:no; dialogHeight:'+ height + 'px;dialogWidth:' + width + 'px');
	return retorno;	
}

/*
'@METODO_NOME 			"alerta"
'@METODO_DESCRICAO 		"Função que mostra uma mensagem de alerta (similar ao 'alert' do JavaScript)."
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		29/03/2005
'@PARAMETRO_NOME 		"codigo"
'@PARAMETRO_DESCRICAO 	"Código da mensagem a ser recuperada do arquivo XML de mensagens."
*/
function alerta(codigo){
	//var retorno = window.showModalDialog(Url_ROOT + 'xdr/msg_sistema/mensagem_alerta.asp?codigo=' + codigo,'','help:no; status:no; dialogHeight:150px; dialogWidth:300px');
}

/*
'@METODO_NOME 			"alertaLabel"
'@METODO_DESCRICAO 		"Função que mostra uma mensagem de alerta (similar ao 'alert' do JavaScript)."
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		29/03/2005
'@PARAMETRO_NOME 		"mensagem"
'@PARAMETRO_DESCRICAO 	"Mensagem a ser exibida"
*/
function alertaLabel( mensagem ){
	//var retorno = window.showModalDialog(Url_ROOT + 'xdr/msg_sistema/mensagem_alerta_txt.asp', mensagem, 'help:no; status:no; dialogHeight:150px; dialogWidth:300px');
	alert(mensagem);
}

/*
'@METODO_NOME 			"confimaLabel"
'@METODO_DESCRICAO 		"Função que mostra uma mensagem de confimação (similar ao 'confirm' do JavaScript)."
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		08/06/2005
'@PARAMETRO_NOME 		"mensagem"
'@PARAMETRO_DESCRICAO 	"Mensagem a ser exibida"
*/
function confimaLabel( mensagem ){
	return(confirm(mensagem));
}


/*
'@METODO_NOME 			"alertaCustom"
'@METODO_DESCRICAO 		"Função que mostra uma mensagem de alerta (similar ao 'alert' do JavaScript), porém, de forma customizada."
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		29/03/2005
'@PARAMETRO_NOME 		"codigo"
'@PARAMETRO_DESCRICAO 	"Código da mensagem a ser recuperada do arquivo XML de mensagens."
'@PARAMETRO_NOME 		"width"
'@PARAMETRO_DESCRICAO 	"Largura da janela."
'@PARAMETRO_NOME 		"height"
'@PARAMETRO_DESCRICAO 	"Altura da janela."
*/
function alertaCustom(codigo, width, height){
	var retorno = window.showModalDialog(Url_ROOT + 'xdr/msg_sistema/mensagem_pop.asp?codigo=' + codigo,'','help:no; status:no; dialogHeight:'+ height + 'px;dialogWidth:' + width + 'px');
}

/*
'@METODO_NOME 			"recuperaMensagemXML"
'@METODO_DESCRICAO 		"Função que retorna o nó da mensagem do arquivo xml mensagens.xml"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		30/03/2005
'@PARAMETRO_NOME 		"codigo"
'@PARAMETRO_DESCRICAO 	"Código da mensagem a ser recuperada do arquivo XML de mensagens."
*/
function recuperaMensagemXML( codigo ){
	try{
		if(codigo == null || codigo == "" ){ codigo = '00000'; }
		var objDoc = new window.ActiveXObject("Microsoft.XMLDOM");
		objDoc.async = false;
		objDoc.load(Url_ROOT + "xdr/msg_sistema/mensagens.xml");
		var rootDoc = objDoc.documentElement;
		var selectedNodes = rootDoc.selectNodes(sistemaSession + "/msg");

		var msgNode = getNodeByAttribute(selectedNodes, "codigo", codigo);
		if(msgNode == null){ msgNode = getNodeByAttribute(selectedNodes, "codigo", '00000'); }
		return msgNode;
	}catch(e){
		var objXML = new window.ActiveXObject("Microsoft.XMLDOM");
		objXML.async = false;
		var stringErroXML = '<msg codigo="00000" tipo="erro"><![CDATA[ERRO não especificado.]]></msg>';
		objXML.loadXML( stringErroXML );
		return objXML.documentElement;
	}
}

/*
'@METODO_NOME 			"recuperaMensagemXMLporNo"
'@METODO_DESCRICAO 		"Função que retorna o nó, a partir de um nó informado por parametro, da mensagem do arquivo xml mensagens.xml."
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		03/04/2005
'@PARAMETRO_NOME 		"codigo"
'@PARAMETRO_DESCRICAO 	"Código da mensagem a ser recuperada do arquivo XML de mensagens."
'@PARAMETRO_NOME 		"node"
'@PARAMETRO_DESCRICAO 	"Nome do nó de onde irá ser realizada a busca"
*/
function recuperaMensagemXMLporNo( codigo, node ){
	try{
		
		if( codigo == null || codigo == "" ){ codigo = '00000'; }
		if( node == null || node == "" ){ node = 'xdr'; }
		var objDoc = new window.ActiveXObject("Microsoft.XMLDOM");
		objDoc.async = false;
		objDoc.load( Url_ROOT + "xdr/msg_sistema/mensagens.xml" );
		
		var rootDoc = objDoc.documentElement;

		var selectedNodes = rootDoc.selectNodes(node + "/msg");
		var msgNode = getNodeByAttribute(selectedNodes, "codigo", codigo);
		if(msgNode == null){ msgNode = getNodeByAttribute(selectedNodes, "codigo", '00000'); }
		return msgNode;
	}catch(e){
		var objXML = new window.ActiveXObject("Microsoft.XMLDOM");
		objXML.async = false;
		var stringErroXML = '<msg codigo="00000" tipo="informacao"><![CDATA[ERRO não especificado.]]></msg>';
		objXML.loadXML( stringErroXML );
		return objXML;
	}
}

/*
'@METODO_NOME 			"recuperaTextoMensagemXML"
'@METODO_DESCRICAO 		"Função que retorna o texto da mensagem armazenada no xml mensagens.xml"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		30/03/2005
'@PARAMETRO_NOME 		"codigo"
'@PARAMETRO_DESCRICAO 	"Código da mensagem a ser recuperada do arquivo XML de mensagens."
*/
function recuperaTextoMensagemXML( codigo, node ){
	try{
		var textoXML = recuperaMensagemXMLporNo( codigo, node );
		return textoXML.text;
	}catch(e){
		return null;
	}
}

/*
'@METODO_NOME 			"getNodeByAttribute"
'@METODO_DESCRICAO 		"Função que retorna o nó de um documento XML passado por parametro de acordo com o filtro passado também por parametro"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		30/03/2005
'@PARAMETRO_NOME 		"xmlDoc"
'@PARAMETRO_DESCRICAO 	"Documento XML no qual sera realizado a pesquisa."
'@PARAMETRO_NOME 		"attribute"
'@PARAMETRO_DESCRICAO 	"Atributo que sera utilizado como referencia para pesquisa."
'@PARAMETRO_NOME 		"searchedValue"
'@PARAMETRO_DESCRICAO 	"Valor a ser comparado para localizar o nó desejado."
*/
function getNodeByAttribute(xmlDoc, attribute, searchedValue){
	try{
		for(var indexNode = 0; indexNode < xmlDoc.length; indexNode ++){
			if( xmlDoc[indexNode].getAttribute(attribute) == searchedValue){
				return xmlDoc[indexNode];
			}
		}
	}catch(e){
		return null;
	}
}

/*
'@METODO_NOME 			"showHide"
'@METODO_DESCRICAO 		"Esconde ou mostra um elemento HTML"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		30/03/2005
'@PARAMETRO_NOME 		"idObj"
'@PARAMETRO_DESCRICAO 	"ID do elemento a ser mostrado/escondido"
*/
function showHide( idObj ){
	var obj = document.getElementById(idObj);
	if(obj.style.display == 'none'){
		obj.style.display = 'block';
	}else{
		obj.style.display = 'none';
	}
}

/*
'@METODO_NOME 			"request"
'@METODO_DESCRICAO 		"Função que recupera via JavaScript de um determinado parâmetro recebido pela página."
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		29/03/2005
'@PARAMETRO_NOME 		"nome"
'@PARAMETRO_DESCRICAO 	"Nome do Parâmetro."
*/
function request( name ){
	str = location.search;
	if (str.search( name ) != 0){
		pos = (str.search( name ) + name.length + 1);
		str = str.substr(pos);
		if(str.search('&') == -1){
			pos2 = str.length;
		}else{
			pos2 = (str.search('&'));
		}
		str = str.substr(0, pos2);
		return str
	}else{
		return ''
	}
}

/*
'@METODO_NOME 			"String.trim"
'@METODO_DESCRICAO 		"Retira os espaços antes e depois da string"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		31/03/2005
*/
String.prototype.trim = function()
{
    // Use a regular expression to replace leading and trailing 
    // spaces with the empty string
    return this.replace(/(^\s*)|(\s*$)/g, "");
}


/*
'@METODO_NOME 			"adicionaOption"
'@METODO_DESCRICAO 		"Função para carregar um elemento OPTION de um SELEC (html)."
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		05/04/2005
'@PARAMETRO_NOME 		"obj"
'@PARAMETRO_DESCRICAO 	"elemento SELECT onde sera inserido a OPTION"
'@PARAMETRO_NOME 		"valor"
'@PARAMETRO_DESCRICAO 	"Value do OPTION"
'@PARAMETRO_NOME 		"titulo"
'@PARAMETRO_DESCRICAO 	"Titulo do OPTION"
*/
function adicionaOption(obj, valor, titulo){
	var oOption = document.createElement("OPTION");
	obj.options.add(oOption);
	oOption.innerText = titulo;
	oOption.value = valor;
}

/*
'@METODO_NOME 			"limpaCombo"
'@METODO_DESCRICAO 		"Função para remover todos os itens de um SELECT (html)"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		05/04/2005
'@PARAMETRO_NOME 		"obj"
'@PARAMETRO_DESCRICAO 	"elemento SELECT que será 'limpo'"
*/
function limpaCombo(obj){
	while(obj.length > 0){
		obj.options.remove(0);
	}
}


/*
'@METODO_NOME 			"verificaStatusCheckBox"
'@METODO_DESCRICAO 		""
'@METODO_AUTOR 			""
'@METODO_CRIACAO 		
'@PARAMETRO_NOME 		""
'@PARAMETRO_DESCRICAO 	""
*/
function verificaStatusCheckBox(obj){
	return (obj.checked);
}

/*
'@METODO_NOME 			"paginacaoGeral"
'@METODO_DESCRICAO 		"Dá o submit no form"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		10/05/2005
'@PARAMETRO_NOME 		"objPaginar"
'@PARAMETRO_DESCRICAO 	"Form a ser execurado o submit"
'@PARAMETRO_NOME 		"intPaginaCorrente"
'@PARAMETRO_DESCRICAO 	"Recebe a pagina a ser aberta."
*/
function paginacaoGeral(objPaginar, intPaginaCorrente){			
	objPaginar.action = '?paginaCorrente=' + intPaginaCorrente;
	objPaginar.submit();	
}

function paginacaoIrPara( oForm , intTotalPaginas ){
	if ( oForm["txtPagina"].length > 1){
		intPaginaCorrente = oForm["txtPagina"][1].value;
	}else{
		intPaginaCorrente = oForm["txtPagina"].value;
	}
	oForm.action = '?paginaCorrente=' + intPaginaCorrente;
	
	oForm.submit();	
	//-- Verifica se a página é válida.
	/*
	if ((intPaginaCorrente <= intTotalPaginas) && (intPaginaCorrente != "")) {
		oForm.submit();	
	};
	*/
}


/*=======================================================================
@METODO_NOME 			"testaNumero"
@METODO_DESCRICAO 		"Função que efetua a validação dos dados de entrada no campo. Somente Números [0-9]."
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		30/12/2004
@PARAMETRO_NOME 		"val"
@PARAMETRO_DESCRICAO	"Parâmetro que recebe o valor da tecla para ser avaliado."
=========================================================================*/
function testaNumero(val){
	return /[0-9]/.test(val); //-- Valida somente números. Expressão regular [0-9].
}
	
function tratarTecla(){
	var ch;
		
	ch = String.fromCharCode(event.keyCode);
		
	if (!testaNumero(ch)) event.returnValue = false;
}

/*
'@METODO_NOME 			"transferSelected"
'@METODO_DESCRICAO 		"Transfere os itens selecionados de uma combo para outra"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		13/05/2005
'@PARAMETRO_NOME 		"idSrc"
'@PARAMETRO_DESCRICAO 	"id da combo de origem"
'@PARAMETRO_NOME 		"idDst"
'@PARAMETRO_DESCRICAO 	"Id da combo de destino"
*/
function transferSelected(idSrc, idDst){
	var cboSrc	= document.getElementById( idSrc );
	var cboDst	= document.getElementById( idDst );
	var arSrcSel = new Array();
	var indArScrSel = 0;				
	for( var indSrc = 0; indSrc < cboSrc.length; indSrc ++ ){
		if( cboSrc.options[indSrc].selected ){
			arSrcSel[ indArScrSel ] = cboSrc.options[indSrc];
			indArScrSel ++;
		}
	}
	
	for(indArScrSel = 0; indArScrSel < arSrcSel.length; indArScrSel++){
		var oOption = document.createElement("OPTION");
		cboDst.options.add(oOption);
		oOption.innerText = arSrcSel[ indArScrSel ].innerText;
		oOption.value = arSrcSel[indArScrSel].value;
	}	
	removeSelected( cboSrc );
	sortCombo( cboDst );
}

/*
'@METODO_NOME 			"removeSelected"
'@METODO_DESCRICAO 		"Remove os itens selecionados de uma combo"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		13/05/2005
'@PARAMETRO_NOME 		"cbo"
'@PARAMETRO_DESCRICAO 	"Combo"
*/
function removeSelected( cbo ){
	while( cbo.selectedIndex != -1){
		cbo.options.remove( cbo.selectedIndex );
	}
}

/*
'@METODO_NOME 			"sortCombo"
'@METODO_DESCRICAO 		"Ordena a combo"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		13/05/2005
'@PARAMETRO_NOME 		"cboToSort"
'@PARAMETRO_DESCRICAO 	"Combo"
*/
function sortCombo( cboToSort ){
	var  tamArray = cboToSort.length
	var arrCbo = new Array();
	for(var indSortCbo = 0; indSortCbo < tamArray; indSortCbo++){
		var arAux = new Array();
		arAux[0] = cboToSort.options[ indSortCbo ].innerText;
		arAux[1] = cboToSort.options[ indSortCbo ].value;
		arrCbo[indSortCbo] = arAux;
	}
	arrCbo.sort( sortArrayZeroAsc );

	loadCombo( arrCbo, cboToSort, 1, 0);
}

/*
'@METODO_NOME 			"sortArrayZeroAsc"
'@METODO_DESCRICAO 		"ordena o array de duas dimensoes pela posição 0 do array nivel 2"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		03/06/2005
'@PARAMETRO_NOME 		"a"
'@PARAMETRO_DESCRICAO 	"Primeiro valor"
'@PARAMETRO_NOME 		"b"
'@PARAMETRO_DESCRICAO 	"Segundo valor"
*/
function sortArrayZeroAsc(a, b){
	try{
		if( isNaN( a[0] ) && isNaN( b[0] ) ){
			a = a[0].toLowerCase(); 
			b = b[0].toLowerCase();

			if (a > b) return 1;
			if (a < b) return -1;
			return 0; 
		}

		if( ! isNaN( a[0] ) && ! isNaN( b[0] ) ){
			return a[0] - b[0];
		}
		
		if(! isNaN( a[0] ) && isNaN( b[0] )){
			return -1;
		}else{
			return 1;
		}
	}catch(e){
		return 0;
	}
}

/*
'@METODO_NOME 			"loadCombo"
'@METODO_DESCRICAO 		"Carrega a combo a partir de um array bidimensional"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		13/05/2005
'@PARAMETRO_NOME 		"arrayCbo"
'@PARAMETRO_DESCRICAO 	"Array contendo os valores a serem adicionados na combo"
'@PARAMETRO_NOME 		"cbo"
'@PARAMETRO_DESCRICAO 	"Combo que será carregada"
'@PARAMETRO_NOME 		"value"
'@PARAMETRO_DESCRICAO 	"Posição do array que é o vale da combo (0 ou 1)"
'@PARAMETRO_NOME 		"text"
'@PARAMETRO_DESCRICAO 	"Posição do array que é o text da combo (0 ou 1)"
*/
function loadCombo( arrayCbo, cbo, value, text ){
	limpaCombo( cbo );
	for(var indArrayCbo = 0; indArrayCbo < arrayCbo.length; indArrayCbo ++){
		var oOption = document.createElement("OPTION");
		cbo.options.add( oOption );
		oOption.innerText = arrayCbo[ indArrayCbo ][ text ];
		oOption.value = arrayCbo[ indArrayCbo ][ value ];
	}
}

/*
'@METODO_NOME 			"logoff"
'@METODO_DESCRICAO 		"Efetua uma chamada via XMLhttpRequest para realizar o logoff do usuário"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		16/05/2005
'@RETORNO_DESCRICAO 	"void"
*/
function logoff(){
	var xmlDoc = "<document><logoff>true</logoff></document>";
	var xmlhttp = new ActiveXObject ("Microsoft.XMLHTTP");
	xmlhttp.Open("POST", getUrl() + "XDR/log_off_xml.asp", false);
	xmlhttp.Send( xmlDoc );
	var resultado = xmlhttp.responseXML.documentElement.selectSingleNode("logoff").text;
	if (resultado == "false"){
		alert('Não foi possível efetuar o logoff');
	}
}

/*
'@METODO_NOME 			"expiraSessao"
'@METODO_DESCRICAO 		"Verifica se o usuario esta fechando a janela e caso positivo efetua o logoff"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		16/05/2005
'@RETORNO_DESCRICAO 	"void"
*/
function expiraSessao(){ 			
	if(window.screenTop > 10000){
		logoff();
	}
}

/*
'@METODO_NOME 			"getUrl"
'@METODO_DESCRICAO 		"Retorna a url com um diretorio acima do host"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		16/05/2005
'@RETORNO_DESCRICAO 	"STRING, url atual do usuario"
*/
function getUrl(){
	url =  document.location.host;
	path = document.location.pathname.split("/");
	return "http://" + url + "/" + path[1] + "/";
}

/*
'@METODO_NOME 			"testaTextArea"
'@METODO_DESCRICAO 		"Valida se o campo texto tem a quantidade máxima de carecteres permitido"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		23/05/2005
'@PARAMETRO_NOME 		"myFld"
'@PARAMETRO_DESCRICAO 	"Objeto que será validado"
'@PARAMETRO_NOME 		"tamMax"
'@PARAMETRO_DESCRICAO 	"Quantidade máxima de caracteres permitida"
'@PARAMETRO_NOME 		"evtKeyPress"
'@PARAMETRO_DESCRICAO 	"evento"
*/
function testaTextArea(myFld, tamMax, evtKeyPress){
	var nTecla = evtKeyPress.keyCode; 

    if (nTecla != 8){ //não é backspace
		if (myFld.value.length > tamMax){
			myFld.value = myFld.value.substr(0, myFld.value.length - (myFld.value.length - tamMax ));
			alertaLabel('O tamanho máximo deste texto é: ' + tamMax);
		}
	}

}

/*
'@METODO_NOME 			"carregaPermissao"
'@METODO_DESCRICAO 		"Esconde os campos que não podem ser vistos por usuários que não tem permissão de manutenção"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		25/05/2005
'@PARAMETRO_NOME 		"permissao"
'@PARAMETRO_DESCRICAO 	"Permissão do usuário"
*/
function carregaPermissao( permissao ){
	if( permissao == 'C'){
		travaCamposPorPermissao("M");
		escondeCamposPorPermissao("M");
	}
}

/*
'@METODO_NOME 			"selectlAllOptions"
'@METODO_DESCRICAO 		"Seleciona todas as opções de uma combo"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		06/06/2005
'@PARAMETRO_NOME 		"obj"
'@PARAMETRO_DESCRICAO 	"Objeto select"
*/
function selectlAllOptions( obj ){
	for(var indSAO = 0; indSAO < obj.options.length; indSAO ++){
		obj.options[indSAO].selected = true;
	}
}

/*
'@METODO_NOME 			"selecionaOpcoesPorValor"
'@METODO_DESCRICAO 		"Seleciona todas as opções de uma combo que estejam contidas em uma string"
'@METODO_AUTOR 			"Thiago Toledo"
'@METODO_CRIACAO 		08/06/2005
'@PARAMETRO_NOME 		"obj"
'@PARAMETRO_DESCRICAO 	"Objeto select"
'@PARAMETRO_NOME 		"texto"
'@PARAMETRO_DESCRICAO 	"string que contem as opcoes a serem marcadas. "

*/
function selecionaOpcoesPorValor( obj , texto ){
	for(var indSAO = 0; indSAO < obj.options.length; indSAO ++){
		if (texto.indexOf(obj.options[indSAO].value)>=0)
			obj.options[indSAO].selected = true;
	}
}


function TextoParaCombo(str){
	var inicio;
	var fim;
	
	for (var i=0;i<str.length;i++){
		if (str.substr(i,1) == '|' ){
			if (inicio == undefined ) inicio = i+1;
			else fim = i;
		}
	}
	return(str.substring(inicio,fim));
}

function RemSelect(de, para){

	var replacedfirst = true;  
	var id_opcao, texto_opcao;	// Armazena o id e o nome da opção a ser removida
	
	for (var Current=0; Current < de.options.length; Current++){
		
		id_opcao	= de.options[Current].value;
		texto_opcao = de.options[Current].text;
		
		if (de.options[Current].selected){
			
			var optionName = new Option(de.options[Current].text,de.options[Current].value);
			
			if (replacedfirst){
				var length = para.length;
			} else {
				var length = 0;
			};
			
			para.options[length] = optionName;
			de.remove(Current);
			Current --;
			replacedfirst = true;
		}
	}
	
	de.selectedIndex = -1;
	para.selectedIndex = -1;
}		

function adRemSelect(de, para)
{
	var replacedfirst = true;
	
	
		for (var Current=0;Current < de.options.length;Current++) 
		{
			if (de.options[Current].selected) 
				{
					//Cria os option com os valores selecionados de forma dinâmica
					var optionName = new Option(de.options[Current].text, de.options[Current].value, true, true);
					//if (para.length > 7){
					//	alerta("10059");
					//	break;
					//}
					
					if (replacedfirst)
						var length = para.length;
					else
						var length = 0;
						
					para.options[length] = optionName;
					de.remove(Current);
					Current --;
					replacedfirst = true;
				}
		}
	de.selectedIndex = -1;
	para.selectedIndex = -1;
}



/*--------------------------------------------------------------------------------------------------------------
@METODO_NOME 			"hasOptions"
@METODO_DESCRICAO 		"Função utilizada para verificar se uma opção realmente foi selecionada no list de manipulação."
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		01/02/2005
@PARAMETRO_NOME 		"obj"
@PARAMETRO_DESCRICAO	"Parâmetro que recebe a instância do objeto (ListBox) a ser manipulado."
---------------------------------------------------------------------------------------------------------------*/
function hasOptions(obj) {
	if (obj!=null && obj.options!=null) { return true; }
	return false;
}

							
/*--------------------------------------------------------------------------------------------------------------
@METODO_NOME 			"swapOptions"
@METODO_DESCRICAO 		"Função que efetua a troca de posições entre duas opções de um ListBox, sendo que um esteja selecionado."
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		01/02/2005
@PARAMETRO_NOME 		"obj"
@PARAMETRO_DESCRICAO	"Parâmetro que recebe a instância do objeto (ListBox) a ser manipulado."
@PARAMETRO_NOME 		"i"
@PARAMETRO_DESCRICAO	"Parâmetro que recebe a instância da primeira opção a ser trocada."
@PARAMETRO_NOME 		"j"
@PARAMETRO_DESCRICAO	"Parâmetro que recebe a instância da segunda opção a ser trocada."
---------------------------------------------------------------------------------------------------------------*/
function swapOptions(obj,i,j) {
	var o = obj.options;
	var i_selected = o[i].selected;
	var j_selected = o[j].selected;
	var temp = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
	var temp2= new Option(o[j].text, o[j].value, o[j].defaultSelected, o[j].selected);
	o[i] = temp2;
	o[j] = temp;
	o[i].selected = j_selected;
	o[j].selected = i_selected;
}
										

/*--------------------------------------------------------------------------------------------------------------
@METODO_NOME 			"moveOptionUp"
@METODO_DESCRICAO 		"Função utilizada para mover a opção selecionada para cima (na verdade é chamada a função de troca - swapOptions)."
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		01/02/2005
@PARAMETRO_NOME 		"obj"
@PARAMETRO_DESCRICAO	"Parâmetro que recebe a instância do objeto (ListBox) a ser manipulado."
---------------------------------------------------------------------------------------------------------------*/
function moveOptionUp(obj) {

	if (!hasOptions(obj)) { return; }
	for (i=0; i<obj.options.length; i++) {
		if (obj.options[i].selected) {
			if (i != 0 && !obj.options[i-1].selected) {
				swapOptions(obj,i,i-1);
				obj.options[i-1].selected = true;
				}
			}
		}
	}

/*--------------------------------------------------------------------------------------------------------------
@METODO_NOME 			"moveOptionDown"
@METODO_DESCRICAO 		"Função utilizada para mover a opção selecionada para cima (na verdade é chamada a função de troca - swapOptions)."
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		01/02/2005
@PARAMETRO_NOME 		"obj"
@PARAMETRO_DESCRICAO	"Parâmetro que recebe a instância do objeto (ListBox) a ser manipulado."
---------------------------------------------------------------------------------------------------------------*/
function moveOptionDown(obj) {
	if (!hasOptions(obj)) { return; }
	for (i=obj.options.length-1; i>=0; i--) {
		if (obj.options[i].selected) {
			if (i != (obj.options.length-1) && ! obj.options[i+1].selected) {
				swapOptions(obj,i,i+1);
				obj.options[i+1].selected = true;
			}
		}
	}
}

/*--------------------------------------------------------------------------------------------------------------
@METODO_NOME 			"selectedTextToString"
@METODO_DESCRICAO 		"gera uma string contendo os texts dos options selecionados separados por virgulas"
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		08/06/2005
@PARAMETRO_NOME 		"obj"
@PARAMETRO_DESCRICAO	"objeto select"
---------------------------------------------------------------------------------------------------------------*/
function selectedTextToString(obj) {
	var txt = "";
	if (!hasOptions(obj)) { return; }
	for (i=0; i<obj.options.length; i++) {
		if (obj.options[i].selected) {
			txt += obj.options[i].text + ",";
		}
	}
	if(txt!="")
		txt = txt.substring(0,txt.length - 1);
	return(txt);
}

/*=============================================================================================
FUNÇÕES DE MANIPULAÇÃO DE DADOS EM UM LISTBOX.					FIM
	- Funções para tramitação de valores entre dois ListBox.
	- Funções para subir ou descer com uma opção dentro de um ListBox.
=============================================================================================*/

/*--------------------------------------------------------------------------------------------------------------
@METODO_NOME 			"abreJanelaDetalhamento"
@METODO_DESCRICAO 		"Função utilizada para abrir uma janela específica para a exibição dos detalhamentos de filtros, visões, etc."
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		08/02/2005
@PARAMETRO_NOME 		"strUrl"
@PARAMETRO_DESCRICAO	"Url a ser chamada pela janela."
@PARAMETRO_NOME 		"strNomeJanela"
@PARAMETRO_DESCRICAO	"Nome da janela a ser aberta, possibilitando a abertura de janelas simultâneas."
---------------------------------------------------------------------------------------------------------------*/
function abreJanelaDetalhamento(strUrl, strNomeJanela){
	//-- Criação das variáveis  e definição dos valores primários.
	var vlrTop		= 0;
	var vlrLeft		= 0;
	var vlrWidth	= 700;
	var vlrHeight	= 400;
	
	//-- Cálculo do posicionamento da janela na tela. 
	vlrTop	= ((window.screen.height - vlrHeight) / 2);	//-- ((Altura total - Altura da janela) / 2)
	vlrLeft	= ((window.screen.width - vlrWidth) / 2);	//-- ((Largura total - Largura da janela) / 2)
	
	//-- Abre a janela.
	window.open(strUrl, strNomeJanela, "top=" + vlrTop + ", left=" + vlrLeft + ", width=" + vlrWidth + ", height=" + vlrHeight + ", toolbars=no, scrollbars=yes, resizable=yes");
};

/*--------------------------------------------------------------------------------------------------------------
@METODO_NOME 			"getRadioValue"
@METODO_DESCRICAO 		"Retorna o valor do radio selecionado"
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		13/06/2005
@PARAMETRO_NOME 		"radioName"
@PARAMETRO_DESCRICAO	"NOME do radio"
---------------------------------------------------------------------------------------------------------------*/
function getRadioValue(radioName) {
	var collection;
	collection = document.getElementsByName(radioName);
	for (indLoop = 0; indLoop < collection.length; indLoop ++) {
		if (collection[indLoop].checked)
		return(collection[indLoop].value);
	}
}

/*-----------------------------------------------------------------------------------------------------------------------------------------
@METODO_NOME			"criaTabela"
@METODO_DESCRICAO		"Cria uma nova linha na listagem de campos a serem inseridos e também os hiddens com os valores dos objetos passados"
@METODO_CRIACAO			"28/03/2005"
@METODO_AUTOR			"Thiago Toledo"
@METODO_EMPRESA			"HTP"
@PARAMETRO_NOME			"id"
@PARAMETRO_DESCRICAO	"ID da tabela onde vai ser inserida a linha."
@PARAMETRO_NOME			"values"
@PARAMETRO_DESCRICAO	"Array com os objetos do formulario a serem inseridos na nova linha."
@PARAMETRO_NOME			"janela"
@PARAMETRO_DESCRICAO	"Onde serão criados os novos objetos."
@RETORNO_DESCRICAO		"Retorna linha criada de acordo com os parametros passados."	
---------------------------------------------------------------------------------------------------------------------------------------------*/
function criaTabela(id, values, janela){	
	var oNewLine				= janela.document.createElement("TR");
	var oRemoveCol				= janela.document.createElement("TD");	
	var oRemove					= janela.document.createElement("<INPUT onclick='removeLinha( this.parentNode.parentNode ); return false;' >");

	//Cria as colunas
	for(i=0; i < values.length; i++){
		var oColumn	= janela.document.createElement("TD");
		for(var j = 0; j < values[i].length; j++){
			if(j == 0){
				oColumn.innerText			= values[i][j];
				oColumn.className			= 'Tit_Direita';
			}else{
				oColumn.appendChild( values[i][j] );
			}
		}
		oNewLine.appendChild(oColumn);		
	}
	
	
	oRemove.type	= "image";
	oRemove.src		= Url_XDR + "imagens/excluir3.gif";
	oRemoveCol.appendChild(oRemove);
	oNewLine.appendChild(oRemoveCol);	
	
	try{
		oTable = janela.document.getElementById(id);
		oTable.style.display = 'block';		
		oTable.childNodes(0).appendChild( oNewLine );		
	}
	catch(e){
		alertaLabel(e.message);
	}
	
	setLineColumnsClass(oNewLine);
}

/*
@METODO_NOME			"setLineColumnsClass"
@METODO_DESCRICAO		"Atribui classes css as colunas de uma tabela, de acordo com a posicao da linha na tabela"
@METODO_CRIACAO			"13/06/2005"
@METODO_AUTOR			"Thiago Toledo"
@METODO_EMPRESA			"HTP"
@PARAMETRO_NOME			"obj"
@PARAMETRO_DESCRICAO	"Linha"
*/
function setLineColumnsClass(obj){
	if( (obj.rowIndex % 2 ) == 0 ){ var cssClass = 'Det_Pequeno2_C'; } else{ var cssClass = 'Det_Pequeno_C'; }
	for(var indColumns = 0; indColumns < obj.childNodes.length; indColumns ++){
		obj.childNodes.item( indColumns ).className = cssClass;
	}
}

/*-----------------------------------------------------------------------------------------
@METODO_NOME 			"removeLinha"
@METODO_DESCRICAO 		"Remove a linha passada como parâmetro. Exemplo de chamada removeLinha('iddalinha_1');"
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		28/03/2005
@METODO_EMPRESA			"HTP"
@PARAMETRO_NOME			"obj"
@PARAMETRO_DESCRICAO	"linha a ser removida"
@RETORNO_DESCRICAO		"Retorna linha apagada."	
------------------------------------------------------------------------------------------*/
function removeLinha( obj ){	
	try{
		regraRemoveLinha(obj);
	}catch(e){}
	
	var oTable = obj.parentNode;

	var indexRowRemoved = obj.rowIndex;
	obj.removeNode(true);
	for(var indRows = indexRowRemoved; indRows < oTable.rows.length; indRows ++){
		setLineColumnsClass( oTable.rows.item(indRows) );
	}
}

/*
@METODO_NOME 			"createHidden"
@METODO_DESCRICAO 		"Cria um campo hidden com nome e valor"
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		13/06/2005
@METODO_EMPRESA			"HTP"
@PARAMETRO_NOME			"name"
@PARAMETRO_DESCRICAO	"nome do hidden a ser criado"
@PARAMETRO_NOME			"value"
@PARAMETRO_DESCRICAO	"valor do hidden"
@RETORNO_DESCRICAO		"Hidden criado"	
*/
function createHidden(name, value){
	var oHidden = document.createElement("INPUT");
	oHidden.type = "HIDDEN";
	oHidden.name = name;
	oHidden.id	= name;
	oHidden.value = value;
	return oHidden;
}

/*
@METODO_NOME 			"confirmaLabel"
@METODO_DESCRICAO 		"Cria um campo hidden com nome e valor"
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		13/06/2005
@METODO_EMPRESA			"HTP"
@PARAMETRO_NOME			"name"
@PARAMETRO_DESCRICAO	"nome do hidden a ser criado"
@RETORNO_DESCRICAO		"BOOLEAN"	
*/
function confirmaLabel( mensagem ){
	var retorno = false;
	try{
		retorno = window.showModalDialog(Url_ROOT + 'xdr/msg_sistema/mensagem_confirma_txt.asp', mensagem, 'help:no; status:no; dialogHeight:150px; dialogWidth:300px');
	}catch(e){}
	return retorno;
}


/*-----------------------------------------------------------------------------------------
obj.value
------------------------------------------------------------------------------------------*/


function verificaSeValorPassivelDeLista(val)
{
	if ((val == "igual") || (val == "diferente") || (val == "começado por") || (val == "não começado por"))
		return true;
	else
		return false;
}

/*-----------------------------------------------------------------------------------------
@METODO_NOME 			"verificaQuantidadeDeElementosNoId"
@METODO_DESCRICAO 		"Retorna a quantidade de elementos contidos em um obejto."
@METODO_AUTOR 			"Hélio Ribeiro Neto"
@METODO_CRIACAO 		12/04/2005
@PARAMETRO_NOME			"id"
@PARAMETRO_DESCRICAO	"Qualquer objeto que possua a propriedade lenght."
@RETORNO_DESCRICAO		"booleano"	
------------------------------------------------------------------------------------------*/

function verificaQuantidadeDeElementosNoId(id)
{
	return id.length;
}

/*
@METODO_NOME 			"verificaCampoListagemPaginacao"
@METODO_DESCRICAO 		"Verifica se o valor inserido no campo do numero da pagina na funcionalidade de paginação, é válido"
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		06/07/2005
@PARAMETRO_NOME			"obj"
@PARAMETRO_DESCRICAO	"Objeto (campo que recebe o numero da pagina de destino)"
@PARAMETRO_NOME			"totalPaginas"
@PARAMETRO_DESCRICAO	"Número de páginas maximo admitido"
@RETORNO_DESCRICAO		"void"
*/
function verificaCampoListagemPaginacao( obj, totalPaginas ){
	var ch = String.fromCharCode(event.keyCode);
	var novoValor = parseInt( obj.value + '' +  ch);

	if( testaNumero( ch ) && novoValor <= totalPaginas && novoValor != 0){
		event.returnValue = true;
	}else{
		event.returnValue = false;
	}
}

/*
@METODO_NOME 			"ShowHideLayer"
@METODO_DESCRICAO 		"Esconde ou mostra uma div de 'loading'"
@METODO_AUTOR 			"Thiago Toledo"
@METODO_CRIACAO 		06/07/2005
*/

function ShowHideLayer(TheLayer,TheAttrib) {
	if (parseInt(navigator.appVersion) > 3) {
		eval(layerVar + '["' + TheLayer + '"]' + styleVar + '.visibility = "' + TheAttrib + '"');
	}
}
			
/*
@METODO_NOME 				"checkIP"
@METODO_DESCRICAO 		"Verifica se a formatação do campo que irá receber um ip é valida"
@METODO_AUTOR 				"Thiago Toledo"
@METODO_CRIACAO 			29/07/2005
@PARAMETRO_DESCRICAO		"obj"
@PARAMETRO_DESCRICAO		"Campo que terá o seu value validado"
@RETORNO_DESCRICAO		"boolean"
*/
function checkIP( obj ){
	str = obj.value;
	var regExp = /^((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;

	if( regExp.test(str) || str == "" ){
		return true;
	}
	else{
		alertaLabel('O formato do IP é inválido. Por favor insira um formato válido');
		obj.focus();
		obj.select();
		return false;
	}
}

function abrirHelp(){
	try{
		if( document.getElementById('divHelp').style.display == 'block'){
			document.getElementById('divHelp').style.display = 'none';
		}
		else{
			document.getElementById('divHelp').style.display = 'block';
		}
	}
	catch(e){
		//alert(e.message);
	}
}

function abrirJanela( url, nome ){
	window.open(url, nome, 'width=725, height=400, toolbars=no, scrollbars=yes'); 
}

function getDataFromSchedule( obj ){
	var cal = new CalendarPopup();
	//obj.value = window.showModalDialog(urlRoot + '/Admin/Library/Calendar.html', '', 'dialogWidth:310px; dialogHeight:240px;resizable:no;scroll:no;status:no;unadorned:yes;resizable:no;help:no;edge:raised;');
	cal.select(obj,'anchor1','dd/MM/yyyy'); return false;
}


function testaFloat(campo, decimalFormat)
{

	var reDecimalPt = /^[+-]?((\d+|\d{1,3}(\.\d{3})+)(\,\d*)?|\,\d+)$/;
	var reDecimalEn = /^[+-]?((\d+|\d{1,3}(\,\d{3})+)(\.\d*)?|\.\d+)$/;

	var Valor = campo.value;
	
	if(Valor != '')
	{
		if(decimalFormat == 'BR')
		{
		
			if(!reDecimalPt.test(Valor))
			{
				alert('O valor deve ser um número decimal válido !');
				campo.focus();
				
			}
			
		}
		else
		{
			if(!reDecimalEn.test(Valor))
			{
				alert('O valor deve ser um número decimal válido !');
				campo.focus();
			}
		}
	}
}

function formatValue(campo, decimais, decimalformat) {
		var ch;
		ch = String.fromCharCode(event.keyCode);
		if ( !testaNumero(ch) ) event.returnValue = false;

		filterFieldValue(campo);

		campo.value = filterFieldValue(campo);
		vr = campo.value;
		tam = vr.length;

		switch(decimalformat){
			case "BR":
				if(decimais > 0){decimal = ","}else{decimal = "";};
				milhar  = ".";
				break;

			case "US":
				if(decimais > 0){decimal = "."}else{decimal = "";};
				milhar  = ",";
				break;
		}

		if( tam <= decimais ){ 
	 		campo.value = vr ; }
	 	if( (tam > decimais) && (tam <= decimais+3) ){
	 		campo.value = vr.substr( 0, tam - decimais ) + decimal + vr.substr( tam - decimais, tam ) ; }
	 	if( (tam >= decimais+4) && (tam <= decimais+6) ){
	 		campo.value = vr.substr( 0, tam - decimais - 3 ) + milhar + vr.substr( tam - decimais - 3, 3 ) + decimal + vr.substr( tam - decimais, tam ) ; }
	 	if( (tam >= decimais+7) && (tam <= decimais+9) ){
	 		campo.value = vr.substr( 0, tam - decimais - 6  ) + milhar + vr.substr( tam - decimais - 6, 3 ) + milhar + vr.substr( tam - decimais - 3, 3 ) + decimal + vr.substr( tam - decimais, tam ) ; }
	 	if( (tam >= decimais+10) && (tam <= decimais+12) ){
	 		campo.value = vr.substr( 0, tam - decimais - 9 ) + milhar + vr.substr( tam - decimais - 9, 3 ) + milhar + vr.substr( tam - decimais - 6, 3 ) + milhar + vr.substr( tam - decimais - 3, 3 ) + decimal + vr.substr( tam - decimais, tam ) ; }
	 	if( (tam >= decimais+13) && (tam <= decimais+15) ){
	 		campo.value = vr.substr( 0, tam - decimais - 12 ) + milhar + vr.substr( tam - decimais - 12, 3 ) + milhar + vr.substr( tam - decimais - 9, 3 ) + milhar + vr.substr( tam - decimais - 6, 3 ) + milhar + vr.substr( tam - decimais - 3, 3 ) + decimal + vr.substr( tam - decimais, tam ) ; }
		return;
}

function validateValue(campo, decimais, decimalformat) {
		switch(decimalformat){
			case "BR":
				if(decimais > 0){decimal = ","}else{decimal = "";};
				milhar  = ".";
				//return /(^\d{1,3}(.\d{3})*|\d{1,3}),(\d{4})$/.test( campo.value )
				alert( /(\d{1,3}(\.\d{3})*|\d{1,3}),(\d{4})$/.test( "1111,0000" ) );
				returnValue = false;
				break;

			case "US":
				if(decimais > 0){decimal = "."}else{decimal = "";};
				milhar  = ",";
				break;
		}
}

function filterFieldValue(campo){
	var s = "";
	var cp = "";
	var invalidos = "AÁÀÃÂÄBCÇDEÉÈÊËFGHIÍÌÎÏJKLMNOÓÒÕÔÖPQRSTUÚÙÛÜVWXYZaáàãâäbcçdeéèêëfghiíìîïjklmnoóòõôöpqrstuúùûüvwxyz`´^~¨'\"@#$%¨&*()-_+={}[]<>:;?,./|";

	vr = campo.value;
	tam = vr.length;
	for (i = 0; i < tam ; i++) {  
		if(invalidos.indexOf(vr.substring(i,i + 1))==-1){
			s = s + vr.substring(i,i + 1);}
	}
	campo.value = s;
	return cp = campo.value
}

function IsNumber(Number){
	var validos = "0123456789";
	tam = Number.length;

	if(Number=="")
		return false;

	for (i = 0; i < tam ; i++) {  
		if(validos.indexOf(Number.substring(i,i + 1))==-1){
			return false;}
	}

	return(true)
}

	function IsTime(Time){
		Hora = Time.substring(0,2);
		Minuto = Time.substring(3,5);
	
		if(IsNumber(Hora) && parseInt(Hora) >= 0 && parseInt(Hora) < 24)
			if(IsNumber(Minuto) && parseInt(Minuto) >= 0 && parseInt(Minuto) < 60)
				return(true);
			else
				return(false);
		else
			return(false);
	}

	function formatHour(campo){
		if(window.event.keyCode==8 || window.event.keyCode==37 || window.event.keyCode==39 || window.event.keyCode==46)return false;

		campo.value = filterFieldValue(campo);
		vr = campo.value;
		tam = vr.length;

		if( tam > 2 && tam < 5 )
			campo.value = vr.substr( 0, tam - 2  ) + ':' + vr.substr( tam - 2, tam );
	}
	
		function formatDate(campo){
		if(window.event.keyCode==8 || window.event.keyCode==37 || window.event.keyCode==39 || window.event.keyCode==46)return false;

		campo.value = filterFieldValue(campo);
		vr = campo.value;
		tam = vr.length;

		if( tam > 2 && tam < 5 )
			campo.value = vr.substr( 0, tam - 2  ) + '/' + vr.substr( tam - 2, tam );
		if( tam >= 5 && tam <= 10 ) 
			campo.value = vr.substr( 0, 2 ) + '/' + vr.substr( 2, 2 ) + '/' + vr.substr( 4, 4 ); 
	}
	
function abrirObservacoes( idObservacao ){
	window.open( urlRoot + '/Observacoes/ObservacoesFormulario.aspx?Observacao=' + idObservacao, '_observacao', 'width=620, height=500, toolbars=no, scrollbars=yes');
}

function abrirAnaliseCredito( idFornecedor, id ){
	var retorno = window.showModalDialog( urlRoot + '/Fornecedores/AprovarCreditoFinanceiro.aspx?Fornecedor=' + idFornecedor, '_fornecedor', 'width=620, height=500, unadorned=no, scroll=auto, help=no, resizable=no, status=no');
	document.getElementById(id).value = retorno;
}


function formatarDocumento(field){
	if(window.event.keyCode != 9)
	{	
		if(field.value.length <= 14)
			formatCPF(field);
		else
			formatCNPJ(field);
	}
}

function formatCPF(campo){
	if(document.all){if(window.event.keyCode==8 || window.event.keyCode==37 || window.event.keyCode==39 || window.event.keyCode==46 || window.event.keyCode==9)return false;}

	campo.value = filterFieldValue(campo);
	vr = campo.value;

	if( vr.length >=3 && vr.length < 6 )
		campo.value = vr.substr( 0, 3  ) + '.' + vr.substr( 3, vr.length-3 );
	if( vr.length >=6 && vr.length < 9 )
		campo.value = vr.substr( 0, 3  ) + '.' + vr.substr( 3, 3 ) + '.' + vr.substr( 6, vr.length-6 );
	if( vr.length > 9 )
		campo.value = vr.substr( 0, 3  ) + '.' + vr.substr( 3, 3 ) + '.' + vr.substr( 6, 3 ) + '-' + vr.substr( 9, vr.length-9 );
}

function formatCNPJ(campo){
	if(document.all){if(window.event.keyCode==8 || window.event.keyCode==37 || window.event.keyCode==39 || window.event.keyCode==46)return false;}

	campo.value = filterFieldValue(campo);
	vr = campo.value;

	if( vr.length >= 2 && vr.length < 5 )
		campo.value = vr.substr( 0, 2  ) + '.' + vr.substr( 2, vr.length-2 );
	if( vr.length >= 5 && vr.length < 8 )
		campo.value = vr.substr( 0, 2  ) + '.' + vr.substr( 2, 3 ) + '.' + vr.substr( 5, vr.length-5 );
	if( vr.length >= 9 && vr.length < 12 )
		campo.value = vr.substr( 0, 2  ) + '.' + vr.substr( 2, 3 ) + '.' + vr.substr( 5, 3 ) + '/' + vr.substr( 8, vr.length-8 );
	if( vr.length > 12 )
		campo.value = vr.substr( 0, 2  ) + '.' + vr.substr( 2, 3 ) + '.' + vr.substr( 5, 3 ) + '/' + vr.substr( 8, 4 ) + '-' + vr.substr( 12, vr.length-2 );
}