function validarCPF(num) {
  var iTamNum = num.length;
  var cpf = "";
  for (i = 0; i < iTamNum; i++) {
    if ((num.substr(i, 1) != ".") && (num.substr(i, 1) != "-") && (num.substr(i, 1) != "/"))
        cpf = cpf + num.substr(i, 1);
  }
  iTamNum = cpf.length;
  for (i = 0; i < iTamNum; i++) {
    if ((cpf.substr(i, 1) != "0") &&
        (cpf.substr(i, 1) != "1") &&
        (cpf.substr(i, 1) != "2") &&
        (cpf.substr(i, 1) != "3") &&
        (cpf.substr(i, 1) != "4") &&
        (cpf.substr(i, 1) != "5") &&
        (cpf.substr(i, 1) != "6") &&
        (cpf.substr(i, 1) != "7") &&
        (cpf.substr(i, 1) != "8") &&
        (cpf.substr(i, 1) != "9")) {
        return "";
    }
  }
  
  if (iTamNum > 11) {
  	return (cpf.substr(0,2) + "." + cpf.substr(2,3) + "." + cpf.substr(5,3) + "/" + cpf.substr(8,4) + 
  					"-" + cpf.substr(12,2));
  }
  if ((calcularDigito(cpf.substr(0,9)) == cpf.substr(9,1)) &&
      (calcularDigito(cpf.substr(0,10)) == cpf.substr(10,1))) {
    return (cpf.substr(0,3) + "." + cpf.substr(3,3) + "." + cpf.substr(6,3) +
              "-" + cpf.substr(9,2));
  } else {
    return "";
  }
}

function calcularDigito(num) {
  var iTamNum = num.length;
  var sInvNum = "";
  var iDig = 0;
  var iMult = 1;
  for (i = 0 ; i < iTamNum; i++)
    sInvNum = num.substr(i, 1) + sInvNum;
  for (i = 0; i < iTamNum; i++) {
    iMult = iMult + 1;
//    if (iMult > 9)
//        iMult = 2;
    iDig = iDig + (iMult * parseInt(sInvNum.substr(i, 1)));
  }
  iDig = 11 - (iDig % 11);
  if (iDig > 9)
    iDig = 0;
  return iDig+""
}

function validarCEP(num) {
  var iTamNum = num.length;
  var cep = "";
  for (i = 0; i < iTamNum; i++) {
    if ((num.substr(i, 1) != ".") && (num.substr(i, 1) != "-"))
        cep = cep + num.substr(i, 1);
  }
  iTamNum = cep.length;
  for (i = 0; i < iTamNum; i++) {
    if ((cep.substr(i, 1) != "0") &&
        (cep.substr(i, 1) != "1") &&
        (cep.substr(i, 1) != "2") &&
        (cep.substr(i, 1) != "3") &&
        (cep.substr(i, 1) != "4") &&
        (cep.substr(i, 1) != "5") &&
        (cep.substr(i, 1) != "6") &&
        (cep.substr(i, 1) != "7") &&
        (cep.substr(i, 1) != "8") &&
        (cep.substr(i, 1) != "9")) {
        return "";
    }
  }
  return cep.substr(0,2) + "." + cep.substr(2,3) + "-" + cep.substr(5,3);
}

function validarMoeda(num) {
  var iTamNum = num.length;
  var n = "";
  for (i = 0; i < iTamNum; i++) {
    if ((num.substr(i, 1) != ".") && (num.substr(i, 1) != ","))
        n = n + num.substr(i, 1);
  }
  iTamNum = n.length;
  for (i = 0; i < iTamNum; i++) {
    if ((n.substr(i, 1) != "0") &&
        (n.substr(i, 1) != "1") &&
        (n.substr(i, 1) != "2") &&
        (n.substr(i, 1) != "3") &&
        (n.substr(i, 1) != "4") &&
        (n.substr(i, 1) != "5") &&
        (n.substr(i, 1) != "6") &&
        (n.substr(i, 1) != "7") &&
        (n.substr(i, 1) != "8") &&
        (n.substr(i, 1) != "9")) {
        return "";
    }
  }
  var numPnts = Math.floor((iTamNum - 2) / 3);
  var primNums = (iTamNum - 2) % 3;
  var numFormat;
  if ( primNums != 0 )
    numFormat = n.substr(0, primNums);
  for (i = 0; i < numPnts; i++) {
    if (((i == 0) && (primNums != 0)) || (i != 0))
        numFormat = numFormat + ".";
    numFormat = numFormat + n.substr((primNums + (i * 3)), 3);
  }
  numFormat = numFormat + "," + n.substr(iTamNum-2, 2);
  return numFormat;
}

function validarData(data) {
  var iTam = data.length;
  var	dt = "";
	if ((iTam > 10) || (iTam < 8))
    return "";
  
  for (i = 0; i < iTam; i++) {
    if (data.substr(i, 1) in ["0","1","0","3","4","5","6","7","8","9"])
        dt = dt + data.substr(i, 1);
  }

  var sDia = dt.substr(0, 2);
  var sMes = dt.substr(2, 2);
  var sAno = dt.substr(4, 4);
  
  // tratamentos para não considerar como números octais nas conversões:
  if (sDia.substr(0, 1) == "0")
    sDia = sDia.substr(1, 1);
  if (sMes.substr(0, 1) == "0")
    sMes = sMes.substr(1, 1);
  if (sAno.substr(0, 1) == "0")
    return "";

  // conversões para números:
  var dia = parseInt(sDia);
  var mes = parseInt(sMes);
  var ano = parseInt(sAno);
  if ((dia <= 0) || (mes <= 0) || (ano <= 0))
    return "";

  // verificar de dias e meses são válidos e coerentes entre si:
  if ((mes == 1) || (mes == 3) || (mes == 5) || (mes == 7) || (mes == 8) || (mes == 10) || (mes == 12)) {
    if (dia > 31)
      return "";
  } else if ((mes == 4) || (mes == 6) || (mes == 9) || (mes == 11)) {
    if (dia > 30)
      return "";
  } else if (mes == 2) {
    // se for ano bissexto:
    if (new Date(ano, 2-1, 29).getDate() == 29) {
      if (dia > 29)
        return "";
    } else if (dia > 28)
        return "";
  } else
    return ""; // mês inválido

	if (sDia.length == 1)
		sDia = "0" + sDia;
	if (sMes.length == 1)
		sMes = "0" + sMes;	
  return sDia + "/" + sMes + "/" + sAno;
}

