define([

], function () {

function MaximumInputLength (decorated, $e, options) {
  this.maximumInputLength = options.get('maximumInputLength');

  decorated.call(this, $e, options);
}

MaximumInputLength.prototype.query = function (decorated, params, callback) {
  params.term = params.term || '';

  if (this.maximumInputLength > 0 &&
      params.term.length > this.maximumInputLength) {
    this.trigger('results:message', {
      message: 'inputTooLong',
      args: {
        maximum: this.maximumInputLength,
        input: params.term,
        params: params
      }
    });

    return;
  }

  decorated.call(this, params, callback);
};

return MaximumInputLength;

});