function validaCNPJ(Campo, obrigatorio) {
	if (!obrigatorio && Campo.value == "")
		return true

	var StrCNPJ = Campo.value;
 	if (StrCNPJ.length == 0){
 		return false
	}
 
 	var DataPat  = /^(\d{2}).(\d{3}).(\d{3})\/(\d{4})-(\d{2})/;
 	var DataPat2 = /^(\d{14})/;
 
 	var matchArray   = StrCNPJ.match(DataPat);
 	var matchArray2  = StrCNPJ.match(DataPat2);
 
 	if (matchArray == null && matchArray2 == null) {
		alert('Formato incorreto\nO número do CNPJ deve ser informado  incluindo-se os 14 dígitos.\nNão são necessários os separadores ou  zeros à esquerda.\n\nExemplo: 99999999999999 ou 99.999.999\/9999-99');
		Campo.focus();
		return false;
 	}else if(matchArray != null) {
	 	StrCNPJ = matchArray[1] + matchArray[2] + matchArray[3] + matchArray[4] + matchArray[5] ;
 	}else if(matchArray2 != null) {
	 	StrCNPJ = matchArray2[1];
 	}   
 
	var Ref_String="1234567890";
	for (Count=0; Count < StrCNPJ.length; Count++){
		TempChar= StrCNPJ.substring (Count, Count+1);
		if (Ref_String.indexOf (TempChar, 0)==-1)	{
			alert("Digite somente Números em seu CNPJ!");
			Campo.value = "";
			Campo.focus();
			return false ;
		}
	}
 
	var vaCharCNPJ;
	var varFirstChr = StrCNPJ.charAt(0);
	var vlMult,vlControle,s1, s2 = "";
	var i,j,vlDgito,vlSoma = 0;
	for ( var i=0; i<=13; i++ ) {
		var c = StrCNPJ.charAt(i);
		if( ! (c>="0")&&(c<="9") )	{
			alert("CNPJ incorreto!");
			Campo.focus();
			return false; 
		}
		if( c!=varFirstChr ) { 
			vaCharCNPJ = true; 
		}
	}
	if( ! vaCharCNPJ ) {
		alert("Digite seu CNPJ Corretamente!");
		Campo.focus();
		return false ;
	}
 
	s1 = StrCNPJ.substring(0,12);
	s2 = StrCNPJ.substring(12,15);
	vlMult = "543298765432";
	vlControle = "";
	for ( j=1; j<3; j++ ) {
		vlSoma = 0;
		for ( i=0; i<12; i++ ){ 
			vlSoma += eval( s1.charAt(i) )* eval( vlMult.charAt(i) );
		}
		if( j == 2 ){ 
			vlSoma += (2 * vlDgito); 
		}
		vlDgito = ((vlSoma*10) % 11);
		if( vlDgito == 10 ){ 
			vlDgito = 0; 
		}
		vlControle = vlControle + vlDgito;
		vlMult = "654329876543";
	}
	if( vlControle != s2 ) {
		alert("CNPJ inválido!");
		Campo.focus();
		return false; 
	}else {
		return true; 
	}      
 }

