

//MASCARAS GERAIS

/*** 
* Descrição.: formata um campo do formulário de 
* acordo com a máscara informada... 
* Parâmetros: - objForm (o Objeto Form) 
* - strField (string contendo o nome 
* do textbox) 
* - sMask (mascara que define o 
* formato que o dado será apresentado, 
* usando o algarismo "9" para 
* definir números e o símbolo "!" para 
* qualquer caracter... 
* - evtKeyPress (evento) 
* Uso.......: <input type="textbox" 
* name="xxx"..... 
* onkeypress="return txtBoxFormat(document.rcfDownload, 'str_cep', '99999-999', event);"> 
* Observação: As máscaras podem ser representadas como os exemplos abaixo: 
* 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-! 
* E por aí vai... 
***/

function txtBoxFormat(objForm, strField, sMask, evtKeyPress) {
      var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;
      if(document.all) { // Internet Explorer
        nTecla = evtKeyPress.keyCode; }
      else if(document.layers) { // Nestcape
        nTecla = evtKeyPress.which;
      }

      sValue = objForm[strField].value;
      // Limpa todos os caracteres de formatação que
      // já estiverem no campo.
      sValue = sValue.toString().replace( "-", "" );
      sValue = sValue.toString().replace( "-", "" );
      sValue = sValue.toString().replace( ".", "" );
      sValue = sValue.toString().replace( ".", "" );
      sValue = sValue.toString().replace( "/", "" );
      sValue = sValue.toString().replace( "/", "" );
      sValue = sValue.toString().replace( "(", "" );
      sValue = sValue.toString().replace( "(", "" );
      sValue = sValue.toString().replace( ")", "" );
      sValue = sValue.toString().replace( ")", "" );
      sValue = sValue.toString().replace( " ", "" );
      sValue = sValue.toString().replace( " ", "" );
      fldLen = sValue.length;
      mskLen = sMask.length;

      i = 0;
      nCount = 0;
      sCod = "";
      mskLen = fldLen;

      while (i <= mskLen) {
        bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
        bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

        if (bolMask) {
          sCod += sMask.charAt(i);
          mskLen++; }
        else {
          sCod += sValue.charAt(nCount);
          nCount++;
        }

        i++;
      }
      objForm[strField].value = sCod;
      if (nTecla != 8) { // backspace
		  if (sMask.charAt(i-1) == "9") { // apenas números...
          return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9
        else { // qualquer caracter...
          return true;
        } }
      else {
        return true;
      }
    }
//Fim da Função Máscaras Gerais
/* DATA: 12/12/2006 */

/* MENSAGEM_EXCLUSAO(PAGINA) PERGUNTA AO USUÁRIO SE DESEJA QUE O REGISTRO SEJA
 * EXCLUÍDO. CASO O USUÁRIO SELECIONE A OPÇÃO OK, REDIRECIONA PARA A PÁGINA
 * PASSADA COMO PARAMETRO, SENÃO, NÃO REALIZA NENHUMA AÇÃO.
 */


function mensagem_exclusao(pagina) {
      if (window.confirm("Deseja realmente excluir este Registro?")) {
            window.open(pagina, '_self');
            return true;
      } else {
            return false;
      }
}

/* DATA: 20/11/2006 */

/* CAMPO_TXT_VAZIO(NROFORM, NROELEMENT, OBRIGATORIO) RETORNA TRUE SE, NA JANELA CORRENTE,
 * O FORMULARIO DE INDICE 'NROFORM' APRESENTA A ENTRADA DE FORMULARIO DE INDICE 'NROELEMENT'
 * VAZIA. RETORNA FALSE CASO CONTRARIO. SE 'OBRIGATORIO' E TRUE, O NAO PREENCHIMENTO DO
 * CAMPO ACARRETA A APRESENTACAO DE UMA CAIXA DE ALERTA COM TEXTO PADRONIZADO, INFORMANDO
 * AO USUARIO SOBRE A OBRIGATORIEDADE DE PREENCHIMENTO.
 */

function campo_txt_vazio(nroform, nroelement, obrigatorio) {
      if (window.document.forms[nroform].elements[nroelement].value == "") {
            if (obrigatorio) {
                  window.alert("O campo de formulário no qual o cursor está posicionado é de preenchimento obrigatório.");
                  window.document.forms[nroform].elements[nroelement].focus();
            }
            return true;
      } else {
            return false;
      }
}

/* SINTAXE(NROFORM, NROELEMENT, STRFORMATO) RETORNA TRUE SE, NA JANELA CORRENTE, O FORMULARIO DE INDICE
 * 'NROFORM' APRESENTA A ENTRADA DE FORMULARIO DE INDICE 'NROELEMENT' DE ACORDO COM O FORMATO EXPRESSO
 * NA STRING 'STRFORMATO'. EM 'STRFORMATO', 'x' CORRESPONDE A UM DIGITO ENTRE 0 E 9. E.G. SAO ADMISSIVEIS
 * PARA 'STRFORMATO' 'xx/xx/xxxx' E 'xxxx-xx-xx', FORMATOS COMUNS PARA DATAS. RETORNA FALSE CASO
 * CONTRARIO. A INADEQUACAO DO VALOR DE CAMPO A 'STRFORMATO' ACARRETA A APRESENTACAO DE UMA CAIXA
 * DE ALERTA COM TEXTO PADRONIZADO, DESDE QUE 'MENSAGEM' TENHA VALOR TRUE.
 */

function sintaxe(nroform, nroelement, strformato, mensagem) {
      var strcampo;
      var sintaxevalida;
      var i;

      // INICIALIZACAO PARCIAL DE VARIAVEIS.
      strcampo      = window.document.forms[nroform].elements[nroelement].value;
      sintaxevalida = true;

      // SE A STRING COM VALOR DE CAMPO POSSUIR MESMO TAMANHO DE STRFORMATO, ENTAO PODEM SER
      // COMPARADAS.
      if (strformato.length == strcampo.length) {
            for (i = 0; i < strformato.length && sintaxevalida; i++) {
                  // PARA CADA SIMBOLO DE STRFORMATO, COMPARAR COM SIMBOLO DE MESMA POSICAO EM STRCAMPO.
                  // CASO HAJA UM 'X', IDENTIFICAR NA POSICAO CORRESPONDENTE UM DIGITO 0-9.
                  if (strformato.charAt(i) == 'x') {
                        switch (strcampo.charAt(i)) {
                              case '0' : continue;
                              case '1' : continue;
                              case '2' : continue;
                              case '3' : continue;
                              case '4' : continue;
                              case '5' : continue;
                              case '6' : continue;
                              case '7' : continue;
                              case '8' : continue;
                              case '9' : continue;
                        }
                        sintaxevalida = false;
                        break;
                  } else {
                        if ( strformato.charAt(i) == strcampo.charAt(i)) {
                              continue;
                        } else {
                              sintaxevalida = false;
                              break;
                        }
                  }
            }
      } else {
            sintaxevalida = false;
      }
      if ( !sintaxevalida && mensagem) {
            window.alert("Preencha o campo de formulário no qual o cursor está posicionado observando o formato " + strformato + ".");
            window.document.forms[nroform].elements[nroelement].focus();
      }
      return sintaxevalida;
}

/**************************************************************
Máscara de entrada. Script creado por Tunait! (21/12/2004)
Si quieres usar este script en tu sitio eres libre de hacerlo con la condición de que permanezcan intactas estas líneas, osea, los créditos.
No autorizo a distribuír el código en sitios de script sin previa autorización
Si quieres distribuírlo, por favor, contacta conmigo.
Ver condiciones de uso en http://javascript.tunait.com/
tunait@yahoo.com
****************************************************************/
var patron  = new Array(2,2,4)
var patron2 = new Array(1,3,3,3,3)
var patron3 = new Array(5,3)
var patron4 = new Array(3,3,3,2)
function mascara(d,sep,pat,nums){
if(d.valant != d.value){
        val = d.value
        largo = val.length
        val = val.split(sep)
        val2 = ''
        for(r=0;r<val.length;r++){
                val2 += val[r]
        }
        if(nums){
                for(z=0;z<val2.length;z++){
                        if(isNaN(val2.charAt(z))){
                                letra = new RegExp(val2.charAt(z),"g")
                                val2 = val2.replace(letra,"")
                        }
                }
        }
        val = ''
        val3 = new Array()
        for(s=0; s < pat.length; s++){
                val3[s] = val2.substring(0,pat[s])
                val2 = val2.substr(pat[s])
        }
        for(q=0;q<val3.length; q++){
                if(q ==0){
                        val = val3[q]
                }
                else{
                        if(val3[q] != ""){
                                val += sep + val3[q]
                                }
                }
        }
        d.value = val
        d.valant = val
        }
}

/*    #################################################################### 
    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 
    ====------------------------------------------------------------==== 
*/
// função que valida CPF - 10/05/2007

// a função principal de validação 
function validarCPF(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)){ // validando o tamanho 
        alert("'"+s+"' Não é um CPF válido!" ); // tamanho inválido 
        return false; 
    } 
   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; 
        } 
        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) 

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 mascara o CPF - 09/05/2007

function mascaraCPF(o,f){
    v_obj=o
    v_fun=f
    setTimeout("execmascara()",1)
}

function execmascara(){
    v_obj.value=v_fun(v_obj.value)
}

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
}

//    função que mascara A MATRICULA - 22/05/2007
//    MODULO CONTRATO - PROFISSIONAL

function mascaraMATRICULA(o,f){
	    v_obj=o
	    v_fun=f
	    setTimeout("execmascara()",1)
}

function execmascara(){
	    v_obj.value=v_fun(v_obj.value)
}

function matricula(v){
	    v=v.toUpperCase()             //Maiúsculas
	    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{3})(\d)/,"$1.$2-$3") //Coloca hifen entre o quinto e o sexto dígitos

   return v
}

