// exemplo do uso
// necessita dos . e - 
// o metodo onKeyPress é da mascara nao faz parte do codigo abaixo
// <input name="cnpj" type="text" id="cnpj" size="18" maxlength="18" onKeyPress="return txtBoxFormat(document.passo2, 'cnpj', '99.999.999/9999-99', event);" onblur="return validaCNPJ()">
// JavaScript Document
	function validaCNPJ() {

		CNPJ = document.cadastroform.cnpj.value;
		erro = new String;
		erro = "CNPJ digitado está incorreto ou é inválido.";
		
		if (CNPJ.length > 0 && CNPJ.length < 18) {
			alert(erro);
			document.cadastroform.cnpj.focus();
			return false;
		}
			
		if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-")){
			if (erro.length == 0) {
				alert(erro);
				document.cadastroform.cnpj.focus();
				return false;
			}
		}
		//substituir os caracteres que nao sao numeros
		if(document.layers && parseInt(navigator.appVersion) == 4){
			x = CNPJ.substring(0,2);
			x += CNPJ.substring(3,6);
			x += CNPJ.substring(7,10);
			x += CNPJ.substring(11,15);
			x += CNPJ.substring(16,18);
			CNPJ = x;	
		} else {
			CNPJ = CNPJ.replace(".","");
			CNPJ = CNPJ.replace(".","");
			CNPJ = CNPJ.replace("-","");
			CNPJ = CNPJ.replace("/","");
		}
		var nonNumbers = /\D/;
		if (nonNumbers.test(CNPJ)) {
			alert(erro);
			document.cadastroform.cnpj.focus();
			return false;
		}
			
		var a = [];
		var b = new Number;
		var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
		
		for (i=0; i<12; i++){
			a[i] = CNPJ.charAt(i);
			b += a[i] * c[i+1];
		}
		if ((x = b % 11) < 2) { 
			a[12] = 0 
		} else { 
			a[12] = 11-x 
		}
		
		b = 0;
		
		for (y=0; y<13; y++) {
			b += (a[y] * c[y]); 
		}
		
		if ((x = b % 11) < 2) { 
			a[13] = 0; 
		} else { 
			a[13] = 11-x; 
		}
		
		if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
			alert(erro);
			document.cadastroform.cnpj.focus;
			return false;
		}
		
		return true;
	}
