//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ VALIDAÇÕES

// FUNÇÕES LANCADORAS ==============================================================================

					/*================================================================================================
					 Função que lança parametros para o tipo de mascara
					 Recebe os parametros:
						'o' objeto (o proprio campo referenciado) 
						'f' função (a função usada para validar o campo)
						'n' next (proximo campo que será focado quando atender a validação)
						's' size (tamanho do campo)
					==================================================================================================*/
					function masc(o,f,n,s){
						obj=o
						fun=f
						nxt=n
						sze=s
						setTimeout("execMasc()",1)// chama execMasc() a cada digito do usuario
					}
					
					/*================================================================================================
					 Função que executa:
						- a função de validação escolhida pelo parâmetro 'f' em masc(o,f,n,s) 
						- testa o tamanho do campo referenciado para mudar o focus() para proximo campo definido em 'n'
					 Utiliza variaveis inicializadas em masc(o,f,n,s)
					==================================================================================================*/
					function execMasc(){
						obj.value=fun(obj.value) // atribui o valor de retorno da função escolhida ao campo referenciado
						if (obj.value.length == sze){ // se tamanho do campo for igual ao tamanho referenciado
							if (nxt ==''){obj.focus} // se nxt estiver vazio mantem focus no proprio campo
							else {nxt.focus()}}	// muda o focus para o proximo campo
					}

// FUNÇÕES DEPENDENTES DE LANCAMENTO =====================================================================

					/*================================================================================================
					 Validação de Caracteres bloqueando Numeros
					==================================================================================================*/
					function valStrNumN(v){
						v=v.replace(/\d/g,"")
						return v
					}

					/*================================================================================================
					 Validação de Caracteres CONVERTENDO para MAIUSCULAS aceitando Numeros
					==================================================================================================*/
					function valStrUpperNumY(v){
						return v.toUpperCase()
					}

					/*================================================================================================
					 Validação de Caracteres CONVERTENDO para MAIUSCULAS bloqueando Numeros
					==================================================================================================*/
					function valStrUpperNumN(v){
						v=v.replace(/\d/g,"")
						return v.toUpperCase()
					}

					/*================================================================================================
					 Validação de Numeros bloqueando Caracteres
					==================================================================================================*/
					function valNumStrN(v){
						return v.replace(/\D/g,"")
					}

					/*================================================================================================
					 Validação de Datas
					==================================================================================================*/
					function data(v){
						v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
						v=v.replace(/^(\d{2})(\d)/,"$1/$2")             //Coloca uma barra entre o segundo e o terceiro dígitos
						v=v.replace(/(\d{2})(\d)/,"$1/$2")           //Coloca uma barra entre o quinto e o sexto dígitos
						return v
					}
					
					/*================================================================================================
					 Validação de Horas
					==================================================================================================*/
					function horaF(v){
						v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
						v=v.replace(/^(\d{2})(\d)/,"$1:$2")             //Coloca dois pontos entre o segundo e o terceiro dígitos
						return v
					}
					
					/*================================================================================================
					 Validação de Telefones
					==================================================================================================*/
					function telefone(v){
						v=v.replace(/\D/g,"")                 //Remove tudo o que não é dígito
						v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
						v=v.replace(/(\d{4})(\d)/,"$1-$2")    //Coloca hífen entre o quarto e o quinto dígitos
						return v
					}
					
					/*================================================================================================
					 Validação de CPF
					==================================================================================================*/
					function cpff(v){
						v=v.replace(/\D/g,"")                    //Remove tudo o que não é dígito
						v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
						v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
																 //de novo (para o segundo bloco de números)
						v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
						return v
					}
					
					/*================================================================================================
					 Validação de CEP
					==================================================================================================*/
					function cepf(v){
						v=v.replace(/D/g,"")                //Remove tudo o que não é dígito
						v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
						return v
					}
					
					/*================================================================================================
					 Validação de CNPJ
					==================================================================================================*/
					function cnpj(v){
						v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
						v=v.replace(/^(\d{2})(\d)/,"$1.$2")             //Coloca ponto entre o segundo e o terceiro dígitos
						v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
						v=v.replace(/\.(\d{3})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos
						v=v.replace(/(\d{4})(\d)/,"$1-$2")              //Coloca um hífen depois do bloco de quatro dígitos
						return v
					}
					
					/*================================================================================================
					 Validação de URLSITE
					==================================================================================================*/
					function site(v){
						//Esse sem comentarios para que você entenda sozinho ;-)
						v=v.replace(/^http:\/\/?/,"")
						dominio=v
						caminho=""
						if(v.indexOf("/")>-1)
							dominio=v.split("/")[0]
							caminho=v.replace(/[^\/]*/,"")
						dominio=dominio.replace(/[^\w\.\+-:@]/g,"")
						caminho=caminho.replace(/[^\w\d\+-@:\?&=%\(\)\.]/g,"")
						caminho=caminho.replace(/([\?&])=/,"$1")
						if(caminho!="")dominio=dominio.replace(/\.+$/,"")
						v="http://"+dominio+caminho
						return v
					}


// FUNÇÕES INDEPENDENTES DE LANCAMENTO =====================================================================

					/*================================================================================================
					 Encaminhando focus() para proximo campo sem condição
					==================================================================================================*/
					function goField(n){
						n.focus()
					}

					/*================================================================================================
					 Verifica campo vazio
					==================================================================================================*/
					function verifyEmpty(o){
						obj= o
						obj.value=trim(obj.value)
						if (obj.value == ""){ // se o campo referenciado esta vazio 
							alert("Este campo não pode estar vazio!")// alerta usuário 
							setTimeout("obj.focus()",300)} //mantem focus()
					}
					
					/*================================================================================================
					 Remove espaço vazio de String
					==================================================================================================*/
					function trim(obj) {
						return obj.replace(/^\s+|\s+$/g,"")}

					/*================================================================================================
					 Validação de EMAIL
					==================================================================================================*/
					function emailf(obj){
  						var txt = obj.value;
  						if ((txt.length != 0) && ((txt.indexOf("@") < 1) || (txt.indexOf('.') < 2))){
							alert('O email digitado parece estar incompleto!');
							obj.focus();}}
					/*================================================================================================
					 Validação de DinDin
					==================================================================================================*/
					function moneyf(v){
						v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
        				v=v.replace(/(\d)(\d{2})$/,"$1,$2") //Coloca virgula antes dos 2 últimos digitos
        				return v
					}

					/*================================================================================================
					 Verificação de CPF
					==================================================================================================*/

					function cpfVerify(obj) {
						var TMP = obj.value; // Recebe o valor digitado no campo
						CPF = TMP.replace('.', '');
						CPF = CPF.replace('.', '');
						CPF = CPF.replace('-', '');   
						// Aqui começa a checagem do CPF
						var POSICAO, I, SOMA, DV, DV_INFORMADO;
						var DIGITO = new Array(10);
						DV_INFORMADO = CPF.substr(9, 2); // Retira os dois últimos dígitos do número informado
						// Desemembra o número do CPF na array DIGITO
						for (I=0; I<=8; I++) {
							DIGITO[I] = CPF.substr( I, 1);}
						// Calcula o valor do 10º dígito da verificação
						POSICAO = 10;
						SOMA = 0;
						for (I=0; I<=8; I++) {
							SOMA = SOMA + DIGITO[I] * POSICAO;
							POSICAO = POSICAO - 1;}
						DIGITO[9] = SOMA % 11;
						if (DIGITO[9] < 2) {
							DIGITO[9] = 0;}
						else{
							DIGITO[9] = 11 - DIGITO[9];}
						// Calcula o valor do 11º dígito da verificação
						POSICAO = 11;
						SOMA = 0;
						for (I=0; I<=9; I++) {
							SOMA = SOMA + DIGITO[I] * POSICAO;
							POSICAO = POSICAO - 1;}
						DIGITO[10] = SOMA % 11;
						if (DIGITO[10] < 2) {
							DIGITO[10] = 0;}
						else {
							DIGITO[10] = 11 - DIGITO[10];}
						// Verifica se os valores dos dígitos verificadores conferem
						DV = DIGITO[9] * 10 + DIGITO[10];
						if (DV != DV_INFORMADO) {
							alert('O CPF informado é inválido!');
							obj.focus();
							return false;}}
							
							
				/*========================================================================================
				Formata Valor
				=========================================================================================*/
				
				function FormataValor(id,tammax,teclapres) {
					if(window.event) { // Internet Explorer
						var tecla = teclapres.keyCode; }
					else if(teclapres.which) { // Nestcape / firefox
						var tecla = teclapres.which;
					}
	
					vr = document.getElementById(id).value;
					vr = vr.toString().replace( "/", "" );
					vr = vr.toString().replace( "/", "" );
					vr = vr.toString().replace( ",", "" );
					vr = vr.toString().replace( ".", "" );
					vr = vr.toString().replace( ".", "" );
					vr = vr.toString().replace( ".", "" );
					vr = vr.toString().replace( ".", "" );
					tam = vr.length;
					
					if (tam < tammax && tecla != 8){ tam = vr.length + 1; }
					
					if (tecla == 8 ){ tam = tam - 1; }
					
					if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){
						if ( tam <= 2 ){
							document.getElementById(id).value = vr; }
						if ( (tam > 2) && (tam <= 5) ){
							document.getElementById(id).value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ); }
						if ( (tam >= 6) && (tam <= 8) ){
							document.getElementById(id).value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); }
						if ( (tam >= 9) && (tam <= 11) ){
							document.getElementById(id).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) ){
							document.getElementById(id).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) ){
					document.getElementById(id).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 );}
					}
				}
