Index: uc_free_order.js
===================================================================
--- sites/all/modules/ubercart/contrib/uc_free_order/uc_free_order.js	(revision 2099)
+++ sites/all/modules/ubercart/contrib/uc_free_order/uc_free_order.js	(working copy)
@@ -26,13 +26,13 @@
     $("input:radio[value=free_order]").attr('disabled', 'disabled').parent().hide(0);
 
     // Find the first available payment method.
-    var uc_free_order_next_method = $(':radio[name="panes[payment][payment_method]"]:enabled:first').val();
+    var uc_free_order_next_method = $('input:radio[name="panes[payment][payment_method]"]:enabled:first').val();
 
     // Select the first payment method.
     $("input:radio[value=" + uc_free_order_next_method + "]").attr('checked', 'checked');
 
     // Refresh the payment details section.
-    get_payment_details(Drupal.settings.ucURL.checkoutPaymentDetails + uc_free_order_next_method);
+    get_payment_details(Drupal.settings.basePath + 'cart/checkout/payment_details/' + uc_free_order_next_method);
 
     using_free_order = false;
   }
@@ -44,7 +44,7 @@
     $("input:radio[value=free_order]").removeAttr('disabled').attr('checked', 'checked').parent().show(0);
 
     // Refresh the payment details section.
-    get_payment_details(Drupal.settings.ucURL.checkoutPaymentDetails + 'free_order');
+    get_payment_details(Drupal.settings.basePath + 'cart/checkout/payment_details/' + 'free_order');
 
     using_free_order = true;
   }

Index: uc_free_order.module
===================================================================
--- uc_free_order.module	(revision 2099)
+++ uc_free_order.module	(working copy)
@@ -22,7 +22,7 @@
 
   // Alter the checkout form to prepare it for our special JS.
   if ($form_id == 'uc_cart_checkout_form' && isset($form['panes']['payment'])) {
-    if (user_access('test free order')) {
+    if (user_access('test free order') && variable_get('uc_free_order_debug', FALSE)) {
       drupal_set_message('Test free order: <span style="cursor: pointer;" onclick="alert(\'Discount added.\'); set_line_item(\'fo_discount\', \'Test Discount\', -2000, 0);">Add discount</span> | <span style="cursor: pointer;" onclick="alert(\'Discount removed.\'); remove_line_item(\'fo_discount\');">Remove discount</span>');
     }
 
@@ -47,7 +47,7 @@
   $methods[] = array(
     'id' => 'free_order',
     'name' => t('Free order'),
-    'title' => t('Free order - payment not necessary.'),
+    'title' => t(variable_get('uc_free_order_name', 'Free order - payment not necessary')),
     'desc' => t('Allow customers with $0 order totals to checkout without paying.'),
     'callback' => 'uc_payment_method_free_order',
     'checkout' => TRUE,
@@ -60,8 +60,42 @@
 
 // Handles the free order payment method.
 function uc_payment_method_free_order($op, &$arg1, $silent = FALSE) {
-  if ($op == 'cart-details') {
-    return t('Continue with checkout to complete your free order.');
+  switch ($op) {
+    case 'cart-details':
+      return t(variable_get('uc_free_order_details', 'Continue with checkout to complete your free order.'));
+    
+    case 'settings':
+      $form['uc_free_orders_messages'] = array(
+        '#type' => 'fieldset',
+        '#title' => t('Free Order Messages'),
+        '#description' => t('Specify what information to display to users.'),
+        '#collapsible' => FALSE,
+      );
+      $form['uc_free_orders_messages']['uc_free_order_name'] = array(
+        '#type' => 'textfield',
+        '#default_value' => variable_get('uc_free_order_name', 'Free order'),
+        '#title' => t('Name of free orders payment type'),
+        '#description' => t('The name used for the payment method radio button.'),    
+      );
+      $form['uc_free_orders_messages']['uc_free_order_details'] = array(
+        '#type' => 'textfield',
+        '#default_value' => variable_get('uc_free_order_details', 'Continue with checkout to complete your free order.'),
+        '#title' => t('Free order description'),
+        '#description' => t('The detailed description of the payment method.'),    
+      );
+      $form['uc_free_orders_debug'] = array(
+        '#type' => 'fieldset',
+        '#title' => t('Free Order Debug'),
+        '#description' => t('Debugging settings.'),
+        '#collapsible' => FALSE,
+      );
+      $form['uc_free_orders_debug']['uc_free_orders_debug_on'] = array(
+        '#type' => 'checkbox',
+        '#default_value' => variable_get('uc_free_order_debug', FALSE),
+        '#title' => t('Enable Free Offer Debugging (not recommended for production sites)'),
+        '#description' => t('Turns on debugging on the checkout page.'),    
+      );
+      return $form; 
   }
 }
 
