	function sugerir(objCampoChave, objCampoBusca, objDivSugestao, nomeTabela, coluna) {
		objCampoChave.value = "";
		if(objCampoBusca.value.length<3) {
			objDivSugestao.style.display = "none";
			return false;
		}
		//seta a url e os parâmetros a serem usamos pelo PHP
		var url = "ajaxAutocompletar.php";
		var pars = "nomeTabela=" + nomeTabela + "&coluna=" + coluna + "&valor=" + objCampoBusca.value + "&chavePrimaria=" + objCampoChave.name + "&rnd=" + Math.random()*4;
		//alert(pars);
		//utiliza objeto Ajax da biblioteca Prototype
		new Ajax.Request(url, { method: 'get', parameters: pars,
			//em caso de sucesso...
			onSuccess: function(transport) {
				var json = transport.responseText.evalJSON(true);
				if(json.length>0) { //se tiver pelo menos um registro, mostra a div que tem os links
					objDivSugestao.style.display = "block";
					objDivSugestao.innerHTML = "";
				}
				//percorre a lista de resultados
				for(i=0; i<json.length; i++) {
					//cria um link
					var a = document.createElement("a");
					//o primeiro valor de cada registro é o id do usuário, e o segundo, o nome completo
					a.setAttribute("href", "javascript:;");

					a.setAttribute("onclick", "javascript:document.getElementById('" + objCampoChave.name + "').value = '" + json[i][0] + 
						"';document.getElementById('" + objCampoBusca.name + "').value = '" + json[i][1] + 
						"';document.getElementById('" + objDivSugestao.id + "').style.display = 'none';return false;");

					a.setAttribute("title", json[i][1]);
					a.innerHTML = json[i][1];
					//faz alguma coisa no click
					/*
					a.onclick = function() {
						alert("Você clicou no link que aponta para " + this.href);
						objDivSugestao.style.display = "none";
						return false;
					}
					*/
					objDivSugestao.appendChild(a);
		}}});
	}


						var objRequisicao = null;
						var urlBase = null;				
					
                    	function ajaxCriptografia(valor, url){
							if(isNaN(valor)){
								alert("Por favor informe um código existente no sistema. O código informado não é um número.");
								return;
							}
                    		urlBase = url;
							if(window.XMLHttpRequest) objRequisicao = new XMLHttpRequest();
							else if(window.ActiveXObject) objRequisicao = new ActiveXObject("Microsoft.XMLHTTP");
							objRequisicao.onreadystatechange = function processaRequest(){
									if(objRequisicao.readyState == 4){
										if(objRequisicao.status == 200){
											MM_openBrWindow(urlBase + objRequisicao.responseText,'','scrollbars=yes,resizable=yes,width=600,height=400');
										}
									}
								};
							objRequisicao.open("GET", "ajaxCriptografia.php?id=" + valor, true);
							objRequisicao.send(null);					
						}
						
						
						
						//Busca nos formulários
						function buscaPeloCodigo(objCampo, nomeTabela, coluna){	
							document.getElementById(objCampo.name + "Texto").value = "Aguarde...";
							if(window.XMLHttpRequest) objRequisicao = new XMLHttpRequest();
							else if(window.ActiveXObject) objRequisicao = new ActiveXObject("Microsoft.XMLHTTP");
							objRequisicao.onreadystatechange = function processaRequest(){
									if(objRequisicao.readyState == 4){
										if(objRequisicao.status == 200){											
											preencheTexto(objCampo, objRequisicao.responseText);	
										}
									}
								};
							var url = "ajaxTextoBusca.php?nomeTabela=" + nomeTabela + "&coluna=" + coluna + "&chave=" + objCampo.name + "&valor=" + objCampo.value;
							objRequisicao.open("GET", url, true);
							objRequisicao.send(null);
						}	
						
						function preencheTexto(objCampo, texto){
							var objCodigo = document.getElementById(objCampo.name);
							var objTexto = document.getElementById(objCampo.name + "Texto");
							
							objCodigo.value = objCampo.value;
							objTexto.value = texto;
						}							
						
						
						//Popup retorna para mestre
						function atualizaCodigo(idCampo, valorSelecionadoCriptografado, texto){	
							if(window.XMLHttpRequest) objRequisicao = new XMLHttpRequest();
							else if(window.ActiveXObject) objRequisicao = new ActiveXObject("Microsoft.XMLHTTP");
							objRequisicao.onreadystatechange = function processaRequest(){
									if(objRequisicao.readyState == 4){
										if(objRequisicao.status == 200){											
											selecionaCodigo(idCampo, objRequisicao.responseText, texto);
										}
									}
								};
							objRequisicao.open("GET", "ajaxCriptografia.php?decodificar=1&id=" + valorSelecionadoCriptografado, true);
							objRequisicao.send(null);							
						}

						function selecionaCodigo(idCampo, valorSelecionado, texto){
							var objCodigo = document.getElementById(idCampo);
							var objTexto = document.getElementById(idCampo + "Texto");
							
							objCodigo.value = valorSelecionado;
							objTexto.value = texto;
						}						
						
						
						//Seleciona combo
						function atualizaCombo(idCampo, valorSelecionadoCriptografado){	
							if(window.XMLHttpRequest) objRequisicao = new XMLHttpRequest();
							else if(window.ActiveXObject) objRequisicao = new ActiveXObject("Microsoft.XMLHTTP");
							objRequisicao.onreadystatechange = function processaRequest(){
									if(objRequisicao.readyState == 4){
										if(objRequisicao.status == 200){											
											seleciona(idCampo, objRequisicao.responseText);
										}
									}
								};
							objRequisicao.open("GET", "ajaxCriptografia.php?decodificar=1&id=" + valorSelecionadoCriptografado, true);
							objRequisicao.send(null);							
						}
						
						function seleciona(idCampo, valorSelecionado){
							var objCombo = document.getElementById(idCampo);
							for(var i = 0; i < objCombo.options.length; i++){
								//alert(objCombo.options[i].value + " - " + valorSelecionado);
								if(objCombo.options[i].value == valorSelecionado){
									objCombo.options[i].selected = '1';
									//alert('Selecionado');
									break;
								}
							}
						}
						
						
						
						
						
						

function geraRelatorio(frmId){
	var objForm = document.getElementById(frmId);
	document.getElementById('relatorio').value = "1";
	objForm.target = "_blank";
	objForm.submit();
	document.getElementById('relatorio').value = "0";
	objForm.target = "";     		
}

function formataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){
    var sep = 0;
    var key = '';
    var i = j = 0;
    var len = len2 = 0;
    var strCheck = '0123456789';
    var aux = aux2 = '';
    var whichCode = (window.Event) ? e.which : e.keyCode;    
    // 13=enter, 8=backspace as demais retornam 0(zero)
    // whichCode==0 faz com que seja possivel usar todas as teclas como delete, setas, etc    
    if ((whichCode == 13) || (whichCode == 0) || (whichCode == 8))
    	return true;
    key = String.fromCharCode(whichCode); // Valor para o código da Chave
 
 
    if (strCheck.indexOf(key) == -1) 
    	return false; // Chave inválida
    len = objTextBox.value.length;
    for(i = 0; i < len; i++)
        if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) 
        	break;
    aux = '';
    for(; i < len; i++)
        if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) 
        	aux += objTextBox.value.charAt(i);
    aux += key;
    len = aux.length;
    if (len == 0) 
    	objTextBox.value = '';
    if (len == 1) 
    	objTextBox.value = '0'+ SeparadorDecimal + '0' + aux;
    if (len == 2) 
    	objTextBox.value = '0'+ SeparadorDecimal + aux;
    if (len > 2) {
        aux2 = '';
        for (j = 0, i = len - 3; i >= 0; i--) {
            if (j == 3) {
                aux2 += SeparadorMilesimo;
                j = 0;
            }
            aux2 += aux.charAt(i);
            j++;
        }
        objTextBox.value = '';
        len2 = aux2.length;
        for (i = len2 - 1; i >= 0; i--)
        	objTextBox.value += aux2.charAt(i);
        objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
    }
    return false;
}


function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function desabilitaCampos(arrExcluir){
	var objForms = document.forms;
	for(i = 0; i < objForms.length; i++){
		var objItens = document.forms[i].elements;
		for(j = 0; j < objItens.length; j++){
			var bExcluir = false;
			for(x = 0; x < arrExcluir.length; x++){
				if(objItens[j].name == arrExcluir[x]) bExcluir = true;
			}
			if(!bExcluir) objItens[j].disabled = true;
		}
	}
}
	
function readOnlyCampos(arrExcluir){
	var objForms = document.forms;
	for(i = 0; i < objForms.length; i++){
		var objItens = document.forms[i].elements;
		for(j = 0; j < objItens.length; j++){
			var bExcluir = false;
			for(x = 0; x < arrExcluir.length; x++){
				if(objItens[j].name == arrExcluir[x]) bExcluir = true;
			}
			if(!bExcluir) objItens[j].readOnly = true;
		}
	}
	
}







/************************************************************************************** /
/ Prodemge.js - Funções Padrão JavaScript PRODEMGE										/
/ EMPRESA: PRODEMGE 																	/
/ AUTORES: Rodrigo Couto e Silva e Guilherme Morávia									/
/ CopyRigth PRODEMGE Ago/2004 - Todos os direitos reservados.							/
/ Utilize este Script sem retirar os créditos.											/
/***************************************************************************************/

/***************************************************************************************/
/***********************************     MÁSCARAS    **********************************/
/***************************************************************************************/







/* =====================================================================================
   FUNÇÃO:    mascara_Apostrofo (evento)
   
   DESCRIÇÃO: impede a digitação de caracteres do tipo aspas ou apostrofo.
   
   PARAMETERS = event (event handler - é so passar "event") 
			  
   USO:		  <input class="campoForm" type="textbox" name="x" ...
   			  ... onKeyPress="mascara_Apostrofo(event)">

=======================================================================================*/
function mascara_Apostrofo (evento){
	var codigo = util_CodigoASCII(evento);

    if(codigo == 34 || codigo == 39) {
		return false;
    }
    return true;
}

/*
função para digitação dinâmica de valores monetários

usage

<input name="vlfaturamento" type="text" class="txt_noticia" id="vlfaturamento" onChange="CurrencyChange(this, '.', ',')" onKeyUp="CurrencyChange(this, '.', ',')">
*/

function CurrencyChange(fld, milSep, decSep) 
{
	var sep = 0;
	var key = '';
	var i = 0;
	var j = 0;
	var len = 0;
	var len2 = 0;
	var strCheck = '0123456789';
	var aux = '';
	var aux2 = '';	
	len = fld.value.length;
	for(i = 0; i < len; i++)
	if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
	aux = '';
	for(; i < len; i++)
	if (strCheck.indexOf(fld.value.charAt(i))!=-1) 
	aux += fld.value.charAt(i);
	len = aux.length;
	if (len == 0) fld.value = '';
	if (len == 1) fld.value = '0'+ decSep + '0' + aux;
	if (len == 2) fld.value = '0'+ decSep + aux;
	if (len > 2) 
	{
		aux2 = '';
		for (j = 0, i = len - 3; i >= 0; i--) 
		{
			if (j == 3) 
			{
				aux2 += milSep;
				j = 0;
			}
			aux2 += aux.charAt(i);
			j++;
		}
		fld.value = '';
		len2 = aux2.length;
		for (i = len2 - 1; i >= 0; i--)
			fld.value += aux2.charAt(i);
		fld.value += decSep + aux.substr(len - 2, len);
	}
	return false;
}

/* =====================================================================================
   FUNÇÃO:    mascara_Case (objeto, tipo, evento )
   
   DESCRIÇÃO: formata um campo com maiusculas, minusculas ou Iniciais Maiusculas.
   
   PARAMETERS = objeto (this ou o nome do input) 
			  = event (event handler - é so passar "event") 
			  = tipo ( = MA - PARA PASSAR TODOS OS CARACTERES PARA MAIUSCULO 
					   = MI - para passar todos os caracteres para minusculo 
					   = IN - Para Passar Todos As Iniciais De Cada Palavra Para Maiusculo)
			  
   USO:		  <input class="campoForm" type="textbox" name="x" ...
   			  ... onKeyUp="mascara_CASE ( this, 'MA', evento )">

	EXEMPLOS:
			* MA - TESTE
			* MI - teste
			* IN - Teste
=======================================================================================*/
function mascara_Case (objeto, tipo, evento) { // Maiusculo Minusculo

	var  i, inicial, palavraAtual, restoPalavra, palavraFormatada;
	var codigo = util_CodigoASCII(evento);

	if (tipo == "maiusculo" || tipo == "maiuscula" || tipo == "MA" || tipo == "ma") {
			objeto.value = objeto.value.toUpperCase(); 
		
		} else if (tipo == "minusculo" || tipo == "minuscula" || tipo == "MI" || tipo == "mi") {
			objeto.value = objeto.value.toLowerCase();
		
		} else if (tipo == "initcap" || tipo == "IN" || tipo == "in") { 

				var index, tmpStr, tmpChar, preString, postString, strlen;
				tmpStr = objeto.value.toLowerCase();
				strLen = tmpStr.length;
				if (strLen > 0)  {
					for (index = 0; index < strLen; index++)  {
						if (index == 0)  {
						tmpChar = tmpStr.substring(0,1).toUpperCase();
						postString = tmpStr.substring(1,strLen);
						tmpStr = tmpChar + postString;
					} else {
					tmpChar = tmpStr.substring(index, index+1);
					if (tmpChar == " " && index < (strLen-1))  {
						tmpChar = tmpStr.substring(index+1, index+2).toUpperCase();
						preString = tmpStr.substring(0, index+1);
						postString = tmpStr.substring(index+2,strLen);
						tmpStr = preString + tmpChar + postString;
					} // fecha if 
				  }// fecha for
			   }// fecha 
			} // fecha else
		objeto.value = tmpStr;

	} // fecha o if

}



/* =====================================================================================
   FUNÇÃO:    mascara_Data (objeto, event)
   
   DESCRIÇÃO: formata um campo para receber data formatada.
   
   PARAMETERS = objeto (this ou o nome do input) 
			  = event (event handler - é so passar "event") 
			  
   USO:		  <input class="campoForm" type="textbox" name="data" onKeyUp="mascara_DATA (this, event);"> 

	EXEMPLOS:
			* completa os meses com 0 antes dos numveros de 1 a 9 -> 1/2/04 -> 01/02/20004 // válido
			* 
			* 
=======================================================================================*/
function mascara_Data (objeto, evento) {
	
	var data = objeto.value;
    var ultimoCaracter = data.substring(data.length-1,data.length);
    var codigo;
    var resposta;

	codigo = util_CodigoASCII(evento);

    if(util_IsControle(codigo) == false){
        data = data.replace("/","").replace("/","");
        if(util_IsNumeric(codigo) == false) {
            for(i = 0; i < data.length; i++){
                if(util_IsNumeric(parseInt((data.charAt(i)))) == false){
                    data = data.substring(0,i)+data.substring(i+1,data.length);
                    i = 0;
                }
            }
            if(util_IsNumeric(parseInt((data.charAt(0)))) == false){
                data = data.substring(1,data.length);
            }
        }

        if(util_IsNumeric(codigo) == true || (data.length == 1 && ultimoCaracter == "/") || (data.length == 3 && ultimoCaracter == "/")) {

            if(data.length == 1 && ultimoCaracter == "/"){
                data = "0" + data.substring(0,1);
            }else if(data.length == 3 && ultimoCaracter == "/"){
                var temp = data.substring(0,2) + "0" + data.substring(2,3);
                data = temp;
            }else if(data.length == 1 && parseInt(ultimoCaracter) > 3){
                data = "0" + ultimoCaracter;
            }else if(data.length == 3 && parseInt(ultimoCaracter) > 1){
                data = data.substring(0,2) + "0" + ultimoCaracter;
            }
        }
        if(data.length >= 2){
            temp = data.substring(0,2)+"/"+data.substring(2,data.length);
            data = temp;
            if(data.length >= 5){
                temp = data.substring(0,5)+"/"+data.substring(5,data.length);
                data = temp;
            }
        }
    }
    if(data.length > 10){
        data = data.substring(0,10);
    }
    objeto.value = data;
}



/* =====================================================================================
   FUNÇÃO:    mascara_Dinheiro (objeto, tammax, event)
   
   DESCRIÇÃO: formata um campo para receber data formatada.
   
   PARAMETERS = objeto (this ou o nome do input) 
			  = event (event handler - é so passar "event") 
			  = tammax (tamanho maximo do campo)
			  
   USO:		  <input class="campoForm" type="textbox" name="money" onKeyUp="mascara_Dinheiro (this, 8, event);"> 

	EXEMPLOS:
			* 
			
=======================================================================================*/
function mascara_Dinheiro (objeto, tammax, evento) { // colocar casas e separadores

	var codigo = util_CodigoASCII(evento);

	vr = objeto.value;
	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 (! util_IsNumeric(codigo)) {
		return false;
	}
	
	if (tam < tammax && codigo != 8){ tam = vr.length + 1 ; }
	else { return false; }

		if (codigo == 8 ){	tam = tam - 1 ; }
			
		if ( codigo == 8 || codigo >= 48 && codigo <= 57 || codigo >= 96 && codigo <= 105 ){
			if ( tam <= 2 ){ 
				objeto.value = vr ; }
			if ( (tam > 2) && (tam <= 5) ){
				objeto.value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ) ; }
			if ( (tam >= 6) && (tam <= 8) ){
				objeto.value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
			if ( (tam >= 9) && (tam <= 11) ){
				objeto.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) ){
				objeto.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 <= 17) ){
				objeto.value = vr.substr( 0, tam - 14 ) + '.' + 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 ) ;}
	} 
}



/* =====================================================================================
   FUNÇÃO:    mascara_Float (objeto, nCasas, evento)
   
   DESCRIÇÃO: formata um campo para receber um valor decimal com um nÂº max de casas decimais.
   
   PARAMETERS = objeto (this ou o nome do input) 
 			  = nCasas (o nÂº máximo de casas decimais aceitável)
			  = evento (event handler - é so passar "event") 
			  
   USO:		  <input class="campoForm" type="textbox" name="x" MAXLENGTH="9" onKeyPress="mascara_Float (this, 3, event);"> 
   
   IMPORTANTE: Se desejar fixar o número de caracteres, faÃ§a-o no MAXLENGTH do campo input.

   EXEMPLOS:
			* 3 casas decimais -> 3333,333  // válido
			* transforma o ponto em virgula -> 999.999 = 999,999
			* nao aceita mais de uma virgula -> 
				99,999, = // Alert Error e suprime a ultima virgula

=======================================================================================*/
function mascara_Float (objeto, nCasas, evento) {

    var valor = objeto.value;
	var codigo  = util_CodigoASCII(event);
	
	if (!(util_IsNumeric(codigo) || util_IsVirgula(codigo) || util_IsPonto(codigo))) {
   		return false;
    }

	if(util_IsPonto(codigo)){
        valor = valor.replace('.',',');
        objeto.value = valor;
        codigo = 188;
    }

	if(util_IsVirgula(codigo)){
        contadorPonto = 0;
		contadorCasas = 0;
        for(i = 1; i <= valor.length;i++){
            if(valor.substring(i-1,i) == ','){
                contadorPonto ++;
            }
	    }
		if(contadorPonto > 1){
			valor = valor.substring(0,valor.length-1);
            objeto.value = valor;
            alert("Desculpe, este campo so pode apresentar um ponto decimal!");
            return false;
        }
    }

	if (util_IsNumeric(codigo)) {
		var arrayCasasDecimais =  valor.split(",");
		if(arrayCasasDecimais[1]) {
			if(arrayCasasDecimais[1].length > nCasas - 1){
	        	return false;
	        }
		}
	}
    return true;
}



/* =====================================================================================
   FUNÇÃO:    mascara_Geral(campo, formato, evento)
   
   DESCRIÇÃO: formata um campo do formulário de acordo com a máscara informada.
   
   PARAMETERS = campo (this ou o nome do input) 
 			  = formato (define o formato que o dado será apresentado, usando o 
				algarismo "9" para definir números e o símbolo "!" para AlphaNumericos... 
			  = evento (event handler - é so passar "event") 
			  
   USO:		  <input class="campoForm" type="textbox" name="CEP" MAXLENGTH="9" ...
   			  ... onKeyPress="return mascara_Geral(this, '99999-999', event);"> 
   			  
   			  Este exemplo retorna o campo formatado com CEP. PODE-SE usar no evento 
			  onKeyUp também.
			  
	IMPORTANTE: O MAXLENGTH DO INPUT DEVE SER SETADO COM O MESMO NÚMERO DE CARACTERES 
			DA MASCARA (parâmetro formato), PARA QUE ESTA FUNÇÃO FUNCIONE PERFEITAMENTE.
			  
	EXEMPLOS:
			* CEP -> 99.999-999 
			* CPF -> 999.999.999-99 
			* CNPJ -> 99.999.999/9999-99 
			* Data -> 99/99/9999 
			* Tel Resid -> (99) 999-9999 
			* Tel Cel -> (99) 9999-9999 
			* Processo -> 99.999999999/999-99 
			* C/C -> 999999-! 			
=======================================================================================*/
function mascaraGeral(campo, formato, evento) {

	var i, contador, valor, tamCampo, tamFormato, bolFormato, sCod, codigo;

	codigo = util_CodigoASCII(evento); // retorna o codigo do caracter passando o evento
	valor = campo.value;
	
	// Caracteres especiais.
	if (codigo <= 31) {
		return true;
	}

	// Verifica se o tamanho é maior que a máscara.
	tamCampo = valor.length;
	tamFormato = formato.length;
	if (tamCampo > tamFormato-1) {
		return false;
	}
		
	// Limpa todos os caracteres de formatação que
	// já estiverem no campo.
	valor = valor.toString().replace( "-", "" );
	valor = valor.toString().replace( "-", "" );
	valor = valor.toString().replace( ".", "" );
	valor = valor.toString().replace( ".", "" );
	valor = valor.toString().replace( "/", "" );
	valor = valor.toString().replace( "/", "" );
	valor = valor.toString().replace( "(", "" );
	valor = valor.toString().replace( "(", "" );
	valor = valor.toString().replace( ")", "" );
	valor = valor.toString().replace( ")", "" );
	valor = valor.toString().replace( " ", "" );
	valor = valor.toString().replace( " ", "" );
	valor = valor.toString().replace( ":", "" );
	valor = valor.toString().replace( ":", "" );
	tamCampo = valor.length;
	tamFormato = formato.length;
	
	i = 0;
	j = 0;
	contador = 0;
	sCod = "";
	tamFormato = tamCampo;
		
	while (i <= tamFormato) {
		bolFormato = ((formato.charAt(i) == "-") || (formato.charAt(i) == ".") || (formato.charAt(i) == "/"))
		bolFormato = bolFormato || ((formato.charAt(i) == "(") || (formato.charAt(i) == ")") || (formato.charAt(i) == " "))
		bolFormato = bolFormato || (formato.charAt(i) == ":")
		
		if (bolFormato && codigo != 8) {
			sCod += formato.charAt(i);
			tamFormato++; }
		else {
			sCod += valor.charAt(contador);
			contador++;
			}	
		i++;
	}
	
	campo.value = sCod;

	if (codigo != 8) {  // backspace
		if (formato.charAt(i-1) == "9") { // apenas números...
			return (util_IsNumeric(util_CodigoASCII(evento))); // números de 0 a 9
		} else { // quaiquer caracteres AlphaNuméricos
			if (formato.charAt(i-1) == "!") {
				return (util_IsAlphaNumeric(util_CodigoASCII(evento)));
			 	//return true
			} else {
				return false;
			}
		}
		} else {
		return true;
	} 
}



/* =====================================================================================
   FUNÇÃO:    mascara_Login (objeto)
   
   DESCRIÇÃO: formata um campo para não receber caracteres especiais.
   
   PARAMETERS = objeto (this ou o nome do input) 
			  
   USO:		  <input class="campoForm" type="textbox" name="login" onKeyUp="mascara_Login (this);"> 

=======================================================================================*/
function mascara_Login (objeto){
	var valor = objeto.value;

    for(i = 0; i < valor.length; i++){
        if(valor.charAt(i) == '!' || valor.charAt(i) == '@' || valor.charAt(i) == '#' || valor.charAt(i) == '$' || valor.charAt(i) == '%' || valor.charAt(i) == '&' || valor.charAt(i) == '*' || valor.charAt(i) == '(' || valor.charAt(i) == ')' || valor.charAt(i) == '/' || valor.charAt(i) == '%' ){
            valor = valor.substring(0,i)+valor.substring(i+1,valor.length);
            i = 0;
        }
    }
    if(valor.charAt(0) == '!' || valor.charAt(0) == '@' || valor.charAt(0) == '#' || valor.charAt(0) == '$' || valor.charAt(0) == '%' || valor.charAt(0) == '&' || valor.charAt(0) == '*' || valor.charAt(0) == '(' || valor.charAt(0) == ')' || valor.charAt(i) == '/' || valor.charAt(i) == '%'){
        valor = valor.substring(1,valor.length);
    }

    objeto.value = valor;

    return true;
}




//=====================================================================================

function mascara_Percentual (evento){
	
}
//=====================================================================================

function mascara_CartaoCredito (evento){
}
//=====================================================================================


//=====================================================================================
//=====================================================================================









/***************************************************************************************/
/***********************************     VALIDACOES   **********************************/
/***************************************************************************************/



/* =====================================================================================
   	FUNÇÃO:    valida_Alpha(campo)
   	
   	DESCRIÇÃO: verifica se todos os carateres do campo são letras (Maiúsculas ou Minúsculas).
   
   	PARAMETERS: campo (this ou o nome do input)
			  
   	USO: o valor deve conter apenas letras A-Z ou a-z, espacos e caracteres acentuados.
   			  
	EXEMPLO: <input class="campoForm" type="textbox" name="NOME" MAXLENGTH="40" onChange="return valida_Alpha(this);"> 
					
	IMPORTANTE: o MAXLENGTH do input deve ser setado de acordo com o numero de caracteres do campo.
			
=======================================================================================*/
function valida_Alpha (campo) {
	var valor = campo.value;
	for(i = 0; i < valor.length; i++){
        if (!((valor.charCodeAt(i) >= 65 && valor.charCodeAt(i) <= 90) ||
        	  (valor.charCodeAt(i) >= 97 && valor.charCodeAt(i) <= 122) ||
			  (valor.charCodeAt(i) >= 192 && valor.charCodeAt(i) <= 255) ||
			  (valor.charCodeAt(i) == 32))) {	        	  
			alert("Por favor, o campo deve conter apenas letras.");
			campo.focus();
			util_Seleciona(campo);	  
	        return false;
        }
    }
    return true;
}
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_CampoObrigatorio(formulario, lista)
   	
   	DESCRIÇÃO: verifica se os campos especificados como parâmetro foram informados.
   
   	PARAMETERS: formulario (nome do formulario onde estão os campos)
   				lista (string que contém o id dos campos separados por ',' 
   				e títulos dos campos separados por ':')
			  
   	USO: o nome do formulário (propriedade NAME da tag FORM) deve ser informado sem ser precedido por 'document'.
   		 a função pode ser usada no evento onClick de um botão ou no evento onSubmit do formulário.
   			  
	EXEMPLO: 
		<form id="form1" name="form1" method="POST" action="" onSubmit="return valida_CampoObrigatorio(this,'txt_nome:Nome,txt_cpf:CPF,txt_tel:Telefone');">
			Nome <input class="campoForm" id="txt_nome" type="text" onchange="valida_Aplha(this);" >
			CPF <input class="campoForm" id="txt_cpf" type="text" onchange="valida_CPF(this);" >
			Telefone <input class="campoForm" id="txt_tel" type="text" onchange="valida_Telefone(this);" >
			<input class="campoForm" type="submit" value="OK">
		</form>
=======================================================================================*/
function valida_CampoObrigatorio (formulario, lista)
{
	formulario = String(formulario.id);
	lista = String(lista);
	var checks = lista.split(",");
	for (var i = 0; i < checks.length; i++) {
		if (checks[i].length > 0) {
			var nome = checks[i].split(":");
			var objCheck = eval('document.' + formulario + '.' + nome[0]);
	    	if (objCheck.value == '') {
		    	if (typeof(nome[1]) == "undefined") {

			    	nome[1] = "";
		    	}
		    	alert("Por favor, o valor do campo " + nome[1].toUpperCase() + " deve ser informado !");
				objCheck.focus();
		    	return false;
	    	}
    	}
    }
	return true;	
} 
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_CartaoCredito (campo)
   	
   	DESCRIÇÃO: verifica se o campo contém um número de Cartão de Crédito válido.
   
   	PARAMETERS: campo (this ou o nome do input)
			  
   	USO: o valor do percentual deve estar no formato 9999 9999 9999 9999 ou 9999999999999999
   			  
	EXEMPLO: <input class="campoForm" type="textbox" name="NUM_CC" MAXLENGTH="19" onChange="return valida_CartaoCredito(this);"> 
					
	IMPORTANTE: o MAXLENGTH do input deve ser setado de acordo com o numero de caracteres do número do cartão de crédito.
			
=======================================================================================*/
function valida_CartaoCredito (campo) {
	var valor = campo.value;
	
	if (valor.length == 0) {
		return true;
	} else if (valor.length > 19) {
		alert("Por favor, o número do Cartão de Crédito está incorreto !");
		campo.focus();
		util_Seleciona(campo);	
    	return (false);
	} else if (valor.length == 19) {
		valor = valor.replace(" ","");
		valor = valor.replace(" ","");
		valor = valor.replace(" ","");
	}
		
  	sum = 0;
  	mul = 1; 
  	l = valor.length;
  	
  	for (i = 0; i < l; i++) {
    	digit = valor.substring(l-i-1,l-i);
    	tproduct = parseInt(digit ,10)*mul;
    	if (tproduct >= 10)
      		sum += (tproduct % 10) + 1;
    	else
      		sum += tproduct;
    	if (mul == 1)
      		mul++;
    	else
      		mul--;
  	}

	if ((sum % 10) == 0) {
    	return (true);
	}
  	else {
		alert("Por favor, o número do Cartão de Crédito está incorreto !");
		campo.focus();
		util_Seleciona(campo);	  	
    	return (false);
	}
}
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_CEP(campo)
   	
   	DESCRIÇÃO: verifica se o campo contém um valor de CEP válido.
   
   	PARAMETERS: campo (this ou o nome do input)
			  
   	USO: o valor do CEP deve estar no formato 99.999-999
   			  
	EXEMPLO: <input class="campoForm" type="textbox" name="CEP" MAXLENGTH="10" onChange="return valida_CEP(this);"> 
					
	IMPORTANTE: o MAXLENGTH do input deve ser setado de acordo com o numero de caracteres do CEP.
			
=======================================================================================*/
function valida_CEP(campo) {
	var valor = campo.value;
	
	if (valor.length > 0) {
		if (valor.length == 10) {
			digito1 = parseInt(valor.substring(0,1));
	    	digito2 = parseInt(valor.substring(1,2));
	    	digito3 = valor.substring(2,3);
	    	digito4 = parseInt(valor.substring(3,4));
	    	digito5 = parseInt(valor.substring(4,5));
	    	digito6 = parseInt(valor.substring(5,6));
	    	digito7 = valor.substring(6,7);
	    	digito8 = parseInt(valor.substring(7,8));
	    	digito9 = parseInt(valor.substring(8,9));
	    	digito10 = parseInt(valor.substring(9,10));
			    
	    	if (util_IsDigit(digito1) && util_IsDigit(digito2) && digito3 == "." && util_IsDigit(digito4) && 
		    	util_IsDigit(digito5) && util_IsDigit(digito6) && digito7 == "-" && util_IsDigit(digito8) && 
				util_IsDigit(digito1) && util_IsDigit(digito2)) {
				return true;		
			}
			else {
				alert("Por favor, verifique o formato do CEP !");
				campo.focus();
	        	util_Seleciona(campo);
				return false;
			}
		}
		else {
			alert("Por favor, verifique o formato do CEP !");
			campo.focus();
	        util_Seleciona(campo);
			return false;	
		}
	}
	return true;
}
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_CheckObrigatorio(formulario, lista)
   	
   	DESCRIÇÃO: verifica se pelo menos um campo do tipo CHECKBOX de um grupo foi selecionado.
   
   	PARAMETERS: formulario (nome do formulario onde estão os checkbox's)
   				lista (string que contém o id dos checkbox's separados por ',')
			  
   	USO: o nome do formulário (propriedade NAME da tag FORM) deve ser informado sem ser precedido por 'document'.
   		 a função pode ser usada no evento onClick de um botão ou no evento onSubmit do formulário.
   			  
	EXEMPLO: 
			<input class="campoForm" name="ingles" id="ingles" type="checkbox" value="I"> Ingles
			<input class="campoForm" name="frances" id="frances" type="checkbox" value="F"> Frances
			<input class="campoForm" name="espanhol" id="espanhol" type="checkbox" value="E"> Espanhol
			<input class="campoForm" type="button" name="cmd_ok" value="OK" onClick="valida_CheckObrigatorio(form1,'ingles,frances,espanhol');">

=======================================================================================*/
function valida_CheckObrigatorio (formulario, lista, grupo)
{
	formulario = String(formulario.id);
	lista = String(lista);
	var checks = lista.split(",");
	for (var i = 0; i < checks.length; i++) {
		var objCheck = eval('document.' + formulario + '.' + checks[i]);
    	if (objCheck.checked == true) {
	    	return true;
    	}
    }
    if (String(grupo).length > 0) {
		alert("Por favor, pelo menos uma das opções de " + grupo + " deve ser selecionada !");
	}
	else {
		alert("Por favor, pelo menos uma das opções deve ser selecionada !");
	}
	var primeiro = eval('document.' + formulario + '.' + checks[0]);
	primeiro.focus();
	return false;
}
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_CNPJ(campo)
   	
   	DESCRIÇÃO: verifica se o campo contém um número de CNPJ válido.
   
   	PARAMETERS: campo (this ou o nome do input) 
			  
   	USO: o número do CNPJ deve estar no formato 99.999.999/9999-99 
   			  
	EXEMPLO: <input class="campoForm" type="textbox" name="NUM_CNPJ" MAXLENGTH="18" onChange="return valida_CNPJ(this);"> 
					
	IMPORTANTE: o MAXLENGTH do input deve ser setado com o numero de caracteres do CNPJ (18).
			
=======================================================================================*/
function valida_CNPJ(campo) {
	var numCIC = String(campo.value);
	
	// Verifica o formato do CNPJ.
	if (numCIC.length > 0) {
		if (numCIC.substring(2,3) == "." && numCIC.substring(6,7) == "." && numCIC.substring(10,11) == "/" && numCIC.substring(15,16) == "-") {
			// Retira os caracteres de formatação.
			numCIC = numCIC.replace( "-", "" );
			numCIC = numCIC.replace( ".", "" );
			numCIC = numCIC.replace( ".", "" );		
			numCIC = numCIC.replace( "/", "" );
		} else {
			alert("Por favor, verifique o formato do CNPJ!");
			campo.focus();
			util_Seleciona(campo);			
			return false;		
		}
		for (var i=0; i < numCIC.length; i++){
			if (!(util_IsDigit(numCIC.charAt(i)))) {
				alert("Por favor, verifique a validação do CNPJ!");
				campo.focus();
				util_Seleciona(campo);			
			    return false;
		  	}
	   	}	
	} else {
		return true;
	}
	
			
	var numDois = numCIC.substring(numCIC.length-2, numCIC.length);
	var novoCIC = numCIC.substring(0, numCIC.length-2);
	
	switch (numCIC.length){
		case 11 :
 			numLim = 11;
 			break;
		case 14 :
			numLim = 9;
			break;
		default :
		    alert("Por favor, verifique o formato do CNPJ!");
			campo.focus();
			util_Seleciona(campo);				
			return false;
	}
	
	var numSoma = 0;
	var Fator = 1;
	for (var i=novoCIC.length-1; i>=0 ; i--) {
		Fator = Fator + 1;
		
		if (Fator > numLim) {
		 Fator = 2;
		}
		numSoma = numSoma + (Fator * Number(novoCIC.substring(i, i+1)));
	}
	
	numSoma = numSoma/11;
	var numResto = Math.round( 11 * (numSoma - Math.floor(numSoma)));
 	if (numResto > 1) {
		numResto = 11 - numResto;
 	}
 	else {
		numResto = 0;
 	}
 	//-- Primeiro dígito calculado. Fará parte do novo cálculo.
 	var numDigito = String(numResto);
 	novoCIC = novoCIC.concat(numResto);
 	
 	numSoma = 0;
	Fator = 1;
	for (var i=novoCIC.length-1; i>=0 ; i--) {
		Fator = Fator + 1;
		if (Fator > numLim) {
 			Fator = 2;
		}
		numSoma = numSoma + (Fator * Number(novoCIC.substring(i, i+1)));
	}
	numSoma = numSoma/11;
	numResto = numResto = Math.round( 11 * (numSoma - Math.floor(numSoma)));
 	if (numResto > 1) {
		numResto = 11 - numResto;
 	}
 	else {
		numResto = 0;
 	}
	//-- Segundo dígito calculado.
	numDigito = numDigito.concat(numResto);
	if (numDigito == numDois) {
		return true;
	}
	else {
	    alert("Por favor, verifique o valor do CNPJ!");
		campo.focus();
		util_Seleciona(campo);		
		return false;
	}
}
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_CPF(campo)
   	
   	DESCRIÇÃO: verifica se o campo contém um número de CPF válido.
   
   	PARAMETERS: campo (this ou o nome do input) 
			  
   	USO: o número do CPF deve estar no formato 999.999.999-99 
   			  
	EXEMPLO: <input class="campoForm" type="textbox" name="NUM_CPF" MAXLENGTH="14" onChange="return valida_CPF(this);"> 
					
	IMPORTANTE: o MAXLENGTH do input deve ser setado com o numero de caracteres do CPF (14).
			
=======================================================================================*/
function valida_CPF(campo) {
	var numCIC = String(campo.value);
	
	// Verifica o formato do CPF.
	if (numCIC.length > 0) {
		if (numCIC.substring(3,4) == "." && numCIC.substring(7,8) == "." && numCIC.substring(11,12) == "-") {
			// Retira os caracteres de formatação.
			numCIC = numCIC.replace( "-", "" );
			numCIC = numCIC.replace( ".", "" );
			numCIC = numCIC.replace( ".", "" );		
		} else {
			alert("Por favor, verifique o formato do CPF!");
			campo.focus();
			util_Seleciona(campo);			
			return false;		
		}
		for (var i=0; i < numCIC.length; i++){
			if (!(util_IsDigit(numCIC.charAt(i)))) {
				alert("Por favor, verifique o formato do CPF!");
				campo.focus();
				util_Seleciona(campo);			
			    return false;
		  	}
	   	}
	} else {
		return true;
	}
	
	var numDois = numCIC.substring(numCIC.length-2, numCIC.length);
	var novoCIC = numCIC.substring(0, numCIC.length-2);
	
	switch (numCIC.length){
		case 11 :
 			numLim = 11;
 			break;
		case 14 :
			numLim = 9;
			break;
		default :
		    alert("Por favor, verifique o formato do CPF!");
			campo.focus();
			util_Seleciona(campo);
			return false;
	}
	
	var numSoma = 0;
	var Fator = 1;
	for (var i=novoCIC.length-1; i>=0 ; i--) {
		Fator = Fator + 1;
		
		if (Fator > numLim) {
		 Fator = 2;
		}
		numSoma = numSoma + (Fator * Number(novoCIC.substring(i, i+1)));
	}
	
	numSoma = numSoma/11;
	var numResto = Math.round( 11 * (numSoma - Math.floor(numSoma)));
 	if (numResto > 1) {
		numResto = 11 - numResto;
 	}
 	else {
		numResto = 0;
 	}
 	//-- Primeiro dígito calculado. Fará parte do novo cálculo.
 	var numDigito = String(numResto);
 	novoCIC = novoCIC.concat(numResto);
 	
 	numSoma = 0;
	Fator = 1;
	for (var i=novoCIC.length-1; i>=0 ; i--) {
		Fator = Fator + 1;
		if (Fator > numLim) {
 			Fator = 2;
		}
		numSoma = numSoma + (Fator * Number(novoCIC.substring(i, i+1)));
	}
	numSoma = numSoma/11;
	numResto = numResto = Math.round( 11 * (numSoma - Math.floor(numSoma)));
 	if (numResto > 1) {
		numResto = 11 - numResto;
 	}
 	else {
		numResto = 0;
 	}
	//-- Segundo dígito calculado.
	numDigito = numDigito.concat(numResto);
	if (numDigito == numDois) {
		return true;
	}
	else {
    	alert("Por favor, verifique o valor do CPF!");
		campo.focus();
		util_Seleciona(campo);		
		return false;
	}
}
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_Data (campo)
   	
   	DESCRIÇÃO: verifica se o campo contém o valor de uma data válida.
   
   	PARAMETERS: campo (this ou o nome do input) 
			  
   	USO: o valor da data deve estar no formato 99/99/9999
   			  
	EXEMPLO: <input class="campoForm" type="textbox" name="NUM_DATA" MAXLENGTH="10" onChange="return valida_Data(this);"> 
					
	IMPORTANTE: o MAXLENGTH do input deve ser setado com o numero de caracteres da data (10).
			
=======================================================================================*/
function valida_Data (campo) {


	 if(campo.value!="") {
        digito1 = parseInt(campo.value.substring(0,1));
        digito2 = parseInt(campo.value.substring(1,2));
        digito3 = campo.value.substring(2,3);
        digito4 = parseInt(campo.value.substring(3,4));
        digito5 = parseInt(campo.value.substring(4,5));
        digito6 = campo.value.substring(5,6);
        digito7 = parseInt(campo.value.substring(6,7));
        digito8 = parseInt(campo.value.substring(7,8));
        digito9 = parseInt(campo.value.substring(8,9));
        digito10 = parseInt(campo.value.substring(9,10));

        if(!(util_IsDigit(digito1) && util_IsDigit(digito2) && digito3=="/" && util_IsDigit(digito4) && util_IsDigit(digito5) && digito6=="/" && util_IsDigit(digito7) && util_IsDigit(digito8) && util_IsDigit(digito9) && util_IsDigit(digito10) )) {
            alert("Por favor, o formato desta data esta incorreta!");
            campo.focus();
            util_Seleciona(campo);
            return false;
        }
    }
	else {
		return true;
	}

	// Guarda o valor do dia.
    if(campo.value.substring(0,1) == '0'){
        dia = parseInt(campo.value.substring(1,2));
    }else{
        dia = parseInt(campo.value.substring(0,2));
    }
    // Guarda o valor do mês.
    if(campo.value.substring(3,4) == '0'){
        mes = parseInt(campo.value.substring(4,5));
    }else{
        mes = parseInt(campo.value.substring(3,5));
    }
	// Guarda o valor do ano.
    ano = parseInt(campo.value.substring(6,campo.value.length));
	// Formata o valor do ano.
    if(ano > 0 && ano <= 80){
        ano += 2000;
        data.value = campo.value.substring(0,6) + ano;
    }else if(ano > 80 && ano < 100){
        ano += 1900;
        data.value = campo.value.substring(0,6) + ano;
    }

    if( ((mes=="1" || mes=="3" || mes=="5" || mes=="7" || mes=="8" || mes=="10" || mes=="12") && dia>"31")
        || ((mes=="4" || mes=="6" || mes=="9" || mes=="11") && dia > "30")
        || (dia>"29" && mes=="2" && util_isBissexto(ano) )
        || (dia>"28" && mes=="2" && !util_isBissexto(ano) ) ){
        alert("Por favor, verifique o dia da data!");
        campo.focus();
        util_Seleciona(campo);
        return false;
    }else if (mes > "12"){
        alert("Por favor, verifique o mês da data!");
        campo.focus();
        util_Seleciona(campo);
        return false;
    }else if (ano < "1000" || ano > "10000"){
        alert("Por favor, verifique o ano da data!");
        campo.focus();
        util_Seleciona(campo);
        return false;
    }
    return true;
}
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_Decimal(valor, nCasas)
   	
   	DESCRIÇÃO: verifica se o campo contém um valor numérico decimal válido.
   
   	PARAMETERS: valor (valor numérico)
   				nCasas (número de casas decimais)
			  
   	USO: o valor do número deve estar no formato 999.999.999,9999
   	
   		 * Esta função é utilizada pelas funções valida_Nume   		 
		
=======================================================================================*/
function valida_Decimal(valor, nCasas)
{
	var decimal;
	var inteiro;
	
	if (isNaN(valor)) {
		alert("Por favor, o valor do campo deve ser numérico!");
        return false;	
	}
	
	// Guarda o valor decimal.
	if (valor.indexOf(".") >= 0) {
		decimal = valor.substring(valor.indexOf(".")+1,valor.length);
	}
	else {
		decimal = 0;
	}
	// Guarda o valor inteiro.
	if (valor.indexOf(".") >= 0) {
		inteiro = valor.substring(0,valor.indexOf("."));
	}
	else {
		inteiro = valor;
	}
	
	if (decimal.length > nCasas) {
        alert("Por favor, o número deve ter no máximo " + nCasas + " casas decimais !");
        return false;			
	}
	return true;	
}
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_Dinheiro(campo)
   	
   	DESCRIÇÃO: verifica se o campo contém um valor monetário válido.
   
   	PARAMETERS: campo (this ou o nome do input) 
			  
   	USO: o valor monetário deve estar no formato R$999.999.999,99 ou -R$999.999.999,99
   			  
	EXEMPLO: <input class="campoForm" type="textbox" name="MONEY" MAXLENGTH="17" onChange="return valida_Dinheiro(this);"> 
					
	IMPORTANTE: o MAXLENGTH do input deve ser setado de acordo com o numero de caracteres do valor.
			
=======================================================================================*/
function valida_Dinheiro(campo)
{
	var valor = campo.value;
	if (valor.length > 0) {
		if (!(valor.substring(0,2) == "R$" || valor.substring(0,2) == "r$")) {
			alert("Por favor, verifique se o valor contém a unidade monetária (R$) !");
			campo.focus();
	        util_Seleciona(campo);
			return false;	
		}
		
		valor = valor.replace('R','');
		valor = valor.replace('$','');
		valor = valor.replace(',','.');
		while(valor.indexOf(".") >= 0){
        	valor = valor.replace(".","");
    	}
		
    	if (valor.length > 0) {
			if (valida_Decimal(valor,2)) {
				return true;
			}
			else {
				campo.focus();
		        util_Seleciona(campo);
				return false;
			}
		} else {
			alert("Por favor, verifique o formato do valor monetário !");
			campo.focus();
			util_Seleciona(campo);
			return false;
		}
	}
	return true;
}
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_Email(campo)
   	
   	DESCRIÇÃO: verifica se o campo contém um E-Mail válido.
   
   	PARAMETERS: campo (this ou o nome do input)
			  
   	USO: o valor do E-Mail deve estar no formato aaaa@aaaa.aaa.aa
   	
   		 * O e-mail deve conter os caracteres '@' e '.' e não deve conter espaco, '/', ')','(',']','[' e '..'
   			  
	EXEMPLO: <input class="campoForm" type="textbox" name="EMAIL" MAXLENGTH="30" onChange="return valida_Email(this);"> 
					
	IMPORTANTE: o MAXLENGTH do input deve ser setado de acordo com o numero de caracteres do e-mail.
			
=======================================================================================*/
function valida_Email(campo) {
	if (campo.value == "") {
		return true;
  	}
    
  	if (campo.value != "") {
    	prim = campo.value.indexOf("@")
		if(prim < 2) {
			alert("Por favor, o e-mail está incorreto.");
			campo.focus();
			util_Seleciona(campo);
			return false;
		}
		if(campo.value.indexOf("@",prim + 1) != -1) {
			alert("Por favor, o e-mail está incorreto.");
			campo.focus();
			util_Seleciona(campo);
			return false;
		}
		if(campo.value.indexOf(".") < 1) {
			alert("Por favor, o e-mail está incorreto.");
			campo.focus();
			util_Seleciona(campo);
			return false;
		}
		if(campo.value.indexOf(" ") != -1) {
			alert("Por favor, o e-mail está incorreto.");
			campo.focus();
			util_Seleciona(campo);
			return false;
		}
		if(campo.value.indexOf("zipmeil.com") > 0) {
			alert("Por favor, o e-mail está incorreto.");
			campo.focus();
			util_Seleciona(campo);
			return false;
		}
		if(campo.value.indexOf("hotmeil.com") > 0) {
			alert("Por favor, o e-mail está incorreto.");
			campo.focus();
			util_Seleciona(campo);
			return false;
		}
		if(campo.value.indexOf(".@") > 0) {
			alert("Por favor, o e-mail está incorreto.");
			campo.focus();
			util_Seleciona(campo);
			return false;
		}
		if(campo.value.indexOf("@.") > 0) {
			alert("Por favor, o e-mail está incorreto.");
			campo.focus();
			util_Seleciona(campo);
			return false;
		}
		if(campo.value.indexOf(".com.br.") > 0) {
			alert("Por favor, o e-mail está incorreto.");
			campo.focus();
			util_Seleciona(campo);
			return false;
		}
		if(campo.value.indexOf("/") > 0) {
			alert("Por favor, o e-mail está incorreto.");
			campo.focus();
			util_Seleciona(campo);
			return false;
		}
		if(campo.value.indexOf("[") > 0) {
			alert("Por favor, o e-mail está incorreto.");
			campo.focus();
			util_Seleciona(campo);
			return false;
		}
		if(campo.value.indexOf("]") > 0) {
			alert("Por favor, o e-mail está incorreto.");
			campo.focus();
			util_Seleciona(campo);
			return false;
		}
		if(campo.value.indexOf("(") > 0) {
			alert("Por favor, o e-mail está incorreto.");
			campo.focus();
			util_Seleciona(campo);
			return false;
		}
		if(campo.value.indexOf(")") > 0) {
			alert("Por favor, o e-mail está incorreto.");
			campo.focus();
			util_Seleciona(campo);
			return false;
		}
		if(campo.value.indexOf("..") > 0) {
			alert("Por favor, o e-mail está incorreto.");
			campo.focus();
			util_Seleciona(campo);
			return false;
		}
  	}
	return true;
}
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_Hora(campo, fmt)
   	
   	DESCRIÇÃO: verifica se o campo contém o valor de uma hora válida.
   
   	PARAMETERS: campo (this ou o nome do input)
   				fmt (formato da data): 24 = 99:99 , 12 = 99:99 AM|PM
			  
   	USO: o valor da hora deve estar no formato 99:99
   			  
	EXEMPLO: <input class="campoForm" type="textbox" name="NUM_HORA" MAXLENGTH="5" onChange="return valida_Hora(this,24);"> 
					
	IMPORTANTE: o MAXLENGTH do input deve ser setado com o numero de caracteres da hora (5).
			
=======================================================================================*/
function valida_Hora(campo, fmt) {
	var hora;
	var minuto;
	
	if (campo.value.length > 0) {
		// Verifica o formato da hora 24h.
		if(campo.value.length == 5 && fmt == '24') {
	        digito1 = parseInt(campo.value.substring(0,1));
	        digito2 = parseInt(campo.value.substring(1,2));
	        digito3 = campo.value.substring(2,3);
	        digito4 = parseInt(campo.value.substring(3,4));
	        digito5 = parseInt(campo.value.substring(4,5));
	
	        if (!(util_IsDigit(digito1) && util_IsDigit(digito2) && digito3 == ":" && util_IsDigit(digito4) && util_IsDigit(digito5))) {
	            alert("Por favor, o formato da hora esta incorreto!");
	            campo.focus();
	            util_Seleciona(campo);
	            return false;
	        }
	    }
	    // Verifica o formato da hora 12h.
		else if(campo.value.length == 8 && fmt == '12') {
	        digito1 = parseInt(campo.value.substring(0,1));
	        digito2 = parseInt(campo.value.substring(1,2));
	        digito3 = campo.value.substring(2,3);
	        digito4 = parseInt(campo.value.substring(3,4));
	        digito5 = parseInt(campo.value.substring(4,5));
	        digito6 = campo.value.substring(5,6);
	        digito7 = campo.value.substring(6,8);
	        
	        if (!(util_IsDigit(digito1) && util_IsDigit(digito2) && digito3 == ":" && util_IsDigit(digito4) && util_IsDigit(digito5) && digito6 == " " && (digito7 == "AM" || digito7 == "PM" || digito7 == "am" || digito7 == "pm"))) {
	            alert("Por favor, o formato desta hora esta incorreta!");
	            campo.focus();
	            util_Seleciona(campo);
	            return false;
	        }
	    } else if (fmt != '24' && fmt != '12') {
		    alert("Por favor, o formato da hora esta incorreto!");

		    campo.focus();
		    util_Seleciona(campo);
		    return false;
    	}
	    else {
		    alert("Por favor, o formato da hora esta incorreto!");
		    campo.focus();
		    util_Seleciona(campo);
		    return false;
	    }
		
		// Guarda o valor da hora.
	    if(campo.value.substring(0,1) == '0'){
	        hora = parseInt(campo.value.substring(1,2));
	    }else{
		    hora = parseInt(campo.value.substring(0,2));
	    	if (fmt == '12') {
        		if ((digito7 == "P" || digito7 == "p") && hora > 12) {
		    		hora = hora + 12;
		    		if (hora == 24) {hora = 0;}
	    		} else if (hora > 12) {
					alert("Por favor, verifique o valor das horas!");
					campo.focus();
					util_Seleciona(campo);
					return false;
	    		}
    		}  
	    }
	    // Guarda o valor dos minutos.
	    if(campo.value.substring(3,4) == '0'){
	        minuto = parseInt(campo.value.substring(4,campo.value.length));
	    }else{
	        minuto = parseInt(campo.value.substring(3,campo.value.length));
	    }
	
	    if (!((hora >= 0) && (hora <= 23))) {
	        alert("Por favor, verifique o valor das horas!");
	        campo.focus();
	        util_Seleciona(campo);
	        return false;
	    }else if (!((minuto >= 0) && (minuto <= 59))) {
	        alert("Por favor, verifique o valor dos minutos!");
	        campo.focus();
	        util_Seleciona(campo);
	        return false;
	    }
	}
    return true;
}
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_LimiteNumero(campo, maximo, minimo)
   	
   	DESCRIÇÃO: verifica se o valor do número está entre os limites inferior e superios,
   				que são passados como parâmetro.
   
   	PARAMETERS: campo (this ou o nome do input)
   				maximo (valor máximo do número: valor <= maximo)
   				mínimo (valor mínimo do número: valor >= minimo)
			  
   	USO: o valor deve ser númérico, assim como os parâmetros maximo e minimo.
   			  
	EXEMPLO: <input class="campoForm" type="textbox" name="NUM" MAXLENGTH="10" onChange="return valida_LimiteNumero(this,1500,350);"> 
					
	IMPORTANTE: o MAXLENGTH do input deve ser setado de acordo com o numero de caracteres do número.
			
=======================================================================================*/
function valida_LimiteNumero (campo, maximo, minimo) {
	var valor = campo.value;
	
	if (valor.length > 0) {
		if (util_IsNumber(valor)) {
			if (valor < minimo) {
				alert("Por favor, o valor do campo deve ser maior ou igual a " + minimo + " !");
				campo.focus();
				util_Seleciona(campo);
				return false;	
			}
			if (valor > maximo) {
				alert("Por favor, o valor do campo deve ser menor ou igual a " + maximo + " !");
				campo.focus();
				util_Seleciona(campo);		
				return false;	
			}	
		}
		else {
			alert("Por favor, o valor do campo deve ser numérico !");
			campo.focus();
			util_Seleciona(campo);	
			return false;
		}
		return true;	
	}
	return true;
}
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_Login(campo)
   	
   	DESCRIÇÃO: verifica se o campo contém caracteres especiais ou inválidos.
   			   pode ser usado para validar o login do usuário.
   
   	PARAMETERS: campo (this ou o nome do input)
			  
   	USO: o valor do campo não deve conter os seguintes caracteres:
   	
   			- " ' ! @ # $ % & * ( ) /
   			  
	EXEMPLO: <input class="campoForm" type="textbox" name="LOGIN" MAXLENGTH="10" onChange="return valida_Login(this);"> 
					
	IMPORTANTE: o MAXLENGTH do input deve ser setado de acordo com o numero de caracteres do campo.
			
=======================================================================================*/
function valida_Login(campo) {
    var valor = campo.value;

    for(i = 0; i < valor.length; i++){
        if(valor.charAt(i) == '-' || valor.charAt(i) == '"' || valor.charAt(i) == "'" || valor.charAt(i) == '!' || valor.charAt(i) == '@' || valor.charAt(i) == '#' || valor.charAt(i) == '$' || valor.charAt(i) == '%' || valor.charAt(i) == '&' || valor.charAt(i) == '*' || valor.charAt(i) == '(' || valor.charAt(i) == ')' || valor.charAt(i) == '/' ){
			alert("Por favor, verifique o formato do campo !");
			campo.focus();
			util_Seleciona(campo);
            return false;
        }
    }
    return true;
}

//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_Telefone(campo)
   	
   	DESCRIÇÃO: verifica se o campo contém um número de telefone válido.
   
   	PARAMETERS: campo (this ou o nome do input) 
			  
   	USO: o número do telefone deve estar nos formatos:
										   				 999-9999
										   				 (99)999-9999
										   			  	 9999-9999
										   				 (99)9999-9999
										   			  
	EXEMPLO: <input class="campoForm" type="textbox" name="NUM_TEL" MAXLENGTH="13" onChange="return valida_Telefone(this);"> 
					
	IMPORTANTE: o MAXLENGTH do input deve ser setado com o numero de caracteres do telefone (13).
			
=======================================================================================*/
function valida_Telefone(objeto) {
	var valor;
    valor=objeto.value;
    
    switch (valor.length){
	    case 0 :
	    	return true;

		// Número sem DDD com prefixo igual a 3 casas
		case 8 :
			digito1 = parseInt(valor.substring(0,1));
	        digito2 = parseInt(valor.substring(1,2));
	        digito3 = parseInt(valor.substring(2,3));
	        digito4 = valor.substring(3,4);
	        digito5 = parseInt(valor.substring(4,5));
	        digito6 = parseInt(valor.substring(5,6));
	        digito7 = parseInt(valor.substring(6,7));
	        digito8 = parseInt(valor.substring(7,8));
	        
	        
	        if(util_IsDigit(digito1) && util_IsDigit(digito2) && util_IsDigit(digito3) && digito4=='-' &&
	         util_IsDigit(digito5) && util_IsDigit(digito6) && util_IsDigit(digito7) && util_IsDigit(digito8)) {
	            return true;
	        }else{
		    	alert("Por favor, verifique o formato do telefone!");
        		objeto.focus();
        		util_Seleciona(objeto);
	            return false;
	        }
 			break;
	    	
	    // Número sem DDD com prefixo de 4 casas
		case 9 :
			digito1 = parseInt(valor.substring(0,1));
	        digito2 = parseInt(valor.substring(1,2));
	        digito3 = parseInt(valor.substring(2,3));
	        digito4 = parseInt(valor.substring(3,4));
	        digito5 = valor.substring(4,5);
	        digito6 = parseInt(valor.substring(5,6));
	        digito7 = parseInt(valor.substring(6,7));
	        digito8 = parseInt(valor.substring(7,8));
	        digito9 = parseInt(valor.substring(8,9));
	        
	        if(util_IsDigit(digito1) && util_IsDigit(digito2) && util_IsDigit(digito3) && util_IsDigit(digito4) && digito5=='-' &&
	         util_IsDigit(digito6) && util_IsDigit(digito7) && util_IsDigit(digito8) && util_IsDigit(digito9)){
	            return true;
	        }else{
		    	alert("Por favor, verifique o formato do telefone!");
        		objeto.focus();
        		util_Seleciona(objeto);
	            return false;
	        }
 			break;
 		
		// Número com DDD com prefixo de 3 digitos
		case 13 :
			digito1 = valor.substring(0,1);
	        digito2 = parseInt(valor.substring(1,2));
	        digito3 = parseInt(valor.substring(2,3));
	        digito4 = valor.substring(3,5);
	        digito5 = parseInt(valor.substring(5,6));
	        digito6 = parseInt(valor.substring(6,7));
	        digito7 = parseInt(valor.substring(7,8));
	        digito8 = valor.substring(8,9);
	        digito9 = parseInt(valor.substring(9,10));
	        digito10 = parseInt(valor.substring(10,11));
	        digito11 = parseInt(valor.substring(11,12));
	        digito12 = parseInt(valor.substring(12,13));
	
	        if(digito1=="(" && util_IsDigit(digito2) && util_IsDigit(digito3) && digito4==") " && util_IsDigit(digito5) &&
	         util_IsDigit(digito6) && util_IsDigit(digito7) && digito8=="-" && util_IsDigit(digito9) &&
			 util_IsDigit(digito10) && util_IsDigit(digito11) && util_IsDigit(digito12)){
	            return true;
	        }else{
		       	alert("Por favor, verifique o formato do telefone!");
        		objeto.focus();
        		util_Seleciona(objeto);
	            return false;
	        }
			break;
		
 		// Número com DDD com prefixo de 4 digitos
		case 14 :
			digito1 = valor.substring(0,1);
	        digito2 = parseInt(valor.substring(1,2));
	        digito3 = parseInt(valor.substring(2,3));
	        digito4 = valor.substring(3,5);
	        digito5 = parseInt(valor.substring(5,6));
	        digito6 = parseInt(valor.substring(6,7));
	        digito7 = parseInt(valor.substring(7,8));
	        digito8 = parseInt(valor.substring(8,9));
	        digito9 = valor.substring(9,10);
	        digito10 = parseInt(valor.substring(10,11));
	        digito11 = parseInt(valor.substring(11,12));
	        digito12 = parseInt(valor.substring(12,13));
	        digito13 = parseInt(valor.substring(13,14));
	
	        if(digito1=="(" && util_IsDigit(digito2) && util_IsDigit(digito3) && digito4==") " && util_IsDigit(digito5) &&
	         util_IsDigit(digito6) && util_IsDigit(digito7) && util_IsDigit(digito8) && digito9=="-" && util_IsDigit(digito10) &&
			 util_IsDigit(digito11) && util_IsDigit(digito12) && util_IsDigit(digito13)){
	            return true;
	        }else{
		       	alert("Por favor, verifique o formato do telefone!");
        		objeto.focus();
        		util_Seleciona(objeto);
	            return false;
	        }
			break;
			
		default : 
			alert("Por favor, verifique o formato do telefone!");
    		objeto.focus();
    		util_Seleciona(objeto);
			return false;
	}
}
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_Numero(campo, nCasas)
   	
   	DESCRIÇÃO: verifica se o campo contém um valor numérico válido.
   
   	PARAMETERS: campo (this ou o nome do input)
   				nCasas (número de casas decimais)
			  
   	USO: o valor do número deve estar no formato 999.999.999,9999
   			  
	EXEMPLO: <input class="campoForm" type="textbox" name="NUM" MAXLENGTH="17" onChange="return valida_Numero(this,4);"> 
					
	IMPORTANTE: o MAXLENGTH do input deve ser setado de acordo com o numero de caracteres do número.
			
=======================================================================================*/
function valida_Numero(campo, nCasas)
{
	var valor = campo.value;
	
	while(valor.indexOf(".") >= 0){
        valor = valor.replace(".","");
    }
	valor = valor.replace(',','.');
	
	if (valida_Decimal(valor,nCasas)) {
		return true;
	}
	else {
		campo.focus();
        util_Seleciona(campo);
		return false;
	}
}
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_Percentual(campo)
   	
   	DESCRIÇÃO: verifica se o campo contém um valor percentual válido.
   
   	PARAMETERS: campo (this ou o nome do input)
			  
   	USO: o valor do percentual deve estar no formato 9999,99%
   			  
	EXEMPLO: <input class="campoForm" type="textbox" name="NUM_PERC" MAXLENGTH="7" onChange="return valida_Percentual(this);"> 
					
	IMPORTANTE: o MAXLENGTH do input deve ser setado de acordo com o numero de caracteres do valor percentual.
			
=======================================================================================*/
function valida_Percentual (campo) {
	var valor = campo.value;
	
	if (valor != "") {
	
		if (valor.indexOf("%") >= 0) {
			valor = valor.replace("%","");
		}
		else {
			alert("Por favor, o formato do campo está incorreto (%) !");
			campo.focus();
			util_Seleciona(campo);				
			return false;	
		}
		
		valor = valor.replace(",",".");
		if (valida_Decimal(valor,2)) {
			return true;
		}
		else {
			campo.focus();
			util_Seleciona(campo);					
			return false;
		}
	}
	else {
		return true;
	}
}
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_RadioObrigatorio(grupo)
   	
   	DESCRIÇÃO: verifica se pelo menos um Radio Button de um grupo foi selecionado.
   
   	PARAMETERS: grupo (nome do grupo de radio buttons)
			  
   	USO: o nome do grupo (propriedade NAME) deve o mesmo para todos INPUTs do tipo RADIO.
   		 a função pode ser usada no evento onClick de um botão ou no evento onSubmit do formulário.
   			  
	EXEMPLO: 
			<input class="campoForm" name="SEXO" id="masculino" type="radio" value="M"> Masculino
			<input class="campoForm" name="SEXO" id="feminino" type="radio" value="F"> Feminino
			<input class="campoForm" type="button" name="cmd_ok" value="OK" onClick="valida_RadioObrigatorio(SEXO);">
=======================================================================================*/
function valida_RadioObrigatorio (grupo)
{
	for (var i = 0; i < grupo.length; i++) {
    	if (grupo[i].checked == true) {
	    	return true;
    	}
    }
	alert("Por favor, pelo menos uma das opções deve ser selecionada !");
	grupo[0].focus();
	return false;	
}
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_StringSemAspas(campo)
   	
   	DESCRIÇÃO: verifica se o campo contém caracteres especiais ou inválidos.
   			   pode ser usado para validar o login do usuário.
   
   	PARAMETERS: campo (this ou o nome do input)
			  
   	USO: o valor do campo não deve conter os seguintes caracteres:
   	
   			 " '
   			  
	EXEMPLO: <input class="campoForm" type="textbox" name="LOGIN" MAXLENGTH="10" onChange="return valida_StringSemAspas(this);"> 
					
	IMPORTANTE: o MAXLENGTH do input deve ser setado de acordo com o numero de caracteres do campo.
			
=======================================================================================*/
function valida_StringSemAspas(campo) {
    var valor = campo.value;

    for(i = 0; i < valor.length; i++){
        if(valor.charAt(i) == '"' || valor.charAt(i) == "'"){
			alert("Por favor, verifique se o campo possui caracteres inválidos !");
			campo.focus();
			util_Seleciona(campo);
            return false;
        }
    }
    return true;
}
//=====================================================================================



/* =====================================================================================
   	FUNÇÃO:    valida_TamanhoCampo(campo, nCaracteres)
   	
   	DESCRIÇÃO: verifica se o número de carateres do campo está correto.
   
   	PARAMETERS: campo (this ou o nome do input)
   				nCaracteres (número de caracteres do campo)
			  
   	USO: o valor deve conter o número de carateres especificado como parâmetro.
   			  
	EXEMPLO: <input class="campoForm" type="textbox" name="UF" MAXLENGTH="2" onChange="return valida_TamanhoCampo(this,2);"> 
					
	IMPORTANTE: o MAXLENGTH do input deve ser setado de acordo com o numero de caracteres do campo.
			
=======================================================================================*/
function valida_TamanhoCampo (campo, nCaracteres) {
	if (campo.value.length > 0) {
		if (campo.value.length > nCaracteres) {
			alert("Por favor, o tamanho do campo está incorreto. Ele deve conter " + nCaracteres + " caracteres.");
			campo.focus();
			util_Seleciona(campo);
			return false;
		}
		return true;
	}
	return true;
}
//=====================================================================================













/***************************************************************************************/
/*************************************     UTILS   *************************************/
/***************************************************************************************/

// funções utilizadas pelas funções de validação e máscara. 



/* =====================================================================================
   	FUNÇÃO:    util_CodigoASCII(evento)
   
   	DESCRIÇÃO: retorna o código do caracter digitado em um campo.
   
   	PARAMETROS: evento (objeto do evento disparado).
   
   	RETORNO: código ASCII do caracter digitado.

   	EXEMPLOS:
				if (util_CodigoASCII(event) == 32) {
					alert('espaco');
				}
=======================================================================================*/
function util_CodigoASCII(evento) {
	browser = util_DetectaBrowser();
    if(browser == "msie") {
        return  evento.keyCode;
    } else {
        return evento.which;
    }
}



/* =====================================================================================
   	FUNÇÃO:    util_Compara(objeto1, objeto2)
   
   	DESCRIÇÃO: compara dois valores de alfanuméricos.
   
   	PARAMETROS: objeto1 (primeiro valor a ser comparado)
   				objeto2 (segundo valor a ser comparado)
   
   	RETORNO: 1 - se o primeiro valor é maior que o do segundo.
   			 2 - se o segundo valor é maior que o do primeiro.
   			 3 - se os dois valores são iguais.

   	EXEMPLOS:
				if (util_Compara(campo1.value ,campo2.value) == 3) {
					alert('Valores iguais');
				}
=======================================================================================*/
function util_Compara(objeto1, objeto2) {
	if (objeto1 > objeto2) {
		return 1;
	} else if (objeto1 < objeto2) {
		return 2;
	} else if (objeto1 == objeto2) {
		return 3;
	}
}



/* =====================================================================================
   	FUNÇÃO:    util_Confirma (mens)
   
   	DESCRIÇÃO: envia uma mensagem de confirmação e retorna a resposta do usuário.
   
   	PARAMETROS: mens (mensagem de confirmação).
   
   	RETORNO: true - se o botão OK foi pressionado.
   			 false - se o botão CANCELAR foi pressionado.

   	EXEMPLOS:
				if (util_Confirma('Comfirma exclusão do registro ?')) {
					alert('Registro excluído.');
				}
=======================================================================================*/
function util_Confirma (mens) {
	return confirm(mens);
}



/* =====================================================================================
   	FUNÇÃO:    util_DetectaBrowser ()
   
   	DESCRIÇÃO: detecta o browser utilizado pelo usuário.
   
   	PARAMETROS: 
   
   	RETORNO:	'ns' - Netscape Comunicator
   			 	'msie' - Internet Explorer
   			 	'op' - Opera
   			 	'n/a' - Outros	
			  
	EXEMPLOS:
				if (detecta_Browser() == 'msie') {
					alert('Microsoft Internet Explorer');
				}
=======================================================================================*/
function util_DetectaBrowser () {
	var Browser;  
  	
  	// detecta browser  
  	if (navigator.appName.indexOf("Netscape") != -1) {
	  	Browser = "ns";
	} else if (navigator.appName.indexOf("Microsoft Internet Explorer") != -1) {
	  	Browser = "msie";
	} else if (navigator.userAgent.indexOf("Opera") != -1) {
	  	Browser = "op";
	} else {
		Browser = "n/a";
	}
	return Browser;
}



/* =====================================================================================
   	FUNÇÃO:    util_DetectaPlataforma ()
   
   	DESCRIÇÃO: detecta a plataforma do Sistema Operacional.
   
   	PARAMETROS: 
   
   	RETORNO:	'WIN32' - Microsoft Windows
			  	'MacPPC' - Macintosh Power PC
	EXEMPLOS:
				if (detecta_Plataforma() == 'WIN32') {
					alert('Microsoft Windows');
				}
=======================================================================================*/
function util_DetectaPlataforma () {
  	return navigator.platform;
}



/* =====================================================================================
   	FUNÇÃO:    util_DetectaSO ()
   
   	DESCRIÇÃO: detecta o Sistema Operacional do cliente.
   
   	PARAMETROS: 
   
   	RETORNO:	'Windows 98','Windows 95', 'Windows NT 4.0'...
			  
	EXEMPLOS:
				if (detecta_SO() == 'Windows 98') {
					alert('Microsoft Windows 98');
				}
=======================================================================================*/
function util_DetectaSO () {
	var SO;    	
  	
  	// detecta platforma  
  	if (navigator.userAgent.indexOf("Win") > -1) {
	  	SO = "win";
  	} else if (navigator.userAgent.indexOf("Mac") > -1) {
	  	SO = "mac";
	} else {
		SO = "other";
	}
	return SO;
}



/* =====================================================================================
   	FUNÇÃO:    util_DetectaVersao (Browser)
   
   	DESCRIÇÃO: detecta a versão do browser do cliente.
   
   	PARAMETROS: Browser - versão do browser do usuário identificada pela função util_DetectaBrowser.
   
   	RETORNO:	número da versão do browser do tipo FLOAT.
			  
	EXEMPLOS:
				if (detecta_Versao() == 5.5) {
					alert('Internet Explorer 5.5');
				}
=======================================================================================*/
function util_DetectaVersao (Browser) {
	var Versao;    	
	
  	// detecta versão    
  	if(Browser == "ns") {
    	Versao = parseFloat(navigator.appVersion);
    } else if(Browser == "msie") {
    	n = navigator.userAgent;
    	Versao = n.substr(n.indexOf("MSIE ")+("MSIE ").length, 4);
    	Versao = parseFloat(Versao); 
    	if(Browser == "op") {
    		Versao = n.substr(n.indexOf("Opera ")+("Opera ").length, 4);
    		Versao = parseFloat(Versao);
        }
    }  
	return Versao;
}



/* =====================================================================================
   	FUNÇÃO:    util_IsAlpha (codigo)
   
   	DESCRIÇÃO: verifica se o codigo do caracter é de uma letra.
   
   	PARAMETROS: codigo (código ASCII do caracter)
   
   	RETORNO:	True/False
			  
	EXEMPLOS:
				if (util_IsAlpha(65)) {
					alert('É uma letra.');
				}
=======================================================================================*/
function util_IsAlpha(codigo) {
	if( (codigo >= 65 && codigo <= 90) || (codigo >= 97 && codigo <= 122)) {
        return true;
    } else {
        return false;
    }
}



/* =====================================================================================
   	FUNÇÃO:    util_IsAlphaNumeric (codigo)
   
   	DESCRIÇÃO: verifica se o codigo do caracter é de uma letra ou número.
   
   	PARAMETROS: codigo (código ASCII do caracter)
   
   	RETORNO:	True/False
			  
	EXEMPLOS:
				if (util_IsAlphaNumeric(65)) {
					alert('É um alfanumérico.');
				}
=======================================================================================*/
function util_IsAlphaNumeric(codigo) {
	if( (codigo >= 48 && codigo <= 57) || (codigo >= 65 && codigo <= 90) || (codigo >= 97 && codigo <= 122) || 
		(codigo = 32) ) {
        return true;
    } else {
        return false;
    }
}



/* =====================================================================================
   	FUNÇÃO:    util_isBissexto(ano)
   
   	DESCRIÇÃO: verifica se o ano passado como parâmetro é um ano bissexto..
   
   	PARAMETROS: ano (valor do ano. Exemplo: 2004)
   
   	RETORNO:	TRUE/FALSE
			  
	EXEMPLOS:
				if (util_isBissexto(2004)) {
					alert('O ano de 2004 é bissexto.');
				}
=======================================================================================*/
function util_isBissexto(ano){
    return ((ano%4==0) && (ano%100!=0) || (ano%400==0));
}



/* =====================================================================================
   	FUNÇÃO:    util_IsControle(codigo)
   
   	DESCRIÇÃO: verifica se o código do caracter passado como parâmetro é de um caracter
   				 de controle.
   
   	PARAMETROS: codigo (código ASCII do caracter)
   
   	RETORNO:	True/False
			  
	EXEMPLOS:
				var code = event.keyCode;
				if (util_IsControle(code)) {
					alert('É um caracter de controle.');
				}
=======================================================================================*/
function util_IsControle(codigo) {
	if (codigo == 0 || codigo == 8 || codigo == 9 || codigo == 12 || codigo == 13 || codigo == 27 ||
       codigo == 144 || codigo == 145 || (codigo >= 16  && codigo <= 20) || (codigo >= 44 && codigo <= 46) ||
       (codigo >= 91  && codigo <= 93) || (codigo >= 33 && codigo <= 40) || (codigo >= 112 && codigo <= 123) ) {
       	return true;
	} else {
    	return false;
   	}
}



/* =====================================================================================
   	FUNÇÃO:    isDigit(digito)
   
   	DESCRIÇÃO: verifica se o caractere passado como parâmetro é numérico (0-9).
   
   	PARAMETROS: digito (caractere que será examinado)
   
   	RETORNO:	TRUE/FALSE
			  
	EXEMPLOS:
				var numero = '12345';
				if (isDigit(numero.charAt(0))) {
					alert('Não é um dígito.');
				}
=======================================================================================*/
function util_IsDigit(digito){
    if(digito==0 || digito==1 || digito==2 || digito==3 || digito==4 || digito==5 || digito==6 || digito==7 || digito==8 || digito==9){
        return true;
    }else{
        return false;
    }
}



/* =====================================================================================
   	FUNÇÃO:    util_IsNumber(numero)
   
   	DESCRIÇÃO: verifica se o valor passado como parâmetro é numérico.
   
   	PARAMETROS: numero (valor numérico a ser examinado)
   
   	RETORNO:	TRUE/FALSE
			  
	EXEMPLOS:
				var numero = '12ABC345';
				if (isNumber(numero)) {
					alert('Não é um número válido.');
				}
=======================================================================================*/
function util_IsNumber(numero){
   var CaractereInvalido = false;

   numero = String(numero);
   for (i=0; i < numero.length; i++){
      var Caractere = numero.charAt(i);
      if(Caractere != "." && Caractere != "," && Caractere != "-"){
         if (isNaN(parseInt(Caractere))) CaractereInvalido = true;
      }
   }
   return !CaractereInvalido;
}



/* =====================================================================================
   	FUNÇÃO:    util_IsNumeric(numero)
   
   	DESCRIÇÃO: verifica se o valor passado como parâmetro é numérico.
   
   	PARAMETROS: numero (valor numérico a ser examinado)
   
   	RETORNO:	TRUE/FALSE
			  
	EXEMPLOS:
				if (util_IsNumeric(65)) {
					alert('Não é um número válido.');
				}
=======================================================================================*/
function util_IsNumeric(codigo) {
	if ((codigo >= 48) && (codigo <= 57)) {
        return true;
   	} else {
        return false;
    }
}



/* =====================================================================================
   	FUNÇÃO:    util_IsPonto (codigo)
   
   	DESCRIÇÃO: verifica se o código do caracter passado como parâmetro é de um ponto.
   
   	PARAMETROS: codigo (código ASCII do caracter)
   
   	RETORNO:	TRUE/FALSE
			  
	EXEMPLOS:
				var numero = '13.000';
				if (util_IsPonto(numero.charAt(2))) {
					alert(''O caracter é um ponto.');
				}
=======================================================================================*/
function util_IsPonto (codigo) {
    if( codigo == 46) {
        return true;
    }else{
        return false;
    }
}



/* =====================================================================================
   	FUNÇÃO:    util_IsVirgula (codigo)
   
   	DESCRIÇÃO: verifica se o código do caracter passado como parâmetro é de uma vírgula.
   
   	PARAMETROS: codigo (código ASCII do caracter)
   
   	RETORNO:	TRUE/FALSE
			  
	EXEMPLOS:
				var numero = '1300,00';
				if (util_IsPonto(numero.charAt(5))) {
					alert(''O caracter é uma vírgula.');
				}
=======================================================================================*/
function util_IsVirgula (codigo) {
	if(codigo == 44) {
        return true;
    }else{
        return false;
    }
}



/* =====================================================================================
   	FUNÇÃO:    util_JavaEnabled ()
   
   	DESCRIÇÃO: verifica se o browser está configurado para executar código Java.
   
   	PARAMETROS: 
   
   	RETORNO:	TRUE/FALSE
			  
	EXEMPLOS:
				if (util_JavaEnabled()) {
					alert('Java habilitado!');
				}
=======================================================================================*/
function util_JavaEnabled ( ) {
	if (navigator.javaEnabled()) {
		return true;
	}
	else {
		return false;	
	}
}



/* =====================================================================================
   	FUNÇÃO:    util_Seleciona(campo)
   
   	DESCRIÇÃO: seleciona o conteúdo de um campo do formulário.
   			   O comando utilizado depende do browser do cliente.
   
   	PARAMETROS: campo (campo do formulário que terá seu conteúdo selecionado)
   			  
	EXEMPLOS:
				<input class="campoForm" id="cgc" name="cgc" type="text">
				<SCRIPT LANGUAGE="JavaScript">
					Seleciona(cgc);
				</SCRIPT>
=======================================================================================*/
function util_Seleciona(campo)
{
	if (util_DetectaBrowser() == 'msie') {
		campo.select();
	} 
	return true;
}



/* =====================================================================================
   	FUNÇÃO:	util_HabilitaCampos
   
   	DESCRIÇÃO: habilita ou desabilita os campos do tipo TEXT do formulário.
   
   	PARAMETROS: formulario (objeto do formulario onde os campos estão inseridos)   	
   				opcao (valor do tipo boolean [true/false] que determina se os 
   						campos serão habilitados ou desabilitados)
   	
   	RETORNO: nenhum
   			  
	EXEMPLOS:
				<script>
					util_HabilitaCampos(form1,true);
				</script>
=======================================================================================*/
function util_HabilitaCampos(formulario, opcao) {
	//var frm = eval('document.' + formulario.toString());
	//for (i = 0; i < formulario.elements.length; i++ ) {
	for (i = 0; i < 2; i++ ) {		
		if (formulario.elements[i].type == "text") {
			formulario.elements[i].readOnly = opcao
			} else {
			formulario.elements[i].disable = opcao
		} 
	}
} 
/* =====================================================================================
   	FUNÇÃO:	formataDataExibicao
   
   	DESCRIÇÃO: muda a exibição de uma data no formato yyyy-mm-dd para dd/mm/yyyy
   
   	PARAMETROS: data no formato yyyy-mm-dd
   	
   	RETORNO: data no formato dd/mm/yyyy
   			  
	EXEMPLOS:
				<script>
					formataDataExibicao("2004-09-01");
				</script>
=======================================================================================*/
function formataDataExibicao(entrada) {
	if (entrada.length != 10){ return ""; }
	else { return 	entrada.substring(8,10)+'/'+
					entrada.substring(5,7)+'/'+
					entrada.substring(0,4); }
} 
/* =====================================================================================
   	FUNÇÃO:	formataDataBanco
   
   	DESCRIÇÃO: muda a exibição de uma data no formato dd/mm/yyyy para yyyy-mm-dd
   
   	PARAMETROS: data no formato dd/mm/yyyy
   	
   	RETORNO: data no formato yyyy-mm-dd
   			  
	EXEMPLOS:
				<script>
					formataDataBanco("01/09/2004");
				</script>
=======================================================================================*/
function formataDataBanco(entrada) {
	if (entrada.length != 10){ return ""; }
	else { return 	entrada.substring(6,10)+'-'+
					entrada.substring(3,5)+'-'+
					entrada.substring(0,2); }
} 





<!--
function cpfcnpj(objCampo){
    if(objCampo.value.length == 3){
        objCampo.value = objCampo.value + '.';
        return false;
    }
    if(objCampo.value.length == 7){
        objCampo.value = objCampo.value + '.';
        return false;
    }
    if(objCampo.value.length == 11){
        objCampo.value = objCampo.value + '-';
        return false;
    }
    if(objCampo.value.length == 15){
        p0=objCampo.value.charAt(0);
        p1=objCampo.value.charAt(1);
        p2=objCampo.value.charAt(2);
        p3=objCampo.value.charAt(4);
        p4=objCampo.value.charAt(5);
        p5=objCampo.value.charAt(6);
        p6=objCampo.value.charAt(8);
        p7=objCampo.value.charAt(9);
        p8=objCampo.value.charAt(10);
        p9=objCampo.value.charAt(12);
        p10=objCampo.value.charAt(13);
        p11=objCampo.value.charAt(14);
        objCampo.value = '';
        objCampo.value = p0 + p1 + '.' + p2 + p3 + p4 + '.' + p5 + p6 + p7 + '/' + p8 + p9 + p10 + p11 + '-';
        p0='';
        p1='';
        p2='';
        p3='';
        p4='';
        p5='';
        p6='';
        p7='';
        p8='';
        p9='';
        p10='';
        p11='';
        return false;
    }
}


// JavaScript Document
/*    ********************************************************************    
    ####################################################################
    Assunto = Validação de CPF e CNPJ
    Autor = Marcos Regis
    Data = 24/01/2006
    Versão = 1.0
    Compatibilidade = Todos os navegadores.
    Pode ser usado e distribuído desde que esta linhas sejam mantidas
    ====------------------------------------------------------------====
    
    Funcionamento = O script recebe como parâmetro um objeto por isso 
    deve ser chamado da seguinte forma:
    E.: no evento onBlur de um campo texto
    <input name="cpf_cnpj" type="text" size="40" maxlength="18" 
    onBlur="validar(this);">
    Ao deixar o campo o evento é disparado e chama validar() com o 
    argumento "this" que representa o próprio objeto com todas as 
    propriedades.
    A partir daí a função validar() trata a entrada removendo tudo que
    não for caracter numérico e deixando apenas números, portanto
    valores escritos só com números ou com separadores como '.' ou mesmo
    espacos são aceitos
    ex.: 111222333/44, 111.222.333-44, 111 222 333 44 serão tratadoc como
    11122233344 (para CPFs)
    De certa forma até mesmo valores como 111A222B333C44 será aceito mas
    aconselho a usar a função soNums() que encotra-se aqui mesmo para
    que o campo só aceite caracteres numéricos.
    Para usar a função soNums() chame-a no evento onKeyPress desta forma
    onKeyPress="return soNums(event);"
    Após limpar o valor verificamos seu tamanho que deve ser ou 11 ou 14
    Se o tamanho não for aceito a função retorna false e [opcional] 
    mostra uma mensagem de erro.
    Sugestões e comentários marcos_regis@hotmail.com
    ####################################################################
    ********************************************************************    */

// a função principal de validação
function validar(obj) { // recebe um objeto
    var s = (obj.value).replace(/\D/g,'');
    var tam=(s).length; // removendo os caracteres não numéricos
    if (!(tam==11 || tam==14)){ // validando o tamanho
        alert("'"+s+"' Não é um CPF ou um CNPJ válido!" ); // tamanho inválido
        return false;
    }
    
// se for CPF
    if (tam==11 ){
        if (!validaCPF(s)){ // chama a função que valida o CPF
            alert("'"+s+"' Não é um CPF válido!" ); // se quiser mostrar o erro
            obj.select();  // se quiser selecionar o campo em questão
            return false;
        }
        alert("'"+s+"' É um CPF válido!" ); // se quiser mostrar que validou        
        obj.value=maskCPF(s);    // se validou o CPF mascaramos corretamente
        return true;
    }
    
// se for CNPJ            
    if (tam==14){
        if(!validaCNPJ(s)){ // chama a função que valida o CNPJ
            alert("'"+s+"' Não é um CNPJ válido!" ); // se quiser mostrar o erro
            obj.select();    // se quiser selecionar o campo enviado
            return false;            
        }
        alert("'"+s+"' É um CNPJ válido!" ); // se quiser mostrar que validou                
        obj.value=maskCNPJ(s);    // se validou o CNPJ mascaramos corretamente
        return true;
    }
}
// fim da funcao validar()

// função que valida CPF
// O algorítimo de validação de CPF é baseado em cálculos
// para o dígito verificador (os dois últimos)
// Não entrarei em detalhes de como funciona
function validaCPF(s) {
    var c = s.substr(0,9);
    var dv = s.substr(9,2);
    var d1 = 0;
    for (var i=0; i<9; i++) {
        d1 += c.charAt(i)*(10-i);
     }
    if (d1 == 0) return false;
    d1 = 11 - (d1 % 11);
    if (d1 > 9) d1 = 0;
    if (dv.charAt(0) != d1){
        return false;
    }
    d1 *= 2;
    for (var i = 0; i < 9; i++)    {
         d1 += c.charAt(i)*(11-i);
    }
    d1 = 11 - (d1 % 11);
    if (d1 > 9) d1 = 0;
    if (dv.charAt(1) != d1){
        return false;
    }
    return true;
}

// Função que valida CNPJ
// O algorítimo de validação de CNPJ é baseado em cálculos
// para o dígito verificador (os dois últimos)
// Não entrarei em detalhes de como funciona
function validaCNPJ(CNPJ) {
    var a = new Array();
    var b = new Number;
    var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
    for (i=0; i<12; i++){
        a[i] = CNPJ.charAt(i);
        b += a[i] * c[i+1];
    }
    if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
    b = 0;
    for (y=0; y<13; y++) {
        b += (a[y] * c[y]);
    }
    if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
    if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
        return false;
    }
    return true;
}


    // Função que permite apenas teclas numéricas
    // Deve ser chamada no evento onKeyPress desta forma
    // return (soNums(event));
function soNums(e)
{
    if (document.all){var evt=event.keyCode;}
    else{var evt = e.charCode;}
    if (evt <20 || (evt >47 && evt<58)){return true;}
    return false;
}

//    função que mascara o CPF
function maskCPF(CPF){
    return CPF.substring(0,3)+"."+CPF.substring(3,6)+"."+CPF.substring(6,9)+"-"+CPF.substring(9,11);
}

//    função que mascara o CNPJ
function maskCNPJ(CNPJ){
    return CNPJ.substring(0,2)+"."+CNPJ.substring(2,5)+"."+CNPJ.substring(5,8)+"/"+CNPJ.substring(8,12)+"-"+CNPJ.substring(12,14);    
}
//--> 
	
	
	function verificaTamanho(arrObjArquivo, tamanhoMaximoKb){
		var objArchiveSystem = new ActiveXObject("Scripting.FileSystemObject");
		for(var i = 0; i < arrObjArquivo.length; i++){
			var nomeArquivo = arrObjArquivo[i].value;
			var objArquivo = objArchiveSystem.getFile(nomeArquivo);
			var tamanhoBytes = objArquivo.size;
			var msg = "";
			if(tamanhoBytes/(1024) > tamanhoMaximoKb){ 
				alert("Atenção, o arquivo '" + arquivo + "' que você está tentando postar excede o tamanho máximo permitido.")
				return false;
			}
		}
		return true;
	}