//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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;}}
							
							
