function callInProgress (xmlhttp) {
  switch (xmlhttp.readyState) {
    case 1: case 2: case 3:
      return true;
      break;
    // Case 4 and 0
    default:
      return false;
      break;
  }
}
function showFailureMessage() {
  alert('Ajax request failed!');
}

if (testAjax()) {
  // Register global responders that will occur on all AJAX requests
  Ajax.Responders.register({
    onCreate: function(request) {
      request['timeoutId'] = window.setTimeout(
        function() {
          // If we have hit the timeout and the AJAX request is active, abort it and let the user know
          if (callInProgress(request.transport)) {
            request.transport.abort();
            //showFailureMessage(); // silently ignore error for now
            // Run the onFailure method if we set one up when creating the AJAX object
            if (request.options['onFailure']) {
              request.options['onFailure'](request.transport, request.json);
            }
          }
        },
        2000 // 2 seconds
        );
    },
    onComplete: function(request) {
      // Clear the timeout, the request completed ok
      window.clearTimeout(request['timeoutId']);
    }
  });
}