/******************************************************************************/
/*  Funcao: somente_numeros(obj){
    Parametros:
    - campo: campo a ser analisado
    Retorno: string
    Descricao: retorna a string do objeto somente com os números digitados    /*
/******************************************************************************/

function somente_numeros(campo){
   var campo_saida;
   campo_saida = '';

   total = campo.length;
   for(i = 0; i < total; i++){
      if ((campo.charCodeAt(i) > 47) && (campo.charCodeAt(i) < 58)){
         campo_saida = campo_saida + campo.charAt(i);
      }
   }

   campo = campo_saida;
   return campo;
}


/******************************************************************************/
/*  Funcao: verificaCPF(x){
    Parametros:
    - x : CPF a ser analisado
    Retorno: boolean
    Descricao: retorna verdadeiro se o CPF for válido                         /*
/******************************************************************************/

function verificaCPF(c){
    var i;
    s = c;
    var c = s.substr(0,9);
    var dv = s.substr(9,2);
    var d1 = 0;
    var v = false;
    for (i = 0; i < 9; i++) {
        d1 += c.charAt(i)*(10-i);
    }
    if (d1 == 0) {
        v = true;
        return false;
    }
    d1 = 11 - (d1 % 11);
    if (d1 > 9)
        d1 = 0;
    if (dv.charAt(0) != d1) {
        v = true;
        return false;
    }

    d1 *= 2;
    for (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) {
        v = true;
        return false;
    }
    if (!v) {
        return true;
    }
}


/******************************************************************************/
/*  Funcao: trim()
    Parametros: nenhum
    Retorno: String
    Descricao: retira os espacos em branco da esquerda e da direita
               de um objeto String                                            */
/******************************************************************************/

function trim(){
    var retVal = this.ltrim();
    retVal = retVal.rtrim();
    return retVal;
}
String.prototype.trim = trim;

function ltrim(){
    var start = 0;
    var end = this.length;
    var retVal = this.substring(start, end);
    var esq = /^ /;
    while (retVal.match(esq)) {
        retVal = this.substring(++start, end);
    }
    return retVal;
}
String.prototype.ltrim = ltrim;
function rtrim(){
    var end = this.length;
    var retVal = this.substring(0, end);
    var dir = / $/;
    while (retVal.match(dir)) {
        retVal = this.substring(0, --end);
    }
    return retVal;
}
String.prototype.rtrim = rtrim;


/******************************************************************************/
/*  Funcao: validaData(data)
    Parametros: obj
    Retorno: String
    Descricao: valida e formata data informada pelo usuário                   */
/******************************************************************************/

function validaData(obj){
   var dia, mes, ano, ok, erro;
   data = somente_numeros(obj.value);
   dia = data.substring(0,2);
   mes = data.substring(2,4);
   ano = data.substring(4,8);

   if(data.length == 8){
      if((dia > 0) && (dia < 32)){
         if((mes > 0) && (mes < 13)){
            if(mes == 2){
               if(dia < 30){
                  if(dia == 29){
                     if(ano % 4 == 0){
                        ok = 1;
                     } else {
                        erro = 1;
                     }
                  } else {
                     ok = 1;
                  }
               } else {
                  erro = 1;
               }
            } else {
               if((mes == 4) || (mes == 6) || (mes == 9) || (mes == 11)){
                  if(dia < 31){
                     ok = 1;
                  } else {
                     erro = 1;
                  }
               } else {
                  ok = 1;
               }
            }
         } else {
            erro = 1;
         }
      } else {
         erro = 1;
      }
   } else {
      erro = 1;
   }

   if(ok == 1){
      data = dia + '/' + mes + '/' + ano;
   } else if(data != '') {
      data = '';
      alert('É necessário informar uma data válida!');
   }

   return data;
}


/******************************************************************************/
/*  Funcao: valida_fone(f){
    Parametros:
    - f : fone a ser analisado
    Retorno: alerta
    Descricao: retorna alerta se o fone tiver menos que 8 algarismos          /*
/******************************************************************************/

function valida_fone(f){
    var valor = f.value;
    var i;
    var s = '';

    for (i = 0; i < valor.length; i++) {
        if(!isNaN(valor.charAt(i)))
    	     s = s + valor.charAt(i);
    }
    f.value = s;
    if(s.length < 8){
        alert('O telefone para recados deve ter no mínimo 8 dígitos!');
        f.focus();
    }
}


/******************************************************************************/
/*  Funcao: valida_cep(f){
    Parametros:
    - f : CEP a ser analisado
    Retorno: boolean
    Descricao: retorna alerta se o fone tiver menos que 8 algarismos          /*
/******************************************************************************/

function valida_cep(f){
    var valor = f.value;
    var i;
    var s = '';

    for (i = 0; i < valor.length; i++) {
        if(!isNaN(valor.charAt(i)))
    	     s = s + valor.charAt(i);
    }
    if(s.length < 8){
        alert('O CEP deve ter no mínimo 8 dígitos!');
        f.focus();
        f.value = '';
    } else {
        if(s.length == 8){
            f.value = s.substring(0, 5) + '-' + s.substring(5, 9);
        } else {
             f.value = s.substring(0, 5) + '-' + s.substring(5, 8);
        }
    }
}
