var objPessoa = null;

/**
 * Verifica se ja existe a pessoa cadastrada no banco de dados
 * @param {Object} strCpf
 */
function isPessoa( strCpf, strEmail ) {
	//DWRUtil.useLoadingMessage( "Aguarde..." );
	DWREngine.setErrorHandler(errorPessoa);
	DWRPessoa.verificarPessoas(retPessoa, strCpf, strEmail);
}

/**
 * Caso jï¿½ exista habilita os demais campos do formulï¿½rio para ediï¿½ï¿½o
 */
function retPessoa( pessoa ){
	//Caso exista o objeto de pessoa validaï¿½ï¿½es dos dados serï¿½o executadas
	limparConfCampos();
	
	if (pessoa == null) {
		esconderGeral( false );		
		esconderConf( true );
	}
	else {
		if (confirm('Você já está cadastrado em nossa base de dados.\nPressione OK para cadastrar login e senha para acessar o sistema.')) {
			objPessoa = pessoa;
			document.getElementById('idPessoa').value = pessoa.idPessoa;
			esconderGeral( true );
			esconderEmpresa( true );
			esconderConf( false );
		}
	}
	
	RedimensionaIframe();
}

/**
 * Callback error de pessoa
 * @param {Object} msg
 */
function errorPessoa( msg ){
	alert( msg );
	location.href		= "Visualizador?controle=cadastro&acao=paginaCadastro";
}

/**
 * Valida os dados para gravaï¿½ï¿½o do login de usuï¿½rio
 */
function validarDados(){
	if( document.getElementById('confDtNascimento').value != "" ){
		data		= formatarData( objPessoa.dataNascimento );
		if( document.getElementById('confDtNascimento').value == data ){
			dadosLogin();
		}
		else{
			mensagem			= "Em nosso sistema consta uma data de nascimento diferente data informada.\n";
			mensagem			+= "Por favor, verifique a data informada";

			alert(mensagem);
		}
	}
	else if( document.getElementById('confMae').value != "" ){
		
		aux1 		= trim( document.getElementById('confMae').value );
		aux2 		= trim( objPessoa.mae );
		
		DWREngine.setErrorHandler(error);
		DWRPessoa.verificarNomes( dadosLogin, aux1, aux2 );
		
	}
}

/**
 * Validar dados login
 */
function dadosLogin(){
	mensagem 	= '';
	
	if( document.getElementById('elogin').value == '' ){
		mensagem	= "Informe o e-mail.\n";
	}
	else if( !validadorEMAIL.validar( document.getElementById('elogin').value ) ){
		mensagem	= validadorEMAIL.getMessage();
	}
	if( document.getElementById('senha').value == '' ){
		mensagem 	+= "Informe a senha.\n";
	}
	if( document.getElementById('ealternativo').value == '' ){
		mensagem 	+= "Informe o e-mail alterá-lo.\n";
	}
	else if( !validadorEMAIL.validar( document.getElementById('ealternativo').value ) ){
		mensagem	= validadorEMAIL.getMessage();
	}
	
	if( mensagem != '' ){
		alert( mensagem );
	}
	else{
		DWREngine.setErrorHandler(error);
		DWRPessoa.isEmail( retValidacao, document.getElementById('elogin').value );	
	}
}


function retValidacao( objeto ){
	if (objeto != null) {
		alert("Usuário ja cadastrado, informe outro e-mail");
	}
	else{
		document.getElementById('acao').value		= "gravarLogin";
		document.frmDados.submit();
	}
}

/**
 * Verifica se o responsï¿½vel financeiro ja encontra-se cadastrado no banco de dados
 * @param {Object} strCpf
 */
function isResponsavel( strCpf ){
	DWREngine.setErrorHandler(error);
	DWRPessoa.obterResponsavel( retResponsavel, strCpf );
}

/**
 * Verifica se o usuario jï¿½ existe para outra pessoa
 * @param {Object} objeto
 */
function trim( valor ){
	valor.replace(/^\s+|\s+$/, '');
	return valor; 
}

function retResponsavel( objeto ){
	
	if( objeto == null ){
		esconderDadosFinanceiro(false);
	}
	else{
		esconderDadosFinanceiro(false);
		
		document.getElementById('idResp').value				= objeto.idRespFinanceiro;
		document.getElementById('nomeResp').value			= objeto.nome;
		document.getElementById('rgResp').value 			= objeto.identidade;
		document.getElementById('profissaoResp').value		= objeto.profissao;
		document.getElementById('nacionalidadeResp').value	= objeto.nacionalidade; 
		document.getElementById('naturalidadeResp').value	= objeto.naturalidade;
		document.getElementById('estadoResp').value			= objeto.estadoCivil;
		
	  	if( document.frmDados.respSexo[0].value  == objeto.sexo ){
			document.frmDados.respSexo[0].checked		= true;
		}
		else{
			document.frmDados.respSexo[1].checked		= true;
		}
	}
	
	document.getElementById('btnGravar').disabled		= false;	
}

/**
 * Altera o campo para confirmaï¿½ï¿½o dos dados
 */
function campoRandomico(){
	campo		= Math.random() * 10;
	
	// O campo costumava ser randï¿½mico, nï¿½o ï¿½ mais
	if( campo > 5 ){
		document.getElementById('conf1').style.display = 'block';
		document.getElementById('conf2').style.display = 'none';
	}
	else {
		document.getElementById('conf1').style.display = 'block';
		document.getElementById('conf2').style.display = 'none';
	}
	
	
}

/**
 * Esconde os campos para validaï¿½ï¿½o dos dados
 * @param {Object} flag
 */
function esconderConf( flag ){
	if( flag ){
		document.getElementById('confirmDados').style.display		= 'none';
		document.getElementById('btnEmailSenha').style.display		= 'none';
		document.getElementById('btnGravar').style.display			= '';
		//document.getElementById('fldLogin').style.display			= 'none';
	}
	else{
		campoRandomico();
		document.getElementById('confirmDados').style.display		= '';
		document.getElementById('btnEmailSenha').style.display		= '';
		document.getElementById('btnGravar').style.display			= 'none';
		document.getElementById('fldLogin').style.display			= '';
	}
}

/**
 * Limpa os campos de confirmaï¿½ï¿½o
 */
function limparConfCampos(){
	objPessoa			= null;
	document.getElementById('idPessoa').value 			= '';
	document.getElementById('confDtNascimento').value	= '';
	document.getElementById('confMae').value			='';
	
}

/**
 * Callback do DWRError
 * @param {Object} msg
 */
function error(msg){
	alert( msg );
}


/**
 * Esconde todos os demais campos do formulï¿½rio
 * @param {Object} flag
 */
function esconderGeral( flag ){
	if (flag) {
		document.getElementById('opGeral').style.display 		= 'none';
		document.getElementById('fldEndereco').style.display	= 'none';
		document.getElementById('fldLogin').style.display		= 'none';
		document.getElementById('fldEmpresa').style.display		= '';		
		//document.getElementById('btnGravar').style.display		= 'none';
	}
	else {
		document.getElementById('opGeral').style.display 		= '';
		document.getElementById('fldEndereco').style.display	= '';
		document.getElementById('fldLogin').style.display		= '';
		document.getElementById('btnGravar').style.display		= '';
		document.getElementById('fldEmpresa').style.display		= 'none';
	}
}

/**
 * Esconde o fildset de dados financeiros
 * @param {Object} flag
 */
function esconderFinanceiro(flag){
	if( flag ){
		document.getElementById('fldRespFinanceiro').style.display		= 'none';
	}
	else{
		document.getElementById('fldRespFinanceiro').style.display		= '';
	}
}

/**
 * Esconde o fieldset de empresa
 * @param {Object} flag
 */
function esconderEmpresa(flag){
	if( flag ){
		document.getElementById('fldEmpresa').style.display		= 'none';
	}
	else{
		document.getElementById('fldEmpresa').style.display		= '';
	}
}

/**
 * Esconde os campos dentro do fildset de dados financeiros,
 * deixando visï¿½vel somente o cpf do responsï¿½vel
 * @param {Object} flag
 */
function esconderDadosFinanceiro(flag){
	if( flag ){
		document.getElementById('opFinanceiro').style.display		= 'none';
	}
	else{
		document.getElementById('opFinanceiro').style.display		= '';
	}
}

/**
 * Controla a visualizaï¿½ï¿½o de todo o fieldset de dados pessoais
 * @param {Object} flag
 */
function esconderDadosPessoais( flag ){
	if( flag ){
		document.getElementById('fldDadosPessoais').style.display		= 'none';
	}
	else{
		document.getElementById('fldDadosPessoais').style.display		= '';
	}
}

var cidade 		= "";

/**
 * Obtem os municipios atravï¿½s dos estados
 * @param {Object} strMunicipio
 */
function obterMunicipio(strMunicipio){
	DWRUtil.removeAllOptions('municipio');
	DWRUtil.addOptions('municipio', [ "Aguarde..."] );
	DWREndereco.obterCidades(retMunicipio, strMunicipio);
}



function obterEstadoMunicipio( uf, city ){
	cidade 		= city;
	DWRUtil.removeAllOptions('municipio');
	DWRUtil.addOptions('municipio', [ "Aguarde..."] );
	DWREndereco.obterCidades(retMunicipio, uf);
	DWRUtil.setValue( "municipio", cidade );
}	

/**
 * Callback obterMunicipio
 * @param {Object} objetos
 */
function retMunicipio(	objetos  ){
	DWRUtil.removeAllOptions('municipio');
	DWRUtil.addOptions( "municipio", ["Selecione a cidade"] );
	DWRUtil.addOptions( "municipio",  objetos, "descricao", "descricao" );
	if (cidade != "") {
		DWRUtil.setValue("municipio", cidade);
		cidade	= "";
	}
}

mensagem				= "";

aux			= 0;

/**
 * Validaï¿½ï¿½o do formulï¿½rio
 * @param {Object} form
 */
function validate( form ){
 	mensagem		= "";
 	
	for (i=0; i < form.elements.length; i++) {
		if (form.elements[i].className != '' && form.elements[i].className.indexOf('required') >= 0 ) {
			//alert(form.elements[i].className.substring(0,7));
			if (form.elements[i].value == '') {
				mensagem += "O campo " + form.elements[i].alt + " é obrigatório.\n";
			}
		}
	}
	
	aux = 0;
	if( mensagem == "" ){
		if( !checkDate(form.dataNascimento.value) ){
			mensagem		+= "Data nascimento inválida.\n";
		}
		else{
			aux				= retornarQuantidadeAnos(form.dataNascimento.value);
		}
		
		if( !validadorEMAIL.validar( form.elogin.value ) ){
			mensagem		+= validadorEMAIL.getMessage() + "\n";
		}
		
		if( !validadorEMAIL.validar( form.ealternativo.value ) ){
			mensagem		+= validadorEMAIL.getMessage();
		}
 	}
	
	if( form.cpfResp.value == form.cpf.value ){
		mensagem	= "O CPF do responsá­vel não pode ser igual ao seu CPF. \n";
	}
	
	aux2	= 0;
	
	if(document.getElementById('sitOcupacional').value	== '') {
		mensagem += "O campo Situação Ocupacional é obrigatório.\n"
	}
	
	if(document.getElementById('sitOcupacional').value	== 'EMPREGADO' || document.getElementById('sitOcupacional').value	== 'ESTAGIÁRIO') {
		if (document.getElementById('nomeEmp').value == '') {
			mensagem += "O campo de Empresa é obrigatório.\n" 
		}
		if (document.getElementById('telEmp').value == '') {
			mensagem += "O campo Telefone da Empresa é obrigatório.\n" 
		}		
	}
	
	if(document.getElementById('isResponsavel').value	== 'true' ){
		for( i=0; i < form.elements.length; i++ ){
			if( form.elements[i].className  != null && form.elements[i].className  == 'require2' ){
				if( form.elements[i].value == "" ){
					mensagem		+= "O campo " + form.elements[i].alt + " é obrigatório.\n";
				}
			}
		}
		
		if( !checkDate(form.respDataNascimento.value) ){
			mensagem		+= "Data nascimento responsável inválida.\n";
		}
		else{
			aux2		 = retornarQuantidadeAnos(form.respDataNascimento.value);	
		}
		
		
		if( aux2 < 18 ){
			mensagem += "O responsável deve ser maior de 18 anos";
		}
	}
	
	DWRUtil.useLoadingMessage( "Aguarde..." );
	DWRPessoa.isEmailJaExistente(retEmail, form.elogin.value);
}

function retEmail(objeto) {
	if (objeto) {
		mensagem += "E-mail de usuário já cadastrado em nossa base de dados." ;
	}
	if (mensagem != "") {
 		alert( mensagem );
 	}
	else if( aux < 18 && document.getElementById('isResponsavel').value	== 'false') {
		//esconderDadosPessoais(true);
		//esconderGeral(true);
		esconderFinanceiro(false);
		
		document.getElementById('isResponsavel').value		= 'true';
		alert("Para concluir seu cadastro informe os dados do seu responsável financeiro");
	}
	else{
		document.getElementById('frmDados').submit();
	}
}
