var TIME_BEFORE_REENABLING = 5; // seconds

function shieldSubmitterAgainstMultipleClicks(e) {
  if (e.stopped) return; // Should never happen, as we're the last registered handler…
  var submitters = this.select('input[type="submit"]');
  submitters.each(function(s) { s.disable().addClassName('disabled'); });
  (function() {
    submitters.each(function(s) { s.enable().removeClassName('disabled'); });
  }).delay(TIME_BEFORE_REENABLING);
}

$$('input[type="submit"]:not(.disabled)').invoke('enable');
$$('form[method="post"]').invoke('observe', 'submit', shieldSubmitterAgainstMultipleClicks);