// JavaScript Document
function isEmail(string) {
  if (string.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
    return true;
  else
    return false;
}

function DigitoCPF(numCPF) {
	var numDois = numCPF.substring(numCPF.length-2, numCPF.length);
	var novoCPF = numCPF.substring(0, numCPF.length-2);
	switch (numCPF.length){
		case 11 :
			numLim = 11;
			break;
		default : return false;
	}
	//
	var numSoma = 0;
	var Fator = 1;
	for (var i=novoCPF.length-1; i>=0 ; i--) {
		Fator = Fator + 1;
		if (Fator > numLim) {
			Fator = 2;
		}
		numSoma = numSoma + (Fator * Number(novoCPF.substring(i, i+1)));
	}
	numSoma = numSoma/11;
	var numResto = Math.round( 11 * (numSoma - Math.floor(numSoma)));
    if (numResto > 1) {
		numResto = 11 - numResto;
    }
    else {
		numResto = 0;
    }
    //-- Primeiro dígito calculado.  Fará parte do novo cálculo.
    //--
    var numDigito = String(numResto);
    novoCPF = novoCPF.concat(numResto);
    //--
	numSoma = 0;
	Fator = 1;
	for (var i=novoCPF.length-1; i>=0 ; i--) {
		Fator = Fator + 1;
		if (Fator > numLim) {
			Fator = 2;
		}
		numSoma = numSoma + (Fator * Number(novoCPF.substring(i, i+1)));
	}
	numSoma = numSoma/11;
	numResto = numResto = Math.round( 11 * (numSoma - Math.floor(numSoma)));
    if (numResto > 1) {
		numResto = 11 - numResto;
    }
    else {
		numResto = 0;
    }
	//-- Segundo dígito calculado.
	numDigito = numDigito.concat(numResto);
	//
	if (numDigito == numDois) {
		return true;
	}
	else {
		return false;
	}
}

function ApenasNum(strParm) {
	strParm = String(strParm);
	var chrPrt = "0";
	var strRet = "";
	var j=0;
	for (var i=0; i < strParm.length; i++) {
		chrPrt = strParm.substring(i, i+1);
		if ( chrPrt.match(/\d/) ) {
			if (j==0) {
				strRet = chrPrt;
				j=1;
			}
			else {
				strRet = strRet.concat(chrPrt);
			}
		}
	}
	return strRet;
}

function PreencheCPF(objCPF) {
	var chrP = objCPF.value.substring(objCPF.value.length-1, objCPF.value.length);
	
	if ( !chrP.match(/[0-9]/) && !chrP.match(/[\/.-]/) ) {
		objCPF.value = objCPF.value.substring(0, objCPF.value.length-1);
		return false;
	}
	return true;
}

function FormataCPF (numCPF) {
	numCPF = String(numCPF);
	switch (numCPF.length){
	case 11 :
		return numCPF.substring(0,3) + "." + numCPF.substring(3,6) + "." + numCPF.substring(6,9) + "-" + numCPF.substring(9,11);
	default :
		return numCPF
	}
}

function ConfereCPF(objCPF, strObrigatorio) {
	if (objCPF.value=='') {
		if (strObrigatorio=='S') {
			alert("Preenchimento obrigatório do CPF!");
			objCPF.focus();
			return false;
		}
		else { return true; }		
	}
	var strCPFPat  = /^\d{3}\.\d{3}\.\d{3}-\d{2}$/;
	
	numCPF = ApenasNum(objCPF.value);

	if (numCPF.length!=11) {
		alert('Informe o CPF com 11 dígitos!!!');
		objCPF.focus();
		return false;
	}
	
	var c=0, igual = false;
	 while (c < numCPF.length)
	 {
	  if (numCPF.charAt(c) != numCPF.charAt(0))
		{  igual=false; break;}
	  else igual=true;
	  c++;
	  }
	 if (igual==true) {alert("CPF Inválido!!! \nTodos os algarismos são iguais."); return false;} 

	if (!DigitoCPF(numCPF)) {
		alert("Atenção o dígito verificador é inválido!!!");
		objCPF.focus();
		return false;
	}
	
	objCPF.value = FormataCPF(numCPF);

	if (objCPF.value.match(strCPFPat)) {
		return true;
	}
	else {
		alert("Digite um CPF válido!!!");
		objCPF.focus();
		return false;
	}
}
