Index: form_builder.js
===================================================================
RCS file: /cvs/drupal/contributions/modules/form_builder/form_builder.js,v
retrieving revision 1.23
diff -u -p -r1.23 form_builder.js
--- form_builder.js	30 Dec 2010 17:09:05 -0000	1.23
+++ form_builder.js	19 Jan 2011 05:45:42 -0000
@@ -364,6 +364,9 @@ Drupal.formBuilder.clickCancel = functio
  * Display the edit form from the server.
  */
 Drupal.formBuilder.displayForm = function(response) {
+  if (response.settings) {
+    $.extend(true, Drupal.settings, response.settings);
+  }
   var $preview = $('#form-builder-element-' + response.elementId);
   var $form = $(response.html).insertAfter($preview).css('display', 'none');
   Drupal.attachBehaviors($form.parent().get(0));
@@ -445,6 +448,11 @@ Drupal.formBuilder.updateElement = funct
     Drupal.formBuilder.lastUpdateTime = response.time;
   }
 
+  // Update Drupal.settings.
+  if (response.settings) {
+    $.extend(true, Drupal.settings, response.settings);
+  }
+
   // Set the error class on fields.
   $configureForm.find('.error').removeClass('error');
   if (response.errors) {
@@ -482,6 +490,9 @@ Drupal.formBuilder.updateElement = funct
 Drupal.formBuilder.addElement = function(response) {
   // This is very similar to the update element callback, only we replace the
   // entire wrapper instead of just the element.
+  if (response.settings) {
+    $.extend(true, Drupal.settings, response.settings);
+  }
   var $exisiting = $('#form-builder-element-' + response.elementId).parent();
   var $new = $(response.html).find('div.form-builder-element:first').parent();
   $exisiting.replaceWith($new);
Index: includes/form_builder.admin.inc
===================================================================
RCS file: /cvs/drupal/contributions/modules/form_builder/includes/form_builder.admin.inc,v
retrieving revision 1.20
diff -u -p -r1.20 form_builder.admin.inc
--- includes/form_builder.admin.inc	12 Jan 2011 04:05:28 -0000	1.20
+++ includes/form_builder.admin.inc	19 Jan 2011 05:45:42 -0000
@@ -76,10 +76,9 @@ function form_builder_add_page($form_typ
         'elementId' => $element_id,
         'html' => form_builder_field_render($form_type, $form_id, $element_id),
         'positionForm' => drupal_render(drupal_get_form('form_builder_positions', $preview_form, $form_type, $form_id)),
-        'messages' => theme('status_messages'),
       );
 
-      drupal_json_output($data);
+      form_builder_render_json($data);
       exit();
     }
   }
@@ -107,10 +106,8 @@ function form_builder_configure_page($fo
         'elementId' => $element_id,
         'html' => drupal_render($output),
         'errors' => form_get_errors(),
-        'messages' => theme('status_messages'),
       );
-
-      drupal_json_output($data);
+      form_builder_render_json($data);
       exit();
     }
   }
@@ -131,10 +128,9 @@ function form_builder_remove_page($form_
       'formId' => $form_id,
       'elementId' => $element_id,
       'html' => drupal_render($output),
-      'messages' => theme('status_messages'),
     );
 
-    drupal_json_output($data);
+    form_builder_render_json($data);
     exit();
   }
 
@@ -723,10 +719,27 @@ function form_builder_field_json($form_t
     'elementId' => $element_id,
     'html' => form_builder_field_render($form_type, $form_id, $element_id),
     'errors' => form_get_errors(),
-    'messages' => theme('status_messages'),
-    'time' => time(),
   );
 
-  drupal_json_output($data);
+  form_builder_render_json($data);
   exit();
 }
+
+/**
+ * Adds status messages, settings, and timestamp to a form builder JSON response and outputs it.
+ */
+function form_builder_render_json($data) {
+  if (!isset($data['messages'])) {
+    $data['messages'] = theme('status_messages');
+  }
+  if (!isset($data['settings'])) {
+    $scripts = drupal_add_js();
+    if (!empty($scripts['settings'])) {
+      $data['settings'] = drupal_array_merge_deep_array($scripts['settings']['data']);
+    }
+  }
+  if (!isset($data['time'])) {
+    $data['time'] = time();
+  }
+  drupal_json_output($data);
+}
