//<![CDATA[
/* valida no submit do formul&aacute;rio */
function fncValidacaoForm() {

	var form = document.forms[0];
	var msgPadraoCampos = 'Favor preencha o campo ';
	var borderPadrao = '1px solid #61BFF2';
	var borderErro = '1px solid #f70000';

	/* P_updateDados {bool} para atuazar dados na base (quando sair do campo onchange) */
	this.nomeMae = function(P_updateDados) {
		objCampo = form.nomeMae;
		if (objCampo.value.length < 5) {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Nome inv&aacute;lido.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* nomeMae */

	this.sexo = function(P_updateDados) {
		objCampo = form.sexo;
		if (objCampo.value == '-1') {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Selecione alguma das op&ccedil;&otilde;es.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* sexo */

	this.ufNatural = function(P_updateDados) {
		objCampo = form.idUfNatural;
		objCampoNacionalidade = form.tipoNascionalidade;
		if(objCampo != undefined && objCampoNacionalidade.value != 'Estrangeiro') {
			if (objCampo.value == '-1') {
				objCampo.style.border = borderErro;
				toolTip(objCampo,'Selecione um estado.');
				return false;
			} else {
				if (P_updateDados)
					saveForm();
				objCampo.style.border = borderPadrao;
				removeToolTip(objCampo);
				return true;
			}
		}
	}
	
	this.municipioNatural = function(P_updateDados) {
		objCampo = form.idMunicipioNatural;
		objCampoNacionalidade = form.tipoNascionalidade;
		if(objCampo != undefined && objCampoNacionalidade.value != 'Estrangeiro') {
			if (objCampo.value == '-1') {
				objCampo.style.border = borderErro;
				toolTip(objCampo,'Selecione uma cidade.');
				return false;
			} else {
				if (P_updateDados)
					saveForm();
				objCampo.style.border = borderPadrao;
				removeToolTip(objCampo);
				return true;
			}
		}
	}
	
	this.pais = function(P_updateDados) {
		objCampo = form.tipoNascionalidade;
		objCampo2 = form.idPais;
		if (objCampo.value == 'Estrangeiro' && objCampo2.value == '-1') {
			objCampo2.style.border = borderErro;
			toolTip(objCampo,'Selecione alguma das op&ccedil;&otilde;es.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo2.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* pais/nacionalidade */

	this.cpf = function(P_updateDados) {
		objCampo = form.cpf;
		if (!isValidContent(objCampo, "cpf")) {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'CPF inv&aacute;lido.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* cpf */

	this.diaRG = function(P_updateDados) {
		objCampo = form.diaRgEmissao;
		objCampoAno = form.anoRgEmissao;
		if (objCampo.value == '' || objCampo.value < 1 || objCampo.value > 31) {
			objCampo.style.border = borderErro;
			//toolTip(objCampo,'Dia inv&aacute;lido.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampoAno);
			return true;
		}
	} /* diaRG */

	this.mesRG = function(P_updateDados) {
		objCampo = form.mesRgEmissao;
		objCampoAno = form.anoRgEmissao;
		if (objCampo.value == '' || objCampo.value < 1 || objCampo.value > 12) {
			objCampo.style.border = borderErro;
			//toolTip(objCampo,'M&ecirc;s inv&aacute;lido.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampoAno);
			return true;
		}
	} /* mesRG */

	this.anoRG = function(P_updateDados) {
		
		var msg = "";
		var erro = false;
		
		objCampoDia = form.diaRgEmissao;
		if (objCampoDia.value == '' || objCampoDia.value < 1 || objCampoDia.value > 31)
		{
			msg = msg + ",Dia";
			erro = true;
		}
		
		objCampoMes = form.mesRgEmissao;
		if (objCampoMes.value == '' || objCampoMes.value < 1 || objCampoMes.value > 12) 
		{
			msg = msg + ",M&ecirc;s";
			erro = true;
		}
		
		objCampoAno = form.anoRgEmissao;
		if (objCampoAno.value.length < 4) 
		{
			msg = msg + ",Ano";
			erro = true;
		}
			
		if (erro) {
			removeToolTip(objCampoAno);
			objCampoAno.style.border = borderErro;
			toolTip(objCampoAno,msg.substr(1) + " inv&aacute;lido.");
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampoAno);
			return true;
		}
	} /* anoRG */
	
	this.ufRG = function(P_updateDados) {
		objCampo = form.ufEmissorRg;
		if (objCampo.value == '-1') {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'UF RG inv&aacute;lido.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* ufRG */

	this.orgaoRG = function(P_updateDados) {
		objCampo = form.orgaoEmissorRg;
		if (objCampo.value == '') {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Org&atilde;o emissor RG inv&aacute;lido.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* orgaoRG */

	this.email = function(P_updateDados) {
		objCampo = form.emailContato;
		if (!isValidEmail(objCampo.value)) {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'E-mail inv&aacute;lido.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* email */

	this.receberPromocoes = function(P_updateDados) {
		if (P_updateDados)
			saveForm();
	} /* receberPromocoes */		

	/*this.dddFixo = function(P_updateDados) {
		objCampo = form.dddTelefone;
		if (objCampo.value.length < 2) {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'DDD inv&aacute;lido.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	}  dddFixo 		

	this.telFixo = function(P_updateDados) {
		objCampo = form.numeroTelefone;
		if (objCampo.value.length < 7) {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Telefone inv&aacute;lido.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	}  telFixo */
	
	this.telefoneFixo = function(P_updateDados) {
		
		objCampoDdd = form.dddTelefone;
		objCampoTel = form.numeroTelefone;
		if (objCampoDdd.value.length < 2 && objCampoTel.value.length < 7)
		{
			objCampoTel.style.border = borderPadrao;
			removeToolTip(objCampoTel);
			objCampoDdd.style.border = borderErro;
			objCampoTel.style.border = borderErro;
			toolTip(objCampoTel,'DDD e Telefone inv&aacute;lidos.');
			return false;
		} else if (objCampoDdd.value.length >=2 && objCampoTel.value.length < 7)
		{
			objCampoDdd.style.border = borderPadrao;
			removeToolTip(objCampoTel);
			objCampoTel.style.border = borderErro;
			toolTip(objCampoTel,'Telefone inv&aacute;lido.');
			return false;
		} else if (objCampoDdd.value.length < 2 && objCampoTel.value.length >= 7)
		{
			objCampoTel.style.border = borderPadrao;
			removeToolTip(objCampoTel);
			objCampoDdd.style.border = borderErro;
			toolTip(objCampoTel,'DDD inv&aacute;lido.');
			return false;
		} else 
		{
			if (P_updateDados)
				saveForm();
			objCampoDdd.style.border = borderPadrao;
			objCampoTel.style.border = borderPadrao;
			removeToolTip(objCampoTel);
			return true;
		}
	}

	this.dddCel = function(P_updateDados) {
		objCampo = form.dddCelular;
		/* n&atilde;o &eacute; obrigat&oacute;rio - usu&aacute;rio pode limpar */
		if (P_updateDados)
			saveForm();
	} /* dddCel */		

	this.telCel = function(P_updateDados) {
		objCampo = form.numeroCelular;
		/* n&atilde;o &eacute; obrigat&oacute;rio - usu&aacute;rio pode limpar */
		if (P_updateDados)
			saveForm();
	} /* telCel */

	/* primeira parte do cep */
	/*this.cep1 = function(P_updateDados) {
		objCampo = form.cepInicial;
		if (objCampo.value.length < 5) {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'CEP incial inv&aacute;lido.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} *//* cep1 */
	
	/* valida��o cep */
	this.cep2 = function(P_updateDados) {
		objCampoIni = form.cepInicial;
		objCampoFim = form.cepFinal;
		
		var retorno = true;
		if (objCampoIni.value.length < 5 || objCampoFim.value.length < 3) {
			objCampoIni.style.border = borderErro;
			objCampoFim.style.border = borderErro;
			toolTip(objCampoFim,'CEP inv&aacute;lido.', 120);
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampoIni.style.border = borderPadrao;
			objCampoFim.style.border = borderPadrao;
			removeToolTip(objCampoFim);
			return true;
		}
	} /* cep */

	/* valida��o cep ENTREGA */
	this.cepEntregaVal = function(P_updateDados) {
		objCampoIni = form.cepInicialEntrega;
		objCampoFim = form.cepFinalEntrega;
                var retorno = true;
		if (objCampoIni.value.length < 5 || objCampoFim.value.length < 3) {
			objCampoIni.style.border = borderErro;
			objCampoFim.style.border = borderErro;
			toolTip(objCampoFim,'CEP inv&aacute;lido.', 120);
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampoIni.style.border = borderPadrao;
			objCampoFim.style.border = borderPadrao;
			removeToolTip(objCampoFim);
			return true;
		}
	} /* cep */
            /* Cobranca*/
	this.cepCobrancaVal = function(P_updateDados) {
		objCampoIni = form.cepInicialCobranca;
		objCampoFim = form.cepFinalCobranca;
                var retorno = true;
		if (objCampoIni.value.length < 5 || objCampoFim.value.length < 3) {
			objCampoIni.style.border = borderErro;
			objCampoFim.style.border = borderErro;
			toolTip(objCampoFim,'CEP inv&aacute;lido.', 120);
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampoIni.style.border = borderPadrao;
			objCampoFim.style.border = borderPadrao;
			removeToolTip(objCampoFim);
			return true;
		}
	} /* cep */


	this.estadoContato = function(P_updateDados) {
		objCampo = form.idEstadoContato;
		if (objCampo.value == '-1') {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Selecione uma das op&ccedil;&otilde;es.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* estadoContato */
	
	this.cidadeContato = function(P_updateDados) {
		objCampo = form.idCidadeContato;
		if (objCampo.value == '-1') {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Selecione uma das op&ccedil;&otilde;es.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* cidadeContato */

	this.bairroContato = function(P_updateDados) {
		objCampo = form.idBairroContato;
		if (objCampo.value == '-1') {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Selecione uma das op&ccedil;&otilde;es.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* bairroContato */

	this.enderecoContato = function(P_updateDados) {
		objCampo = form.enderecoContato;
		if (objCampo.value.length < 3) {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Endere&ccedil;o inv&aacute;lido.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* enderecoContato */

	this.numeroEnderecoContato = function(P_updateDados) {
		/* n&atilde;o &eacute; obrigat&oacute;rio - usu&aacute;rio pode limpar */
		if (P_updateDados)
			saveForm();
		return true;
	} /* numeroEnderecoContato */

	this.complementoEnderecoContato = function(P_updateDados) {
		/* n&atilde;o &eacute; obrigat&oacute;rio - usu&aacute;rio pode limpar */
		if (P_updateDados)
			saveForm();
		return true;
	} /* complementoEnderecoContato */
/*
 
 *Entrega
 
 */
	this.estadoEntrega = function(P_updateDados) {
		objCampo = form.idEstadoEntrega;
		if (objCampo.value == '-1') {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Selecione uma das op&ccedil;&otilde;es.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* estadoEntrega */

	this.cidadeEntrega = function(P_updateDados) {
		objCampo = form.idCidadeEntrega;
		if (objCampo.value == '-1') {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Selecione uma das op&ccedil;&otilde;es.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* cidadeEntrega */

	this.bairroEntrega = function(P_updateDados) {
		objCampo = form.idBairroEntrega;
		if (objCampo.value == '-1') {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Selecione uma das op&ccedil;&otilde;es.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* bairroEntrega */

	this.enderecoEntrega = function(P_updateDados) {
		objCampo = form.enderecoEntrega;
		if (objCampo.value.length < 3) {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Endere&ccedil;o inv&aacute;lido.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* enderecoEntrega */

	this.numeroEnderecoEntrega = function(P_updateDados) {
		/* n&atilde;o &eacute; obrigat&oacute;rio - usu&aacute;rio pode limpar */
		if (P_updateDados)
			saveForm();
		return true;
	} /* numeroEnderecoEntrega */

	this.complementoEnderecoEntrega = function(P_updateDados) {
		/* n&atilde;o &eacute; obrigat&oacute;rio - usu&aacute;rio pode limpar */
		if (P_updateDados)
			saveForm();
		return true;
	} /* complementoEnderecoContato */

	this.ck_entrega = function(P_updateDados) {
		objCampo = form.ck_entrega;
                //Input.nomequalquer { background-Color: #cor qualquer}
		if (!objCampo[0].checked&&!objCampo[1].checked) {
			//objCampo.style.border = borderErro;
			toolTip(objCampo,'Escolha uma das Opções de Endereço de Entrega',undefined);
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			//objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}

//                return P_updateDados;
	}

/*
 *FIM Entrega
 */

/*

 *Cobranca

 */
	this.estadoCobranca = function(P_updateDados) {
		objCampo = form.idEstadoCobranca;
		if (objCampo.value == '-1') {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Selecione uma das op&ccedil;&otilde;es.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* estadoCobranca */

	this.cidadeCobranca = function(P_updateDados) {
		objCampo = form.idCidadeCobranca;
		if (objCampo.value == '-1') {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Selecione uma das op&ccedil;&otilde;es.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* cidadeCobranca */

	this.bairroCobranca = function(P_updateDados) {
		objCampo = form.idBairroCobranca;
		if (objCampo.value == '-1') {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Selecione uma das op&ccedil;&otilde;es.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* bairroCobranca */

	this.enderecoCobranca = function(P_updateDados) {
		objCampo = form.enderecoCobranca;
		if (objCampo.value.length < 3) {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Endere&ccedil;o inv&aacute;lido.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* enderecoCobranca */

	this.numeroEnderecoCobranca = function(P_updateDados) {
		/* n&atilde;o &eacute; obrigat&oacute;rio - usu&aacute;rio pode limpar */
		if (P_updateDados)
			saveForm();
		return true;
	} /* numeroEnderecoCobranca */

	this.complementoEnderecoCobranca = function(P_updateDados) {
		/* n&atilde;o &eacute; obrigat&oacute;rio - usu&aacute;rio pode limpar */
		if (P_updateDados)
			saveForm();
		return true;
	} /* complementoEnderecoCobranca */

	this.ck_cobranca = function(P_updateDados) {
		/* n&atilde;o &eacute; obrigat&oacute;rio - usu&aacute;rio pode limpar */
		if (P_updateDados)
			saveForm();
		return true;
	}
/*
 *FIM Entrega
 */


	this.tipoInstituicao = function(P_updateDados) {
		objCampo = form.idTipoInstituicaoFormacao;
		if (objCampo.value == '') {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Selecione uma das op&ccedil;&otilde;es.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* tipoInstituicao */

	this.instituicaoFormacao = function(P_updateDados) {
		objCampo = form.idInstituicaoFormacao;
		if (objCampo.value == '-1') {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Selecione uma das op&ccedil;&otilde;es.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* instituicaoFormacao */

	this.anoConclusaoFormacao = function(P_updateDados) {
		objCampo = form.anoConclusaoFormacao;
		if (objCampo.value.length < 4) {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Ano inv&aacute;lido.');
			return false;
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* anoConclusaoFormacao */
	
	this.anoSemIngressoVestibular = function(P_updateDados) {
		var anoConclusao = form.anoConclusaoFormacao;
		objCampo = form.anoSemIngressoVestibular;
		objCampo.style.border = borderPadrao;
		removeToolTip(objCampo);
		if (objCampo.value.length < 6) {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Ano/Sem. inv&aacute;lido.');
			return false;
		} else if (!objCampo.value.match(/[1-2][0-9]{3}\/[1-2]/)) {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Ano/Sem. inv&aacute;lido.');
			return false;
		} else if (objCampo.value.match(/^\d{4}/i) < anoConclusao.value)
		{
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Ano inv&aacute;lido.');
			return false;
		
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* anoSemIngressoVestibular */
	
	this.anoSemIngressoOrigem = function(P_updateDados) {
		var anoConclusao = form.anoConclusaoFormacao;
		objCampo = form.anoSemIngressoOrigem;
		objCampo.style.border = borderPadrao;
		removeToolTip(objCampo);
		if (objCampo.value.length < 6) {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Ano/Sem. inv&aacute;lido.');
			return false;
		} else if (!objCampo.value.match(/[1-2][0-9]{3}\/[1-2]/)) {
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Ano/Sem. inv&aacute;lido.');
			return false;
		} else if (objCampo.value.match(/^\d{4}/i) < anoConclusao.value)
		{
			objCampo.style.border = borderErro;
			toolTip(objCampo,'Ano inv&aacute;lido.');
			return false;
		
		} else {
			if (P_updateDados)
				saveForm();
			objCampo.style.border = borderPadrao;
			removeToolTip(objCampo);
			return true;
		}
	} /* anoSemIngressoOrigem */

	this.empresaFuncionario = function(P_updateDados) {
		/* n&atilde;o &eacute; obrigat&oacute;rio */
		if (P_updateDados)
			saveForm();
		return true;
	} /* empresaFuncionario */

	//this.empresaFiliado = function(P_updateDados) {
		/* n&atilde;o &eacute; obrigat&oacute;rio - usu&aacute;rio pode limpar */
	//	if (P_updateDados)
	//		saveForm();
	//	return true;
	//} /* empresaFiliado */
	
	
	
} /* fncValidacaoForm */
 /* Inicio EnderecoCEP */
	function buscarCep()
	{
		if (jQuery.trim($('#cepInicial').val()) != '' && jQuery.trim($('#cepFinal').val()) != ''){

			$.postJSON("passo1!buscarCep.action", $('form').serialize(),
				function(data){
                                    var form = document.forms[0];
                                    var borderPadrao = '1px solid #61BFF2';
                                    var borderErro = '1px solid #f70000';
                                    var objCampoIni = form.cepInicial;
                                    var objCampoFim = form.cepFinal;
					if(data != undefined){
						if (data.erro != undefined){
                                                        objCampoIni.style.border = borderPadrao;
                                                        objCampoFim.style.border = borderPadrao;
                                                        removeToolTip(objCampoFim);
                                                        objCampoIni.style.border = borderErro;
                                                        objCampoFim.style.border = borderErro;
                                                        objCampoIni.value = "";
                                                        objCampoFim.value = "";
                                                        toolTip(objCampoFim,'CEP inv&aacute;lido.', 120);

						}else{
                                                    objCampoIni.style.border = borderPadrao;
                                                    objCampoFim.style.border = borderPadrao;
                                                    removeToolTip(objCampoFim);
						}



					}
	     	});
		}
	}
/* Fim EnderecoCEP */

/* Inicio Endereco Entrega */
	function buscarCepEntrega()
	{
		if (jQuery.trim($('#cepInicialEntrega').val()) != '' && jQuery.trim($('#cepFinalEntrega').val()) != ''){
			$.postJSON("passo1!buscarCepEntrega.action", $('form').serialize(),
				function(data){
                                    var form = document.forms[0];
                                    var borderPadrao = '1px solid #61BFF2';
                                    var borderErro = '1px solid #f70000';
                                    var objCampoIni = form.cepInicialEntrega;
                                    var objCampoFim = form.cepFinalEntrega;
					if(data != undefined){
						if (data.erro != undefined){
                                                        objCampoIni.style.border = borderPadrao;
                                                        objCampoFim.style.border = borderPadrao;
                                                        removeToolTip(objCampoFim);
                                                        cepValidoEntregaShow(false);
                                                        objCampoIni.style.border = borderErro;
                                                        objCampoFim.style.border = borderErro;
                                                        objCampoIni.value = "";
                                                        objCampoFim.value = "";
                                                        toolTip(objCampoFim,'CEP inv&aacute;lido.', 120);
						}else{
                                                        objCampoIni.style.border = borderPadrao;
                                                        objCampoFim.style.border = borderPadrao;
                                                        removeToolTip(objCampoFim);
							cepValidoEntregaShow(true);
						}



					}
	     	});
		}
	}

/* Fim Endereco Entrega */
/* Inicio Endereco Cobranca */
	function buscarCepCobranca()
	{
		if (jQuery.trim($('#cepInicialCobranca').val()) != '' && jQuery.trim($('#cepFinalCobranca').val()) != ''){

			$.postJSON("passo1!buscarCepCobranca.action", $('form').serialize(),
				function(data){
                                    var form = document.forms[0];
                                    var borderPadrao = '1px solid #61BFF2';
                                    var borderErro = '1px solid #f70000';
                                    var objCampoIni = form.cepInicialCobranca;
                                    var objCampoFim = form.cepFinalCobranca;
					if(data != undefined){
						if (data.erro != undefined){
                                                        objCampoIni.style.border = borderPadrao;
                                                        objCampoFim.style.border = borderPadrao;
                                                        removeToolTip(objCampoFim);
							cepValidoCobrancaShow(false);
                                                        objCampoIni.style.border = borderErro;
                                                        objCampoFim.style.border = borderErro;
                                                        objCampoIni.value = "";
                                                        objCampoFim.value = "";
                                                        toolTip(objCampoFim,'CEP inv&aacute;lido.', 120);
						}else{
                                                        objCampoIni.style.border = borderPadrao;
                                                        objCampoFim.style.border = borderPadrao;
                                                        removeToolTip(objCampoFim);
							cepValidoCobrancaShow(true);
						}
					}
	     	});
		}
	}


/* Fim Endereco Cobranca */
/* valida todo o formulario */
function fncValidaForm() {
	var form = document.forms[0];
	var camposParaCorrigir = ''; /* nome dos campos a serem corrigidos */
	var qtdErros = 0; /* quantidade de camposa serem corrigidos */
	var scroll = "";
	/* verica campos */
	if (!OVF.nomeMae(false)) {
		camposParaCorrigir += "  - Nome da m\xE3e\n";
		qtdErros++;
		scroll = (scroll=="") ? document.forms[0].elements["nomeMae"] : scroll;
	}
	if (!OVF.sexo(false)) {
		camposParaCorrigir += '  - Sexo\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["sexo"] : scroll;
	}
	objCampo = form.idUfNatural;
	objCampoNacionalidade = form.tipoNascionalidade;
	if(objCampo != undefined && objCampoNacionalidade.value != "Estrangeiro") {
		if (!OVF.ufNatural(false)) {
			camposParaCorrigir += '  - Estado, nos dados pessoais\n';
			qtdErros++;
			scroll = (scroll=="") ?  document.forms[0].elements["idUfNatural"] : scroll;
		}
	}
	objCampo = form.idMunicipioNatural;
	objCampoNacionalidade = form.tipoNascionalidade;
	if(objCampo != undefined && objCampoNacionalidade.value != "Estrangeiro") {
		if (!OVF.municipioNatural(false)) {
			camposParaCorrigir += '  - Cidade, nos dados pessoais\n';
			qtdErros++;
			scroll = (scroll=="") ?  document.forms[0].elements["idMunicipioNatural"] : scroll;
		}
	}
	if (!OVF.pais(false)) {
		camposParaCorrigir += '  - Pa\xEDs\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["idPais"] : scroll;
	}
	if (!OVF.cpf(false)) {
		camposParaCorrigir += '  - CPF\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["cpf"] : scroll;
	}
	if (!OVF.diaRG(false)) {
		camposParaCorrigir += '  - Dia da data de emiss\xE3o do RG\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["diaRgEmissao"] : scroll;		
	}
	if (!OVF.mesRG(false)) {
		camposParaCorrigir += '  - M\xEAs da data de emiss\xE3o do RG\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["mesRgEmissao"] : scroll;
	}
	if (!OVF.anoRG(false)) {
		camposParaCorrigir += '  - Ano da data de emiss\xE3o do RG\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["anoRgEmissao"] : scroll;
	}
	if (!OVF.ufRG(false)) {
		camposParaCorrigir += '  - UF RG\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["ufEmissorRg"] : scroll;
	}
	if (!OVF.orgaoRG(false)) {
		camposParaCorrigir += '  - Org\xE3o emissor do RG\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["orgaoEmissorRg"] : scroll;
	}	
	if (!OVF.email(false)) {
		camposParaCorrigir += '  - E-mail\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["emailContato"] : scroll;
	}
	if (!OVF.telefoneFixo(false)) {
		camposParaCorrigir += '  - DDD e/ou Telefone fixo\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["dddTelefone"] : scroll;
	}
	/*if (!OVF.telFixo(false)) {
		camposParaCorrigir += '  - N\xFAmero telefone fixo\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["numeroTelefone"] : scroll;
	}*/
	/*if (!OVF.cep1(false)) {
		camposParaCorrigir += '  - CEP, primeira parte\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["cepInicial"] : scroll;
	}*/

        //Endereco contato
	if (!OVF.cep2(false)) {
		camposParaCorrigir += '  - CEP, \n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["cepFinal"] : scroll;
	}
        
	if (!OVF.estadoContato(false)) {
		camposParaCorrigir += '  - Estado, nos dados de contato\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["idEstadoContato"] : scroll;
	}
	if (!OVF.cidadeContato(false)) {
		camposParaCorrigir += '  - Cidade, nos dados de contato\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["idCidadeContato"] : scroll;
	}
	if (!OVF.bairroContato(false)) {
		camposParaCorrigir += '  - Bairro, nos dados de contato\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["idBairroContato"] : scroll;
	}
	if (!OVF.enderecoContato(false)) {
		camposParaCorrigir += '  - Endere\xE7o, nos dados de contato\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["enderecoContato"] : scroll;
	}

        if (document.forms[0].ck_entrega[1].checked){
        
            //Endereco Entrega
            if (!OVF.cepEntregaVal(false)) {
                    camposParaCorrigir += '  - CEP, \n';
                    qtdErros++;
                    scroll = (scroll=="") ?  document.forms[0].elements["cepFinalEntrega"] : scroll;
            }
            if (!OVF.estadoEntrega(false)) {
                    camposParaCorrigir += '  - Estado, nos dados de Entrega\n';
                    qtdErros++;
                    scroll = (scroll=="") ?  document.forms[0].elements["idEstadoEntrega"] : scroll;
            }
            if (!OVF.cidadeEntrega(false)) {
                    camposParaCorrigir += '  - Cidade, nos dados de Entrega\n';
                    qtdErros++;
                    scroll = (scroll=="") ?  document.forms[0].elements["idCidadeEntrega"] : scroll;
            }
            if (!OVF.bairroEntrega(false)) {
                    camposParaCorrigir += '  - Bairro, nos dados de Entrega\n';
                    qtdErros++;
                    scroll = (scroll=="") ?  document.forms[0].elements["idBairroEntrega"] : scroll;
            }
            if (!OVF.enderecoEntrega(false)) {
                    camposParaCorrigir += '  - Endere\xE7o, nos dados de Entrega\n';
                    qtdErros++;
                    scroll = (scroll=="") ?  document.forms[0].elements["enderecoEntrega"] : scroll;
            }
        }

        if (!document.forms[0].ck_entrega[0].checked && !document.forms[0].ck_entrega[1].checked){

            if (qtdErros == 0) {
            //Endereco Entrega
                alert("Marque a opção sobre o Endereço de Entrega!")
//              if (!OVF.ck_entrega(false))
//              {

		camposParaCorrigir += '  - Endere\xE7o, nos dados de contato\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["enderecoContato"] : scroll;
            }
//
//            }
        }



            //Endeco Cobranca
        if (document.forms[0].ck_cobranca[2].checked ){
            if (!OVF.cepCobrancaVal(false)) {
                    camposParaCorrigir += '  - CEP, \n';
                    qtdErros++;
                    scroll = (scroll=="") ?  document.forms[0].elements["cepFinalCobranca"] : scroll;
            }
            if (!OVF.estadoCobranca(false)) {
                    camposParaCorrigir += '  - Estado, nos dados de Cobranca\n';
                    qtdErros++;
                    scroll = (scroll=="") ?  document.forms[0].elements["idEstadoCobranca"] : scroll;
            }
            if (!OVF.cidadeCobranca(false)) {
                    camposParaCorrigir += '  - Cidade, nos dados de Cobranca\n';
                    qtdErros++;
                    scroll = (scroll=="") ?  document.forms[0].elements["idCidadeCobranca"] : scroll;
            }
            if (!OVF.bairroCobranca(false)) {
                    camposParaCorrigir += '  - Bairro, nos dados de Cobranca\n';
                    qtdErros++;
                    scroll = (scroll=="") ?  document.forms[0].elements["idBairroCobranca"] : scroll;
            }
            if (!OVF.enderecoCobranca(false)) {
                    camposParaCorrigir += '  - Endere\xE7o, nos dados de Cobranca\n';
                    qtdErros++;
                    scroll = (scroll=="") ?  document.forms[0].elements["enderecoCobranca"] : scroll;
            }

        }

        if (!document.forms[0].ck_cobranca[0].checked && !document.forms[0].ck_cobranca[1].checked && !document.forms[0].ck_cobranca[2].checked){

            if (qtdErros == 0) {
            //Endereco Entrega
                alert("Marque a opção sobre o Endereço de Cobrança!")
		camposParaCorrigir += '  - Endere\xE7o, nos dados de contato\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["enderecoContato"] : scroll;
            }
        }



	if (!OVF.tipoInstituicao(false)) {
		camposParaCorrigir += '  - Institui\xE7\xE3o de ensino\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["idTipoInstituicaoFormacao"] : scroll;
	}
	if (!OVF.instituicaoFormacao(false)) {
		camposParaCorrigir += '  - Institui��o de ensino\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["idInstituicaoFormacao"] : scroll;
	}
	if (!OVF.anoConclusaoFormacao(false)) {
		camposParaCorrigir += '  - Ano inv�lido\n';
		qtdErros++;
		scroll = (scroll=="") ?  document.forms[0].elements["anoConclusaoFormacao"] : scroll;
	}
	
	objCampo = form.anoSemIngressoVestibular;
	if(objCampo != undefined) {
		if(!OVF.anoSemIngressoVestibular(false)){
			camposParaCorrigir += '  - Ano e Semestre\n';
			qtdErros++;
			scroll = (scroll=="") ?  document.forms[0].elements["anoSemIngressoVestibular"] : scroll;
		}
	}
	
	objCampo = form.anoSemIngressoOrigem;
	if(objCampo != undefined) {
		if(!OVF.anoSemIngressoOrigem(false)){
			camposParaCorrigir += '  - Ano e Semestre\n';
			qtdErros++;
			scroll = (scroll=="") ?  document.forms[0].elements["anoSemIngressoOrigem"] : scroll;
		}
	}
	
	if(scroll != "")
		$.scrollTo(scroll, 300, { offset:-40 } );

	/* mensagem ao usu�rio */
	if (qtdErros > 0) {
		var sCampos = (qtdErros > 1) ? 's' : '';
		//alert('Verifique o' + sCampos + ' campo' + sCampos + ':\n\n' + camposParaCorrigir);
		return false;
	}
	return true;
} /* fncValidaForm */

// -----------------------------------------------------------
// Programador: Fl�vio Cruz de Souza
// �ltima Atualiza��o: 31/07/2007

var isFF = navigator.appName == "Netscape";


//Retorna uma string com a data no formato informado
//format: qualquer combina��o das strings abaixo. Ex objDate.getValue("DD/MM HH:MI");
//DDD - dia da semana
//DD - dia
//MM - m�s
//MMM - m�s (por extenso)
//YYYY - ano
//HH - hora
//MI - minuto
//SS - segundos
Date.prototype.getValue = function(format){
  weekDay = new Array("domingo", "segunda-feira", "ter&ccedil;a-feira", "quarta-feira", "quinta-feira", "sexta-feira", "s&aacute;bado");
  month = new Array("janeiro", "fevereiro", "mar&ccedil;o", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro");

  return format.replace("DDD", weekDay[this.getDay()])
                .replace("DD", this.getDate() > 9 ? this.getDate() : "0" + this.getDate())
                .replace("MMM", month[this.getMonth()])
                .replace("MM", parseInt(this.getMonth()) + 1 > 9 ? parseInt(this.getMonth()) + 1 : "0" + (parseInt(this.getMonth()) + 1))
                .replace("YYYY", this.getYear() > 99 ? this.getYear() : "19" + this.getYear())
                .replace("[H]", this.getTotalHours())
                .replace("HH", this.getHours() > 9 ? this.getHours() : "0" + this.getHours())
                .replace("MI", this.getMinutes() > 9 ? this.getMinutes() : "0" + this.getMinutes())
                .replace("SS", this.getSeconds() > 9 ? this.getSeconds() : "0" + this.getSeconds());
}


//Insere a data no formato informado
//value = string contendo a data no formato informado
//format (opcional): qualquer combina��o das strings abaixo. Ex objDate.setValue("01/01 23:59", "DD/MM HH:MI");
//DD - dia
//MM - m�s
//YYYY - ano
//HH - hora
//MI - minuto
//SS - segundos
Date.prototype.setValue = function(value){
  argv = Date.prototype.setValue.arguments;
  argc = argv.length;
  format = argc > 1 ? argv[1] : "DD/MM/YYYY";

  var day, mounth, year, hour, minute, second, pos;
  
  pos = format.indexOf("DD");
  day = pos == -1 ? 1 : value.substr(pos, 2);
  this.setDate(day);
  
  pos = format.indexOf("MM");
  mounth = pos == -1 ? 1 : value.substr(pos, 2);
  this.setMonth(mounth - 1);
    
  pos = format.indexOf("YYYY");
  year = pos == -1 ? 1970 : value.substr(pos, 4);
  this.setYear(year);
    
  pos = format.indexOf("HH");
  hour = pos == -1 ? 0 : value.substr(pos, 2);
  this.setHours(hour);  
  
  pos = format.indexOf("MI");
  minute = pos == -1 ? 0 : value.substr(pos, 2);
  this.setMinutes(minute);
    
  pos = format.indexOf("SS");
  second = pos == -1 ? 0 : value.substr(pos, 2);
  this.setSeconds(second);
}


Date.prototype.toString = function(){
  return this.getValue("DDD, DD de MMM de YYYY, HH:MI:SS.");
}



Date.prototype.getTotalHours = function(){
  return parseInt((((this.valueOf() / 1000) / 60) - this.getTimezoneOffset()) / 60);
}



//Verifica se um objeto select est� selecionado
function isSelected(obj){
  var i;
  var isValid = false;
  
  for (i = 0; i < obj.length; i++){
    if (obj.options[i].selected){
      isValid = true;
      break;
    }
  }
  
  return isValid;
}



// Seleciona uma Option em um Select com o valor que eu informei
function selectOption(obj, value){
  for(var i = 0; i < obj.length; i++)
    if(obj.options[i].value == value){
      obj.selectedIndex = i;
      break;
    }
}



// Insere Options em um Select
function insertOption(obj, value, text){
  var argv = insertOption.arguments;
  var argc = argv.length;
  var insertBefore = (argc > 3) ? argv[1] : null;

  var op = new Option(text, value, false, false);

  if(insertBefore)
    try {
      obj.add(op, obj.options[insertBefore]); // standards compliant
    }
    catch(ex){
      obj.add(op, insertBefore); // IE only
    }
  else
    try {
      obj.add(op, null); // standards compliant
    }
    catch(ex){
      obj.add(op); // IE only
    }
}



// Deleta os Options de um Select
function deleteAllOption(obj) {
  obj.length = 0;

  if(!isFF) insertOption(obj, "", "");
}



function checkRadioButton(obj, value){
  if(obj.length)
    for(var i = 0; i < obj.length; i++)
      obj[i].checked = obj[i].value == value;
  else
    obj.checked = obj.value == value;
}



function mostraDiv(obj, show){
  document.getElementById(obj).style.display = show ? "block" : "none";
}



function validaCampo(campo, nomeCampo){
  if(!campo.value){
    alert("O campo \"" + nomeCampo + "\" &eacute; de preenchimento obrigat&oacute;rio.");
    campo.focus();
    return false;
  }
  return true;
}




// Fun��es de valida��o de dados
function isValidUnsignedInteger(pStr) {
  var reUnsignedInteger = /^\d+$/;
  
  return reUnsignedInteger.test(pStr);
} // isValidUnsignedInteger



function isValidInteger(pStr) {
  var reInteger = /^[+-]?\d+$/;  
  
  return reInteger.test(pStr);
} // isValidInteger



function isValidFloat(pStr){
  var argv = isValidFloat.arguments;
  var argc = argv.length; 
  var pLang = (argc > 1) ? argv[1] : "Pt";   

  var reFloat;
  var reFloatPt = /^[+-]?((\d+|\d{1,3}(\.\d{3})+)(\,\d*)?|\,\d+)$/; //Portugues
  var reFloatEn = /^[+-]?((\d+|\d{1,3}(\,\d{3})+)(\.\d*)?|\.\d+)$/; //Ingles
  
  eval("reFloat = reFloat" + pLang);
  return reFloat.test(pStr);
} // isValidFloat



function isValidDate(pStr){
  var argv = isValidDate.arguments;
  var argc = argv.length; 
  var pFmt = (argc > 1) ? argv[1] : "DDMMAAAA";

  var reDate;
  var reDateDMAA = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/; // dd ou d/mm ou m/aaaa ou aa
  var reDateDDMMAAAA = /^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/(19|20)\d{2}$/; // dd/mm/aaaa

  eval("reDate = reDate" + pFmt);

  if(pStr.split("/").length != 3)
    return false;

  if(pStr.split("/")[1] == 2) {
    //Valido ano que nao e bissexto
    if(pStr.split("/")[0] > 28 && (pStr.split("/")[2] % 4) != 0)
      return false;
    //Valido ano bissexto
    if(pStr.split("/")[0] > 29 && (pStr.split("/")[2] % 4) == 0)
      return false;
  }
  
  return reDate.test(pStr);
} // isValidDate



function isValidTime(pStr){
  var reTime;

  var argv = isValidTime.arguments;
  var argc = argv.length; 
  var pFmt = (argc > 1) ? argv[1] : "HH24:MI";

  H3 = '\\d+';   //  \\ = \
  HH24 = '([0-1]\\d|2[0-3])';
  HH12 = '(0[1-9]|1[0-2])';
  MI = '[0-5]\\d';
  M3 = '\\d+';
  SS = '[0-5]\\d';

  pFmt = pFmt.replace("H3", H3)
             .replace("HH24", HH24)
             .replace("HH12", HH12)
             .replace("MI", MI)
             .replace("M3", M3)
             .replace("SS", SS);

  eval("reTime = /^" + pFmt + "$/");
  
  return reTime.test(pStr);
} // isValidTime



function isValidEmail(pStr){
  var argv = isValidEmail.arguments;
  var argc = argv.length; 
  var pFmt = (argc > 1) ? argv[1] : "2";

  var reEmail1 = /^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
  var reEmail2 = /^[\w-]+(\.[\w-]+)*@(([\w-]{2,63}\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
  var reEmail3 = /^[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;

  eval("reEmail = reEmail" + pFmt);
  
  return reEmail.test(pStr);
  
  /*

  Livre � ReEmail1 aceita nome-local com todos os caracteres permitidos na RFC 2822:
  [\w!#$%&'*+/=?^`{|}~-]; e o dom�nio tem defini��o bem livre, por nome basicamente 
  fixando apenas que o TLD deve ter entre 2 e 6 caracteres: [A-Za-z]{2,6}; 
  ou por n�mero IP entre colchetes: \[\d{1,3}(\.\d{1,3}){3}\]. 

  Compacto � ReEmail2 limita os caracteres permitidos no nome-local de forma mais
  compacta e restritiva, por�m cobre os casos mais comuns. Aceita como nome-local
  uma ou mais palavras separadas por ponto ([\w-]+(\.[\w-]+)*), onde cada palavra 
  � definida por [\w-]+ permitindo assim letra, d�gito, sublinhado e h�fen.
  Tamb�m limita o tamanho de nomes de dom�nio entre 2 e 63 caracteres apenas 
  com letras, d�gitos, sublinhado e h�fen: [\w-]{2,63}. 

  Restrito � ReEmail3 � uma varia��o da ReEmail2, mas for�a nomes de dom�nio entre
  2 e 63 caracteres, deixa de usar a seq��ncia \w para n�o permitir o sublinhado e 
  garante que n�o h� h�fen nem na primeira nem na �ltima posi��o, conforme 
  RFC 1034/1035. O resultado � o seguinte para representar um nome de dom�nio: 
  [A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]. 

  */
}



function isValidCNPJ(pStr){
  if(!pStr)
    return false;

  pStr = pStr.replace(/[./-]/g,"");
   //alert(pStr);
  //Valida 1� d�gito verificador
  if(!isValidDv(pStr, [5,4,3,2,9,8,7,6,5,4,3,2]))
    return false;

  //Valida 2� d�gito verificador
  if(!isValidDv(pStr, [6,5,4,3,2,9,8,7,6,5,4,3,2]))
    return false;

  return true;
}



function isValidCPF(pStr){
  if(!pStr)
    return false;

  pStr = pStr.replace(/[.-]/g,"");
  
  //testa se os algarismos s�o iguais
  valid = false;
  for(i = 1; i < pStr.length; i++)
    if(pStr.charAt(i) != pStr.charAt(i - 1)){
      valid = true;
      break;
    }

  if(!valid)
    return false;

  //Valida 1� d�gito verificador
  if(!isValidDv(pStr, [10,9,8,7,6,5,4,3,2]))
    return false;

  //Valida 2� d�gito verificador
  if(!isValidDv(pStr, [11,10,9,8,7,6,5,4,3,2]))
    return false;

  return true;
}



function isValidDv(pStr, pArray){
  sum = 0;
  pos = pArray.length;
  for (i = 0; i < pos; i ++)
    sum += parseInt(pStr.charAt(i)) * pArray[i];
    
  dv = 11 - (sum % 11);
  if (dv == 10 || dv == 11)
    dv = 0;

  if (dv != parseInt(pStr.charAt(pos)))
    return false;
    
  return true;
}


function isValidContent(obj, type){
  if(type == "date")
    return isValidDate(obj.value);
      
  if(type == "time")
    return isValidTime(obj.value);
      
  if(type == "integer")
    return isValidInteger(obj.value);
      
  if(type == "unsignedinteger")
    return isValidUnsignedInteger(obj.value);

  if(type == "email")
    return isValidEmail(obj.value);
    
  if(type == "cpf")
    return isValidCPF(obj.value);
}



//Valida se uma quantidade de checkbox/radio foi selecionado
function isChecked(obj){
  var argv = isChecked.arguments;
  var argc = argv.length;
  var msg = (argc > 1) ? argv[1] : null;
  var init = (argc > 2) ? argv[2] : 1;
  var end = (argc > 3) ? argv[3] : 1;
  
  var f = obj.form;
  var contChecked = 0;
  var i;
  var e;
  
  for(i = 0; i < f.length; i++){
    e = f.elements[i];
    
    if(e.type == obj.type && e.name == obj.name && e.checked)
      contChecked++;
  }

  if(contChecked < init || contChecked > fin){
    if(msg) alert(msg);
    return false;
  }
}



function between(num, numIni, numEnd){
  return (num >= numIni && num <= numEnd);
}



function trim(value){
  var returnValue;
  var argv = trim.arguments;
  var argc = argv.length;
  var removeDoubleSpace = argc > 1 ? argv[1] : false;
    
  //Elimina os espa�os antes e depois da string
  var returnValue = value.replace(/(^\s+)|(\s+$)/g, '');
    
  //Elimina espa�os duplicados
  if(removeDoubleSpace)
    returnValue = returnValue.replace(/\s{2,}/g, ' ');
      
  return returnValue;
}

// seta o foco de um campo (criada pois no mozilla tem bug)
var vObj;

function setFocus(obj){
  vObj = obj;
  setTimeout('execSetFocus()',1);
}

function execSetFocus(){
  vObj.focus(); 
}


//Fun��es para posicionamento do cursor
function getCursorPos(obj) {
  //Mozilla
  if (typeof obj.selectionStart != "undefined")
    return obj.selectionStart;
  //IE
  else if (document.selection)
    return Math.abs(document.selection.createRange().moveStart("character", -1000000));
  //Outros
  else
    return obj.value.length;
}


function setCursorPos(obj, pos) {
  //IE
  if(obj.createTextRange) {
    var range = obj.createTextRange();
    range.move("character", pos);
    range.select();
  }
  //Mozilla
  else if(obj.selectionStart) {
    obj.focus();
    obj.setSelectionRange(pos, pos);
  }
}


//Fun��o gen�rica de mascara
//Recebe o objeto text e uma das fun��es abaixo
var vFunction;
var vObject;
var vParameters = new Array();
// Inteiros - onKeyPress="mask(event, mUnsignedInteger)"
// CPF - onKeyPress="mask(event, mCpf)"
// CNPJ - onKeyPress="mask(event, mCnpj)"
// CEP - onKeyPress="mask(event, mCep)"
// Telefone - onKeyPress="mask(event, mTelephone)"
// Alfanumericos - onKeyPress="mask(event, mAlphaNumeric, 'U')" o terceiro parametro � opcional 'U'pperCase ou 'L'owerCase
// Alfabeticos - onKeyPress="mask(event, mAlpha, 'U')" o terceiro parametro � opcional 'U'pperCase ou 'L'owerCase
// Email - onKeyPress="mask(event, mEmail)"
// Data - onKeyPress="mask(event, mDate)"
function mask(e, func){
  vObject = e.srcElement || e.target; // pega o objeto que recebeu o evento
  vKey = e.keyCode || e.which;
  vFunction = func;
  vParameters = mask.arguments;

  if(vKey != 9) // N�o executa a mascara se for pressionado o TAB
    setTimeout("execMask()", 1);
}

function execMask(){
  //guarda a posi��o do cursor
  var vPosition = getCursorPos(vObject);
  //guarda o valor anterior a posi��o do cursor, do valor antigo
  var valueBeforePosOld = vObject.value.substr(0,vPosition);
  //guarda o tamanho do valor antigo
  var vLengthOld = vObject.value.length;

  //Executa a fun��o de mascara passada
  vObject.value = vFunction(vObject.value);

  //pegua o valor anterior a posi��o do cursor, do valor novo
  var valueBeforePosNew = vObject.value.substr(0, vPosition);
  //pegua o tamanho do valor novo
  var vLengthNew = vObject.value.length;

  var vDiff = vLengthNew - vLengthOld;

  if(valueBeforePosOld.toUpperCase() == valueBeforePosNew.toUpperCase())
    vDiff = 0;
  else if (vDiff == 0) //a posi��o do caracter mudou pois a mascara inseriu um caracter antes
    vDiff++;

  //coloca o cursor na posi��o original
  setCursorPos(vObject, vPosition + vDiff);
}


//Fun��es a serem passadas para mask
/*function mAlphaNumeric(value){
  return mAux(value, /[^a-z�������������������A-Z�������������������0-9\s�().:;,-]/g);
}


function mAlpha(value){
  return mAux(value, /[^a-z�������������������A-Z�������������������\s�().:;,-]/g);
}*/


// auxiliar para as mascaras de letras
function mAux(value, reReplace){
  if(vParameters.length > 2)
    var vCase = vParameters[2].toUpperCase();
  else
    var vCase = "N";

  switch(vCase){
    case "U" : return value.replace(reReplace,"").toUpperCase();
    case "L" : return value.replace(reReplace,"").toLowerCase();

    default  : return value.replace(reReplace,"");
  }
}

function mUnsignedInteger(value){
  return value.replace(/\D/g,"");
}


function mTelephone(value){
  value = mUnsignedInteger(value);                 //Remove tudo o que n�o � d�gito
  value = value.replace(/^(\d\d)(\d)/g,"($1) $2"); //Coloca par�nteses em volta dos dois primeiros d�gitos
  value = value.replace(/(\d{4})(\d)/,"$1-$2");    //Coloca h�fen entre o quarto e o quinto d�gitos

  return value;
}


function mCpf(value){
  value = mUnsignedInteger(value);                    //Remove tudo o que n�o � d�gito
  value = value.replace(/(\d{3})(\d)/,"$1.$2");       //Coloca um ponto entre o terceiro e o quarto d�gitos
  value = value.replace(/(\d{3})(\d)/,"$1.$2");       //Coloca um ponto entre o terceiro e o quarto d�gitos
                                                      //de novo (para o segundo bloco de n�meros)
  value = value.replace(/(\d{3})(\d{1,2})$/,"$1-$2"); //Coloca um h�fen entre o terceiro e o quarto d�gitos
  return value;
}


function mRG(value){
  return value.replace(/[^\w\s.-]/g, "").toUpperCase();
}


function mCep(value){
  value = mUnsignedInteger(value);               //Remove tudo o que n�o � d�gito
  value = value.replace(/^(\d{5})(\d)/,"$1-$2"); //Esse � t�o f�cil que n�o merece explica��es
  return value;
}


function mDate(value){
  if(vParameters.length > 2)
    var vType = vParameters[2].toUpperCase();
  else
    var vType = "DD/MM/YYYY";

  value = mUnsignedInteger(value);
  value = value.replace(/^(\d{2})(\d)/,"$1/$2");

  if(vType == "DD/MM/YYYY")
    value = value.replace(/(\d{2})(\d)/,"$1/$2");

  return value;
}

function mCnpj(value){
  value = mUnsignedInteger(value);                           //Remove tudo o que n�o � d�gito
  value = value.replace(/^(\d{2})(\d)/,"$1.$2");             //Coloca ponto entre o segundo e o terceiro d�gitos
  value = value.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3"); //Coloca ponto entre o quinto e o sexto d�gitos
  value = value.replace(/\.(\d{3})(\d)/,".$1/$2");           //Coloca uma barra entre o oitavo e o nono d�gitos
  value = value.replace(/(\d{4})(\d)/,"$1-$2");              //Coloca um h�fen depois do bloco de quatro d�gitos
  return value;
}

function mEmail(value){
  return value.replace(/[^a-zA-Z0-9@._-]/g, "").toLowerCase();
}


function Form(f){
  //Atributos
  //  oForm = new Form(document.form);
  this.f = f;
  /*this.a = f.elements;
  this.t = f.length;*/

  //M�todos
  this.getField = function(name){
                    return eval("document." + f.name + "." + name);
                  }
  /*this.haveRequiredContent = function(){
    var e;

    for(var i = 0; i < this.t; i++){
      e = this.a[i];

      if(e.required)
        if(e.type == "text" || e.type == "password" || e.type == "")
          if(!e.value)
            return false;
    }
  }

  this.haveValidContent = function(){
    var e;

    for(var i = 0; i < f.length; i++){
      e = f.elements[i];

      if();
    }
  }
  */
/*
  dontCheck = new Array('hidden', 'submit', 'reset', 'button', 'image', 'radio', 'select-one', 'select-multiple', 'checkbox');

  for (e = 0; e < f.elements.length; e++){
    skip = false;
    fType = f.elements[e].type;

    for (d = 0; d < dontCheck.length; d++){
      if (fType == dontCheck[d]){
        skip = true;
      }
    }

    if (fType && !skip){
*/
}


function addEvent(obj, evType, fn){
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, false);
    return true;
  }
  else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  }
  else{
    return false;
  }
}


function encodeUF8(s){
	for(var c, i = -1, l = (s = s.split("")).length, o = String.fromCharCode; ++i < l;
	s[i] = (c = s[i].charCodeAt(0)) >= 127 ? o(0xc0 | (c >>> 6)) + o(0x80 | (c & 0x3f)) : s[i]
	);
	return s.join("");
}
function decodeUFT8(s){
	for(var a, b, i = -1, l = (s = s.split("")).length, o = String.fromCharCode, c = "charCodeAt"; ++i < l;
		((a = s[i][c](0)) & 0x80) &&
		(s[i] = (a & 0xfc) == 0xc0 && ((b = s[i + 1][c](0)) & 0xc0) == 0x80 ?
		o(((a & 0x03) << 6) + (b & 0x3f)) : o(128), s[++i] = "")
		);
		return s.join("");
	}



/*
addEvent(window, 'load', foo);
addEvent(window, 'load', bar);
*/

//]]>
