diff --git a/formstack.install b/formstack.install
index 9f7ba64..8a249a6 100644
--- a/formstack.install
+++ b/formstack.install
@@ -14,6 +14,8 @@ function formstack_field_schema($field) {
     'formstack_id' => array('type' => 'varchar', 'length' => 32, 'not null' => FALSE),
     'formstack_title' => array('type' => 'text', 'not null' => FALSE),
     'formstack_js' => array('type' => 'text', 'size' => 'big', 'not null' => FALSE),
+    'formstack_viewkey' => array('type' => 'varchar', 'length' => 32, 'not null' => FALSE),
+    'formstack_url' => array('type' => 'text', 'size' => 'big', 'not null' => FALSE),
   );
   $indexes = array(
     'formstack_id' => array('formstack_id'),
@@ -94,3 +96,27 @@ function formstack_update_7202() {
   }
   return t('All Formstack fields have been updated.');
 }
+
+/**
+ * Add database columns for viewkey and form url.
+ */
+function formstack_update_7203() {
+  $fields = formstack_get_mymodule_fields();
+
+  foreach ($fields as $field) {
+    $tables = array(
+      _field_sql_storage_tablename($field),
+      _field_sql_storage_revision_tablename($field)
+    );
+    foreach ($tables as $table) {
+      $field_name = $field['field_name'];
+      $column1 = $field_name . '_formstack_viewkey';
+      $column2 = $field_name . '_formstack_url';
+      $spec1 = array('type' => 'varchar', 'length' => 32);
+      $spec2 = array('type' => 'text', 'size' => 'big');
+      db_add_field($table, $column1, $spec1);
+      db_add_field($table, $column2, $spec2);
+    }
+  }
+  return t('Added database columns for viewkey and form url.');
+}
diff --git a/formstack.module b/formstack.module
index c0028fc..55cb917 100644
--- a/formstack.module
+++ b/formstack.module
@@ -82,6 +82,66 @@ function formstack_field_info() {
 }
 
 /**
+ * Implementation of hook_field_formatter_settings_summary()
+ */
+function formstack_field_formatter_settings_summary($field, $instance, $view_mode) {
+  $display = $instance['display'][$view_mode];
+  $settings = $display['settings'];
+
+  if (isset($display['type']) && $display['type'] == 'formstack_embed') {
+    $embed_options = array(
+      'formstack_embed_no_jquery' => 'No jQuery',
+      'formstack_embed_no_jquery_ui' => 'No jQuery UI',
+      'formstack_embed_barebones_css' => 'Barebones CSS',
+      'formstack_embed_no_css' => 'No CSS',
+    );
+
+    $summary[] = ''; 
+    $summary[] = t('<strong>Embed Options</strong>'); 
+
+    foreach ($embed_options as $machine_name => $human_name) {
+      if ($settings[$machine_name] == TRUE) {
+        $summary[] = t('<strong>') . $human_name . t('</strong> TRUE');
+      }
+      else {
+        $summary[] = t('<strong>') . $human_name . t('</strong> FALSE');
+      }
+    }
+    return implode('<br />', $summary);
+  } 
+}
+
+/**
+ * Implementation of hook_field_formatter_settings_form()
+ */
+
+function formstack_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
+  $display = $instance['display'][$view_mode];
+  $settings = $display['settings'];
+
+  $element = array();
+
+  if (isset($display['type']) && $display['type'] == 'formstack_embed') {
+
+    $display_preferences = array(
+      'formstack_embed_no_jquery' => t('I don&#146;t need jQuery'),
+      'formstack_embed_no_jquery_ui' => t('I don&#146;t need jQuery UI'),
+      'formstack_embed_barebones_css' => t('Use bare-bones CSS'),
+      'formstack_embed_no_css' => t('Use no CSS'),
+    );
+
+    foreach ($display_preferences as $element_name => $element_title) {
+      $element[$element_name] = array(
+        '#title' => $element_title,
+        '#type' => 'checkbox',
+        '#default_value' => $settings[$element_name],
+      );
+    }
+  }
+  return $element;
+}
+
+/**
  * Implementation of hook_content_is_empty().
  */
 function formstack_field_is_empty($item, $field) {
@@ -101,6 +161,12 @@ function formstack_field_formatter_info() {
     'formstack_embed' => array(
       'label' => t('Embed form on page'),
       'field types' => array('formstack_id'),
+      'settings' => array(
+        'formstack_embed_no_jquery' => FALSE,
+        'formstack_embed_no_jquery_ui' => FALSE,
+        'formstack_embed_barebones_css' => FALSE,
+        'formstack_embed_no_css' => FALSE,
+      ),
     ),
     'formstack_link' => array(
       'label' => t('Link to form page'),
@@ -120,13 +186,52 @@ function formstack_field_formatter_info() {
  */
 function formstack_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
   $element = array();
+  $settings = $display['settings'];
+
   switch ($display['type']) {
     // Outputs the form.
     case 'formstack_embed':
       foreach ($items as $delta => $item) {
-        $element[$delta] = array(
-          '#markup' => html_entity_decode($item['formstack_js']),
-        );
+        if (isset($items[$delta]['formstack_id']) && !($items[$delta]['formstack_id'] == 'noform')) {
+          $embed_code = $item['formstack_js'];
+
+          $embed_options = array(
+            'nojquery' => $settings['formstack_embed_no_jquery'],
+            'nojqueryui' => $settings['formstack_embed_no_jquery_ui'],
+            'no_style' => $settings['formstack_embed_barebones_css'],
+            'no_style_strict' => $settings['formstack_embed_no_css'],
+          );
+
+          if (in_array(TRUE, $embed_options)) {
+            $args = array (
+              'form' => $item['formstack_id'],
+              'viewkey' => $item['formstack_viewkey'],
+              'style_version' => 'v3',
+            );
+
+            foreach ($embed_options as $formstack_option => $drupal_setting) {
+              if ($drupal_setting == TRUE) {
+                $args[$formstack_option] = 1;
+              }
+            }
+
+            $formstack_args = http_build_query($args);
+            $parsed_url = parse_url($item['formstack_url']);
+            $base_url = $parsed_url['scheme'] . '://' . $parsed_url['host']; 
+            $js_embed_base_url = $base_url . '/forms/js.php?';
+
+            $embed_code = '<script type="text/javascript" src="' . $js_embed_base_url . $formstack_args . '"></script>';
+            $embed_code .= '<noscript><a href="' . $item['formstack_url'] . '" title="' . $item['formstack_title'] . '">' . $item['formstack_title'] . '</a></noscript>';
+
+            if ($embed_options['nojquery'] == TRUE || $embed_options['nojqueryui'] == TRUE) {
+              $embed_code .= '<script type="text/javascript">if (typeof $ == "undefined" && jQuery){ $ = jQuery}</script>';
+            }
+          }
+
+          $element[$delta] = array(
+            '#markup' => html_entity_decode($embed_code),
+          );
+        }
       }
     break;
     // Outputs a link to the form page.
@@ -197,6 +302,8 @@ function formstack_field_presave($entity_type, $entity, $field, $instance, $lang
       if ($form) {
         $items[$delta]['formstack_js'] = $form->javascript;
         $items[$delta]['formstack_title'] = $form->name;
+        $items[$delta]['formstack_viewkey'] = $form->viewkey;
+        $items[$delta]['formstack_url'] = $form->url;
       }
     }
     else {
