//Faz com que o campo só aceite números....
//onKeyPress="return Tecla(event);"
function Tecla(e){
	var tecla = (window.event)?event.keyCode:e.which;
	if (tecla > 47 && tecla < 58){ // numeros de 0 a 9
		return true;
	}else{
		if (tecla != 8){ // backspace
			return false;
		}else{
		return true;
		}
	}
}


function combina(obj){

	var fieldToFocus = document.getElementById("field_comb_" + obj.id.substring(obj.id.lastIndexOf("_")+1,obj.id.length));
	var fields = document.getElementsByName("field_comb_"+ obj.name.substring(obj.name.lastIndexOf("_")+1,obj.name.length));

	for (var i = 0; i < fields.length; i++) {
		fields[i].disabled = true;
	}
	fieldToFocus.disabled = false;
	fieldToFocus.focus();
}

function multiCombina(obj){

	var fieldToFocus = document.getElementById("field_comb_" + obj.id.substring(obj.id.lastIndexOf("_")+1,obj.id.length));
	if(obj.checked){
		fieldToFocus.disabled = false;
		fieldToFocus.focus();
	}else{
		fieldToFocus.disabled = true;
	}
}

function checaObrigatoriedade(objCampo){
	var strObrigatorio = (objCampo.getAttribute('OBRIGATORIO'));
	var strDescCampo = p_objCampo.getAttribute('DESCCAMPO');
	if(strObrigatorio!=null){
		if(trim(objCampo.value).length>0){
			return true;
		}else{
			alert('O campo ' + strDescCampo + ' não é uma data válida!');
			return false;
		}
	}
	return true;
}
/*
function $(campo){
	return document.getElementById(campo);
}
*/

function trim( str ) {
	return str.replace( /^\s*/, "" ).replace( /\s*$/, "" );
}

function pulaCampo(campo){

	if (campo.value.length == campo.maxLength) {
		for (var i = 0; i < campo.form.length; i++) {
			if (campo.form[i] == campo && campo.form[(i + 1)] && campo.form[(i + 1)].type != "hidden") {
				campo.form[(i + 1)].focus();
			break;
			}
		}
	}
}
function changeBGColor(obj, color){
	eval(obj).style.backgroundColor = color;
}

function escondeImagem(){
	var image = document.all('Layer').style;			
		image.visibility = 'visible';		
}

function EC(id){

	var DataTR = document.getElementById(id);
	
	if (DataTR.style.display=="none"){
		DataTR.style.display="";
	}else{
		DataTR.style.display="none";
	}			
}

function checkUncheck(id){

	var fiel = document.getElementById(id);
	
	if (fiel.checked){
		fiel.checked = false;
	}else{
		fiel.checked = true;
	}			
}

function AbreJanela(end,alt,lar,nome,parametro){
    window.open(end+parametro,nome,"scrollbars=yes,height=2,width=2,left=0,top=0");
}

function AbreJanela_2(end,alt,lar,nome,parametro){
    window.open(end+parametro,nome,"scrollbars=yes,height=1,width=1,left=-400,top=-400");
}

function AbreJanelaValor(end,alt,lar,nome,parametro){
		
	if(document.forms[0].txt_qtde.value == ''){
		alert('Primeiro selecione um período de viagem');
	}else{
		window.open(end+parametro,nome,"scrollbars=yes,height=2,width=2,left=0,top=0");
	}	
}

function XMLHTTPRequest() {
    if (window.XMLHttpRequest) { 
        a=new XMLHttpRequest(); //Objeto nativo (FF/Safari/Opera7.6+)
    }else{
        try { 
                a=new ActiveXObject("Msxml2.XMLHTTP");  //activeX (IE5.5+/MSXML2+)
            }catch(e){
                try { 
                        a=new ActiveXObject("Microsoft.XMLHTTP"); //activeX (IE5+/MSXML1)
                    }catch(e){ 
                        a=false; 
                    }
           }
    }
    return a;
    /*
    * Exemplo
        tXHR=XMLHTTPRequest();
        if (tXHR) {
            tXHR.open("GET", "/estagios/servlet/estagios.adm.UtilitariosAJAX?operacao=existe_cnpj&cnpj="+cnpj,true);    
            tXHR.onreadystatechange = trataCNPJ;
            tXHR.send(null);
        }

        if (tXHR.readyState == 4) {             
            if (tXHR.status == 200) {
                if(tXHR.responseText == "ok"){
                }
            }
        }
*/


}

//###################### MARCA TODOS OS CHECKBOX ###########################
function seleciona_todos(obj){
	var tam = document.getElementById("txtCont").value;

	if (obj.checked == true){
		for (j=1; j<=tam; j++){
			document.getElementById("Chk"+j).checked = true;
		}
	}else{
		for (j=1; j<=tam; j++){
			document.getElementById("Chk"+j).checked = false;
		}
	}
}
function formataCEP(campo){
	caracteres = '01234567890';
	separacoes = 1;
	separacao1 = '-';
	conjuntos = 2;
	conjunto1 = 5;
	conjunto2 = 3;
	if (campo.value.length < (conjunto1 + conjunto2 + 1)){
		if (campo.value.length == conjunto1){ 
		   campo.value = campo.value + separacao1;
		}
	}else{
		return false;
	}
}
//###############################################################
//	BLOQUEIA os caracteres  que fores inpedidos
function blockChar(args){
	//coloque os caracteres que deseja bloquear no argumento da função
	//ex: blockChar('0123456789') -- Bloqueia os numeros
	//se quiser bloquear pelo codigo ASC coloque outros parametros na frente do primeiro;
	//ex: blockChar('', 13, 85, 94)
	for(var i=0; i<args.length;  i++){
		var tecla = (window.event)?event.keyCode:window.event.which;
		if (tecla == args.charCodeAt(i)){
			event.returnValue = false;
			break;
		}
	}//end for

	if(blockChar.arguments.length > 1){
		for(var i=1; i<blockChar.arguments.length; i++){

			var tecla = (window.event)?event.keyCode:window.event.which;

			if (!isNaN(blockChar.arguments[i]) && tecla == blockChar.arguments[i]){

				event.returnValue = false;
				break;
			}
		}//end for	
	}// end if
}//end function
//###############################################################


// Bloqueia Caracteres por Meio de seu Código Ascii
function blockCharByAscii(event){
	
	var args = null; // Caracteres Bloqueados
	var ev	= null; // Tecla pressionada
	
	// Seta código da tecla pressionada
    ev = event.charCode? event.charCode : event.keyCode;
    
    // Quantidade Caracteres Bloqueados
    args = blockCharByAscii.arguments.length

    // Itera Array de Argumentos
    for(var i = 1; i<args; i++){
    	if(ev == blockCharByAscii.arguments[i]){
    		return false;
    	}
    }

}


// Verifica a existência do caracter espaço , caso exista campo é limpo
function verifySpace(object) {

	if (object.value.indexOf(" ") >= 0) {
		alert("Espaços não são aceitos.");
		object.value = "";
	}
}



// ########### Função Diferença em dias entre Datas #############
// ########### por anderp 12/04/2005 ############################

function CalculaDias(){
	var F = document.frmDiarias;
	// ################## Testando se caso as datas nâo estâo preenchidas ############## 
	if ((F.txt_data_ida.value == "") || (F.txt_data_volta.value == "")){
		alert ("Preencha a data de Ida e Volta corretamente!");
		F.txt_qtde.value = "";
		F.txt_data_ida.focus();
	} 
	
	/// ################# Calculo so é feito caso as duas datas estiverem preenchidas #####
	if ((F.txt_data_ida.value != "") && (F.txt_data_volta.value != "")){
     
		var dataI = (F.txt_data_ida.value);
		var  mesI = dataI.substring(3,6);  
		var  diaI = dataI.substring(0,2);
		var  anoI = dataI.substring(6,10);
		var dataIncConvert = new Date((mesI + "/" + diaI + "/" + anoI));
		// ###############################################################
		var dataF = (F.txt_data_volta.value);
		var  mesF = dataF.substring(3,6);
		var  diaF = dataF.substring(0,2);
		var  anoF = dataF.substring(6,10);
		var dataFinConvert = new Date((mesF + "/" + diaF + "/" + anoF));

		// ########### caso a data de ida for igual ou maior que a data de volta entra
		if ((dataFinConvert.getTime() - dataIncConvert.getTime()) < 0){
			alert(" Data de IDA maior ou igual que a data de VOLTA, preencha os campos corretamente! ")
			F.txt_qtde.value = "";
			F.txt_data_volta.value = ""; 
			F.txt_data_ida.value = "";
			F.txt_qtde.value = "";
			F.txt_valor_unitario.value = "";
			F.txt_valor_total.value = "";
			F.txt_data_ida.focus();
		}
		
		//####### se faz o calculo caso dtIda for menos ke dtVolta ####################################
		if ((dataFinConvert.getTime() - dataIncConvert.getTime()) >= 1){
			var diff = dataFinConvert.getTime() - dataIncConvert.getTime() ;
			var dias = Math.floor(diff / (1000 * 60 * 60 * 24 )) ;
			F.txt_qtde.value = dias; 
			return true;
		}else    {
			F.txt_qtde.value = "0,5"; 
			return true;
		}
	}
}
//############################# FIM ##################################

function WriteDate()
{
	hoje = new Date()
	dia = hoje.getDate()
	dias = hoje.getDay()
	mes = hoje.getMonth()
	ano = hoje.getYear()
	
	if (dia < 10)
	 dia = "0" + dia
	if (ano < 2000)
	 ano = 1900 + ano
	
	function NArray (n)
	{
	 this.length = n
	}
	NomeDia = new NArray(7)
	
	NomeDia[0] = "Domingo"
	NomeDia[1] = "Segunda"
	NomeDia[2] = "Ter&ccedil;a"
	NomeDia[3] = "Quarta"
	NomeDia[4] = "Quinta"
	NomeDia[5] = "Sexta"
	NomeDia[6] = "S&aacute;bado"
	
	NomeMes = new NArray(12)
	
	NomeMes[0] = "janeiro"
	NomeMes[1] = "fevereiro"
	NomeMes[2] = "mar&ccedil;o"
	NomeMes[3] = "abril"
	NomeMes[4] = "maio"
	NomeMes[5] = "junho"
	NomeMes[6] = "julho"
	NomeMes[7] = "agosto"
	NomeMes[8] = "setembro"
	NomeMes[9] = "outubro"
	NomeMes[10] = "novembro"
	NomeMes[11] = "dezembro"
	
	document.write (NomeDia[dias] + ", " + dia + " de " + NomeMes[mes] + " de " + ano )
}
////////////////////////////////////////////
/************************************************************************************
	Nome: cValidacaoGeral
	//-------------------------------------------------------------------------------
	Objetivo:	classe javascript de validacao geral, possui metodos de validacao geral
				de tamanho, cnpj, cpf, email, etc.
				é instanciada automaticamente para utilizacao
	//-------------------------------------------------------------------------------
	Parâmetros:	
	//-------------------------------------------------------------------------------
	Retornos:	
*************************************************************************************/
function cValidacaoGeral() 
{
	this.testaCampoTamanho = testaCampoTamanho;
	this.testaDataValida = testaDataValida;
	this.testaExtensaoArquivo = testaExtensaoArquivo;
	this.testaCPFValido = testaCPFValido;
	this.testaCNPJValido = testaCNPJValido;
	this.testaEmailValido = testaEmailValido;
	this.testaHoraValida = testaHoraValida;
	this.testaFormatoDecimal = testaFormatoDecimal;
	this.testaTeclaNumerica = testaTeclaNumerica;
}

/************************************************************************************
	Nome: cValidacaoControles
	//-------------------------------------------------------------------------------
	Objetivo:	classe javascript de validação de controles de formularios
				é instanciada automaticamente para utilização
	//-------------------------------------------------------------------------------
	Parâmetros:	
	//-------------------------------------------------------------------------------
	Retornos:	
*************************************************************************************/
function cValidacaoControles() 
{
	this.testaCampoNulo = testaCampoNulo;
	this.testaDropdownSelecionada = testaDropdownSelecionada;
	this.testaCheckboxRadioMarcado = testaCheckboxRadioMarcado;
}

/************************************************************************************
	Nome: cMascara
	//-------------------------------------------------------------------------------
	Objetivo:	classe javascript com metodos de aplicacao de mascara em controles
				é instanciada automaticamente para utilização
	//-------------------------------------------------------------------------------
	Parâmetros:	
	//-------------------------------------------------------------------------------
	Retornos:	
*************************************************************************************/
function cMascara()
{
	this.testaTeclaNumerica = testaTeclaNumerica;
	this.aplicaMascaraCPF = aplicaMascaraCPF;
	this.aplicaMascaraData = aplicaMascaraData;
	this.aplicaMascaraHora = aplicaMascaraHora;
	this.aplicaMascaraCNPJ = aplicaMascaraCNPJ;
	this.aplicaMascaraValor = aplicaMascaraValor;
	this.aplicaMascaraNumerica = aplicaMascaraNumerica;
}

// objetos instanciados automaticamente para utilizacao
var validacaoGeral = new cValidacaoGeral();
var validacaoControles = new cValidacaoControles();
var mascara = new cMascara();

/************************************************************************************
	Nome: testaCampoNulo
	//-------------------------------------------------------------------------------
	Objetivo:	testar se um campo text, textarea ou password está nulo
	//-------------------------------------------------------------------------------
	Parâmetros:	p_objCampo		- referencia ao campo text, textarea ou password
			p_boolExibeMensagem 	- true para exibir alert ou false só para testar selecao
									  valor padrão true
	//-------------------------------------------------------------------------------
	Retornos:	true			- o campo está nulo
			false			- o campo não está nulo
*************************************************************************************/
function testaCampoNulo (p_objCampo, p_boolExibeMensagem)
{

	p_boolExibeMensagem = (p_boolExibeMensagem == null) ? true : p_boolExibeMensagem;

	var strDescCampo = p_objCampo.getAttribute('DESCCAMPO');
	var strObrigatorio = p_objCampo.getAttribute('OBRIGATORIO');

	if (trim(p_objCampo.value).length == 0 && strObrigatorio != null)
	{
	
		if (p_boolExibeMensagem == true)
		{
			alert('O campo ' + strDescCampo + ' deve ser informado obrigatoriamente!');
			p_objCampo.focus();
		}
		return true;
	}
	else 
	{
		return false;
	}
}

/************************************************************************************
	Nome: testaDropdownSelecionada 
	//-------------------------------------------------------------------------------
	Objetivo:	testar se uma dropdown está selecionada, e exibe mensagem
	//-------------------------------------------------------------------------------
	Parâmetros:	p_objDropdown		- referencia ao controle de dropdown
			p_boolExibeMensagem 	- true para exibir alert ou false só para testar selecao
									  valor padrão true
	//-------------------------------------------------------------------------------
	Retornos:	true			- dropdown possui itens selecionados
			false			- dropdown nao possui 
*************************************************************************************/
function testaDropdownSelecionada (p_objDropdown, p_boolExibeMensagem)
{

	var strDescCampo = p_objDropdown.getAttribute('DESCCAMPO');
	
	var strObrig 	 = p_objDropdown.getAttribute('OBRIGATORIO');

	p_boolExibeMensagem = (p_boolExibeMensagem == null) ? true : p_boolExibeMensagem;

	if (p_objDropdown.options.length > 0)
	{
		if (p_objDropdown.value.length == 0)
		{
			if (p_boolExibeMensagem == true)
			{
				alert('O campo ' + strDescCampo + ' deve ser informado obrigatoriamente!');
				p_objDropdown.focus();
			}
			return false;
		} 
		else 
		{
			return true;
		}
	}
}

/************************************************************************************
	Nome: testaCampoTamanho
	//-------------------------------------------------------------------------------
	Objetivo:	testar se a quantidade de caracteres em um campo está entre os 
				limites mínimo e máximo, e exibe mensagem
	//-------------------------------------------------------------------------------
	Parâmetros:	p_objCampo		- referencia ao controle de dropdown
			p_numQtdMin		- Quantidade mínima de caracteres permitidos, se 0, não testa
			p_numQtdMax		- Quantidade máxima de caracteres permitidos, se 0, não testa
			p_boolExibeMensagem 	- true para exibir alert ou false só para testar selecao
								
	//-------------------------------------------------------------------------------
	Retornos:	true			- campo com número de caracteres dentro dos limites
			false			- campo com número de caracteres fora dos limites
*************************************************************************************/
function testaCampoTamanho(p_objCampo, p_numQtdMin, p_numQtdMax, p_boolExibeMensagem)
{
	var strDescCampo = p_objCampo.getAttribute('DESCCAMPO');
	
	p_boolExibeMensagem = (p_boolExibeMensagem == null) ? true : p_boolExibeMensagem;

	if (p_numQtdMin > 0 || p_numQtdMax > 0)
	{
		if (p_objCampo.value.length < p_numQtdMin && p_numQtdMin != 0)
		{
			if (p_boolExibeMensagem == true)
			{
				alert('O campo ' + strDescCampo + ' deve ter no mínimo ' + p_numQtdMin + ' caracteres!');
				p_objCampo.focus();
			}
			return false;
			
		}

		if (p_objCampo.value.length > p_numQtdMax && p_numQtdMax != 0)
		{
			if (p_boolExibeMensagem == true)
			{
				alert('O campo ' + strDescCampo + ' deve ter no máximo ' + p_numQtdMax + ' caracteres!');
				p_objCampo.focus();
			}
			return false;

		}
		return true;
	}
}

/************************************************************************************
	Nome: testaCPFValido
	//-------------------------------------------------------------------------------
	Objetivo:	testar se um campo text possui CPF valido
	//-------------------------------------------------------------------------------
	Parâmetros:	p_objCampo		- referencia ao campo text
			p_boolExibeMensagem 	- true para exibir alert ou false só para testar selecao
						  valor padrão true
	//-------------------------------------------------------------------------------
	Retornos:	true			- cpf valido
			false			- cpf invalido
*************************************************************************************/
function testaCPFValido (p_objCampo, p_boolExibeMensagem)
{
	p_boolExibeMensagem = (p_boolExibeMensagem == null) ? true : p_boolExibeMensagem;

	var numCPF='';
	var numI;
	if(trim(p_objCampo.value).length>0){
		
		for (numI=0; numI < p_objCampo.value.length; numI++)
		{
			if (p_objCampo.value.charCodeAt(numI) >= 48 && p_objCampo.value.charCodeAt(numI) <= 57)
			{
				numCPF += p_objCampo.value.charAt(numI);
			}
		}
		if (numCPF.length > 11 || numCPF == "00000000000" || numCPF == "11111111111" || numCPF == "22222222222" ||	numCPF == "33333333333" || numCPF == "44444444444" || numCPF == "55555555555" || numCPF == "66666666666" || numCPF == "77777777777" ||	numCPF == "88888888888" || numCPF == "99999999999")
		{
			if (p_boolExibeMensagem == true)
			{
				alert('O CPF informado não é valido! Verifique.');
				p_objCampo.focus();
			}	
			return false;
		} 
	
		var soma = 0;
	
		for (i=0; i < 9; i ++) 
		{
			soma += parseInt(numCPF.charAt(i)) * (10 - i);
			resto = 11 - (soma % 11);
		}
		
		if (resto == 10 || resto == 11)
		{
			resto = 0;
		}
	
		if (resto != parseInt(numCPF.charAt(9)))
		{
			if (p_boolExibeMensagem == true)
			{
				alert('O CPF informado não é valido! Verifique.');
				p_objCampo.focus();
			}	
			return false;
		} 
	
		soma = 0;
		
		for (i = 0; i < 10; i ++)
		{
			soma += parseInt(numCPF.charAt(i)) * (11 - i);
			resto = 11 - (soma % 11);
		}
	
		if (resto == 10 || resto == 11)
		{
			resto = 0;
		}
		
		if (resto != parseInt(numCPF.charAt(10)))
		{
			if (p_boolExibeMensagem == true)
			{
				alert('O CPF informado não é valido! Verifique.');
				p_objCampo.focus();
			}	
			return false;
		}
	}		

	return true;
 }

/************************************************************************************
	Nome: testaCNPJValido
	//-------------------------------------------------------------------------------
	Objetivo:	testar se um campo text possui CNPJ valido
	//-------------------------------------------------------------------------------
	Parâmetros:	p_objCampo		- referencia ao campo text
			p_boolExibeMensagem 	- true para exibir alert ou false só para testar selecao
						  valor padrão true
	//-------------------------------------------------------------------------------
	Retornos:	true			- cnpj valido
			false			- cnpj invalido
*************************************************************************************/
function testaCNPJValido (p_objCampo, p_boolExibeMensagem)
{
	var numI;
	var numCNPJ='';
	if(trim(p_objCampo.value).length > 0){
		
	
	  	p_boolExibeMensagem = (p_boolExibeMensagem == null) ? true : p_boolExibeMensagem;
	  		 if (trim(p_objCampo.value).length < 18){
		 if (p_boolExibeMensagem == true)
			{
				alert('É necessário preencher o CNPJ corretamente! Verifique.');
				p_objCampo.focus();
			}	
			return false;
		 }
	
		for (numI=0; numI < p_objCampo.value.length; numI++)
		{
			if (p_objCampo.value.charCodeAt(numI) >= 48 && p_objCampo.value.charCodeAt(numI) <= 57)
			{
				numCNPJ += p_objCampo.value.charAt(numI);
			}
		}
	  
		var c  = numCNPJ.substr(0,12);
		var dv = numCNPJ.substr(12,2);
		var d1 = 0;
		
		for (i = 0; i < 12; i++)
	    {
			d1 += c.charAt(11-i)*(2+(i % 8));
	    }
		
		if (d1 == 0) 
		{
			if (p_boolExibeMensagem == true)
			{
				alert('O CNPJ informado não é valido! Verifique.');
				p_objCampo.focus();
			}	
			return false;
		}
	
		d1 = 11 - (d1 % 11);
		if (d1 > 9) d1 = 0;
		if (dv.charAt(0) != d1)
		{
			if (p_boolExibeMensagem == true)
			{
				alert('O CNPJ informado não é valido! Verifique.');
				p_objCampo.focus();
			}	
			return false;
		}
	
		d1 *= 2;
		for (i = 0; i < 12; i++)
		{
			d1 += c.charAt(11-i)*(2+((i+1) % 8));
		}
		d1 = 11 - (d1 % 11);
		if (d1 > 9) d1 = 0;
		if (dv.charAt(1) != d1)
		{
			if (p_boolExibeMensagem == true)
			{
				alert('O CNPJ informado não é valido! Verifique.');
				p_objCampo.focus();
			}	
			return false;
		}
	}
  return true;
}

/************************************************************************************
	Nome: testaEmailValido
	//-------------------------------------------------------------------------------
	Objetivo:	testar se um campo email está no formato válido aaaa@bbbbb.ccc
	//-------------------------------------------------------------------------------
	Parâmetros:	p_objCampo		- referencia ao campo text
			p_boolExibeMensagem 	- true para exibir alert ou false só para testar selecao
						valor padrão true
	//-------------------------------------------------------------------------------
	Retornos:	true			- cnpj valido
			false			- cnpj invalido
*************************************************************************************/
function testaEmailValido (p_objCampo, p_boolExibeMensagem)
{ 
	p_boolExibeMensagem = (p_boolExibeMensagem == null) ? true : p_boolExibeMensagem;

	var ponto;
	var arroba = p_objCampo.value.indexOf('@',0);
	var ponto  = p_objCampo.value.indexOf('.',arroba);

 	if(trim(p_objCampo.value).length>0){
	    if(arroba == -1 )
		{
			if (p_boolExibeMensagem == true)
			{
				alert('O formato do e-mail informado não é valido! Verifique.');
				p_objCampo.focus();
			}	
			return false;
		}   
	    
		if(ponto <= arroba)
	    {
			if (p_boolExibeMensagem == true)
			{
				alert('O formato do e-mail informado não é valido! Verifique.');
				p_objCampo.focus();
			}	
			return false;
	    }
	}
   return true;
}

/************************************************************************************
	Nome: testaCheckboxRadioMarcado
	//-------------------------------------------------------------------------------
	Objetivo:	testar se um input radio ou checkbox esta marcado
	//-------------------------------------------------------------------------------
	Parâmetros:	p_objCampo		- referencia ao campo text
			p_boolExibeMensagem 	- true para exibir alert ou false só para testar selecao
									  valor padrão true
	//-------------------------------------------------------------------------------
	Retornos:	true			- checkbox ou radio marcado
			false			- checkbox ou radio nao esta selecionado
*************************************************************************************/
function testaCheckboxRadioMarcado (p_objCampo, p_boolExibeMensagem)
{
	var numI;
	var strDescCampo = p_objCampo.getAttribute('DESCCAMPO');

	p_objCampo = document.getElementsByName(p_objCampo.name);

	p_boolExibeMensagem = (p_boolExibeMensagem == null) ? true : p_boolExibeMensagem;

	for (numI=0; numI < p_objCampo.length; numI++)
	{
		if (p_objCampo[numI].checked == true)
		{
			return true;
		}
	}
	
	if (p_boolExibeMensagem == true)
	{
		alert('O campo ' + strDescCampo + ' deve ser informado obrigatoriamente!');
	}
	return false;
	
}


/************************************************************************************
	Nome: testaTeclaNumerica
	//-------------------------------------------------------------------------------
	Objetivo:	testar se uma tecla numérica foi pressionada
	//-------------------------------------------------------------------------------
	Parâmetros:					
	//-------------------------------------------------------------------------------
	Retornos:	true	- tecla numérica pressionada
			false	- tecla não numérica pressionada
*************************************************************************************/
function testaTeclaNumerica(p_numCodTecla)
{
	
	try{
		event.cancelBubble = true;

		var arrTeclasPermitidas = new Array(8,9,13,35,36,37,39,46);

		for (var i=0; i<arrTeclasPermitidas.length; i++){
			if (parseInt(p_numCodTecla) == parseInt(arrTeclasPermitidas[i])){
				return true;
			}
		}

		if (p_numCodTecla > 47 && p_numCodTecla < 58 || (p_numCodTecla >= 96 && p_numCodTecla <= 105) ){
			event.returnValue = true;
			return true;
		}else{
			event.returnValue = false;
			return false;
		}
	}catch(e){
	
		var arrTeclasPermitidas = new Array(8,9,13,35,36,37,39,46);
		for (var i=0; i<arrTeclasPermitidas.length; i++){
			if (parseInt(p_numCodTecla) == parseInt(arrTeclasPermitidas[i])){
				return true;
			}
		}
		if (p_numCodTecla > 47 && p_numCodTecla < 58 || (p_numCodTecla >= 96 && p_numCodTecla <= 105) ){
			return true;
		}else {			
			return false;
		}
	}
}


/************************************************************************************
	Nome: testaDataValida
	//-------------------------------------------------------------------------------
	Objetivo:	testar se uma data está correta
	//-------------------------------------------------------------------------------
	Parâmetros:	p_objCampo		- referencia ao campo text
			p_boolExibeMensagem 	- true para exibir alert ou false só para testar selecao
									  valor padrão true
	//-------------------------------------------------------------------------------
	Retornos:	true			- Data válida
			false			- Data inválida
*************************************************************************************/
function testaDataValida(p_objCampo, p_boolExibeMensagem)
{
	if(trim(p_objCampo.value).length > 0){
		
		var numDia = p_objCampo.value.substr(0,2);
		var numMes = p_objCampo.value.substr(3,2);
		var numAno = p_objCampo.value.substr(6,4);
	
		var strDescCampo = p_objCampo.getAttribute('DESCCAMPO');
	
		p_boolExibeMensagem = (p_boolExibeMensagem == null) ? true : p_boolExibeMensagem;
	
		if ((p_objCampo.value.substr(2,1) != "/") || (p_objCampo.value.substr(5,1) != "/"))
		{
			numDia = "";
			numMes = "";
			numAno = "";
		}
	
		var arrayDia = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
		var arrayMes = new Array("01","02","03","04","05","06","07","08","09","10","11","12");
		var inpData = numDia + numMes + numAno;
		var filter=/^[0-9]{2}[0-9]{2}[0-9]{4}$/;
		if (!filter.test(inpData))
		{
			if (p_boolExibeMensagem == true)
			{
				alert('O campo ' + strDescCampo + ' não é uma data válida!');
				p_objCampo.focus();
			}
			return false;
		}
	
		// validando mes
		filter=/01|02|03|04|05|06|07|08|09|10|11|12/;
		if (! filter.test(numMes))
		{
			if (p_boolExibeMensagem == true)
			{
				alert('O campo ' + strDescCampo + ' não é uma data válida!');
				p_objCampo.focus();
			}
			return false;
		}
		
		// checa o ano bissexto
		var N = Number(numAno);
		if ( ( N%4==0 && N%100 !=0 ) || ( N%400==0 ) )
	  	{
		   arrayDia[1]=29;
	  	}
	
		// checando o dia valido para o mes
		for(var ctr=0; ctr<=11; ctr++)
	  	{
			if (arrayMes[ctr]==numMes)
	   		{
				if (numDia<= arrayDia[ctr] && numDia > 0 && numAno >= 1900 )
				{
					inpData = numDia + '/' + numMes + '/' + numAno;
					return true;
				}
				else
				{
					if (p_boolExibeMensagem == true)
					{
						alert('O campo ' + strDescCampo + ' não é uma data válida!');
						p_objCampo.focus();
					}
					return false;
				}
	   		}
		}
	}
	
	return true;
}

/************************************************************************************
	Nome: testaHoraValida
	//-------------------------------------------------------------------------------
	Objetivo:	testar se uma hora está correta
	//-------------------------------------------------------------------------------
	Parâmetros:	p_objCampo		- referencia ao campo text
			p_boolExibeMensagem 	- true para exibir alert ou false só para testar selecao
									  valor padrão true
	//-------------------------------------------------------------------------------
	Retornos:	true			- Hora válida
			false			- Hora inválida
*************************************************************************************/
function testaHoraValida(p_objCampo, p_boolExibeMensagem)
{	
	var strDescCampo = p_objCampo.getAttribute('DESCCAMPO');

	p_boolExibeMensagem = (p_boolExibeMensagem == null) ? true : p_boolExibeMensagem;

	var arrHora = p_objCampo.value.split(':');

	if (parseInt(arrHora[0]) < 0 || parseInt(arrHora[0]) > 23)
	{
		if (p_boolExibeMensagem == true)
		{
			alert('O campo ' + strDescCampo + ' não contém uma hora válida!');
			p_objCampo.focus();
		}
		return false;
	}

	if (parseInt(arrHora[1]) < 0 || parseInt(arrHora[1]) > 59)
	{
		if (p_boolExibeMensagem == true)
		{
			alert('O campo ' + strDescCampo + ' não contém um minuto válido!');
			p_objCampo.focus();
		}
		return false;
	}

	return true;
}

/************************************************************************************
	Nome: testaFormatoDecimal
	//-------------------------------------------------------------------------------
	Objetivo:	testar se uma data está correta
	//-------------------------------------------------------------------------------
	Parâmetros:	p_objCampo			- referencia ao campo text
				p_numTamanho		- Número de caracteres do campo
				p_numDecimais		- Número de casas decimais do campo
				p_boolExibeMensagem 	- true para exibir alert ou false só para testar selecao
									  valor padrão true
	//-------------------------------------------------------------------------------
	Retornos:	true				- Data válida
			false				- Data inválida
*************************************************************************************/
function testaFormatoDecimal(p_objCampo,p_boolExibeMensagem) 
{

	var valor='';
	var valido = '0123456789';
	var tecla = (window.event)?event.keyCode:window.event.which;
	p_boolExibeMensagem = true
	var strDescCampo = p_objCampo.getAttribute('DESCCAMPO');
	var strTipoCampo = p_objCampo.getAttribute('TIPO');
	var p_numTamanho = strTipoCampo.substring(strTipoCampo.indexOf("(")+1, strTipoCampo.indexOf(","));
	var p_numDecimais = strTipoCampo.substring(strTipoCampo.indexOf(",")+1, strTipoCampo.indexOf(")"));
	
	if (tecla == 13)
	{ 
		return true;
	}
	
	valor = String.fromCharCode(tecla);  
	
	if ((p_objCampo.value.length == 0) || (valor==','))
		{
			p_objCampo.value = '0,';
			if (p_boolExibeMensagem == true)
			{
				alert("1");
				alert('O campo ' + strDescCampo + ' não está no formato correto!');
				p_objCampo.focus();
			}
			return false;
		}
		if ((valor == ',') && (p_objCampo.value.indexOf(valor) != -1))
		{
			if (p_boolExibeMensagem == true)
			{
				alert("2");
				alert('O campo ' + strDescCampo + ' não está no formato correto!');
				p_objCampo.focus();
			}
			return false;
		}
		if (p_objCampo.value.indexOf(',') != -1)
		{
			if (p_objCampo.value.length > p_numTamanho)
			{
				if (p_boolExibeMensagem == true)
				{
					alert("3");
					alert('O campo ' + strDescCampo + ' não está no formato correto!');
					p_objCampo.focus();
				}
				return false;
			}
			var vet = p_objCampo.value.split(',');
			if (vet[0].length >= (p_numTamanho - p_numDecimais) )
			{
				p_objCampo.value += valor
				if (p_boolExibeMensagem == true)
				{
					alert("4");
					alert('O campo ' + strDescCampo + ' não está no formato correto!');
					p_objCampo.focus();
				}
				return false;
			}
			if (vet[1].length >= p_numDecimais)
			{
				if (vet[0].length == (p_numTamanho - p_numDecimais))
				{
					if (p_boolExibeMensagem == true)
					{
						alert("5");
						alert('O campo ' + strDescCampo + ' não está no formato correto!');
						p_objCampo.focus();
					}
					return false;
				}
				else
				{
					if (p_boolExibeMensagem == true)
					{
					alert("6");
						alert('O campo ' + strDescCampo + ' não está no formato correto!');
						p_objCampo.focus();
					}
					return false;
				}
			}
		}
		else
		{
			if (p_objCampo.value.length >= (p_numTamanho - p_numDecimais))
			{
				if (valor != ',')
				{
					p_objCampo.value += ',' + valor;
					if (p_boolExibeMensagem == true)
					{
						alert("7");
						alert('O campo ' + strDescCampo + ' não está no formato correto!');
						p_objCampo.focus();
					}
					return false;
				} 
			}
		}
}


/************************************************************************************
	Nome: testaExtensaoArquivo
	//-------------------------------------------------------------------------------
	Objetivo:	testar se a extensão de um arquivo está correta
	//-------------------------------------------------------------------------------
	Parâmetros:	p_objCampo		- referencia ao campo text
			p_ListaExtensoes    	- lista de extensões válidas para o arquivo selecionado
			p_boolExibeMensagem 	- true para exibir alert ou false só para testar selecao
									  valor padrão true
	//-------------------------------------------------------------------------------
	Retornos:	true			- Extensão válida
			false			- Extensão inválida
*************************************************************************************/
function testaExtensaoArquivo(p_objCampo, p_ListaExtensoes, p_boolExibeMensagem)
{
	var strArquivo = p_objCampo.value
	var strExtensao, vext   
	var pode = false		
	var strDescCampo = p_objCampo.getAttribute('DESCCAMPO');

	if (strArquivo.length > 0)
    {
		strExtensao = strArquivo.substring(strArquivo.length, strArquivo.length-3)
		vext = p_ListaExtensoes.split(",")			
        for (i=0; i < vext.length; i++)              
		{
			if (vext[i] == strExtensao)
			{
				pode = true;
			}
		}
	}
	else
	{ 
		if (p_boolExibeMensagem == true)
		{
			alert('A extensão do arquivo ' + strArquivo + ' no campo ' + strDescCampo + ' não é valida!');
			p_objCampo.focus();
		}
		return false;
	}				
	if (pode)
		return true;
    else
	{		
		if (p_boolExibeMensagem == true)
		{
			alert('A extensão do arquivo ' + strArquivo + ' no campo ' + strDescCampo + ' não é valida!');
			p_objCampo.focus();
		}
	    return false; 		
    }

}

/************************************************************************************
	Nome: aplicaMascaraCPF
	//-------------------------------------------------------------------------------
	Objetivo:	aplicar mascara de cpf em um campo
	//-------------------------------------------------------------------------------
	Parâmetros:	
	//-------------------------------------------------------------------------------
	Retornos:	
*************************************************************************************/
function aplicaMascaraCPF(){
	var numCodTecla = (window.event)?event.keyCode:window.event.which;
	var objCampo = event.srcElement;
	var strValor = new String(objCampo.value);

	if (testaTeclaNumerica(numCodTecla)==false) { return ; }

	strValor = strValor.replace(".", "");
	strValor = strValor.replace(".", "");
	strValor = strValor.replace("-", "");
	
	numTamanho = strValor.length + 1;

	if (numCodTecla != 9 && numCodTecla != 8 && numCodTecla != 37 && numCodTecla != 46 && numCodTecla != 39)
	{
		if (numTamanho > 3 && numTamanho < 7)
			objCampo.value = strValor.substr(0, 3) + '.' + strValor.substr(3, numTamanho);
		if (numTamanho >= 7 && numTamanho <10)
			objCampo.value = strValor.substr(0,3) + '.' + strValor.substr(3,3) + '.' + strValor.substr(6,numTamanho-6);
		if (numTamanho >= 10 && numTamanho < 17)
			objCampo.value = strValor.substr(0,3) + '.' + strValor.substr(3,3) + '.' + strValor.substr(6,3) + '-' + strValor.substr(9,numTamanho-9);
	}
}

/************************************************************************************
	Nome: aplicaMascaraData
	//-------------------------------------------------------------------------------
	Objetivo:	aplicar mascara de data em um campo
	//-------------------------------------------------------------------------------
	Parâmetros:	
	//-------------------------------------------------------------------------------
	Retornos:	
*************************************************************************************/
function aplicaMascaraData()
{
	var numCodTecla = (window.event)?event.keyCode:window.event.which;
	var objCampo = event.srcElement;

	if (testaTeclaNumerica(numCodTecla)==false) { return; }

	var strValor = new String(objCampo.value);

	strValor = strValor.replace("/", "");
	strValor = strValor.replace("/", "");
	numTamanho = strValor.length + 1;

	if (numCodTecla != 9 && numCodTecla != 8 && numCodTecla != 37 && numCodTecla != 46 && numCodTecla != 39)
	{
		if (numTamanho > 2 && numTamanho < 5)
		{
			objCampo.value = strValor.substr(0, 2) + '/' + strValor.substr(2, numTamanho);
		}
		if (numTamanho >= 5 && numTamanho <=10)
		{
			objCampo.value = strValor.substr(0,2) + '/' + strValor.substr(2,2) + '/' + strValor.substr(4,4);
		}
	}
}


/************************************************************************************
	Nome: aplicaMascaraHora
	//-------------------------------------------------------------------------------
	Objetivo:	aplicar mascara de hora em um campo
	//-------------------------------------------------------------------------------
	Parâmetros:	
	//-------------------------------------------------------------------------------
	Retornos:	
*************************************************************************************/
function aplicaMascaraHora(){
	var numCodTecla = (window.event)?event.keyCode:window.event.which;
	var objCampo = event.srcElement;

	if (testaTeclaNumerica(numCodTecla)==false) { return; }

	var strValor = new String(objCampo.value);
	strValor = strValor.replace(":", "");
	strValor = strValor.replace(":", "");

	numTamanho = strValor.length + 1;

	if (numCodTecla != 9 && numCodTecla != 8 && numCodTecla != 37 && numCodTecla != 46 && numCodTecla != 39)
	{
		if (numTamanho > 2 && numTamanho < 5)
			objCampo.value = strValor.substr(0, 2) + ':' + strValor.substr(2, numTamanho);
	}
}

/************************************************************************************
	Nome: aplicaMascaraCNPJ
	//-------------------------------------------------------------------------------
	Objetivo:	aplicar mascara de CNPJ em um campo
	//-------------------------------------------------------------------------------
	Parâmetros:	
	//-------------------------------------------------------------------------------
	Retornos:	
*************************************************************************************/
function aplicaMascaraCNPJ(e){
	
	//var tecla = (window.event)?event.keyCode:e.which;
	//var numCodTecla = (window.event)?event.keyCode:window.event.which;
	var numCodTecla = (window.event)?event.keyCode:e.which;
	//var objCampo = event.srcElement;
	var objCampo = e.target?e.target:e.srcElement;
	var strValor = new String(objCampo.value);

	if (testaTeclaNumerica(numCodTecla)==false) { 
		e.returnValue = false;
		return false; 
	}

	strValor = strValor.replace(".", "");
	strValor = strValor.replace(".", "");
	strValor = strValor.replace("/", "");
	strValor = strValor.replace("-", "");

	numTamanho = strValor.length + 1 ;
	
	if (numCodTecla != 9 && numCodTecla != 8 && numCodTecla != 37 && numCodTecla != 46 && numCodTecla != 39)
	{
		if (numTamanho > 2 && numTamanho < 6)
			objCampo.value = strValor.substr(0, 2) + '.' + strValor.substr(2, numTamanho);
		if (numTamanho >= 6 && numTamanho < 9)
			objCampo.value = strValor.substr(0,2) + '.' + strValor.substr(2,3) + '.' + strValor.substr(5,numTamanho-5);
		if (numTamanho >= 9 && numTamanho < 13)
			objCampo.value = strValor.substr(0,2) + '.' + strValor.substr(2,3) + '.' + strValor.substr(5,3) + '/' + strValor.substr(8,numTamanho-8);
		if (numTamanho >= 13 && numTamanho < 15)
			objCampo.value = strValor.substr(0,2) + '.' + strValor.substr(2,3) + '.' + strValor.substr(5,3) + '/' + strValor.substr(8,4)+ '-' + strValor.substr(12,numTamanho-12);
	}
}

/************************************************************************************
	Nome: aplicaMascaraValor
	//-------------------------------------------------------------------------------
	Objetivo:	aplicar mascara de valor em um campo
	//-------------------------------------------------------------------------------
	Parâmetros:	
	//-------------------------------------------------------------------------------
	Retornos: NAO ESTA SENDO UTILIZADO	
*************************************************************************************/
function aplicaMascaraValor() {

	var tecla = (window.event)?event.keyCode:window.event.which;
	var objCampo = event.srcElement;
	var vr = objCampo.value;
	var strDescCampo = objCampo.getAttribute('DESCCAMPO');
	var strTipoCampo = objCampo.getAttribute('TIPO');
	var tammax = strTipoCampo.substring(strTipoCampo.indexOf("(")+1, strTipoCampo.indexOf(")"));

	if (testaTeclaNumerica(tecla)==false)	{ return; }
	
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( ",", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	
	tam = vr.length;

	if (tam < tammax && tecla != 8){ tam = vr.length + 1 ; }

	if (tecla == 8 ){	tam = tam - 1 ; }
		
	if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){
		if ( tam <= 2 ){ 
	 		objCampo.value = vr ; }
		
	 	if ( (tam > 2) && (tam <= 5) ){
	 		objCampo.value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 6) && (tam <= 8) ){
	 		objCampo.value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 9) && (tam <= 11) ){
	 		objCampo.value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
		if ( (tam >= 12) && (tam <= 14) ){
	 		objCampo.value = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
		if ( (tam >= 15) && (tam <= 18) ){
			objCampo.value = vr.substr( 0, tam - 18 ) + '.' + vr.substr( tam - 17, 3 ) + '.' + + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;}
	}
}


/************************************************************************************
	Nome: aplicaMascaraNumerica
	//-------------------------------------------------------------------------------
	Objetivo:	aplicar mascara numerica
	//-------------------------------------------------------------------------------
	Parâmetros:	
	//-------------------------------------------------------------------------------
	Retornos:	
*************************************************************************************/
function aplicaMascaraNumerica() 
{
	var valor='';
	var objCampo = event.srcElement;
	var numCodTecla = (window.event)?event.keyCode:window.event.which;

	if (testaTeclaNumerica(numCodTecla)==false)	{ return; }

	var strDescCampo = objCampo.getAttribute('DESCCAMPO');

	var strTipoCampo = objCampo.getAttribute('TIPO');
	
	var numTamanho = strTipoCampo.substring(strTipoCampo.indexOf("(")+1, strTipoCampo.indexOf(","));
	var numDecimais = strTipoCampo.substring(strTipoCampo.indexOf(",")+1, strTipoCampo.indexOf(")"));

	if (numCodTecla==8||numCodTecla==9||numCodTecla==13||numCodTecla==35||numCodTecla==36||numCodTecla==37||numCodTecla==39||numCodTecla==46){return true;}
	
	valor = String.fromCharCode(numCodTecla);  
	
	if ((objCampo.value.length == 0) && (valor==','))
	{
		objCampo.value = '0,';
		return false;
	}

	if ((valor == ',') && (objCampo.value.indexOf(valor) != -1)){ return false; }

	if (objCampo.value.indexOf(',') != -1)
	{
		if (objCampo.value.length > numTamanho)	{ return false;	}
		
		var vet = objCampo.value.split(',');
		if (vet[0].length >= (numTamanho - numDecimais) )
		{
			objCampo.value;
			return true;
		}
		
		if (vet[1].length >= numDecimais)
		{
			if (vet[0].length == (numTamanho - numDecimais))
			{
				return false;
			}
			else
			{
				return false;
			}
		}
	}
	else
	{
		if (objCampo.value.length >= (numTamanho - numDecimais))
		{
			if (valor != ',')
			{	
				objCampo.value += ',';
				return true;
			} 
		}
	}
}

/************************************************************************************
	Nome: validaFormulario
	//-------------------------------------------------------------------------------
	Objetivo:	validar campos obrigatorios e o conteudos destes campos em um formulario
				atraves da utilizacao de tags customizadas
	//-------------------------------------------------------------------------------
	Parâmetros:	p_objForm			- referencia ao formulario
	//-------------------------------------------------------------------------------
	Retornos:	true	- caso a validação esteja ok
				false	- caso o preenchimento ou seleção de um campo nao esteja correto
*************************************************************************************/
function validaFormulario(p_objForm)
{
	var i;
	for (i=0; i<p_objForm.elements.length; i++)
	{	
		var objCampo = p_objForm.elements[i];

		var strTipoCampo = new String(objCampo.getAttribute('TIPO'));
		
		var strObrigatorio = (objCampo.getAttribute('OBRIGATORIO'));
		
		if (strObrigatorio != null)
		{

			var strTipoControle = new String(objCampo.type.toUpperCase());
			
			if (strTipoControle == 'TEXT' || strTipoControle == 'TEXTAREA' || strTipoControle == 'PASSWORD')
			{
				if (validacaoControles.testaCampoNulo(objCampo)==true) { return false; }
			}
			
			if (strTipoControle == 'CHECKBOX' || strTipoControle == 'RADIO')
			{
				if (validacaoControles.testaCheckboxRadioMarcado(objCampo)==false) { return false; }
			}
			if (strTipoControle == 'SELECT-ONE')
			{
				if (validacaoControles.testaDropdownSelecionada(objCampo, true)==false) { return false; }
			}
		}
		
		if (strTipoCampo.indexOf('VALOR') != -1)
		{
			strTipoCampo = 'VALOR';
		}
		
		if (strTipoCampo == 'TEXTO')
		{
			var numQtdMinima = 0;
			var numQtdMaxima = 0;

			if (objCampo.getAttribute('QTDMINIMA') != null)
			{
				numQtdMinima = objCampo.getAttribute('QTDMINIMA')
			}

			if (objCampo.getAttribute('QTDMAXIMA') != null)
			{
				numQtdMaxima = objCampo.getAttribute('QTDMAXIMA')
			}

			if (numQtdMinima != 0 || numQtdMaxima != 0)
			{
				if (validacaoGeral.testaCampoTamanho(objCampo, numQtdMinima, numQtdMaxima) == false) 
				{ 
					return false; 
				}
			}
		}
		

		if (strTipoCampo == 'CPF') 
		{
			if (objCampo.value.length > 0)
			{
				if (validacaoGeral.testaCPFValido(objCampo)==false) { return false; }
			}
		}
		
		if (strTipoCampo == 'CNPJ')
		{
			if (objCampo.value.length > 0)
			{
				if (validacaoGeral.testaCNPJValido(objCampo)==false) { return false; }
			}
		}
			
		if (strTipoCampo == 'EMAIL')
		{
			if (objCampo.value.length > 0)
			{
				if (validacaoGeral.testaEmailValido(objCampo)==false) { return false; }
			}
		}

		if (strTipoCampo == 'DATA')
		{	
			if (objCampo.value.length > 0)
			{
				if (validacaoGeral.testaDataValida(objCampo)==false) { return false; }
			}
		}

		if (strTipoCampo == 'HORA')
		{
			if (objCampo.value.length > 0)
			{
				if (validacaoGeral.testaHoraValida(objCampo)==false) { return false; }
			}
		}
	}
	return true; 
}

/************************************************************************************
	Nome: inicializaFormulario
	//-------------------------------------------------------------------------------
	Objetivo:	verificar a atributo customizado TIPO em todos os campos de todos os
				formularios em uma pagina, atribuindo funcoes de mascara para os campos
	//-------------------------------------------------------------------------------
	Parâmetros:	
	//-------------------------------------------------------------------------------
	Retornos:	
*************************************************************************************/
function inicializaFormulario() 
{
	var i, j;
	
	for (i=0; i < document.forms.length; i++)
	{
		for (j=0; j < document.forms[i].elements.length; j++)
		{
			var objCampo = document.forms[i].elements[j];
			
			strTipoCampo = objCampo.getAttribute('TIPO');

			if (strTipoCampo != null)
			{
				if (strTipoCampo.indexOf('NUMERICO') != -1)
				{
					strTipoCampo = 'NUMERICO';
				}
				if (strTipoCampo.indexOf('VALOR') != -1)
				{
					strTipoCampo = 'VALOR';
				}

				switch (strTipoCampo.toUpperCase())
				{
					case 'TEXTO' : 
						if (objCampo.getAttribute('QTDMAXIMA') != null && (strTipoCampo == 'PASSWORD' || strTipoCampo == 'TEXT')) 
						{
							objCampo.maxLength = objCampo.getAttribute('QTDMAXIMA');
						}
						break;
													
					case 'CPF' : 
						objCampo.size = 18;
						objCampo.maxLength = 14;
						objCampo.onkeydown = mascara.aplicaMascaraCPF;
						break;
						
					case 'CNPJ' : 
						objCampo.size = 22;
						objCampo.maxLength = 18;
						addEvent(objCampo,"keydown", mascara.aplicaMascaraCNPJ);
						//objCampo.onkeydown = mascara.aplicaMascaraCNPJ;
						break;
						
					//case 'EMAIL' : 
					//	break;

					case 'NUMERICO' :
						strTipoCampo = objCampo.getAttribute('TIPO');
						
						var numTamanho = strTipoCampo.substring(strTipoCampo.indexOf("(")+1, strTipoCampo.indexOf(","));
						var numDecimais = strTipoCampo.substring(strTipoCampo.indexOf(",")+1, strTipoCampo.indexOf(")"));
						if (parseInt(numDecimais) > 0)
						{
							numTamanho = parseInt(numTamanho) + 1
						}
						
						objCampo.size = numTamanho;
						objCampo.maxLength = numTamanho;
						objCampo.onkeydown = mascara.aplicaMascaraNumerica;
						break;
						
					case 'DATA' : 
						
						objCampo.size = 12;
						objCampo.maxLength = 10;
						objCampo.onkeydown = mascara.aplicaMascaraData;
						break ;

					case 'HORA' : 
						objCampo.size = 5;
						objCampo.maxLength = 5;
						objCampo.onkeydown = mascara.aplicaMascaraHora;
						break ;
					
				case 'VALOR' :
						strTipoCampo = objCampo.getAttribute('TIPO');
						
						var numTamanho = strTipoCampo.substring(strTipoCampo.indexOf("(")+1, strTipoCampo.indexOf(")"));
						if (parseInt(numDecimais) > 0)
						{
							numTamanho = parseInt(numTamanho) + 1
						}
						objCampo.size = numTamanho;
						objCampo.maxLength = numTamanho-2;
						objCampo.onkeydown = mascara.aplicaMascaraValor;
						break;
				}
			}			
		}
	}
}

function addEvent(obj, evType, fn){
	if (obj.addEventListener){
		obj.addEventListener(evType, fn, true);
	}
	if (obj.attachEvent){
		obj.attachEvent("on"+evType, fn)
	}
}

//window.onload = inicializaFormulario; // atribui a funcao inicializa formulario ao evento onload da janela 
