function setFocus(element)
{
	var elFocus=document.getElementById(element);
	elFocus.focus();
}

function Format2CPF(el)
{
	var sValue = el.value;
	if(el.value.length==11)
	{
		var objReturn = new Object();
		var RegExpDate = /^(\d{3})(\d{3})(\d{3})(\d{2})$/;
		var objRegExp = sValue.match(RegExpDate);

		if (objRegExp && objRegExp.length==5)
		{
			objReturn.value=objRegExp[1] + "." + objRegExp[2] + "." + objRegExp[3] + "-" + objRegExp[4];
			objReturn.mask=objReturn.value;
		}
		else
		{
			objReturn.value=sValue;
			objReturn.mask=sValue;
		}
		
		el.value = objReturn.value;
	}
}

function CPFValidatorEvaluateIsValid(source, args) 
{
    var value = args.Value;
    if (value == "")
        args.IsValid=true;   
    args.IsValid=ValidateCPF(value);
}

function ValidateCPF (sValue)
{
	return validateFormatCPF(sValue) && validateCodeCPF(sValue);
}

function validateFormatCPF(sValue)
{
	if ( isWhitespace(sValue) ) return true;
	
	var sPat = /^\d{3}\.\d{3}\.\d{3}-\d{2}$/;
	return sPat.test(sValue);
}

function validateCodeCPF(sValue)
{

	var strCPF = extractNumberfromMask(sValue);
	var rcpf1 = strCPF.substr(0,9);
	var rcpf2 = strCPF.substr(9,2)

	
	var CPFInvalidos = new Array("00000000000", "11111111111",
"22222222222", "33333333333", "44444444444", "55555555555",
"66666666666", "77777777777", "88888888888", "99999999999",
"00000000191");

	var cpfstring = new String(rcpf1 + rcpf2);
	
	for (i = 0; i <= 10 ; i++){
	 	if (CPFInvalidos[i] == cpfstring) 
		  return false;
	}
	
	var d1 = 0;
	for (var i=0; i<9; i++) 
		d1 += rcpf1.charAt(i) * (10 - i);
	
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;

	if (rcpf2.charAt(0) != d1) 
		return false;
  
	d1 *= 2;
	for (i=0; i<9; i++) 
		d1 += rcpf1.charAt(i) * (11 - i);

	d1 = 11 - (d1 % 11);
	if (d1>9) d1 = 0;

	if (rcpf2.charAt(1) != d1) 
		return false;
	
  return true;

}

function isWhitespace (sText) {  
	var RE = /\S/;
	return ! RE.test(sText);
}

function extractNumberfromMask(sValue)
{
	var strNumber = "";
	
	for (i = 0; i <= sValue.length ; i++)
	{
	 	if (!isNaN(parseInt(sValue.substring(i, i + 1 ))))
	 	{
			strNumber = strNumber + sValue.substring(i, i + 1 );
		}
	}
	
	return strNumber;
}