//Inicio comentários----------------------------------------------------

//Abaixo uma série de verificações e inserções de mascaras tais como:
//Verifica se há campos vazios
//Verifica se o campo é numérico
//Verifica a validade de CPF e CNPJ
//Verifica email
//Poe mascara em TELEFONE / CEP / CPF / CNPJ e etc
//Poe as letras nos campos em maiusculas

/*Existe uma variedade bem ampla abaixo de funcoes para validar... verificar campos vazios
mascarar. Eu particularmente uso praticamente todas. Mas pode-se escolher
permitindo por exemplo que o usuario deixe um campo em branco.
*/

//-------------------------------------------------------------------------------
/*Exemplo de formulário usando algumas funcoes abaixo
<?   
	 echo "<form  class='corpoForms' action='index.php?acao=inserir_med' method='post' enctype = 'multipart/form-data' name = cadastro  onSubmit='return validaForm()'>";
		echo "<fieldset>";
		echo "<label>Nome :</label><input name=nome type='text' class='campoForm' size=30 maxlength='75' onblur='TextBoxCaixaAlta_OnBlur(this.value, this.form.name, this.name)' onkeyup='TextBoxCaixaAlta_OnKeyUp(this.value, this.form.name, this.name)'> *<br>";
 		echo "<label>Cidade:</label><input name=cidade type='text' class='campoForm' size=30 maxlength='15' onblur='TextBoxCaixaAlta_OnBlur(this.value, this.form.name, this.name)' onkeyup='TextBoxCaixaAlta_OnKeyUp(this.value, this.form.name, this.name)'> *<br>";
 		echo "<label>Estado :</label><input name=estado type='text' class='campoForm' size=3 maxlength='2' onblur='TextBoxCaixaAlta_OnBlur(this.value, this.form.name, this.name)' onkeyup='TextBoxCaixaAlta_OnKeyUp(this.value, this.form.name, this.name)' > *<br>";
 		echo "<label>Telefone :</label><input name='telefone' type='text' class='campoForm' size=20 maxlength='14' onKeyPress=ValidaTelefonecadastro.telefone) onBlur='ValidaTelefone(cadastro.telefone)' OnKeyUp='mascara(this, telefone_val)'> *<br>";
 		echo "<label>E-mail :</label><input name=email type='text' class='campoForm' size=30 maxlength='40'> *<br>";
 		echo "<label>MSN :</label><input name=msn type='text' class='campoForm' size=30 maxlength='40'> <br><br>";
 		echo "<label>Mensagem :</label>";
 		echo "<textarea name='mensagem' type='text'></textarea><br>";
 		echo "<input type='submit' class='botao' value='Enviar'>";
		echo "</fieldset>";
	 echo "</form>";
?> 
*/
//--------------------------------------------------------------------------------
//--------------------------------------------------------------------------------

//Inicio validações (confere se o campo esta em branco ou se é numerico)----------

//funcao para verificar campos em branco ou com informacoes erradas
function validaForm(){
	d = document.cadastro;
	//verifica nome	
	if (d.nome.value == ""){
		alert("O campo " + d.nome.name + " deve ser preenchido!");
		d.nome.focus();
		return false;
	}
	//verifica cidade se o campo estiver vazio
	if (d.cidade.value == ""){
		alert("O campo " + d.cidade.name + " deve ser preenchido!");
		d.cidade.focus();
		return false;
	}
	//verifica estado se o campo estiver vazio
	if (d.estado.value == ""){
		alert("O campo " + d.estado.name + " deve ser preenchido!");
		d.estado.focus();
		return false;
	}
	
	//verifica telefone se o campo estiver vazio
	if (d.telefone.value == ""){
		alert("O campo " + d.telefone.name + " deve ser preenchido!");
		d.telefone.focus();
		return false;
	}
	//verifica email
	if (d.email.value == ""){
		alert("O campo " + d.email.name + " deve ser preenchido!");
		d.email.focus();
		return false;
	}
	//validar email(verificao de endereco eletronico)
	parte1 = d.email.value.indexOf("@");
	parte2 = d.email.value.indexOf(".");
	parte3 = d.email.value.length;
	if (!(parte1 >= 3 && parte2 >= 6 && parte3 >= 9)) {
		alert("O campo " + d.email.name + " deve ser conter um endereco eletronico!");
		d.email.focus();
		return false;
	}
	//verifica mensagem
	if (d.mensagem.value == ""){
		alert("O campo " + d.mensagem.name + " deve ser preenchido!");
		d.mensagem.focus();
		return false;
	}

	//verifica senha
	if (d.senha.value == ""){
		alert("O campo " + d.senha.name + " deve ser preenchido!");
		d.senha.focus();
		return false;
	}
	//validar sexo com (RADIO)
	if (!d.sexo[0].checked && !d.sexo[1].checked) {
		alert("Escolha o sexo!")
		return false;
	}
	return true;
}

//------------------------------------------------------------------------
//------------------------------------------------------------------------

//Funcao para campos do formulário agendamento----------------------------

//funcao para verificar campos em branco ou com informacoes erradas
function validaFormAgen(){
	d = document.cadastroAgen;
	//verifica nome	
	if (d.nome.value == ""){
		alert("O campo " + d.nome.name + " deve ser preenchido!");
		d.nome.focus();
		return false;
	}
	//verifica telefone se o campo estiver vazio
	if (d.telefone.value == ""){
		alert("O campo " + d.telefone.name + " deve ser preenchido!");
		d.telefone.focus();
		return false;
	}
	//verifica email
	if (d.email.value == ""){
		alert("O campo " + d.email.name + " deve ser preenchido!");
		d.email.focus();
		return false;
	}
	//validar email(verificao de endereco eletronico)
	parte1 = d.email.value.indexOf("@");
	parte2 = d.email.value.indexOf(".");
	parte3 = d.email.value.length;
	if (!(parte1 >= 3 && parte2 >= 6 && parte3 >= 9)) {
		alert("O campo " + d.email.name + " deve ser conter um endereco eletronico!");
		d.email.focus();
		return false;
	}
	//verifica mensagem
	if (d.mensagem.value == ""){
		alert("O campo " + d.mensagem.name + " deve ser preenchido!");
		d.mensagem.focus();
		return false;
	}
}
//------------------------------------------------------------------------
//------------------------------------------------------------------------

//Funcao para campos do formulário agendamento----------------------------

//funcao para verificar campos em branco ou com informacoes erradas
function enviardados(){
	d = document.news;
	//verifica nome	
	if (d.nome.value == ""){
		alert("O campo " + d.nome.name + " deve ser preenchido!");
		d.nome.focus();
		return false;
	}
			//verifica email
	if (d.email.value == ""){
		alert("O campo " + d.email.name + " deve ser preenchido!");
		d.email.focus();
		return false;
	}
	//validar email(verificao de endereco eletronico)
	parte1 = d.email.value.indexOf("@");
	parte2 = d.email.value.indexOf(".");
	parte3 = d.email.value.length;
	if (!(parte1 >= 3 && parte2 >= 6 && parte3 >= 9)) {
		alert("O campo " + d.email.name + " deve ser conter um endereco eletronico!");
		d.email.focus();
		return false;
	}
}
//------------------------------------------------------------------------
//------------------------------------------------------------------------

//Funcao para transformar em letra maiuscula -----------------------------

//letra maiuscula
   function TextBoxCaixaAlta_OnKeyUp(fsValor, foForm, foNome) { 
	if (window.event.keyCode >= 65 && window.event.keyCode <= 90){
		x = new String(document.forms[foForm].elements[foNome].value);
		document.forms[foForm].elements[foNome].value = x.toUpperCase();
	}
   }

   function TextBoxCaixaAlta_OnBlur(fsValor, foForm, foNome){ 	
	var tam=0;
	x = new String(document.forms[foForm].elements[foNome].value);
	while (tam != x.length){
		tam = x.length;
		x = x.replace('\'', '');
	}
	document.forms[foForm].elements[foNome].value = x.toUpperCase();
   }
 
//------------------------------------------------------------------------
//------------------------------------------------------------------------

//Mascaras ---------------------------------------------------------------
//fonte - http://elcio.com.br/ajax/mascara/

//Recebe os dados e passa para a funcao
function mascara(o,f){
    v_obj=o
    v_fun=f
    setTimeout("execmascara()",1)
}

function execmascara(){
    v_obj.value=v_fun(v_obj.value)
}

function leech(v){
    v=v.replace(/o/gi,"0")
    v=v.replace(/i/gi,"1")
    v=v.replace(/z/gi,"2")
    v=v.replace(/e/gi,"3")
    v=v.replace(/a/gi,"4")
    v=v.replace(/s/gi,"5")
    v=v.replace(/t/gi,"7")
    return v
}

/* modo de usar - 
		// <label for="inumeros">só números:
        // <input id="inumeros" onkeypress="mascara(this,soNumeros)" /></label>
*/
function soNumeros(v){
    return v.replace(/\D/g,"")
}

/* modo de usar - 
		//<label for="telefone">telefone:
        //<input id="telefone" onkeypress="mascara(this,telefone_val)" maxlength="14" /></label>
*/
function telefone_val(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
}

/* modo de usar - 
		<label for="icpf">cpf:
        <input id="icpf" onkeypress="mascara(this,cpf)" maxlength="14" /></label>
*/
function cpf(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
}

/* modo de usar - 
   		<label for="icep">cep:
        <input id="icep" onkeypress="mascara(this,cep)" maxlength="9" /></label>
*/	
function cep(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
}

/* modo de usar - 
		<label for="icnpj">cnpj:
        <input id="icnpj" onkeypress="mascara(this,cnpj)" maxlength="18" /></label>
*/			
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
}

/* modo de usar - 
    <label for="iromanos">romanos:
        <input id="iromanos" onkeypress="mascara(this,romanos)" maxlength="18" /></label>
*/	
function romanos(v){
    v=v.toUpperCase()             //Maiúsculas
    v=v.replace(/[^IVXLCDM]/g,"") //Remove tudo o que não for I, V, X, L, C, D ou M
    //Essa é complicada! Copiei daqui: http://www.diveintopython.org/refactoring/refactoring.html
    while(v.replace(/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,"")!="")
        v=v.replace(/.$/,"")
    return v
}

/* modo de usar - 
    <label for="isite">site:
        <input id="isite" onkeyup="mascara(this,site)" value="http://" /></label>
*/		
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
}

//------------------------------------------------------------------------
//------------------------------------------------------------------------

//Mascaras e validacoes de data / cep / cnpj / cpf / etc -----------------

/*
As funcoes abaixo vem com controle de mascara de telefone/ cpf / cnpj / data /  
cep /  bem como suas validacoes...

Como usar as funcoes abaixo exemplo
cadastro = nome do formulario
cpf = nome do campo

CPF:
<input type="text" name="cpf" onBlur="ValidarCPF(cadastro.cpf);" 
onKeyPress="MascaraCPF(cadastro.cpf);" maxlength="14">

CNPJ:
<input type="text" name="cnpj" onKeyPress="MascaraCNPJ(cadastro.cnpj);" 
maxlength="18" onBlur="ValidarCNPJ(cadastro.cnpj);">

CEP:
<input type="text" name="cep" onKeyPress="MascaraCep(cadastro.cep);"
maxlength="10" onBlur="ValidaCep(cadastro.cep)">

DATA:
<input type="text" name="data" onKeyPress="MascaraData(cadastro.data);"
maxlength="10" onBlur= "ValidaDataform1.data);">

*/

//adiciona mascara de cnpj
function MascaraCNPJ(cnpj){
    if(mascaraInteiro(cnpj)==false){
        event.returnValue = false;
    }    
    return formataCampo(cnpj, '00.000.000/0000-00', event);
}

//adiciona mascara de cep
function MascaraCep(cep){
        if(mascaraInteiro(cep)==false){
        event.returnValue = false;
    }    
    return formataCampo(cep, '00.000-000', event);
}

//adiciona mascara de data
function MascaraData(data){
    if(mascaraInteiro(data)==false){
        event.returnValue = false;
    }    
    return formataCampo(data, '00/00/0000', event);
}

//adiciona mascara ao telefone
function MascaraTelefone(tel){    
    if(mascaraInteiro(tel)==false){
        event.returnValue = false;
    }    
    return formataCampo(tel, '(00) 0000-0000', event);
}

//adiciona mascara ao CPF
function MascaraCPF(cpf){
    if(mascaraInteiro(cpf)==false){
        event.returnValue = false;
    }    
    return formataCampo(cpf, '000.000.000-00', event);
}

//valida telefone
function ValidaTelefone(tel){
    exp = /\(\d{2}\)\ \d{4}\-\d{4}/
    if(!exp.test(tel.value))
        alert('Numero de Telefone Invalido!');
}

//valida CEP
function ValidaCep(cep){
    exp = /\d{2}\.\d{3}\-\d{3}/
    if(!exp.test(cep.value))
        alert('Numero de Cep Invalido!');        
}

//valida data
function ValidaData(data){
    exp = /\d{2}\/\d{2}\/\d{4}/
    if(!exp.test(data.value))
        alert('Data Invalida!');            
}

//valida o CPF digitado
function ValidarCPF(Objcpf){
    var cpf = Objcpf.value;
    exp = /\.|\-/g
    cpf = cpf.toString().replace( exp, "" ); 
    var digitoDigitado = eval(cpf.charAt(9)+cpf.charAt(10));
    var soma1=0, soma2=0;
    var vlr =11;
    
    for(i=0;i<9;i++){
        soma1+=eval(cpf.charAt(i)*(vlr-1));
        soma2+=eval(cpf.charAt(i)*vlr);
        vlr--;
    }    
    soma1 = (((soma1*10)%11)==10 ? 0:((soma1*10)%11));
    soma2=(((soma2+(2*soma1))*10)%11);
    
    var digitoGerado=(soma1*10)+soma2;
    if(digitoGerado!=digitoDigitado)    
        alert('CPF Invalido!');        
}

//valida numero inteiro com mascara
function mascaraInteiro(){
    if (event.keyCode < 48 || event.keyCode > 57){
        event.returnValue = false;
        return false;
    }
    return true;
}

//valida o CNPJ digitado
function ValidarCNPJ(ObjCnpj){
    var cnpj = ObjCnpj.value;
    var valida = new Array(6,5,4,3,2,9,8,7,6,5,4,3,2);
    var dig1= new Number;
    var dig2= new Number;
    
    exp = /\.|\-|\//g
    cnpj = cnpj.toString().replace( exp, "" ); 
    var digito = new Number(eval(cnpj.charAt(12)+cnpj.charAt(13)));
        
    for(i = 0; i<valida.length; i++){
        dig1 += (i>0? (cnpj.charAt(i-1)*valida[i]):0);    
        dig2 += cnpj.charAt(i)*valida[i];    
    }
    dig1 = (((dig1%11)<2)? 0:(11-(dig1%11)));
    dig2 = (((dig2%11)<2)? 0:(11-(dig2%11)));
    
    if(((dig1*10)+dig2) != digito)    
        alert('CNPJ Invalido!');
        
}

//formata de forma generica os campos
function formataCampo(campo, Mascara, evento) { 
    var boleanoMascara; 
    
    var Digitato = evento.keyCode;
    exp = /\-|\.|\/|\(|\)| /g
    campoSoNumeros = campo.value.toString().replace( exp, "" ); 
   
    var posicaoCampo = 0;     
    var NovoValorCampo="";
    var TamanhoMascara = campoSoNumeros.length;; 
    
    if (Digitato != 8) { // backspace 
        for(i=0; i<= TamanhoMascara; i++) { 
            boleanoMascara  = ((Mascara.charAt(i) == "-") || (Mascara.charAt(i) == ".")
                                || (Mascara.charAt(i) == "/")) 
            boleanoMascara  = boleanoMascara || ((Mascara.charAt(i) == "(") 
                                || (Mascara.charAt(i) == ")") || (Mascara.charAt(i) == " ")) 
            if (boleanoMascara) { 
                NovoValorCampo += Mascara.charAt(i); 
                  TamanhoMascara++;
            }else { 
                NovoValorCampo += campoSoNumeros.charAt(posicaoCampo); 
                posicaoCampo++; 
              }            
          }     
        campo.value = NovoValorCampo;
          return true; 
    }else { 
        return true; 
    }
}







