// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

// Extension to Ajax allowing for classes of requests of which only one (the latest) is ever active at a time
// - stops queues of now-redundant requests building up / allows you to supercede one request with another easily.
// just pass in onlyLatestOfClass: 'classname' in the options of the request
Ajax.currentRequests = {};

Ajax.Responders.register({
  onCreate: function(request) {
    if (request.options.onlyLatestOfClass && Ajax.currentRequests[request.options.onlyLatestOfClass]) {
      // if a request of this class is already in progress, attempt to abort it before launching this new request
      try { Ajax.currentRequests[request.options.onlyLatestOfClass].transport.abort(); } catch(e) {}
    }
    // keep note of this request object so we can cancel it if superceded
    Ajax.currentRequests[request.options.onlyLatestOfClass] = request;
  },
  onComplete: function(request) {
    if (request.options.onlyLatestOfClass) {
      // remove the request from our cache once completed so it can be garbage collected
      Ajax.currentRequests[request.options.onlyLatestOfClass] = null;
    }
  }
});
