Index: js/ajax-responder.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/ctools/js/ajax-responder.js,v
retrieving revision 1.18.2.23
diff -u -p -r1.18.2.23 ajax-responder.js
--- js/ajax-responder.js	20 Aug 2010 21:14:53 -0000	1.18.2.23
+++ js/ajax-responder.js	26 Aug 2010 19:58:54 -0000
@@ -49,7 +49,16 @@
     var $objects = $('a[href=' + old_url + ']')
     $objects.addClass('ctools-fetching');
     try {
-      url = old_url.replace(/\/nojs(\/|$)/g, '/ajax$1');
+      // Replacing 'nojs' with 'ajax' in the URL allows for an easy method to let
+      // the server detect when it needs to degrade gracefully.     
+      // There are four scenarios to check for:
+      // 1. /nojs/
+      // 2. /nojs$ - The end of a URL string.
+      // 3. /nojs? - Followed by a query (with cleanurls enabled).
+      //   eg: path/nojs?destination=foobar
+      // 4. /nojs& - Followed by a query (without cleanurls enabled).
+      //   eg: ?q=path/nojs&destination=foobar
+      url = old_url.replace(/\/nojs(\/|$|\?|&)/g, '/ajax$1');
       $.ajax({
         type: "POST",
         url: url,
@@ -108,7 +117,7 @@
     var object = $(this);
     $(this).addClass('ctools-ajaxing');
     try {
-      url = url.replace(/\/nojs(\/|$)/g, '/ajax$1');
+      url = url.replace(/\/nojs(\/|$|\?|&)/g, '/ajax$1');
       $.ajax({
         type: "POST",
         url: url,
@@ -150,7 +159,7 @@
     var object = $(this);
     try {
       if (url) {
-        url = url.replace(/\/nojs(\/|$)/g, '/ajax$1');
+        url = url.replace(/\/nojs(\/|$|\?|&)/g, '/ajax$1');
         $.ajax({
           type: "POST",
           url: url,
@@ -196,7 +205,7 @@
     $form.addClass('ctools-ajaxing');
 
     try {
-      url = url.replace(/\/nojs(\/|$)/g, '/ajax$1');
+      url = url.replace(/\/nojs(\/|$|\?|&)/g, '/ajax$1');
 
       var ajaxOptions = {
         type: 'POST',
@@ -287,7 +296,7 @@
     var form_id = $(object).parents('form').get(0).id;
     try {
       if (url) {
-        url = url.replace(/\/nojs(\/|$)/g, '/ajax$1');
+        url = url.replace(/\/nojs(\/|$|\?|&)/g, '/ajax$1');
         $.ajax({
           type: "POST",
           url: url,
