	function Len(str)
	  {  return String(str).length;  }
	  
	function Mid(str, start, len)  
	{         
	        if (start < 0 || len < 0) return "";

	        var iEnd, iLen = String(str).length;
	        if (start + len > iLen)
	                iEnd = iLen;
	        else
	                iEnd = start + len;

	        return String(str).substring(start,iEnd);
	}
        
	function ValidaCPF(CPF)
	{
		//Valida argumento
		if (Len(CPF) != 11)
			return false;
		
		Repetido=true;
		for (i=1;i<=10;i++)
		{
			if (Mid(CPF,i,1)!=Mid(CPF,0,1))
				{Repetido=false;
				 break;
				}
		}
		
		if (Repetido)
			return false;
								 
		soma = 0
		for (i = 1;i<=9;i++)
			soma = soma + parseInt(Mid(CPF, i-1, 1)) * (11 - i);

		Resto = 11 - (soma - (parseInt(soma / 11) * 11));

		if (Resto == 10 || Resto == 11) 
			 Resto = 0;
			 		
		if (Resto != parseInt(Mid(CPF, 9, 1)))
			return false;
							 	
		soma = 0
		for (i = 1;i<=10;i++)
			soma = soma + parseInt(Mid(CPF, i-1, 1)) * (12 - i);
		
		Resto = 11 - (soma - (parseInt(soma / 11) * 11));

		if (Resto == 10 || Resto == 11) 
			Resto = 0;
															
		if (Resto != parseInt(Mid(CPF, 10, 1)))
			return false;
			
		return true;
	}
	
	function ValidaCGC(cgc) 
	{
		if (Len(cgc)== 8 && parseInt(cgc) > 0)
		  {  a = 0;
			 J = 0;
			 d1 = 0;
			
			for (i = 0;i<7;i++)
			{	a = parseInt(Mid(cgc, i, 1));
								
				if (((i+1) % 2) != 0)
					a = a * 2;					 									
				 												
				if (a > 9)
					J = J + parseInt(a / 10) + (a % 10);
				else
					J = J + a;								
			}
			
			d1 = ((J % 10) != 0) ? (10 - (J % 10)) : 0 ;			
			
			if (d1 == parseInt(Mid(cgc, 7, 1)))
				 return true;
			else
				return false;
			}			
		else
		  { if (Len(cgc) == 14 && parseInt(cgc) > 0)
			{	a = 0;
				i = 0;
				d1 = 0;
				d2 = 0;
				J = 5;
				
				for (i = 0;i<12;i++)
				 {	 a = a + (parseInt(Mid(cgc, i, 1)) * J);
					 J = (J > 2) ? (J - 1) : 9 ;
				  }
								
				a = a % 11;
				d1 = (a > 1) ? (11 - a) : 0 ;
				a = 0;
				i = 0;
				J = 6;
				
				for (i = 0;i<13;i++)
					{a = a + (parseInt(Mid(cgc, i, 1)) * J);
					 J = (J > 2) ? (J - 1) : 9;
					}				
				
				a = a % 11;
				d2 = (a > 1) ? (11 - a): 0;
				
				if (d1 == parseInt(Mid(cgc, 12, 1)) && d2 == parseInt(Mid(cgc, 13, 1)))
					return true;
				else
					return false;
			}	
		    else
				return false;		
		}
}
