/**
 * Javascript utilizado no filtro de pesquisa do corpo Guia Médico Kit (2009-guia-medico-kit)
 *
 * Matheus Trevizan - matheus@dynamix.com.br
 * 09/03/2009
 *
 * requerido os seguintes scripts:
 * /comum/js/jquery-latest.js
 * /comum/js/jquery-selectboxes-min.js
 *
 * São necessários os métodos na página (corpo):
 * getURLServletGuiaMedico
 *
 * Alem disso, deve ser adicionado no onChange dos campos as chamadas onChange do Filtro.
 *
 */
function filtroGuiaMedicoKit() {

	this.limpa = function(){
		//seleciona novamente a primeira opcao de estados (ufs)
		$("select#busca_cidade option:first").attr('selected', 'selected');
		limpaRecurso();
	}

	this.onCidadeChange = function(){
		var url = getURLServletGuiaMedico();
		$.ajax({
			type : "POST",
			url : url,
			data : { cd_unimed : recoverUnimed(),  action: "getInfoGuiaMedicoByUnimed"},
			contentType: "application/x-www-form-urlencoded;charset=UTF-8",
			dataType : "json",
			beforeSend: function(){
				//adicionando opcao de aguarde
				limpaRecurso();
				$("select#busca_recurso").addOption(".", "Carregando, por favor aguarde ... ");
			},
		    error : function(){
			},
		    success : onSuccessRecurso
		});
	}

	this.onRecursoChange = function(){
		var url = getURLServletGuiaMedico();
		var selPrest = $("select#busca_recurso").selectedOptions().get(0).value;
		var selCidade = $("select#busca_cidade").selectedOptions().get(0).value;
		$.ajax({
			type : "POST",
			url : url,
			data : { cd_cidade: selCidade, tp_prest: selPrest, cd_unimed : recoverUnimed(),  action: "getInfoGuiaMedicoByRecurso"},
			contentType: "application/x-www-form-urlencoded;charset=UTF-8",
			dataType : "json",
			beforeSend: function(){
				limpaEspecialidade();
				//adicionando opcao de aguarde
				$("select#busca_especialidades").addOption(".", "Carregando, por favor aguarde ... ");
			},
		    error : function(){
			},
		    success : onSuccessEspecialidade
		});
	}

	//funcao de sucesso no caso de selecao de unimed x recurso
	//funcao private
	function onSuccessRecurso(data, textStatus){
		//recupera campo de recursos
		var cmpRecurso = $("select#busca_recurso");
		//adicionar valor padrão do tipo de recurso, caso existam recursos
		if (data.tp_prest.length > 0){
			cmpRecurso.addOption("0", "Selecione");
		}
		//do objeto data, para cada objeto tp_prest cria uma opcao no campo de recurso
		$.each(data.tp_prest,
				function(i, j){
					//adiciona option value no select de tipo de recurso
			        cmpRecurso.addOption(j.cd, j.nm, false);
				}
		);
		//retira a opcao desabilitada para mostrar os valores
		cmpRecurso.removeAttr("disabled");
		//remove todas as opcoes para retirar a mensagem de aguarde
		cmpRecurso.removeOption(".");
		//volta a selecao para a primeira opcao da combo de recursos
		$("select#busca_recursos option:first").attr('selected', 'selected');
	}

	//funcao private
	//funcao de sucesso no caso de selecao de recurso
	function onSuccessEspecialidade(jsEsp, textStatus){
		//recupera campo de especialidade
		var cmpEspecialidade = $("select#busca_especialidades");
		//retira a opcao desabilitada
		cmpEspecialidade.removeAttr("disabled");
		//remove todas as opcoes para retirar a mensagem de aguarde
		cmpEspecialidade.removeOption(/./);
		//adicionar valor padrão do tipo de especialidade/grupo de servico, caso existam registros
		if (jsEsp.areas.length > 0){
			var vlrInvalidos = "-";
			if ($("select#busca_recurso").val() != 1){ vlrInvalidos = "0"; } // diferente TipoDePrestador - MEDICO
			cmpEspecialidade.addOption(vlrInvalidos, "Selecione");
			if (vlrInvalidos == "0"){
				cmpEspecialidade.addOption(vlrInvalidos, "Todos");
			}
			cmpEspecialidade.addOption(vlrInvalidos, "--------------------");
			//do objeto jsEsp, para cada objeto areas cria uma opcao no campo de especialidade
			$.each(jsEsp.areas,
					function(i, j){
						//adiciona option value no select de tipo de especialidade
				        cmpEspecialidade.addOption(j.cd, j.nm);
					}
			);
			$("select#busca_especialidades option:first").attr('selected', 'selected');
		}else{
			alert('Não existem especialidades para o recurso na cidade selecionada. ');
		}
	}


	function limpaRecurso(){
		//desabilita as opcoes de recursos
		$("select#busca_recurso").attr("disabled", "true");
		$("select#busca_recurso").removeOption(/./);
		limpaEspecialidade();
	}

	function limpaEspecialidade(){
		//desabilita as opcoes de especialidade
		$("select#busca_especialidades").attr("disabled", "true");
		$("select#busca_especialidades").removeOption(/./);
	}

	function recoverUnimed(){
		var selUnimed = $("input#unimed").val();
		if (isNaN(selUnimed)){
			selUnimed = $("#unimed").val();
		}
		return selUnimed;
	}

}


