// JavaScript Document
/*
	Trata a resposta do AJAX
*/
function trataDados(idenfificacao){
	var idCboCad;
	var idTxtCad;
	var info;
	var arrayErros;
	switch(idenfificacao){
		case 'pesquisarCurriculos':
			tratarResultadoBusca(request.responseText,idenfificacao);
			break;
		
		case 'pesquisarCurriculosPagina':
			tratarResultadoBusca(request.responseText,idenfificacao);
			break;
		
		case 'verificaCPF':
			var cpfCv = document.getElementById('cpf');
			info = request.responseText; // resposta em texto puro
			if(isNaN(info)){ // caso a resposta for algum alerta referente o cpf
				alertar(info,'#');
				document.getElementById('Icpf').focus();
			}
			else if(info==0) // CPF novo! => cadastra
			{
				if(site=='true'){
					window.location.href = 'trabalheConoscoCVcadastro.php?cadastroSite='+document.getElementById('Icpf').value;
				}
				else {
					// mostra o form do cv:
					document.getElementById('divInicio').style.display = 'none';
					document.getElementById('divOutros').style.display = '';				
					document.getElementById('nomeCandidato').focus(); // colocar o foco no campo do nome
					cpfCv.value = document.getElementById('Icpf').value; // preenche o campo do CPF
					cpfCv.readOnly = true; // e bloqueia para não ser alterado
					document.getElementById('Icpf').value = ''; // limpa o campo da sessão inicial
				}
			}
			else // CPF já cadastrado!
			{
				var redireciona = '';
				if(site=='true'){
					redireciona = 'trabalheConosco.php?cpf='+document.getElementById('Icpf').value;
				} else { // área restrita					
					if(info==1){ // mostra cv em modulo de alteração
						redireciona = '?pagina=rhCadastro&bt_cvAlteracaoCurriculo=1&alteracao=true&cpf='+document.getElementById('Icpf').value;
					}
					else if(info==2){ // vai para a página de pesquisa de cv
						redireciona = '?pagina=rhCurriculos'; 
					}
				}
				document.getElementById('Icpf').value = ''; // limpa o campo da sessão inicial
				alertar('CPF já cadastrado!',redireciona);
			}
			break;
		
		case 'cadastraObjetivoProfissional':
			info = eval('('+request.responseText+')');
//			alert(request.responseText);
			var cboFuncoes = document.getElementById('profissionalCandidato');
			if( info['PROCURAR'] ){
				cboFuncoes.value = info['PROCURAR']; // ajax retorna o id da função para mostrar no combo
			}
			else {
			// limpa o combo:
				limpoOptionsCBO('profissionalCandidato');
			// popula novamente o combo, para que apareça a nova função cadastrada:
				criaOption(cboFuncoes,'',''); // primeira vazia
			 	for(var cont=0; cont<(info['COMBO'].length); cont++){
			 		criaOption(cboFuncoes,info['COMBO'][cont][0],info['COMBO'][cont][1]);
				}
				criaOption(cboFuncoes,'outros','Outros...'); // última 'outros'
			// deixar selecionada a função que foi cadastrada:
				cboFuncoes.value = info['SELECIONAR'];
			}
			verificaOpcaoObjProfissional(cboFuncoes); // some com o txt da nova função			
			break;
			
		case 'maisUm':
//			alert(request.responseText);
			var newDiv = document.createElement('ul');
			newDiv.innerHTML = request.responseText;
			document.getElementById('inc'+nomeSessao).appendChild(newDiv);
			break;
			
		/**
		 * Mostra o lightbox para confirmação dos dados.
		 */
		case 'validacaoFrmCV':
			var infoValidacaoFrmCV = request.responseText;
			var resultado = infoValidacaoFrmCV.split('aloha');
			if( resultado.length>1 ){ // mostra os spans de erro
				for(var x=0; x<(resultado.length-1); x++){
					document.getElementById( resultado[x] ).style.display = '';
					alertar('Dados incorretos!','#');
				}
			}
			else{ // mostra a confirmação dos dados
//				alert(request.responseText);
				ligthBox(request.responseText,idenfificacao);
			}
			break;
		
		/**
		 * O cadastro do currículo é feito unicamente pelo site [fora da área restrita]. 
		 */
		case 'cadastroFrmCV':						
//			alert(request.responseText);
			/**
			 * fechar lightbox de confirmação dos dados.
			 */
			fechaLightBox();
			/**
			 * alertar a mensagem de sucesso e mandar para a página de login.
			 */
			alertar(request.responseText, 'trabalheConosco.php');
			break;

		/**
		 * Resultado do link para visualização de cv em modo de 'leitura' ou de 'alteração'.
		 * Este link se encontra no filtro de currículos na área do colaborador.
		 */
		case 'visualizaCurriculo':
			document.getElementById('filtrosCurriculos').style.display = 'none'; //esconde filtros
			document.getElementById('oQueFazer').style.display = 'none'; //esconde menu de modulos
			document.getElementById('listaResultadosFiltro').style.display = 'none'; //esconde lista de resultado
			document.getElementById('curriculoParaAlteracao').innerHTML = request.responseText; //preenche a div com o cv
			document.getElementById('curriculoParaAlteracao').style.display = ''; //mostra a div que agora contem o cv
			break;
			
		case 'alteraCurriculo':
		// try catch: feito p/ integrar a função na área de filtros de curriculos e ficha cadastral
			try {
				// filtros curriculos
				document.getElementById('filtrosCurriculos').style.display = 'none'; // esconde filtros
				document.getElementById('oQueFazer').style.display = 'none'; // esconde menu de modulos
				document.getElementById('listaResultadosFiltro').style.display = 'none'; // esconde lista de resultado
				document.getElementById('curriculoParaAlteracao').innerHTML = request.responseText; // mostra cv para alteração
				document.getElementById('curriculoParaAlteracao').style.display = '';
			} catch (e){
				// ficha cadastral
				document.getElementById('divFichaCadastral').style.display = 'none'; // esconde ficha cadastral
				document.getElementById('divModulos').innerHTML = request.responseText; // pega cv para alteração
				document.getElementById('divModulos').style.display = ''; // mostra cv para alteração
			}
			var totalEscolhidos = 0;
			for (c in window.checkLinhas)
			{
				if( window.checkLinhas[c]!==null ) {
					totalEscolhidos++;
				}
			}

			if (totalEscolhidos == 1) {
				document.getElementById('cpf').readOnly = true; // bloqueia o campo do CPF
			}

//			alert(request.responseText);
			break;
			
		case 'alteraFrmCV':
//			alert(request.responseText);
			fechaLightBox(); // fecha o lightbox da confirmação dos dados
			alertar(request.responseText,'#'); // dá o alert de sucesso
			break;
			
		case 'validacaoCancelaCampoCV':
//			window.scroll(0,0);
			alertarSemTempo(request.responseText);
			break;
			
		case 'ligthBoxConfigurar': // linhas e colunas da tabela de contratação
//			alert(request.responseText);
			ligthBox(request.responseText,idenfificacao);
			break;
			
		case 'confirmarNovaConfiguracao':
//			alert(request.responseText);
			if (request.responseText === '0') {
				alertar('Não há candidatos para contratar!','?pagina=rhCurriculos&antiCache='+Math.round(Math.random()*10000000));
			} else {
				alertar('Alterações efetuadas!','?pagina=rhTabelaContratacao&antiCache='+Math.round(Math.random()*10000000));
			}
			break;
			
		case 'excluirColuna':
//			alert(request.responseText);
			if (request.responseText=='msg1' || request.responseText=='msg2') {
				if (request.responseText=='msg1') {
					alert('Esta coluna não pode ser excluída!');
				}				
				ligthBoxConfigurar('ColunasAdm');
			} else {
				var resposta = confirm('Exclindo esta coluna você apagará todos os registros ligados à ela!\r\nDeseja realmente excluir?');
				if (resposta){
					excluirColuna(request.responseText, 'true');
				}
				else{
					ligthBoxConfigurar('ColunasAdm');
				}
			}			
			break;
			
		case 'cadastrarAlterarColunas':
//			alert(request.responseText);
			if(request.responseText=='colunaExistente'){
				alert('Já existe uma coluna com este nome!');
				ligthBoxConfigurar('ColunasAdm');
			}
			else {
				ligthBoxConfigurar('Colunas');
			}
			break;
			
		case 'cadastrarOpcaoDeColunaSimples':
//			alert(request.responseText);
			if (request.responseText==='erroCadastroEquipe') {
				alertar('É necessário o preenchimento do campo cliente!','#');
			} else {
				info = eval('('+request.responseText+')');
				idCboCad = 'cboOpcaoColunaSimples' + info['idColuna'];
				idTxtCad = 'txtCadastrarNovaOpcaoDeColunaSimples' + info['idColuna'];
				retornoDaTentativaDeCadastroDeOpcaoDeColunaSimples(info,idCboCad,idTxtCad,'s');
			}
			break;
			
		case 'alterarOpcaoDeColunaSimples':
			if (request.responseText==='erroCadastroEquipe') {
				alertar('É necessário o preenchimento do campo cliente!','#');
			} else {
				//alert(request.responseText);
				info = eval('('+request.responseText+')');
				/**
				 * ao cadastrar nova opção de coluna simples recarregar os combos da tabela e das outras fichas
				 * {"idColuna":"2","idOpcao":"5","novaOpcaoCadastrada":"0","fichaSelecionada":"1","totalFichas":"2"}
				 */
				idCboCad = 'cboOpcaoColunaSimples'+info['idColuna'];
				idTxtCad = 'txtCadastrarNovaOpcaoDeColunaSimples'+info['idColuna'];
				retornoDaTentativaDeCadastroDeOpcaoDeColunaSimples(info,idCboCad,idTxtCad);
				
				for ( var i = 1; i <= info['totalFichas']; i++) {
					idCboCad = 'AlteracaoCboOpcaoColunaSimples'+info['idColuna']+'_'+i;
					idTxtCad = 'AlteracaoTxtCadastrarNovaOpcaoDeColunaSimples'+info['idColuna']+'_'+i;
					var selecionar;
					//alert(idCboCad);
					if (i == info['fichaSelecionada'] ) {
						selecionar = 's';
					} else {
						selecionar = 'n';
					}
					retornoDaTentativaDeCadastroDeOpcaoDeColunaSimples(info,idCboCad,idTxtCad,selecionar);
				}
			}
			break;
			
		case 'detalharContratacao':
			document.getElementById('divTabelaContratacao').style.display = 'none'; // esconde a tabela
			document.getElementById('divFichaCadastral').innerHTML = request.responseText; // popula os detalhamentos
			document.getElementById('divFichaCadastral').style.display = ''; // mostra a div que contem os detalhamentos
			break;
			
		case 'alterarContratacaoPelaFichaCadastral':
//alert(request.responseText);
			arrayErros = eval('('+request.responseText+')');
			if ( arrayErros.length>0 && !arrayErros["alterados"] ) { //mostrar os erros
//alert('erros!');
				for ( var indiceArrayErros in arrayErros) {
					document.getElementById( arrayErros[indiceArrayErros] ).style.backgroundColor = "#FFFFCC";
				}
			}
			
			// Só estará setado caso tenha havido alteração
			if ( arrayErros["alterados"] ) { // alterar na tabela as colunas que foram alteradas na ficha
//alert('alterados!');
				//Alterar os dados na tabela de contratação
				for ( var indiceArrayAlterados in arrayErros['alterados'] ) {
					if ( indiceArrayAlterados !== 'obs' && indiceArrayAlterados !== 'numFicha' ) {
						document.getElementById( indiceArrayAlterados ).innerHTML = arrayErros["alterados"][indiceArrayAlterados];
					}
				}
			
				//esconder o bt salvar e mostrar o bt tabela
				document.getElementById('btSalvarAlteracoesNaFichaCadastral'+arrayErros["alterados"]['numFicha']).style.display = 'none';
				document.getElementById('btVoltarATabelaDeContratacao'+arrayErros["alterados"]['numFicha']).style.display = '';
				
				alertar('Alterações efetuadas com sucesso!','#');
			}			
			break;
			
		case 'visualizarModulo':
//			alert(request.responseText);
			mostrarVisualizacaoDoModulo(request.responseText);
			break;
			
		case 'contratar':
      //alert(request.responseText); return;
			var resultadoContratar = eval('('+request.responseText+')');
			retornoDaTentativaDeContratacao(resultadoContratar);
			break;
			
		case 'cadastrarInstrutor':
//			alert(request.responseText);
			cadastrarInstrutor('retornoAJAX', request.responseText);
			break;
			
		default:
			alert("Ops! Cadê o tratamento dos dados?\n"+request.responseText);
			break;
	}
}



/*
	Verifica o CPF no BD via AJAX.
	Caso o CPF for novo encaminha para o cadastro do CV
	Caso o CPF já estiver cadastrado, considerando o local onde está o form, encaminha para alteração ou para a tela de login
*/
function verificaCPF(site)
{
	window.site = site; // deixando a variável global, para utilizar na function trataDados(idenfificacao)
	var cpf = document.getElementById('Icpf').value;
	
	var url = "rhCadastro.ajax.php?verificaCPF="+escape(cpf)+"&antiCache="+Math.round(Math.random()*10000000);
	if(site=='true'){
		url = "sistemas/area_restrita/" + url;
	}
	
//	alert(url);
	requisicaoAjax(url,'verificaCPF');
}

/*
	Verifica a opção de objetivo profissional escolhido no combo.
	Para no caso de a opção escolhida ser 'outro', aparece o input text digitar a nova.
*/
function verificaOpcaoObjProfissional(selObj){
	var lblObjetivo = document.getElementById('lblProfissionalCandidatoOutros');
	var txtNovaFuncao = document.getElementById('profissionalCandidatoOutros');
	// caso a opção escolhida for 'outros', aparece o input text para cadastrar nova função
	if(selObj.options[selObj.selectedIndex].value=='outros')
	{
		lblObjetivo.style.display = '';
		txtNovaFuncao.focus();
	}
	else
	{		
		txtNovaFuncao.value= '';
		lblObjetivo.style.display = 'none';		
	}
}

/*
	Envia o valor digitado no input text do objetivo profissional para verificação e possível cadastramento de nova função.
*/
function cadastraObjetivoProfissional(site){
	var novaFuncao = document.getElementById('profissionalCandidatoOutros').value;
	var url = "rhCadastro.ajax.php?cadastrarNovaFuncao="+escape(novaFuncao)+"&antiCache="+Math.round(Math.random()*10000000);
	if(site=='true'){
		url = "sistemas/area_restrita/" + url;
	}
//	alert(url);
	requisicaoAjax(url,'cadastraObjetivoProfissional');
}

/**
	Aumenta mais opções de cadastros nas sessões que tem o botão mais um
 */
function maisUm(nomeSessao,indiceExistente,site,idCandidato)
{
	window.nomeSessao = nomeSessao; // deixando a variável global, para utilizar na function trataDados(idenfificacao)
	
	if( indiceExistente==null ){ // se não for passado um índice, verificar qual é o próximo
		var campoHiddenQtd = document.getElementById('qtd'+nomeSessao);
		var qtdString = new Number(campoHiddenQtd.value); // transformar o valor string do campo hidden em numérico
		var qtd = qtdString.valueOf(); // recuperar o número
		var indice = qtd + 1;
		campoHiddenQtd.value = indice; // atribuir o novo valor ao campo
	}
	else
	{
		var indice = indiceExistente;
	}
	
	var url = 'rhCadastro.ajax.php?maisUm='+escape(nomeSessao)+'&idCandidato='+escape(idCandidato)+'&sessao='+escape(nomeSessao)+'&indice='+escape(indice)+"&antiCache="+Math.round(Math.random()*10000000);
	/**
		No caso de estar usando o form pelo site
	 */
	if(site=='true'){
		url = "sistemas/area_restrita/"+url+'&site='+escape(site);
	} else {
		url = url+'&site=false';
	}
//	alert(url);
	requisicaoAjax(url,'maisUm');
}

function cancelarMaisUm(nomeSessaoMaisIndice,idCandidato,site,sessao)
{
	window.site = site;
	window.idCandidato = idCandidato;
	
	var url = 'rhCadastro.ajax.php?antiCache='+Math.round(Math.random()*10000000);
	/**
		No caso de estar usando o form pelo site
	 */
	if(site=='true'){		
		url = "sistemas/area_restrita/"+url+'&site='+escape(site);
	}

	var campos = recuperaNomeValor('divOutros'); // recuperando os dados do form
	
	var dados = 'idCandidato='+idCandidato+'&nomeSessaoMaisIndice='+nomeSessaoMaisIndice+'&sessao='+sessao;
	for ( chave in campos ) {
//		alert( chave+' => '+campos[chave] );
		dados += '&'+chave+'='+escape(campos[chave]);
	}

//	alert(url);
//	alert(dados);

	requisicaoAjax(url,'validacaoCancelaCampoCV','POST',dados);
}

function apagarMaisUm(nomeSessaoMaisIndice){
	var ul = document.getElementById('li'+nomeSessaoMaisIndice).parentNode;
	while (ul.firstChild) {
	  ul.removeChild(ul.firstChild);
	}
}

/**
 * Função para validação dos dados e cadastro de currículo pelo site.
 * @param cadastrar
 * @param site [identifica que a requisição vem do site e não da área restrita.]
 * @return
 */
function frmCV(cadastrar,site) {
	/**
	 * deixando o identificador como variável global
	 * [pq?!?]
	 */
	window.site = site;
	
	/**
	 * Subindo a página para quando o lightbox aparecer.
	 * 
	 * Não pode voltar pro topo por causa que o lightbox 
	 * 	não consegue ficar em cima do topo em flash do site.  
	 */
	window.scroll(0,299);
	
	/**
	 * recuperar os dados do form [campos]
	 * criar a variável que enviará estes dados pelo ajax [dados]
	 */
	var campos = recuperaNomeValor('divOutros');
	var dados = 'cadastrar='+cadastrar;
	for ( chave in campos ) {
//	   alert( chave+' => '+campos[chave] );
	   dados += '&'+chave+'='+escape(campos[chave]);
	}
	
	/**
	 * construir a url para onde serao encaminhados os dados
	 */
	var url = "sistemas/area_restrita/rhCadastro.ajax.php?" +
		"antiCache=" + Math.round(Math.random()*10000000) +
		"&site=" + escape(site);	
//	alert(url);
	
	
	
	if( cadastrar==0 ){//validação
		requisicaoAjax(url,'validacaoFrmCV','POST',dados);
	}
	else if( cadastrar==1 ){//inserir!
		requisicaoAjax(url,'cadastroFrmCV','POST',dados);
	}
	else{
		alert('Erro!');
	}
}

// Desaparece com os spans de erros 
function desapareceErro(erro)
{
	document.getElementById( erro ).style.display = 'none';
}

/*
 Verifica se a exp. profissional foi marcada como atual.
 se sim, desabilita os cbo de mes e ano de término e o campo de motivo de saída
*/
function expProfAtual(cont){
	var atual = document.getElementById('expProfissional['+cont+'][atualProfissao]');
	var mes = document.getElementById('expProfissional['+cont+'][dtMesTerminoProfissao]');
	var ano = document.getElementById('expProfissional['+cont+'][dtAnoTerminoProfissao]');
	var motivo = document.getElementById('expProfissional['+cont+'][motivoProfissao]');
	if( atual.checked == true ){
		mes.disabled = true;
		ano.disabled = true;
		motivo.disabled = true;
	}
	else {
		mes.disabled = false;
		ano.disabled = false;
		motivo.disabled = false;
	}
}

// mostra o lightBox
function ligthBox(conteudo,identificacao){
	var minhaDiv = document.getElementById('divAlertar3');
	altLar = getPageSize();
	altLarAreaUtilizavel = larguraAlturaAreaUtilizavelDoBrowser();

	alturaBrowser = altLarAreaUtilizavel[1];
	larguraBrowser = altLarAreaUtilizavel[0];

	alturaTela = altLar[1];
	larguraTela = altLar[0];

	document.getElementById("divAlertar").style.width=larguraTela+"px";
	document.getElementById("divAlertar").style.height=alturaTela+"px";
	minhaDiv.style.display = "";

	var newDiv = document.createElement('div');
	newDiv.innerHTML = conteudo;
	tagP = document.getElementById("alerta2");
	tagP.appendChild(newDiv);
//	alert(larguraBrowser+' e '+alturaBrowser);

	switch (identificacao){
		// validação na edição de currículo
		case 'validacaoFrmCV':

			/**
			 * Utilizado na visualização para conferencia dos dados que foram alterados no CV.
			 * Alteração por sessão.
			 * 
			 * Corrigido e conferido [Firefox e IE8]:
			 * - alteração de CV por login no site.
			 * - alteração de CV pelo filtro do RH na área restrita do colaborador
			 */
			larguraDiv = 900;
			margemEsquerda = ( larguraBrowser-larguraDiv )/2;
			
			
			minhaDiv.style.left=margemEsquerda+'px';
			minhaDiv.style.width=larguraDiv;
			tagP.style.left=margemEsquerda+'px';
			margemTopo = alturaBrowser*47/100;
			minhaDiv.style.maxHeight=margemTopo*2+'px';
			tagP.style.maxHeight=minhaDiv.style.maxHeight;
			margemTopo = margemTopo*-1;

			if (document.documentElement.scrollTop!=0){
				minhaDiv.style.marginTop=margemTopo+document.documentElement.scrollTop+'px';
			} else {
				minhaDiv.style.marginTop=margemTopo+document.body.scrollTop+'px';
			}
			break;

		// validação na contratação
		case 'ligthBoxConfigurar':
			larguraDiv = 203;
			alturaDiv = 128;
			minhaDiv.style.marginLeft='-'+larguraDiv+'px';
			minhaDiv.style.marginTop='-'+alturaDiv+'px';
			break;
		// desconhecido/erro?
		default:
			alert("Erro no LightBox!");
			break;
	}

	// funcao para travar a barra de rolagem
	document.body.style.overflow = "hidden";
	document.body.scroll = 'no';

	var altLar = getPageSize();
	var fundoLightBox = document.getElementById("divAlertar");

	fundoLightBox.style.height = altLar[1];
	fundoLightBox.style.width = altLar[0];
	fundoLightBox.style.display = "";
}

function fechaLightBox(){
	document.getElementById("divAlertar").style.display = "none";
	document.getElementById("divAlertar3").style.display = "none";
	
	document.getElementById("alerta2").innerHTML = '';
	
	// funcao para destravar a barra de rolagem
	document.body.style.overflow = "";
	document.body.scroll = 'yes';
}

/**
	Ao selecionar o checkbox que aceita o termo na confirmação dos dados.
	O botão de confirmação é desabilitado e vice-versa
 */
function habilitaBtConfirmar(){
	var checkBox = document.getElementById('confirma');
	var btHabilitado = document.getElementById('btConfirmaHabilitado');
	var btDesabilitado = document.getElementById('btConfirmaDesabilitado');
	if( checkBox.checked==true ){
		btHabilitado.style.display = '';
		btDesabilitado.style.display = 'none';
	}
	else{
		btHabilitado.style.display = 'none';
		btDesabilitado.style.display = '';
	}	
}

function alterarCV(action,sessao,idCandidato,site){
	var campos = recuperaNomeValor('divOutros'); // recuperando os dados do form
	window.site = site;
	window.idCandidato = idCandidato;

	var url = 'rhCadastro.ajax.php?antiCache='+Math.round(Math.random()*10000000);
	/**
		No caso de estar usando o form pelo site
	 */
	if(site=='true'){		
		url = "sistemas/area_restrita/"+url+'&site='+escape(site);
	}
	
	var dados = 'alterar='+action+'&sessao='+sessao+'&idCandidato='+idCandidato;
	for ( chave in campos ) {
//	   alert( chave+' => '+campos[chave] );
	   dados += '&'+chave+'='+escape(campos[chave]);
	}
//	alert(url);
//	alert(dados);

	if( action==0 ){//validar e confirmar
		requisicaoAjax(url,'validacaoFrmCV','POST',dados);
	}
	else if( action==1 ){//alterar!
		requisicaoAjax(url,'alteraFrmCV','POST',dados);
	}
	else{
		alert('Erro!');
	}
}



//=============================nao revisado=============================

/**
	Usado na alteração por sessões do CV
 */
/*function submeteSessaoParaAlterar(numSessao){
	document.getElementById('ok').value= numSessao;
	document.getElementById('formCv').submit();
}*/
