define([



], function (){

  function MaximumSelectionLength (decorated, $e, options) {

    this.maximumSelectionLength = options.get('maximumSelectionLength');



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

  }



  MaximumSelectionLength.prototype.query =

    function (decorated, params, callback) {

      var self = this;



      this.current(function (currentData) {

        var count = currentData != null ? currentData.length : 0;

        if (self.maximumSelectionLength > 0 &&

          count >= self.maximumSelectionLength) {

          self.trigger('results:message', {

            message: 'maximumSelected',

            args: {

              maximum: self.maximumSelectionLength

            }

          });

          return;

        }

        decorated.call(self, params, callback);

      });

  };



  return MaximumSelectionLength;

});

