function atualizaCombo(caminho, combo_origem, combo_destino, mensagem_vazio,
		adiciona_campo_branco) {
	valor_filtro = $(combo_origem).getValue();
	if (valor_filtro) {
		new Ajax.Request(caminho, {
					onLoading : function(request, json) {
						Element.show('indicator');
					},
					onSuccess : function(transport) {
						if (transport.responseJSON != undefined) {
							json = transport.responseJSON;
						} else {
							json = eval(transport.responseText);
						}
						preencheCombo(combo_destino, transport.responseJSON,
								adiciona_campo_branco);
						Element.hide('indicator');
					},
					onFailure : function(transport, json) {
						Element.hide('indicator');
						erroAjax(transport.status);
					},
					parameters : 'filtro=' + valor_filtro
				});
	} else {
		limpaCombo(combo_destino, mensagem_vazio);
	}
}

function updateCombo(caminho, combo_origem, combo_destino, mensagem_vazio, adiciona_campo_branco) {
  valor_filtro = $(combo_origem).getValue();
  if (valor_filtro) {
    new Ajax.Request(caminho, {
          onLoading : function(request, json) {
            Element.show('indicator');
          },
          onSuccess : function(transport) {
            if (transport.responseJSON != undefined) {
              json = transport.responseJSON;
            } else {
              json = eval(transport.responseText);
            }
            preencheCombo(combo_destino, transport.responseJSON,
                adiciona_campo_branco);
            Element.hide('indicator');
          },
          onFailure : function(transport, json) {
            Element.hide('indicator');
            erroAjax(transport.status);
          },
          parameters : 'filter=' + valor_filtro
        });
  } else {
    limpaCombo(combo_destino, mensagem_vazio);
  }
}

function erroAjax(status) {
	if (status == 401) {
//		alert('Usuário não autorizado, redirecionando...');
//		document.location = (sf_root + '/login');
	} else if (status == 404) {
		alert('Erro de Ajax. Página não encontrada.');
	} else {
//		alert('Erro de Ajax');
	}
}

function limpaCombo(destino, mensagem_vazio) {
	$(destino).options.length = 0;
	$(destino).title = mensagem_vazio;
}

function preencheCombo(destino, json, adiciona_vazio) {
	d = $(destino);
	limpaCombo(d, '');
	if (adiciona_vazio) {
		d.options[0] = new Option(' - Selecione - ', '', false, false);
	}
	for (a = 0; a < json.chaves.length; a++) {
		if (adiciona_vazio) {
			i = a + 1;
		} else {
			i = a;
		}
		d.options[i] = new Option(json.descricoes[a], json.chaves[a], false,
				false);
	}
}
