/**
 * Autocompleter mit aktualisierbarer Parameterliste
 *
 * @author     rhartenstein
 * @copyright  Copyright (c) 2007 evolver media GmbH & Co. KG
 */

Ajax.EM_Autocompleter = Class.create();
Object.extend(Object.extend(Ajax.EM_Autocompleter.prototype, Autocompleter.Base.prototype), {
  initialize: function(element, update, url, options) {
    this.baseInitialize(element, update, options);
    this.options.asynchronous  = true;
    this.options.onComplete    = this.onComplete.bind(this);
    this.options.defaultParams = this.options.parameters || null;
    this.url                   = url;
  },

  getUpdatedChoices: function() {
    entry = encodeURIComponent(this.options.paramName) + '=' +
      encodeURIComponent(this.getToken());

    this.options.parameters = this.options.callback ?
      this.options.callback(this.element, entry) : entry;

    if(this.options.defaultParams)
      this.options.parameters += '&' + this.options.defaultParams;

    new Ajax.Request(this.url, this.options);
  },

  setParameters: function(new_params) {
    this.options.defaultParams = new_params;
  },

  onComplete: function(request) {
    this.updateChoices(request.responseText);
  }

});
