var NUM_CHARS = '0123456789';
var SEP_DATE = '/';

function ValidateCGC(value) {
  var mv;
  var d1, r, pd, sd;

  if (value.length!=14)
    return false;
  else if (value=='00000000000000')
    return true;
  else {
    for (var i=0; i<14; i++)
      if (NUM_CHARS.indexOf(value.charAt(i))==-1)
        return false;

    mv = '543298765432';
    d1 = 0; for (var i=0; i<12; i++)  d1 += parseInt(value.charAt(i)) * parseInt(mv.charAt(i));
    r = d1 - parseInt(d1/11) * 11;
    pd = r<2 ? 0 : 11 - r;

    mv = '6543298765432';
    d1 = 0; for (var i=0; i<13; i++)  d1 += parseInt(value.charAt(i)) * parseInt(mv.charAt(i));
    r = d1 - parseInt(d1/11) * 11;
    sd = r<2 ? 0 : 11 - r;

    return (pd+''+sd==value.substring(12,14));
  }
}

function ValidateCPF(value) {

  if (value.length!=11)
    return false;
  else {
    for (var i=0; i<11; i++)
      if (NUM_CHARS.indexOf(value.charAt(i))==-1)
        return false;

    var d1 = 0; for (var i=0; i<9; i++) d1 += parseInt(value.charAt(i)) * (i+1);
    d1 %= 11; if (d1 == 10) d1 = 0;

    var d2 = 0; for (var i=1; i<9; i++) d2 += parseInt(value.charAt(i)) * i;
    d2 += d1 * 9; d2 %= 11; if (d2 == 10) d2 = 0;

    return (d1+''+d2==value.substring(9,11));
  }
}

function ValidateCGCCPF(value) {
  if (value.length == 11)
    return ValidateCPF(value);
  else if (value.length == 14)
    return ValidateCGC(value);
  else
    return false;
}

function y2k(number) {
  return (number<1000) ? number + 1900 : number;
}

function ValidateDate(value) {

  if ( (value.length != 10) || (value.substring(2,3) != SEP_DATE) || (value.substring(5,6) != SEP_DATE) )
    return false;
  else {
    var date  = value.substring(0,2);
    var month = value.substring(3,5);
    var year  = value.substring(6,10);  
    var test  = new Date(year,month-1,date);
    
    return !((year != y2k(test.getYear())) || (month-1 != test.getMonth()) || (date != test.getDate()));
  }
}

function ValidateEmail(value) {
  return ( (value.length>3) && (value.indexOf('@')>0) );
}


function encrypt(form) {
 // the following letters and numbers and other characters are going
 // to be encrypted.
  letters = "abcdefghijklmnopqrstuvwxyz/.1234567890~_:";

  encrypt = new Array(
  "%61","%62","c","%64","e","%66",
  "%67","%68","%69","%6a","%6b","%6c",
  "m","n","o","%70","%71","%72",
  "%73","t","%75","%76","w","%78",
  "%79","%7a","/","."
  ,"1","2","3","4","5","6","7","8",
  "9","0","~","_","!",":");

  var input = form.CPF.value;
  output = "";
  for(var count = 0; count < input.length; count++) {
    daChar = input.charAt(count);
    for (i = 0; i < letters.length; i++) {
      if (daChar == letters.charAt(i)) {
        output += encrypt[i];
        break;
      }
    }
  }
  return output;
}


