/* ******************************************
REMOVE CARACTERES ESPECIAIS (.,-) DO CPF INFORMADO
UTLIZIZADA NA FUNCAO valida_CPF()
**** */
function limpa_string(S){
  // Deixa so' os digitos no numero
  var Digitos = "0123456789";
  var temp = "";
  var digito = "";

  for(var i=0; i<S.length; i++){
    digito = S.charAt(i);
    if (Digitos.indexOf(digito)>=0){
      temp=temp+digito
    }
  }
  return temp
}
/* ******************************************
VERIFICA SE O CPF EH VALIDO
**** */
function valida_CPF(s){
  var i;
  s = limpa_string(s);
  if(s<11){return false;}
  if(s=='00000000000') {return false;}
  if(s=='11111111111') {return false;}
  if(s=='22222222222') {return false;}
  if(s=='33333333333') {return false;}
  if(s=='44444444444') {return false;}
  if(s=='55555555555') {return false;}
  if(s=='66666666666') {return false;}
  if(s=='77777777777') {return false;}
  if(s=='88888888888') {return false;}
  if(s=='99999999999') {return false;}
  var c = s.substr(0,9);
  var dv = s.substr(9,2);
  var   d1 = 0;

  for (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 (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;
}


/* ******************************************
VERIFICA SE O CNPJ EH VALIDO
**** */

function isNUMB(c) {
  if((cx=c.indexOf(","))!=-1) {
    c = c.substring(0,cx)+"."+c.substring(cx+1);
  }
  if((parseFloat(c) / c != 1)) {
    if(parseFloat(c) * c == 0) {
      return(1);
    } else {
      return(0);
    }
  } else {
    return(1);
  }
}

function LIMP(c) {
  while((cx=c.indexOf("-"))!=-1) {
    c = c.substring(0,cx)+c.substring(cx+1);
  }
  while((cx=c.indexOf("/"))!=-1) {
    c = c.substring(0,cx)+c.substring(cx+1);
  }
  while((cx=c.indexOf(","))!=-1) {
    c = c.substring(0,cx)+c.substring(cx+1);
  }
  while((cx=c.indexOf("."))!=-1) {
    c = c.substring(0,cx)+c.substring(cx+1);
  }
  while((cx=c.indexOf("("))!=-1) {
    c = c.substring(0,cx)+c.substring(cx+1);
  }
  while((cx=c.indexOf(")"))!=-1) {
    c = c.substring(0,cx)+c.substring(cx+1);
  }
  while((cx=c.indexOf(" "))!=-1) {
    c = c.substring(0,cx)+c.substring(cx+1);
  }
  return(c);
}

function valida_CNPJ(CNPJ) {
  CNPJ = LIMP(CNPJ);
  if(isNUMB(CNPJ) != 1) {
    return(0);
  } else {
    if(CNPJ == 0) {
      return(0);
    } else {
      g=CNPJ.length-2;
      if(RealTestaCNPJ(CNPJ,g) == 1) {
        g=CNPJ.length-1;
        if(RealTestaCNPJ(CNPJ,g) == 1) {
          return(1);
        } else {
          return(0);
        }
      } else {
        return(0);
      }
    }
  }
}
function RealTestaCNPJ(CNPJ,g) {
  var VerCNPJ=0;
  var ind=2;
  var tam;
  for(f=g;f>0;f--) {
    VerCNPJ+=parseInt(CNPJ.charAt(f-1))*ind;
    if(ind>8) {
      ind=2;
    } else {
      ind++;
    }
  }
  VerCNPJ%=11;
  if(VerCNPJ==0 || VerCNPJ==1) {
    VerCNPJ=0;
  } else {
    VerCNPJ=11-VerCNPJ;
  }
  if(VerCNPJ!=parseInt(CNPJ.charAt(g))) {
    return(0);
  } else {
    return(1);
  }
}

/* ******************************************
FORMATADOR DE CAMPOS
**** */
function formata(campo,formato) {
  teclapres = event;
  if(event.keyCode != 48  && event.keyCode != 49 && event.keyCode != 50 && event.keyCode != 51 && event.keyCode != 52 && event.keyCode != 53 && event.keyCode != 54 && event.keyCode != 55 && event.keyCode != 56 && event.keyCode != 57 && event.keyCode != 58){
    return false;
  } else {
    var tecla = teclapres.keyCode;
    vr = campo.value;
    tam = vr.length + 1;
    if ( tecla != 9 && tecla != 8 ) {
      switch(formato) {
        case "HMS" :
        switch(tam) {
          case 3 :
          vr = vr+= ":";
          break;
          case 6 :
          vr = vr+= ":";
          break;
        }
        break;
        case "DMA" :
        switch(tam) {
          case 3 :
          vr = vr+= "/";
          break;
          case 6 :
          vr = vr+= "/";
          break;
        }
        break;
        case "CPF" :
        switch(tam) {
          case 4 :
          vr = vr+= ".";
          break;
          case 8 :
          vr = vr+= ".";
          break;
          case 12 :
          vr = vr+= "-";
          break;
        }
        break;
        case "CNPJ" :
        switch(tam) {
          case 3 :
          vr = vr+= ".";
          break;
          case 7 :
          vr = vr+= ".";
          break;
          case 11 :
          vr = vr+= "/";
          break;
          case 16  :
          vr = vr+= "-";
          break;
        }
        break;
        case "TEL" :
        switch(tam) {
          case 1 :
          vr = vr+= "(";
          break;
          case 4 :
          vr = vr+= ") ";
          break;
          case 10 :
          vr = vr+= "-";
          break;
        }
        break;
        case "CEP" :
        switch(tam) {
          case 6 :
          vr = vr+= "-";
          break;
        }
        break;
        case "NUM" :
        break;
      }
    }
    campo.value = vr;
  }
}
function valida_form(form) {
  m = "Os campos abaixo devem ser preenchidos corretamente: \n\n";
  c = "";
  with(form) {
    for(i=0;i<elements.length;i++) {
      if(elements[i].title != "" && elements[i].value == "") {
        cp = elements[i].title;
        c+= " - "+cp+"\n";
      }
    }
  }
  if(c.length > 0) {
    alert(m+c);
    return false;
  }

  return true;
}

function is_date(campo) {
  if(campo.value){

    dta = campo.value.split('/');
    dia = dta[0];
    mes = dta[1];
    ano = dta[2];

    x = 1;
    // verifica o dia valido para cada mes
    if (
    (dia < 1) || (dia < 1 || dia > 30) && (mes == 4 || mes == 6 || mes == 9 || mes == 11) || dia > 31) {
      x=0;
    }

    // verifica se o mes e valido
    if (mes < 1 || mes > 12 ) {
      x=0;
    }

    // verifica se e ano bissexto
    if (mes == 2 && ( dia < 1 || dia > 29 || ( dia > 28 && !(ano%4)))) {
      x=0;
    }
    if(x==0) {
      campo.focus();
      campo.select();
      alert('Data Inválida!');
      return false;
    }
  }
  return true;
}

function AbrePagina(perfil, tamx, tamy, yn) {
  lf = Math.floor(screen.width/2) - Math.floor(tamx/2);
  tp = Math.floor(screen.height/2) - Math.floor(tamy/2);
  window.open(perfil,"","resizable=no,toolbar=no,status=no,menubar=no,scrollbars=" + yn + ",width=" + tamx + ",height=" + tamy + ", left = " + lf + ", top = " + tp)
}

function is_numero(campo) {
  var nv = '0123456789';
  var cp = campo.value;
  if(cp.length) {
    for(i=0;i<cp.length;i++) {
      var z = 0;
      var nc = cp.substring(i,i+1);
      for(x=0;x<nv.length;x++) {
        var na = nv.substring(x,x+1);
        if(na == nc) {
          z++;
        }
      }
      if(z == 0) {
        campo.value = campo.value.substring(0,campo.value.length-1);
      }
    }
  } else {
    return false;
  }
}

function ZAPSValida(valor,campo) {

  switch(campo) {
    case 'cpf' :
    if(valor.value !== '' && !valida_CPF(valor.value)) {
      alert('CPF inválido!');
      valor.value = '';
      valor.focus();
      return false;
    }
    break;
    
    case 'email' :
    if(valor.value !== '' && (valor.value.indexOf('@') == -1 || valor.value.indexOf('.') == -1)) {
      alert('E-mail inválido!');
      valor.focus();
      return false;
    }
    break;
    
    case 'nascimento' :
    if(valor.value !== '') {
      return is_date(valor);
    }
    break;
    
    case 'telefone_residencial' :
    case 'telefone_celular' :
    case 'telefone_comercial_1' :
    case 'telefone_comercial_2' :
    case 'telefone_fax' :
    case 'telefone_residencial_ddd' :
    case 'telefone_celular_ddd' :
    case 'telefone_comercial_1_ddd' :
    case 'telefone_comercial_2_ddd' :
    case 'telefone_fax_ddd' :
    case 'end_res_numero' :
    case 'end_com_numero' :
    case 'end_res_cep' :
    case 'end_com_cep' :
    valor.value = valor.value.replace(/[A-Za-z:-@(-) -]/g,'');
    break;
    
  }
  
  return true;

}
