// Objetivo				: Funções de validação dos campos
// Autor				: Mauricio Bumba
// Data					: 26/05/2006
// Comentários			: Feitas melhorias diversas na antiga valida.js
// Alterado por			:
// Data					:
// Motivo da alteração	:
// Componentes usados	:
// Premissas			: 
// Entradas				: 
// Retorno				:

/*
Funções que capturam o evento de digitação e formatam os campos.
*/

//***********************************************************************
//Objetivos	: Valida a digitação apenas de números
//Premissas	: 
//Entradas	: Captura evento do teclado
//Saída		: True se foi digitado um número. False se não foi
//***********************************************************************
function ValidaTeclaInteiro() {
	var strTecla = String.fromCharCode(event.keyCode); //Valor da tecla pressionada
	var blnRetorno = ValidaDigitoInteiro(strTecla); //Retorno da validação
	event.returnValue = blnRetorno;
}

//***********************************************************************
//Objetivos	: Valida a digitação de caracteres alfanuméricos
//Premissas	: 
//Entradas	: Captura de evento do teclado
//Saída		: True se alfanumérico. False se não.
//***********************************************************************
function ValidaTeclaAlfanumerico(blnCharAlfa, blnCharAcent, blnCharNumber, blnSpaces, blnCharSpecial, intCase) {
	var strTecla = String.fromCharCode(event.keyCode); //Valor da tecla pressionada
	var blnRetorno; //Retorno da função, validando ou não a tecla pressionada
	
	switch(intCase){
		case 1:
			strTecla = strTecla.toUpperCase();
			event.keyCode = strTecla.charCodeAt(0);
			break;
		case 2:
			strTecla = strTecla.toLowerCase();
			event.keyCode = strTecla.charCodeAt(0);
			break;
	}

	blnRetorno = ((ValidaLetras(strTecla) && blnCharAlfa) || (ValidaAcentos(strTecla) && blnCharAcent) || (ValidaDigitoInteiro(strTecla) && blnCharNumber) || (strTecla == ' ' && blnSpaces) || (ValidaCaracterSpecial(strTecla) && blnCharSpecial));
	event.returnValue = blnRetorno;
}

//***********************************************************************
//Objetivos	: Valida a digitação de caracteres alfanuméricos
//Premissas	: 
//Entradas	: Captura de evento do teclado
//Saída		: True se alfanumérico. False se não.
//***********************************************************************
function ValidaTeclaNomeArquivo() {
	var strTecla = String.fromCharCode(event.keyCode); //Valor da tecla pressionada
	var blnRetorno; //Retorno da função, validando ou não a tecla pressionada
	
	event.returnValue = (!ValidaCaracterSpecialArquivo(strTecla));
}

//***********************************************************************
//Objetivos	: Valida a digitação apenas de números ou hífen
//Premissas	: 
//Entradas	: Captura de evento do teclado
//Saída		: True ou false, indicando se o caractere é valido.
//***********************************************************************
function ValidaTeclaCEP(objCampo) {
	var strValor = objCampo.value; //Conteúdo do campo
	var strTecla = String.fromCharCode(event.keyCode); //Valor da tecla pressionada
	var intTamanho; //Tamanho da string

	var blnRetorno = (ValidaDigitoInteiro(strTecla)); //Retorno da função
	if (!blnRetorno){
		event.returnValue = blnRetorno;
		return;
	}
	
	strValor = SoNumero(strValor);
	
	intTamanho = strValor.length + 1;

	if (intTamanho > 5){
		objCampo.value = strValor.substr(0, 5) + '-' + strValor.substr(5, intTamanho);
	}	
}

//***********************************************************************
//Objetivos	: Valida a digitação apenas de números ou hífen no formato NYSE
//Premissas	: 
//Entradas	: Captura de evento do teclado
//Saída		: True ou false, indicando se o caractere é valido.
//***********************************************************************
function ValidaTeclaNYSE(objCampo) {
	var strValor = objCampo.value; //Conteúdo do campo
	var strTecla = String.fromCharCode(event.keyCode); //Valor da tecla pressionada
	var intTamanho; //Tamanho da string

	var blnRetorno = (ValidaDigitoInteiro(strTecla)); //Retorno da função
	if (!blnRetorno){
		event.returnValue = blnRetorno;
		return;
	}
	
	strValor = SoNumero(strValor);
	
	intTamanho = strValor.length + 1;

	if (intTamanho > 2){
		objCampo.value = strValor.substr(0, 2) + '-' + strValor.substr(2, intTamanho);
	}	
}

//***********************************************************************
//Objetivos	: Valida a digitação apenas de números e formata o campo durante a digitação
//Premissas	: 
//Entradas	: Captura de evento do teclado
//Saída		: True ou false para o evento do teclado
//***********************************************************************
function ValidaTeclaCNPJ(objCampo){
	var strTecla = event.keyCode; //Código ASCII da tecla pressionada
	var strValor = new String(objCampo.value); //Valor do campo
	var intTamanho; //Tamanho da string
	var blnRetorno = (ValidaDigitoInteiro(String.fromCharCode(event.keyCode))); //Retorno da função

	if (!blnRetorno){
		event.returnValue = blnRetorno;
		return;
	}
   	
   	strValor = SoNumero(strValor);
   	
   	intTamanho = strValor.length + 1;
   
	if (strTecla != 9 && strTecla != 8){
		if (intTamanho > 2 && intTamanho < 6)
   			objCampo.value = strValor.substr(0, 2) + '.' + strValor.substr(2, intTamanho);
   		if (intTamanho >= 6 && intTamanho < 9)
   			objCampo.value = strValor.substr(0,2) + '.' + strValor.substr(2,3) + '.' + strValor.substr(5,intTamanho-5);
   		if (intTamanho >= 9 && intTamanho < 13)
   			objCampo.value = strValor.substr(0,2) + '.' + strValor.substr(2,3) + '.' + strValor.substr(5,3) + '/' + strValor.substr(8,intTamanho-8);
   		if (intTamanho >= 13 && intTamanho < 15)
   			objCampo.value = strValor.substr(0,2) + '.' + strValor.substr(2,3) + '.' + strValor.substr(5,3) + '/' + strValor.substr(8,4)+ '-' + strValor.substr(12,intTamanho-12);
	}
}

//***********************************************************************
//Objetivos	: Valida a digitação apenas de números e formata o campo durante a digitação
//Premissas	: 
//Entradas	: Captura de evento do teclado
//Saída		: True ou false para o evento do teclado
//***********************************************************************
function ValidaTeclaCPF(objCampo) {

	var strTecla = event.keyCode; //Código ASCII da tecla pressionada
	var strValor = new String(objCampo.value); //Valor do campo
	var intTamanho; //Tamanho da string
	
	var blnRetorno = (ValidaDigitoInteiro(String.fromCharCode(event.keyCode))); //Retorno da função
	event.returnValue = blnRetorno;

   	strValor = SoNumero(strValor);
	
   	intTamanho = strValor.length + 1;
	
   	if (strTecla != 9 && strTecla != 8){
   		if (intTamanho > 3 && intTamanho < 7)
   			objCampo.value = strValor.substr(0, 3) + '.' + strValor.substr(3, intTamanho);
   		if (intTamanho >= 7 && intTamanho <10)
   			objCampo.value = strValor.substr(0,3) + '.' + strValor.substr(3,3) + '.' + strValor.substr(6,intTamanho-6);
   		if (intTamanho >= 10 && intTamanho < 12)
   			objCampo.value = strValor.substr(0,3) + '.' + strValor.substr(3,3) + '.' + strValor.substr(6,3) + '-' + strValor.substr(9,intTamanho-9);
   	}
}

//***********************************************************************
//Objetivos	: Valida a digitação apenas de números ou vírgulas
//Premissas	: 
//Entradas	: Evento do teclado
//Saída		: True ou false para o evento do teclado
//***********************************************************************
function ValidaTeclaMoeda(objCampo) {
	var strTecla = String.fromCharCode(event.keyCode); //Valor da tecla pressionada
	var blnRetorno = ValidaDigitoMoeda(strTecla); //Retorno da função
	if (event.keyCode == 44 && objCampo.value.search(',') >= 0)
		event.returnValue = false;
	else
	{	
		if (objCampo.value.search(',') < 0 && (objCampo.maxLength - 1) == objCampo.value.length && document.selection != null && document.selection.type != 'None')
			event.returnValue = false;
		else
			event.returnValue = blnRetorno;
	}
}

//***********************************************************************
//Objetivos	: Validação universal para quase todos os campos numéricos
//Premissas	: 
//Entradas	: Evento do teclado, número de casas decimais do campo e se aceita negativos
//Saída		: True ou false para o evento do teclado
//***********************************************************************
function ValidaTeclaNumeroReal(objCampo, intTamDecimal, blnNegativo) {
	var strTecla = String.fromCharCode(event.keyCode); //Valor da tecla pressionada
	var blnRetorno = ValidaDigitoNumeroReal(strTecla, intTamDecimal, blnNegativo); //Retorno da função
	if (event.keyCode == 44 && objCampo.value.search(',') >= 0)
		event.returnValue = false;
	else
	{
		if (event.keyCode == 45 && blnNegativo) {
			if (objCampo.value.search('-') >= 0){
				objCampo.value = objCampo.value.substr(1,objCampo.maxLength - 1);
			}
			else{
				objCampo.value = '-' + objCampo.value;
			}			
			event.returnValue = false;
		}
		else
		{
			if (objCampo.value.search(',') < 0 && (objCampo.maxLength - 1) == objCampo.value.length && document.selection != null && document.selection.type != 'None')
				event.returnValue = false;
			else
				event.returnValue = blnRetorno;			
		}
	}
}

/*
Funções de validação das teclas pressionadas, para cada tipo de campo
*/

//***********************************************************************
//Objetivos	: Valida se o caracter enviado é um número ou virgula
//Premissas	: 
//Entradas	: Caracter
//Saída		: True ou false
//***********************************************************************
function ValidaDigitoMoeda(strCaracter) {
    return ("0123456789,".indexOf(strCaracter)>=0);
}

//***********************************************************************
//Objetivos	: Função de apoio para validar a maior parte dos campos numéricos
//Premissas	: 
//Entradas	: Caracter, número de casas decimais do campo e se aceita negativos
//Saída		: True ou false para o caracter enviado
//***********************************************************************
function ValidaDigitoNumeroReal(strCaracter, intTamDecimal, blnNegativo) {
	if (intTamDecimal > 0){
		if (blnNegativo){
			return ("0123456789,-".indexOf(strCaracter)>=0);
		}
		else{
			return ("0123456789,".indexOf(strCaracter)>=0);
		}
	}
	else{
		if (blnNegativo){
			return ("0123456789-".indexOf(strCaracter)>=0);
		}
		else{
			return ("0123456789".indexOf(strCaracter)>=0);
		}
	}
}

//***********************************************************************
//Objetivos	: Valida se o caracter enviado é um número
//Premissas	: 
//Entradas	: Caracter
//Saída		: True ou false para o caracter enviado
//***********************************************************************
function ValidaDigitoInteiro(strCaracter) {
	var intCode = strCaracter.charCodeAt(0); //Código ASCI do caracter enviado
	// Caracteres aceitos: 048 - 057
    return (intCode >= 48 && intCode <= 57);
}

//***********************************************************************
//Objetivos	: Valida se o caracter enviado é uma letra
//Premissas	: 
//Entradas	: Caracter
//Saída		: True ou false para o caracter enviado
//***********************************************************************
function ValidaLetras(strCaracter) {
	var intCode = strCaracter.charCodeAt(0); //Código ASCII do caracter enviado
    // Caracteres aceitos: 065 - 090; 097 - 122;
    return (intCode >= 65 && intCode <= 90) || (intCode >= 97 && intCode <= 122)
}

//***********************************************************************
//Objetivos	: Valida se o caracter enviado é uma letra acentuada
//Premissas	: 
//Entradas	: Caracter
//Saída		: True ou false para o caracter enviado
//***********************************************************************
function ValidaAcentos(strCaracter) {
	var intCode = strCaracter.charCodeAt(0); //Código ASCII do caracter enviado
    // Caracteres aceitos:  192 - 214; 217 - 246; 249 - 255
    return (intCode >= 192 && intCode <= 214) || (intCode >= 217 && intCode <= 246) || (intCode >= 249 && intCode <= 255)
}

//***********************************************************************
//Objetivos	: Valida se o caracter enviado é um caracter especial
//Premissas	: 
//Entradas	: Caracter
//Saída		: True ou false para o caracter enviado
//***********************************************************************
function ValidaCaracterSpecial(strCaracter) {
	var intCode = strCaracter.charCodeAt(0); //Código ASCII do caracter enviado
    // Caracteres aceitos: 000 - 031; 033 - 047; 058 - 064; 091 - 096; 123 - 191; 215 - 216; 247 - 248
    return (intCode >= 0 && intCode <= 31) || (intCode >= 33 && intCode <= 47) || (intCode >= 58 && intCode <= 64) || (intCode >= 91 && intCode <= 96) || (intCode >= 123 && intCode <= 191) || (intCode >= 215 && intCode <= 216) || (intCode >= 247 && intCode <= 248)
}

//***********************************************************************
//Objetivos	: Valida a digitação apenas de números
//Premissas	: 
//Entradas	: Captura de evento do teclado
//Saída		: True ou false, indicando se o caractere é valido.
//***********************************************************************
function ValidaTeclaData(objCampo) {
	var strValor = objCampo.value; //Conteúdo do campo
	var strTecla = String.fromCharCode(event.keyCode); //Valor da tecla pressionada
	var intTamanho; //Tamanho da string
	var blnRetorno;

	blnRetorno = (ValidaDigitoInteiro(strTecla)); //Retorno da função
	event.returnValue = blnRetorno;
	return;
}

//***********************************************************************
//Objetivos	: Valida se o caracter enviado é um número
//Premissas	: 
//Entradas	: Caracter
//Saída		: True ou false para o caracter enviado
//***********************************************************************
function ValidaKeyUpNumero(intCode) {
	//var intCode = strCaracter.charCodeAt(0); //Código ASCI do caracter enviado
	// Caracteres aceitos: 048 - 057; 96 - 105
    return ((intCode >= 48 && intCode <= 57)||(intCode >= 96 && intCode <= 105));

}

//***********************************************************************
//Objetivos	: Valida se é um caracter especial não permitido para o CampoNomeArquivo
//Premissas	: 
//Entradas	: Caracter
//Saída		: True ou false para o caracter enviado
//***********************************************************************
function ValidaCaracterSpecialArquivo(strCaracter) {
	var intCode = strCaracter.charCodeAt(0); //Código ASCII do caracter enviado
    // Caracteres não aceitos: " - 034, * - 042, / - 047, : - 058, < - 060, > - 062, ? - 063, \ - 092, | - 124
    return (intCode == 34) || (intCode == 42) || (intCode == 47) || (intCode == 58) || 
           (intCode == 60) || (intCode == 62) || (intCode == 63) || (intCode == 92) || (intCode == 124)
}

/*
Funções de validação específicas
*/

//***********************************************************************
//Objetivos	: Valida o CNPJ
//Premissas	: 
//Entradas	: Objeto campo
//Saída		: True ou false, indicando a validação
//***********************************************************************
function ValidaCNPJ(objCampo) {
    var bolCNPJ = true; //Variável de retorno, validando ou não o CNPJ
    var intContador; //Contador usado para varrer as strings
    var strCNPJ = SoNumero(objCampo.value); //CNPJ apenas com números
    var strPriBlocoCNPJ = strCNPJ.substr(0,12); //Primeiro bloco do CNPJ
    var strSegBlocoCNPJ = strCNPJ.substr(12,2); //Segundo bloco do CNPJ
    var strApoioCNPJ = 0; //Variável de apoio para validação do CNPJ
    
    //Se campo vazio, aceita a digitação
    if (strCNPJ == '')
    {
        return true;
    }

    for (intContador = 0; intContador < 12; intContador++)
    {
        strApoioCNPJ += strPriBlocoCNPJ.charAt(11-intContador)*(2+(intContador % 8));
    }
    
    if (strApoioCNPJ == 0) {
        bolCNPJ = false;
    }
    
    strApoioCNPJ = 11 - (strApoioCNPJ % 11);
    
    if (strApoioCNPJ > 9){
        strApoioCNPJ = 0;
    }
    
    if (strSegBlocoCNPJ.charAt(0) != strApoioCNPJ){
        bolCNPJ = false;
    }
    
    strApoioCNPJ *= 2;
    
    for (intContador = 0; intContador < 12; intContador++)
    {
        strApoioCNPJ += strPriBlocoCNPJ.charAt(11-intContador)*(2+((intContador+1) % 8));
    }
    
    strApoioCNPJ = 11 - (strApoioCNPJ % 11);
    
    if (strApoioCNPJ > 9){
        strApoioCNPJ = 0;
    }
    
    if (strSegBlocoCNPJ.charAt(1) != strApoioCNPJ){
        bolCNPJ = false;
    }
    
    //Se tamanho do CNPJ diferente de 14, retorna falso. Evita falsos positivos quando o dígito verificador termina em 0
    if (strCNPJ.length != 14){
        bolCNPJ = false;
    }

    if (bolCNPJ == false) {
		alert ('CNPJ inválido');
        objCampo.focus();
        objCampo.select();
        return false;
   	}
	return true;
}

//***********************************************************************
//Objetivos	: Valida CPF
//Premissas	: 
//Entradas	: Objeto campo
//Saída		: True ou false indicando a validação
//***********************************************************************
function ValidaCPF(objCampo) {
   	var intContador; //Contador de posição
   	var strCPFTemp = 0; //Variável de apoio na validação
   	
   	var cpf = objCampo.value; //Valor do campo CPF
   	
   	var strPriBlocoCPF; //Primeira parte do CPF
   	var strSegBlocoCPF; //Segunda parte do CPF
   	
   	var strApoioCPF; //Variável de apoio na validação do CPF

   	cpf = SoNumero(cpf);

   	strPriBlocoCPF = cpf.substr(0,9); //Primeira parte do CPF
   	strSegBlocoCPF = cpf.substr(9,2); //Segunda parte do CPF

	if (cpf == "00000000000") {
		alert ('CPF inválido');
        objCampo.focus();
        objCampo.select();
        return false;
	}

   	for (intContador = 0; intContador < 9; intContador++) {
   		strCPFTemp += strPriBlocoCPF.charAt(intContador)*(10-intContador);
   	}

   	strCPFTemp = 11 - (strCPFTemp % 11);
   	if (strCPFTemp > 9) strCPFTemp = 0;
   
   	strApoioCPF = strCPFTemp * 2;

   	for (intContador = 0; intContador < 9; intContador++) {
   		strApoioCPF += strPriBlocoCPF.charAt(intContador)*(11-intContador);
   	}
   	strApoioCPF = 11 - (strApoioCPF % 11);
   	if (strApoioCPF > 9) strApoioCPF = 0;

   	if (strSegBlocoCPF.charAt(0) != strCPFTemp || strSegBlocoCPF.charAt(1) != strApoioCPF) {
   		alert ('CPF inválido');
        objCampo.focus();
        objCampo.select();
        return false;
   	}
	return true;
}

//***********************************************************************
//Objetivos	: Valida o CEP
//Premissas	: 
//Entradas	: Valor do campo
//Saída		: True ou false
//***********************************************************************
function ValidaCEP(objCampo){
	var blnRetorno; //Retorno da função
	var strValor = objCampo.value; //Valor do campo
	var intHifen; //Posição do hifen, se existir
	
	if (strValor != ''){
		intHifen = strValor.indexOf("-");

		if ((intHifen == 5) && (strValor.length == 9)){
			return true;
		}
		else{
			alert('CEP inválido.');
			objCampo.focus();
			objCampo.select();
			return false;
		}
	}
}

//***********************************************************************
//Objetivos	: Valida o NYSE
//Premissas	: 
//Entradas	: Valor do campo
//Saída		: True ou false
//***********************************************************************
function ValidaNYSE(objCampo){
	var blnRetorno; //Retorno da função
	var strValor = objCampo.value; //Valor do campo
	var intHifen; //Posição do hifen, se existir
	
	if (strValor != ''){
		intHifen = strValor.indexOf("-");

		if ((intHifen == 2) && (strValor.length == 8)){
			return true;
		}
		else{
			alert('NYSE inválido.');
			objCampo.focus();
			objCampo.select();
			return false;
		}
	}
}

//***********************************************************************
//Objetivos	: Valida se o campo é alfanumérico
//Premissas	: Valor do campo, flag permitindo letras, flag permitindo caracteres acentuados, 
//			  flag permitindo números, flag permitindo espaços, flag permitindo caracteres especiais,
//			  tamanho máximo e mínimo do campo, flag indicando se o campo deve ser convertido para caixa alta ou baixa,
//			  mensagem personalizada no caso de erro na validação.
//Entradas	: 
//Saída		: 
//***********************************************************************
function ValidaAlfanumerico(objCampo, blnCharAlfa, blnCharAcent, blnCharNumber, blnSpaces, blnCharSpecial, intMaxLength, intMinLength, intCase, strMsgNotValid){
	var blnRetorno; //Retorno da função
	var strValor = objCampo.value; //Valor do campo
	var strMensagem = ''; //Mensagem de erro
	blnRetorno = true;
	
	if ((strValor.length < intMinLength) && (strValor.length > 0)){
		if (strMsgNotValid == ''){
			alert('O campo deve ter no mínimo ' + intMinLength + ' caracteres!');
		}
		else{
			alert(strMsgNotValid);
		}		
		objCampo.focus();
		objCampo.select();
		return;
	}
	
	if (strValor.length > intMaxLength){
		if (strMsgNotValid == ''){
			alert('O campo deve ter no máximo ' + intMaxLength + ' caracteres!');
		}
		else{
			alert(strMsgNotValid);
		}		
		objCampo.focus();
		objCampo.select();
		return;
	}
	
	for (intContador=0; intContador < strValor.length; intContador++)
	{
		blnRetorno = ((ValidaLetras(strValor.substr(intContador,1)) && blnCharAlfa) || (ValidaAcentos(strValor.substr(intContador,1)) && blnCharAcent) || (ValidaDigitoInteiro(strValor.substr(intContador,1)) && blnCharNumber) || (ValidaCaracterSpecial(strValor.substr(intContador,1)) && blnCharSpecial) || (strValor.substr(intContador,1) == ' ' && blnSpaces));
		if (!blnRetorno){
			intContador = strValor.length;
		}
	}

	if (blnRetorno == false){
		if (blnCharAlfa){
			strMensagem = 'letras';
		}
		if (blnCharNumber){
			if (strMensagem == ''){
				strMensagem = 'números';
			}
			else{
				if (blnSpaces || blnCharSpecial){
					strMensagem += ', números';
				}
				else
				{
					strMensagem += ' e números';
				}				
			}
		}
		if (blnSpaces){
			if (strMensagem == ''){
				strMensagem = 'espaços';
			}
			else{
				if (blnCharSpecial){
					strMensagem += ', espaços';
				}
				else{
					strMensagem += ' e espaços';
				}				
			}
		}
		if (blnCharSpecial){
			if (strMensagem == ''){
				strMensagem = 'caracteres especiais';
			}
			else{
				strMensagem += ' e caracteres especiais';
			}
		}

		if (strMsgNotValid == ''){
			alert ('Digite apenas ' + strMensagem + '.');
		}
		else{
			alert(strMsgNotValid);
		}
		
		objCampo.focus();
		objCampo.select();
		return false;
	}
	
	switch(intCase){
		case 1:
			objCampo.value = strValor.toUpperCase();
			break;
		case 2:
			objCampo.value = strValor.toLowerCase();
			break;
	}
}

//***********************************************************************
//Objetivos	: Valida se o campo é alfanumérico
//Premissas	: 
//Entradas	: Valor do campo
//Saída		: 
//***********************************************************************
function ValidaNomeArquivo(objCampo, intMaxLength, intMinLength){
	var blnRetorno;                 // Retorno da função
	var strValor = objCampo.value;  // Valor do campo
	var strMensagem = '';           // Mensagem de erro
	blnRetorno = true;
	
	if ((strValor.length < intMinLength) && (strValor.length > 0)){
        alert('O campo deve ter no mínimo ' + intMinLength + ' caracteres!');
		objCampo.focus();
		objCampo.select();
		return false;
	}
	
	if (strValor.length > intMaxLength){
		alert('O campo deve ter no máximo ' + intMaxLength + ' caracteres!');
		objCampo.focus();
		objCampo.select();
		return false;
	}
	
	for (intContador=0; intContador < strValor.length; intContador++)
	{
		blnRetorno = (!ValidaCaracterSpecialArquivo(strValor.substr(intContador, 1)));

		if (!blnRetorno) break;
	}

	if (!blnRetorno){
        alert ('O campo não pode conter qualquer um dos seguintes caracteres: \ / * : ? " < > |');
		
		objCampo.focus();
		objCampo.select();
		return false;
	}
}

//***********************************************************************
//Objetivos	: Valida e-mail
//Premissas	: 
//Entradas	: Valor do campo
//Saída		: True para e-mails válidos. Falso para inválidos.
//***********************************************************************
function ValidaEmail(objCampo){
	var blnEmailValido; //Retorno da função
	if (objCampo.value != '') {
		blnEmailValido = objCampo.value.match("^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$"); //Parece perfeita - Extraida de http://www.quirksmode.org/js/mailcheck.html
	}
	else{
		blnEmailValido = true;
	}

	if (blnEmailValido){
		return true;
	}
	else{
		alert('E-mail inválido.');
		objCampo.focus();
		objCampo.select();
		return false;
	}
}
/*
Funções de formatação
*/

//***********************************************************************
//Objetivos	: Converte todos os caracteres do campo para maiúsculo
//Premissas	: 
//Entradas	: Campo a ser convertido
//Saída		: Campo reformatado
//***********************************************************************
function FormataMaiuscula(objCampo) {
	objCampo.value = objCampo.value.toUpperCase();
}

//***********************************************************************
//Objetivos	: Formata campo numérico real ao se ganhar o foco
//Premissas	: 
//Entradas	: Objeto campo, flag indicando que ele aceita negativos
//Saída		: Objeto campo formatado
//***********************************************************************
function FormataNumeroRealFoco(objCampo, blnNegativo) 
{
    objCampo.value = SoNumeroReal(objCampo.value, blnNegativo);
	objCampo.select();
}

//***********************************************************************
//Objetivos	: Formata campo moeda ao se ganhar o foco
//Premissas	: 
//Entradas	: Objeto campo
//Saída		: Objeto campo formatado
//***********************************************************************
function FormataMoedaFoco(objCampo) 
{
	objCampo.value = SoNumeroMoeda(objCampo.value);
	objCampo.select();
}

//***********************************************************************
//Objetivos	: Formata moeda ao se perder o foco
//Premissas	: 
//Entradas	: Objeto campo, número de casas decimais
//Saída		: Objeto campo formatado
//***********************************************************************
function FormataMoeda(objCampo, intTamDecimal) 
{
	var strValor = objCampo.value; //Valor do campo
	var intVirgula = strValor.search(','); //Posição da vírgula, se existir
	var strValorFormat = ''; //Valor do campo após formatação
	var intDecimal = intContador = intPosicao = 0; //Posição das casas decimais

	if (strValor != '')
	{
		if (intVirgula == -1)
			strValor += "," + MontaStringIgual("0", intTamDecimal);
		else
		{
			intDecimal = (strValor.substr(intVirgula + 1)).length;
			if (intDecimal <= intTamDecimal)
				strValor += MontaStringIgual("0", intTamDecimal - intDecimal);
			else
			{
				alert ('Número de casas decimais (' + intDecimal + ') maior do que o permitido (' + intTamDecimal + ') !');
				objCampo.focus();
				objCampo.select();
				return false;
			}
		}
		if (strValor.length > objCampo.maxLength)
		{
			if (intVirgula == -1)
				alert ('Parte inteira (' + (objCampo.value.length - intDecimal) + ') maior do que o permitido (' + (objCampo.maxLength - intTamDecimal - 1) + ') !');
			else
				alert ('Parte inteira (' + (objCampo.value.length - intDecimal - 1) + ') maior do que o permitido (' + (objCampo.maxLength - intTamDecimal - 1) + ') !');
			objCampo.focus();
			objCampo.select();
			return false;
		}
		else
			objCampo.value = strValor;

		if (strValor.substr(0,1) == ",")
			strValor = '0' + strValor;

		intVirgula = strValor.search(',');
		strValorFormat = strValor.substr(intVirgula);
		for (intContador = intVirgula - 1; intContador >= 0; intContador--)
		{
			if (intPosicao == 3)
			{
				strValorFormat = '.' + strValorFormat;
				intPosicao = 0;
			}
			strValorFormat = strValor.substr(intContador, 1) + strValorFormat;
			intPosicao++;
		} 
		objCampo.value = strValorFormat;
	}
}

//***********************************************************************
//Objetivos	: Formata número real ao se ganhar o foco
//Premissas	: 
//Entradas	: Objeto campo, valores máximo e mínimo, número de casas decimais, 
//            flag indicando se aceita negativos, flag indicando se o campo deve ser formatado na casa dos milhares, 
//            mensagem de erro opcional no caso de valor inválido
//Saída		: Objeto campo
//***********************************************************************
function FormataNumeroReal(objCampo, strValMin, strValMax, intTamDecimal, blnNegativo, blnFormata, strMsgNotValid)
{
	//Remove zeros a esquerda antes de iniciar formatação, convertendo valor para double e de volta para string.
	var dblValor = new Number(objCampo.value.replace(',','.')); //Valor sem zeros a esquerda
	var strValor;       // Valor de devolução
	var intVirgula;     // Posição da vírgula, se existir
	var intNegativo;    // Posição do hífen
    var strValorFormat; // Valor de devolução, já formatado conforme as regras
    var intDecimal = intContador = intPosicao = 0; //Variáveis de apoio
    var intTamanhoInteiro;          // Tamanho da parte inteira do campo
    var intTamanhoMaximoInteiro;    // Tamanho máximo da parte inteira do campo
    var strValorSplit;  // Variável que armazena as porções inteira e decimal do campo
    var intValMin;      // Valor mínimo do campo
    var intValMax;      // Valor máximo do campo
	
	if (isNaN(dblValor)){
		dblValor = 0;
	}	

	if (dblValor != 0){
		strValor = new String(objCampo.value.replace(',','.'));
	}
	else{
		strValor = objCampo.value;
	}

	strValor = strValor.replace('.',',');
	intVirgula = strValor.search(',');
	intNegativo = strValor.search('-');
	strValorFormat = '';
	
	intValMin = new Number(strValMin.replace(',','.'));
	intValMax = new Number(strValMax.replace(',','.'));
	
	if (strValor != '')
	{
		if (intVirgula == -1){
			if (intTamDecimal > 0){
				strValor += "," + MontaStringIgual("0", intTamDecimal);
			}
		}
		else
		{
			intDecimal = (strValor.substr(intVirgula + 1)).length;
			if (intTamDecimal != 0){
				if (intDecimal <= intTamDecimal)
					strValor += MontaStringIgual("0", intTamDecimal - intDecimal);
				else
				{
					if (strMsgNotValid == ''){
						alert ('Número de casas decimais (' + intDecimal + ') maior do que o permitido (' + intTamDecimal + ') !');
					}
					else{
						alert (strMsgNotValid);
					}					
					objCampo.focus();
					objCampo.select();
					return false;
				}
			}
			else{
				if (strMsgNotValid == ''){
					alert ('Digite apenas números inteiros!');
				}
				else{
					alert(strMsgNotValid);
				}
				objCampo.focus();
				objCampo.select();
				return false;
			}			
		}

		if (strValMin != '' && dblValor < intValMin){
			if (strMsgNotValid == ''){
				alert ('Não digite valores inferiores a ' + strValMin + '!');
			}
			else{
				alert(strMsgNotValid);
			}			
			objCampo.focus();
			objCampo.select();
			return false;
		}
		if (strValMax != '' && dblValor > intValMax){
			if (strMsgNotValid == ''){
				alert ('Não digite valores superiores a ' + strValMax + '!');
			}
			else{
				alert(strMsgNotValid);
			}			
			objCampo.focus();
			objCampo.select();
			return false;
		}

		if (intTamDecimal > 0){
			strValorSplit = strValor.split(",");
			if (intNegativo > -1){
				intTamanhoInteiro = strValorSplit[0].length - 1;
			}
			else{
				intTamanhoInteiro = strValorSplit[0].length;
			}
			intTamanhoMaximoInteiro = objCampo.maxLength - intTamDecimal - 1;
		}
		else{
			if (intNegativo > -1){
				intTamanhoInteiro = strValor.length - 1;
			}
			else{
				intTamanhoInteiro = strValor.length;
			}
			intTamanhoMaximoInteiro = objCampo.maxLength;
		}
		
		if (intTamanhoInteiro > intTamanhoMaximoInteiro){
			if (strMsgNotValid == ''){
				alert ('Parte inteira (' + (intTamanhoInteiro) + ') maior do que o permitido (' + (intTamanhoMaximoInteiro) + ') !');
			}
			else{
				alert(strMsgNotValid);
			}
			objCampo.focus();
			objCampo.select();
			return false;
		}
		else{
			objCampo.value = strValor;
		}

		if ((strValor.substr(0,1) == ",") || (strValor.substr(0,2) == "-,")){
			if (intNegativo == -1){
				strValor = '0' + strValor;
			}
			else{
				strValor = '-0' + strValor.replace("-", "");
			}
		}

		intVirgula = strValor.search(',');
		if (intVirgula < 0){
			intVirgula = strValor.length;
		}
		strValorFormat = strValor.substr(intVirgula);
		if (blnFormata){
			for (intContador = intVirgula - 1; intContador >= 0; intContador--)
			{
				if (intPosicao == 3)
				{
					if (strValor.substr(intContador, 1) != '-'){
						strValorFormat = '.' + strValorFormat;
					}				
					intPosicao = 0;
				}
				strValorFormat = strValor.substr(intContador, 1) + strValorFormat;
				intPosicao++;
			}
		}
		else{
			strValorFormat = strValor;
		}
		//Remove sinal negativo, se necessário
		if (intNegativo > -1){
			if ((blnNegativo == false) || (dblValor == 0)){
				strValorFormat = strValorFormat.substr(1,strValorFormat.length - 1);
			}
		}

		objCampo.value = strValorFormat;		
	}
}

/*
Funções de validação de "paste"
*/
//***********************************************************************
//Objetivos	: Valida a colagem de dados em campo texto
//Premissas	: 
//Entradas	: Objeto campo
//Saída		: Objeto campo
//***********************************************************************
function ValidaPasteTexto(objCampo)
{
	var strTexto = RetornaClipBoard(); //Valor armazenado no clipboard
	LimpaClipBoard();
	if (strTexto != '')
	{
		if (objCampo.maxLength > 0)
		{
			if (objCampo.maxLength >= strTexto.length)
				objCampo.value = strTexto;
			else
				objCampo.value = strTexto.substr(0,objCampo.maxLength);
		}
		else
			objCampo.value = strTexto;
	}
}

//***********************************************************************
//Objetivos	: Valida a colagem de dados em campo CEP
//Premissas	: 
//Entradas	: Objeto campo
//Saída		: Objeto campo
//***********************************************************************
function ValidaPasteCEP(objCampo)
{
	var strTexto = RetornaClipBoard(); //Valor armazenado no clipboard
	LimpaClipBoard();
	if (strTexto != '')
	{
		strTexto = SoNumero(strTexto);
		if (strTexto.length == 8)
			objCampo.value = strTexto.substr(0,5) + "-" + strTexto.substr(5,3);
		else
			objCampo.value = '';
	}
}

//***********************************************************************
//Objetivos	: Valida a colagem de dados em campo NYSE
//Premissas	: 
//Entradas	: Objeto campo
//Saída		: Objeto campo
//***********************************************************************
function ValidaPasteNYSE(objCampo)
{
	var strTexto = RetornaClipBoard(); //Valor armazenado no clipboard
	LimpaClipBoard();
	if (strTexto != '')
	{
		strTexto = SoNumero(strTexto);
		if (strTexto.length == 7)
			objCampo.value = strTexto.substr(0,2) + "-" + strTexto.substr(2,5);
		else
			objCampo.value = '';
	}
}

//***********************************************************************
//Objetivos	: Valida a colagem de dados em campo CPF
//Premissas	: 
//Entradas	: Objeto campo
//Saída		: Objeto campo
//***********************************************************************
function ValidaPasteCPF(objCampo)
{
	var strTexto = RetornaClipBoard(); //Valor armazenado no clipboard
	LimpaClipBoard();
	if (strTexto != '')
	{
		strTexto = SoNumero(strTexto);
		if (strTexto.length > 11){
			strTexto = strTexto.substr(0,11);
		}
		if (strTexto.length == 11)
			objCampo.value = strTexto.substr(0,3) + "." + strTexto.substr(3,3) + "." + strTexto.substr(6,3) + "-" + strTexto.substr(9,2);
		else
			objCampo.value = '';
	}
}

//***********************************************************************
//Objetivos	: Valida a colagem de dados em campo CNPJ
//Premissas	: 
//Entradas	: Objeto campo
//Saída		: Objeto campo
//***********************************************************************
function ValidaPasteCNPJ(objCampo)
{
	var strTexto = RetornaClipBoard(); //Valor armazenado no clipboard
	LimpaClipBoard();
	if (strTexto != '')
	{
		strTexto = SoNumero(strTexto);
		if (strTexto.length > 14){
			strTexto = strTexto.substr(0,14);
		}
		if (strTexto.length == 14)
			objCampo.value = strTexto.substr(0,2) + "." + strTexto.substr(2,3) + "." + strTexto.substr(5,3) + "/" + strTexto.substr(8,4) + "-" + strTexto.substr(12,2);
		else
			objCampo.value = '';
	}
}

//***********************************************************************
//Objetivos	: Valida a colagem de dados em campo Data
//Premissas	: 
//Entradas	: Objeto campo
//Saída		: Objeto campo
//***********************************************************************
function ValidaPasteData(objCampo)
{
	var strTexto = RetornaClipBoard(); //Valor armazenado no clipboard
	LimpaClipBoard();
	if (strTexto != '')
	{
		strTexto = SoNumero(strTexto);
		if (strTexto.length == 8)
			objCampo.value = strTexto.substr(0,2) + "/" + strTexto.substr(2,2) + "/" + strTexto.substr(4,4);
		else
			objCampo.value = '';
	}
}

//***********************************************************************
//Objetivos	: Valida a colagem de dados em campo Data Reduzida
//Premissas	: 
//Entradas	: Objeto campo
//Saída		: Objeto campo
//***********************************************************************
function ValidaPasteDataReduzida(objCampo)
{
	var strTexto = RetornaClipBoard(); //Valor armazenado no clipboard
	LimpaClipBoard();
	if (strTexto != '')
	{
		strTexto = SoNumero(strTexto);
		if (strTexto.length == 6)
			objCampo.value = strTexto.substr(0,2) + "/" + strTexto.substr(2,4);
		else
			objCampo.value = '';
	}
}

//***********************************************************************
//Objetivos	: Valida a colagem de dados em campo Hora
//Premissas	: 
//Entradas	: Objeto campo
//Saída		: Objeto campo
//***********************************************************************
function ValidaPasteHora(objCampo)
{
	var strTexto = RetornaClipBoard(); //Valor armazenado no clipboard
	LimpaClipBoard();
	if (strTexto != '')
	{
		strTexto = SoNumero(strTexto);
		if (strTexto.length > 0)
			objCampo.value = strTexto.substr(0,2) + ":" + strTexto.substr(2,2) + ":" + strTexto.substr(4,2);
		else
			objCampo.value = '';
	}
}

//***********************************************************************
//Objetivos	: Valida a colagem de dados em campo Hora Reduzida
//Premissas	: 
//Entradas	: Objeto campo
//Saída		: Objeto campo
//***********************************************************************
function ValidaPasteHoraReduzida(objCampo)
{
	var strTexto = RetornaClipBoard(); //Valor armazenado no clipboard
	LimpaClipBoard();
	if (strTexto != '')
	{
		strTexto = SoNumero(strTexto);
		if (strTexto.length > 0)
			objCampo.value = strTexto.substr(0,2) + ":" + strTexto.substr(2,2);
		else
			objCampo.value = '';
	}
}

//***********************************************************************
//Objetivos	: Valida a colagem de dados em campo Moeda
//Premissas	: 
//Entradas	: Objeto campo
//Saída		: Objeto campo
//***********************************************************************
function ValidaPasteMoeda(objCampo)
{
	var strTexto = RetornaClipBoard(); //Valor armazenado no clipboard
	LimpaClipBoard();
	if (strTexto != '')
	{
		strTexto = SoNumeroMoeda(strTexto);
		if (objCampo.maxLength > 0)
		{
			if (objCampo.maxLength >= strTexto.length)
			{
				objCampo.value = strTexto;
			}
			else
			{
				objCampo.value = strTexto.substr(0, objCampo.maxLength);
			}
		}
		else
		{
			objCampo.value = strTexto;
		}
	}
}

//***********************************************************************
//Objetivos	: Valida a colagem de dados em campos numérico real
//Premissas	: 
//Entradas	: Objeto campo, indicativo se aceita negativos, número de casas decimais
//Saída		: Objeto campo
//***********************************************************************
function ValidaPasteNumeroReal(objCampo, blnNegativo, intDecimal)
{
	var strTexto = RetornaClipBoard(); //Valor armazenado no clipboard
	var intVirgula; //Posição da vírgula, se existir
	LimpaClipBoard();

	if (strTexto != '')
	{
		strTexto = SoNumeroReal(strTexto, blnNegativo);
		intVirgula = strTexto.search(',');
		
		//Se campo não aceita decimais, remove tudo a direita da vírgula
		if ((intDecimal == 0) && (intVirgula >-1)){
			strTexto = strTexto.substr(0, intVirgula)
		}
		
		if (objCampo.maxLength > 0)
		{
			if (objCampo.maxLength >= strTexto.length)
			{
				objCampo.value = strTexto;
			}
			else
			{
				objCampo.value = strTexto.substr(0, objCampo.maxLength);
			}
		}
		else
		{
			objCampo.value = strTexto;
		}
	}
}

//***********************************************************************
//Objetivos	: Valida colagem de dados em campo Alfanumerico
//Premissas	: 
//Entradas	: Objeto campo, se aceita caracteres alfabeticos, se aceita acentos, 
//            se aceita números, se aceita espaços, se aceita caracteres especiais,
//            se aceita apenas maiúsculos
//Saída		: Objeto campo
//***********************************************************************
function ValidaPasteAlfanumerico(objCampo, blnCharAlfa, blnCharAcent, blnCharNumber, blnSpaces, blnCharSpecial, intCase)
{
	var strTexto = RetornaClipBoard(); //Valor armazenado no clipboard
	LimpaClipBoard();
	if (strTexto != '')	
	{
		switch(intCase){
			case 1:
				strTexto = strTexto.toUpperCase();
				break;
			case 2:
				strTexto = strTexto.toLowerCase();
				break;
		}
		
		if (!blnCharAlfa){
			strTexto = RemoveLetras(strTexto);
		}
		if (!blnCharAcent){
			strTexto = RemoveAcentos(strTexto);
		}
		if (!blnCharNumber){
			strTexto = RemoveNumeros(strTexto);
		}
		if (!blnSpaces){
			strTexto = RemoveEspacos(strTexto);
		}
		if (!blnCharSpecial){
			strTexto = RemoveCaracteresEspeciais(strTexto);
		}
		
		if (objCampo.maxLength > 0)
		{
			if (objCampo.maxLength >= strTexto.length)
			{
				objCampo.value = strTexto;
			}
			else
			{
				objCampo.value = strTexto.substr(0, objCampo.maxLength);
			}
		}
		else
		{
			objCampo.value = strTexto;
		}
	}
}

//***********************************************************************
//Objetivos	: Valida colagem de dados em campo Alfanumerico
//Premissas	: 
//Entradas	: Objeto campo
//Saída		: Objeto campo
//***********************************************************************
function ValidaPasteNomeArquivo(objCampo)
{
	var strTexto = RetornaClipBoard(); //Valor armazenado no clipboard
	LimpaClipBoard();
	if (strTexto != '')	
	{
        strTexto = RemoveCaracteresEspeciaisArquivo(strTexto);
		
		if (objCampo.maxLength > 0)
		{
			if (objCampo.maxLength >= strTexto.length)
			{
				objCampo.value = strTexto;
			}
			else
			{
				objCampo.value = strTexto.substr(0, objCampo.maxLength);
			}
		}
		else
		{
			objCampo.value = strTexto;
		}
	}
}

//***********************************************************************
//Objetivos	: Valida colagem de dados em campos do tipo Inteiro
//Premissas	: 
//Entradas	: Objeto campo
//Saída		: Objeto campo
//***********************************************************************
function ValidaPasteInteiro(objCampo)
{
	var strTexto = RetornaClipBoard(); //Valor armazenado no clipboard
	LimpaClipBoard();
	if (strTexto != '')
	{
		strTexto = SoNumero(strTexto);
		if (objCampo.maxLength > 0)
		{
			if (objCampo.maxLength >= strTexto.length)
			{
				objCampo.value = strTexto;
			}
			else
			{
				objCampo.value = strTexto.substr(0, objCampo.maxLength);
			}
		}
		else
		{
			objCampo.value = strTexto;
		}
	}
}

/*
Funções de apoio
*/

//***********************************************************************
//Objetivos	: Monta string com X caracteres repetidos
//Premissas	: 
//Entradas	: Caracter a ser repetido, número de repetições
//Saída		: String com os X caracteres
//***********************************************************************
function MontaStringIgual(strCaracter, intTamanho)
{
	var intContador; //Contador usado na repetição
	var strString = ''; //String de retorno
	for (intContador = 1; intContador <= intTamanho; intContador++)
		strString += strCaracter;
	return strString;
}

//***********************************************************************
//Objetivos	: Retorna dados da área de transferência
//Premissas	: 
//Entradas	: 
//Saída		: Texto armazenado na área de transferência
//***********************************************************************
function RetornaClipBoard()
{
	return (window.clipboardData.getData('Text')).replace(/\t/g,'');
}

//***********************************************************************
//Objetivos	: Limpa área de transferência
//Premissas	: 
//Entradas	: 
//Saída		: 
//***********************************************************************
function LimpaClipBoard()
{
	return window.clipboardData.setData('Text','');
}

//***********************************************************************
//Objetivos	: Remove da string todos os caracteres que não aceitem as condições
//Premissas	: 
//Entradas	: String com o conteúdo a ser validado
//Saída		: String com os caracteres inválidos removidos
//***********************************************************************
function SoNumeroMoeda(strTexto)
{
	var intContador; //Contador usado para varrer a string
	var strRetorno; //Variável de retorno
	var blnVirgula = false; //Indica se existe vírgula
	strRetorno = '';
	for (intContador=0; intContador < strTexto.length; intContador++)
	{
		if ((!isNaN(strTexto.substr(intContador,1)) && strTexto.substr(intContador,1) != ' ') || strTexto.substr(intContador,1) == ',')
		{
			if (strTexto.substr(intContador,1) == ',')
			{
				if (blnVirgula == false)
				{
					blnVirgula = true;
					strRetorno = strRetorno + strTexto.substr(intContador,1);
				}
			}
			else
				strRetorno = strRetorno + strTexto.substr(intContador,1);
		}
	}
	return strRetorno;
}

//***********************************************************************
//Objetivos	: Remove da string todos os caracteres que não aceitem as condições
//Premissas	: 
//Entradas	: String com o conteúdo a ser validado
//Saída		: String com os caracteres inválidos removidos
//***********************************************************************
function SoNumeroReal(strTexto, blnNegativo)
{
	var intContador; //Contador usado para varrer a string
	var strRetorno; //Retorno da função
	var blnVirgula = false; //Indica se existe vírgula
	strRetorno = '';
	for (intContador=0; intContador < strTexto.length; intContador++)
	{
		if ((!isNaN(strTexto.substr(intContador,1)) && strTexto.substr(intContador,1) != ' ') || strTexto.substr(intContador,1) == ',' || (strTexto.substr(intContador,1) == '-' && blnNegativo))
		{
			if (strTexto.substr(intContador,1) == ',')
			{
				if (blnVirgula == false)
				{
					blnVirgula = true;
					strRetorno = strRetorno + strTexto.substr(intContador,1);
				}
			}
			else if (strTexto.substr(intContador,1) == '-' && blnNegativo ){
				if (intContador == 0){
					strRetorno = strRetorno + strTexto.substr(intContador,1);
				}				
			}
			else
				strRetorno = strRetorno + strTexto.substr(intContador,1);
		}
	}
	return strRetorno;
}

//***********************************************************************
//Objetivos	: Remove da string todos os caracteres que não aceitem as condições
//Premissas	: 
//Entradas	: String com o conteúdo a ser validado
//Saída		: String com os caracteres inválidos removidos
//***********************************************************************
function SoNumero(strTexto)
{
	var intContador; //Contador usado para varrer a string
	var strRetorno; //Retorno da função
	strRetorno = '';
	for (intContador=0; intContador < strTexto.length; intContador++)
	{
		if (!isNaN(strTexto.substr(intContador,1)) && strTexto.substr(intContador,1) != ' ')
			strRetorno = strRetorno + strTexto.substr(intContador,1);
	}
	return strRetorno;
}

//***********************************************************************
//Objetivos	: Remove da string todos os caracteres que não aceitem as condições
//Premissas	: 
//Entradas	: String com o conteúdo a ser validado
//Saída		: String com os caracteres inválidos removidos
//***********************************************************************
function RemoveLetras(strTexto){
	var strRetorno = ''; //Retorno da função
	for (intContador=0; intContador < strTexto.length; intContador++)
	{
		if (!ValidaLetras(strTexto.substr(intContador,1))){
			strRetorno += strTexto.substr(intContador,1);
		}
	}
	return strRetorno;
}

//***********************************************************************
//Objetivos	: Remove da string todos os caracteres que não aceitem as condições
//Premissas	: 
//Entradas	: String com o conteúdo a ser validado
//Saída		: String com os caracteres inválidos removidos
//***********************************************************************
function RemoveAcentos(strTexto){
	var strRetorno = ''; //Retorno da função
	for (intContador=0; intContador < strTexto.length; intContador++)
	{
		if (!ValidaAcentos(strTexto.substr(intContador,1))){
			strRetorno += strTexto.substr(intContador,1);
		}
	}
	return strRetorno;
}

//***********************************************************************
//Objetivos	: Remove da string todos os caracteres que não aceitem as condições
//Premissas	: 
//Entradas	: String com o conteúdo a ser validado
//Saída		: String com os caracteres inválidos removidos
//***********************************************************************
function RemoveNumeros(strTexto){
	var strRetorno = ''; //Retorno da função
	for (intContador=0; intContador < strTexto.length; intContador++)
	{
		if (!ValidaDigitoInteiro(strTexto.substr(intContador,1))){
			strRetorno += strTexto.substr(intContador,1);
		}
	}
	return strRetorno;
}

//***********************************************************************
//Objetivos	: Remove da string todos os caracteres que não aceitem as condições
//Premissas	: 
//Entradas	: String com o conteúdo a ser validado
//Saída		: String com os caracteres inválidos removidos
//***********************************************************************
function RemoveCaracteresEspeciais(strTexto){
	var strRetorno = ''; //Retorno da função
	for (intContador=0; intContador < strTexto.length; intContador++)
	{
		if (!ValidaCaracterSpecial(strTexto.substr(intContador,1))){
			strRetorno += strTexto.substr(intContador,1);
		}
	}
	return strRetorno;
}

//***********************************************************************
//Objetivos	: Remove da string todos os caracteres que não aceitem as condições
//Premissas	: 
//Entradas	: String com o conteúdo a ser validado
//Saída		: String com os caracteres inválidos removidos
//***********************************************************************
function RemoveCaracteresEspeciaisArquivo(strTexto){
	var strRetorno = ''; //Retorno da função
	for (intContador=0; intContador < strTexto.length; intContador++)
	{
		if (!ValidaCaracterSpecialArquivo(strTexto.substr(intContador,1))){
			strRetorno += strTexto.substr(intContador,1);
		}
	}
	return strRetorno;
}

//***********************************************************************
//Objetivos	: Remove da string todos os caracteres que não aceitem as condições
//Premissas	: 
//Entradas	: String com o conteúdo a ser validado
//Saída		: String com os caracteres inválidos removidos
//***********************************************************************
function RemoveEspacos(strTexto){
	var strRetorno = ''; //Retorno da função
	for (intContador=0; intContador < strTexto.length; intContador++)
	{
		if (strTexto.substr(intContador,1) != ' '){
			strRetorno += strTexto.substr(intContador,1);
		}
	}
	return strRetorno;
}

//***********************************************************************
//Objetivos	: Valida todos os campos da form
//Premissas	: 
//Entradas	: Nome da form
//Saída		: Status da validação (Validado ou não)
//***********************************************************************
function ValidarCampos(strFRM) 
{
	var objFrm = eval("document." + strFRM); //Objeto form
	var blnOK = true; //Retorno da função
	var intContador; //Contador de campos da form
	for (intContador=0; intContador < objFrm.length; intContador++) 
	{
		if (objFrm.item(intContador).required == 'true') 
		{
			if (objFrm.item(intContador).value == "") 
			{
				//if (objFrm.item(intContador).NomeCampo == "" || objFrm.item(intContador).NomeCampo == undefined)
					alert("Preenchimento obrigatório deste campo !");
				//else
				//	alert("O campo " + objFrm.item(intContador).NomeCampo + " é obrigatório !");
				objFrm.item(intContador).focus();
				intContador = objFrm.length;
				blnOK = false;
			}
		}
	}
	return blnOK;
}

//***********************************************************************
//Objetivos	: Limpa todos os campos do formulário
//Premissas	: 
//Entradas	: Nome da form
//Saída		: 
//***********************************************************************
function LimpaTela(strFRM) 
{
	var objFrm = eval('document.' + strFRM); //Objeto form
	var intContador; //Contador de campos da form
	for (intContador=0;intContador<objFrm.length;intContador++) 
	{
		if (objFrm.item(intContador).name.substring(0,3) == "txt") 
			objFrm.item(intContador).value = "";
		if (objFrm.item(intContador).name.substring(0,3) == "lst" || objFrm.item(intContador).name.substring(0,3) == "cbo") 
			objFrm.item(intContador).selectedIndex = -1;
		if (objFrm.item(intContador).name.substring(0,3) == "chk") 
			objFrm.item(intContador).checked = false;
	}
}

//***********************************************************************
//Objetivos	: Executa o método submit da form
//Premissas	: 
//Entradas	: Nome da form, endereço que receberá o submit
//Saída		: 
//***********************************************************************
function SubmetePagina(strFRM, strPagina) 
{
	var objFrm = eval("document." + strFRM); //Objeto form
	objFrm.action = strPagina;
	objFrm.submit();
}