if( pageValidator.Masks["CNPJMask"] == null )
pageValidator.Masks["CNPJMask"] = function( event )
{
   if( !event ) event = window.event;

   var iKeyCode = String(event.keyCode ? event.keyCode : event.which);
   var oSrcElement = event.srcElement ? event.srcElement : event.currentTarget;
   var sValue = new String(oSrcElement.value);
   var iLength = sValue.length;

   if( !keyboardHandling.IsNumericKey(event) && !keyboardHandling.IsNavigationKey(event) )
   {
       //w3c stop default behavior   
       if( event.cancelable ) event.preventDefault();
       //ie stop default behavior
      event.returnValue = false;
      //DOM level 0 stop default behavior
      return false; 
   }

   sValue = sValue.replace(".", "");
   sValue = sValue.replace(".", "");
   sValue = sValue.replace("/", "");
   sValue = sValue.replace("-", "");

   iLength = sValue.length + 1 ;

   if( !keyboardHandling.IsNavigationKey(event) )
   {
      if (iLength > 2 && iLength < 6)
         oSrcElement.value = sValue.substr(0, 2) + '.' + sValue.substr(2, iLength);
      if (iLength >= 6 && iLength < 9)
         oSrcElement.value = sValue.substr(0,2) + '.' + sValue.substr(2,3) + '.' + sValue.substr(5,iLength-5);
      if (iLength >= 9 && iLength < 13)
         oSrcElement.value = sValue.substr(0,2) + '.' + sValue.substr(2,3) + '.' + sValue.substr(5,3) + '/' + sValue.substr(8,iLength-8);
      if (iLength >= 13 && iLength < 15)
         oSrcElement.value = sValue.substr(0,2) + '.' + sValue.substr(2,3) + '.' + sValue.substr(5,3) + '/' + sValue.substr(8,4)+ '-' + sValue.substr(12,iLength-12);
   }
}

if( pageValidator.Masks["CPFMask"] == null )
pageValidator.Masks["CPFMask"] = function( event )
{
   if( !event ) event = window.event;

   var iKeyCode = String(event.keyCode ? event.keyCode : event.which);
   var oSrcElement = event.srcElement ? event.srcElement : event.currentTarget;
   var sValue = new String(oSrcElement.value);
   var iLength = sValue.length;

   if( !keyboardHandling.IsNumericKey(event) && !keyboardHandling.IsNavigationKey(event) )
   {
       //w3c stop default behavior   
       if( event.cancelable ) event.preventDefault();
       //ie stop default behavior
      event.returnValue = false;
      //DOM level 0 stop default behavior
      return false; 
   }

   sValue = sValue.replace(".", "");
   sValue = sValue.replace(".", "");
   sValue = sValue.replace("-", "");
   
   iLength = sValue.length + 1;
   
   if( !keyboardHandling.IsNavigationKey(event) )
   {
      if (iLength > 3 && iLength < 7)
         oSrcElement.value = sValue.substr(0, 3) + '.' + sValue.substr(3, iLength);
      if (iLength >= 7 && iLength <10)
         oSrcElement.value = sValue.substr(0,3) + '.' + sValue.substr(3,3) + '.' + sValue.substr(6,iLength-6);
      if (iLength >= 10 && iLength < 12)
         oSrcElement.value = sValue.substr(0,3) + '.' + sValue.substr(3,3) + '.' + sValue.substr(6,3) + '-' + sValue.substr(9,iLength-9);
   }
}

if( pageValidator.PostValidationMethods["IsValidCNPJ"] == null )
pageValidator.PostValidationMethods["IsValidCNPJ"] = function( pSrcElement )
{
   var iZ;
   var sValue = new String(pSrcElement.value);

   sValue = sValue.replace(".", "");
   sValue = sValue.replace(".", "");
   sValue = sValue.replace("/", "");
   sValue = sValue.replace("-", "");
 
   var c  = sValue.substr(0,12);
   var dv = sValue.substr(12,2);
   var d1 = 0;
   
   for (i = 0; i < 12; i++)
    {
      d1 += c.charAt(11-i)*(2+(i % 8));
    }
   
   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 < 12; i++)
   {
      d1 += c.charAt(11-i)*(2+((i+1) % 8));
   }
   d1 = 11 - (d1 % 11);
   if (d1 > 9) d1 = 0;
   
   if (dv.charAt(1) != d1)
   {
      return false;
   }
   
   return true;
}


if( pageValidator.PostValidationMethods["IsValidCPF"] == null )
pageValidator.PostValidationMethods["IsValidCPF"] = function( pSrcElement )
{
   var iZ;
   var sValue = new String(pSrcElement.value);

   sValue = sValue.replace(".", "");
   sValue = sValue.replace(".", "");
   sValue = sValue.replace("-", "");

   if (sValue.length > 11 || sValue == "00000000000" || sValue == "11111111111" || sValue == "22222222222" ||   sValue == "33333333333" || sValue == "44444444444" || sValue == "55555555555" || sValue == "66666666666" || sValue == "77777777777" ||   sValue == "88888888888" || sValue == "99999999999")
   {
      return false;
   } 

   var sum = 0, rest = 0;

   for (i=0; i < 9; i ++) 
   {
      sum += parseInt(sValue.charAt(i), 10) * (10 - i);
      rest = 11 - (sum % 11);
   }
   
   if (rest == 10 || rest == 11)
   {
      rest = 0;
   }

   if (rest != parseInt(sValue.charAt(9), 10))
   {
      return false;
   } 

   sum = 0;
   
   for (i = 0; i < 10; i ++)
   {
      sum += parseInt(sValue.charAt(i), 10) * (11 - i);
      rest = 11 - (sum % 11);
   }

   if (rest == 10 || rest == 11)
   {
      rest = 0;
   }
   
   if (rest != parseInt(sValue.charAt(10), 10))
   {
      return false;
   }      

   return true;
 }

