anchor.diff: -var EnableWorkgroups = function(_selector) {
  -  _selector = _selector ||   'a.run_link';
  -    $$(_selector).each(function(el) {
  +var EnableWorkgroup = function(el,waiting_callback) {
       var offering_id = ParseOfferingUrl(el.href);
       // remove other click observers!
       el.stopObserving('click');
       el.observe('click', function(e) {
  -      Workgroup(offering_id,el.href);
  -      e.stop();
  -    });
  +      Workgroup(offering_id,el.href,waiting_callback);
  +      e.preventDefault();
  +      // e.stop();
  +    });
  +};
  +
  +var EnableWorkgroups = function(_selector,waiting_callback) {
  +  _selector = _selector ||   'a.run_link';
  +  waiting_callback = waiting_callback || showWait; // showWait used to be global.
  +  $$(_selector).each(function(el) {
  +    EnableWorkgroup(el,waiting_callback);
     });
   };
   
  -var Workgroup = function(_offering,_launch_url) {
  +var Workgroup = function(_offering,_launch_url,_waiting_callback) {
     var load_error         = false;
     var loading_learners   = false;
     var learners           = [];
  
positive.code:   var lightbox_hood      = null;
    var lightbox_content   = null;
    var launch_url         = _launch_url;
    var learner_id_for = function(learner) { return "_LEARNER_" + learner.id; };
    var offering_start_base_url      = "<%= URLResolver.getUrl('start_portal_offering_path', :id => 999, :format => :json) %>";
    var offering_learners_base_url   = "<%= URLResolver.getUrl('learners_portal_offering_path', :id => 999, :format => :json) %>";
  
negative.code:     pending_requests = pending_requests +1;
      lightbox_hood.hide();
      lightbox_content.hide();
      waiting_callback(offering);
      // Make this request synchronously, so we can be sure it finishes before
      // the normal link click handling happens.
      new Ajax.Request(offering_start_base_url.replace(/999/, offering), {
  