// JavaScript Document

function chk_CPF(CPF)
{
	ERRO	= new String;
	
	if (CPF.length < 14)
		ERRO += "O CPF deve conter 11 dígitos."; 

	if ((CPF.charAt(3) != ".") || (CPF.charAt(7) != ".") || (CPF.charAt(11) != "-"))
		if (ERRO.length == 0)
			ERRO += "O CPF não está correto!\n";

	//substituir os caracteres que nao sao numeros
	if(document.layers && parseInt(navigator.appVersion) == 4)
	{
		x = CPF.substring(0,3);
		x += CPF.substring(4,7);
		x += CPF.substring(7,11);
		x += CPF.substring(12,13);
		CPF = x;	
	}
	else
	{
		CPF = CPF.replace(".","");
		CPF = CPF.replace(".","");
		CPF = CPF.replace("-","");
	}

	if (CPF == "00000000000" || CPF == "11111111111" || CPF == "22222222222" || CPF == "33333333333" || CPF == "44444444444" || CPF == "55555555555" || CPF == "66666666666" || CPF == "77777777777" || CPF == "88888888888" || CPF == "99999999999")
		  ERRO += "Numero de CPF invalido!"
	
	var a = [];
	var b = new Number;
	var c = 11;
	for (i=0; i<11; i++)
	{
		a[i] = CPF.charAt(i);
		if (i <  9) b += (a[i] *  --c);
	}

	a[9]	= ((x = b % 11) < 2) ? 0 : 11-x;
	b		= 0;
	c		= 11;
	for (y=0; y<10; y++)
		b += (a[y] *  c--);
		
	a[10]	= ((x = b % 11) < 2) ? 0 : 11-x;
	
	status = a[9] + ""+ a[10]
	if ((CPF.charAt(9) != a[9]) || (CPF.charAt(10) != a[10]))
		ERRO +="Digito verificador do CPF com problema!";

	if (ERRO.length > 0)
	{
		alert(ERRO);
		gId('CPF').focus();
		return false;
	}
	
	return true;
}

function chk_CNPJ(CNPJ)
{
	if(CNPJ.length == 0)
	{
		alert('ok');
		return true;
	}
	
	ERRO = new String;
	
	if (CNPJ.length < 18)
		ERRO += "O CNPJ não está completo, são 14 números.\n";
		
	if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-"))
		if (ERRO.length == 0)
			ERRO += "O CNPJ não está correto!\n";

	//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))
		ERRO += "A verificacao de CNPJ suporta apenas numeros!\n";	

	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];
	}
	
	a[12]	= ((x = b % 11) < 2) ? 0 : 11-x;	
	b		= 0;
	
	for (y=0; y<13; y++)
		b += (a[y] * c[y]); 

	a[13]	= ((x = b % 11) < 2) ? 0 : 11-x;
	
	if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13]))
		ERRO +="Digito verificador do CNPJ está com problema!\n";

	if (ERRO.length > 0)
	{
		alert(ERRO);
		gId('CNPJ').focus();
		return false;
	}
	
	return true;
}


/*	VERIFICA SE O CAMPOS ESTA COMPLETO	*/
function minValFields (CAMPO, NUM)
{
	var SIZE = gId(CAMPO).value;
	if(SIZE.length < NUM)
	{
		alert('Preencha o campo '+CAMPO+' com no mínimo '+NUM+' caracteres');
		gId(CAMPO).focus();
		return false;
	}
	else
		return true;
}


/*	MÁSCARA PARA CAMPOS		*/
function Mascara(OBJ, EVENT, VAL)
{
	var EVT		= (EVENT) ? EVENT : (window.event) ? window.event : "";
	var NTECLA	= (EVT.which) ? EVT.which : EVT.keyCode;

	if((NTECLA < 48 || NTECLA > 57) && (NTECLA != 8 && NTECLA != 9 && !(NTECLA >= 35 && NTECLA <= 40) && NTECLA != 46 && NTECLA != 116))
		return false;

	var MASK	= new Array();
		MASK[1] = '#####-###';				//	CEP
		MASK[2]	= '(##) ####-####';			//	FONE
		MASK[3]	= '###.###.###-##';			//	CPF
		MASK[7]	= '##.###.###/####-##';		//	CNPJ
		MASK[4]	= '##/##/####';				//	DATA
		MASK[5]	= '####';					//	DATA 2
		MASK[6]	= '####-####';				//	FONE SEM DDD
	var TIPO	= MASK[VAL]
	
	var FIXOS	= '().-:/ ';

	var VALOR = OBJ.value;
	
	if (EVT)
	{
		var SIZE = VALOR.length;

		if (SIZE >= TIPO.length && (NTECLA != 8 && NTECLA != 9 && NTECLA != 46))
			return false;
		
		if(NTECLA != 8 && NTECLA != 9 && NTECLA != 46)
		{
			var POS = TIPO.substr(SIZE, 1);
			while (FIXOS.indexOf(POS) != -1)
			{
				VALOR  += POS;
				SIZE	= VALOR.length;
				if (SIZE >= TIPO.length && (NTECLA != 8 && NTECLA != 9 && NTECLA != 46))
					return false;
				POS = TIPO.substr(SIZE, 1);
			}
		}
	}
	
	OBJ.value = VALOR;
	return true;
}


/*	INSERE UM INPUT	*/
function insField (DOC, TIPO, NOME, OBJ) {
	if(newACT == document.createElement("INPUT"))
	{
		newACT.type		= TIPO;
		newACT.name 	= NOME;
		newACT.value	= OBJ;
		DOC.appendChild( newACT );
		return true;
	} else {
		return false;
	}
};

/*	VALIDAÇÃO SIMPLES, APENAS ANALISA OS CAMPOS OBRIGATÓRIOS	*/
function chkFields (NM_FORM) {
	var DOC		= document.forms[NM_FORM];
	var LIST	= DOC.elements;
	var SIZE	= LIST.length;
	var i, NOME, ID, TITLE, VAL, MSG;

	for (i=0; i<SIZE; i++)
	{
		NOME	= LIST[i].name;
		ID		= LIST[i].id;
		TITLE	= LIST[i].title;
		VAL		= (LIST[i].type=="select-one") ? LIST[i].options[LIST[i].selectedIndex].value : ((LIST[i].type=="checkbox") ? LIST[i].checked : LIST[i].value);

		if (TITLE=="Obrigatório" && (VAL=="" || VAL==null || VAL==" " || VAL=="0" || VAL==false))
		{
			alert('Preencha o campo '+ ID);
			LIST[i].focus();
			return false;
		} 
	}
};

/* USA A FUNÇÃO ACIMA PARA VALIDAR E SUBMIT	*/
function SendForm (NM_FORM)
{
	var DOC		= document.forms[NM_FORM];
	var LIST	= DOC.elements;

	if(chkFields(NM_FORM) == false)
		return false;
	
	DOC.submit();
}
