diff --git a/css/edit.css b/css/edit.css
index 8c7e666..60a4ada 100644
--- a/css/edit.css
+++ b/css/edit.css
@@ -324,7 +324,8 @@
 }
 
 #edit_modal a.blue-button,
-.edit-toolbar a.blue-button {
+.edit-toolbar a.blue-button,
+.edit-save-button.blue-button {
   color: white;
   /* Firefox v3.6+ */
   background-image:-moz-linear-gradient(93% 4% -90deg,rgb(111,194,242) 0%,rgb(78,151,192) 100%);
@@ -348,7 +349,8 @@
 }
 
 #edit_modal a.gray-button,
-.edit-toolbar a.gray-button {
+.edit-toolbar a.gray-button,
+.edit-save-button.gray-button {
   color: #666;
   /* Firefox v3.6+ */
   background-image:-moz-linear-gradient(26% 0% -90deg,rgb(245,245,245) 0%,rgb(204,204,204) 100%);
@@ -382,7 +384,8 @@
 }
 
 #edit_modal a.blue-button:hover,
-.edit-toolbar a.blue-button:hover {
+.edit-toolbar a.blue-button:hover,
+.edit-save-button.blue-button:hover {
   /* Firefox v3.6+ */
   background-image:-moz-linear-gradient(93% 4% -90deg,rgb(111,194,242) 0%,rgb(78,151,192) 100%);
   /* safari v4.0+ and by Chrome v3.0+ */
@@ -416,7 +419,8 @@
 }
 
 #edit_modal a.gray-button:hover,
-.edit-toolbar a.gray-button:hover {
+.edit-toolbar a.gray-button:hover,
+.edit-save-button.gray-button:hover {
   /* Firefox v3.6+ */
   background-image:-moz-linear-gradient(26% 0% -90deg,rgb(245,245,245) 0%,rgb(204,204,204) 100%);
   /* safari v4.0+ and by Chrome v3.0+ */
@@ -450,7 +454,8 @@
 }
 
 #edit_modal a.blue-button:active,
-.edit-toolbar a.blue-button:active {
+.edit-toolbar a.blue-button:active,
+.edit-save-button.blue-button:active {
   /* Firefox v3.6+ */
   background-image:-moz-linear-gradient(93% 4% -90deg,rgb(111,194,242) 0%,rgb(78,151,192) 100%);
   /* safari v4.0+ and by Chrome v3.0+ */
@@ -486,7 +491,8 @@
 }
 
 #edit_modal a.gray-button:active,
-.edit-toolbar a.gray-button:active {
+.edit-toolbar a.gray-button:active,
+.edit-save-button.gray-button:active {
   /* Firefox v3.6+ */
   background-image:-moz-linear-gradient(26% 0% -90deg,rgb(245,245,245) 0%,rgb(204,204,204) 100%);
   /* safari v4.0+ and by Chrome v3.0+ */
@@ -518,3 +524,14 @@
   filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#fff5f5f5,endColorstr=#ffcccccc,GradientType=0)
     progid:DXImageTransform.Microsoft.dropshadow(OffX=0,OffY=2,Color=#1a000000,Positive=true);
 }
+
+.edit-toolgroup a.field-save {
+  display: none;
+}
+
+a.edit-save-button.gray-button {
+  color: #666 !important;
+}
+a.edit-save-button.gray-button:hover {
+  color: #fff !important;
+}
diff --git a/includes/toolbar.inc b/includes/toolbar.inc
index b83d1e1..7ab6d50 100644
--- a/includes/toolbar.inc
+++ b/includes/toolbar.inc
@@ -83,7 +83,8 @@ function edit_navbar_pre_render($navbar) {
 
   // Prepend edit module links to the navbar.
   $navbar_drawer_prepend = edit_toggle_links();
-  $navbar['navbar_drawer'] = array_merge($navbar_drawer_prepend, $navbar['navbar_drawer']);
+  $navbar_drawer_append = edit_save_buttons();
+  $navbar['navbar_drawer'] = array_merge($navbar_drawer_prepend, $navbar['navbar_drawer'], $navbar_drawer_append);
   return $navbar;
 }
 
@@ -162,3 +163,27 @@ function edit_toggle_links($wrapper_classes = '', $ul_classes = 'tabs primary')
     ),
   );
 }
+
+/**
+ * Builds a render array for common toggle links for different toolbars.
+ */
+function edit_save_buttons($wrapper_classes = '', $ul_classes = 'tabs primary') {
+  return array(
+    'edit_save_buttons' => array(
+      '#prefix' => '<div class="' . $wrapper_classes . '"><h2 class="element-invisible">' . t('In-place edit submission') . '</h2><ul class="' . $ul_classes . '" id="edit-save-buttons">',
+      '#suffix' => '</ul></div>',
+      'content' => array(
+        array(
+          '#theme' => 'menu_local_task',
+          '#link' => array('title' => t('Save'), 'href' => '', 'localized_options' => array('attributes' => array('class' => array('edit-save-button'), 'style' => 'display: none;'))),
+          '#active' => TRUE,
+        ),
+      ),
+      '#attached' => array(
+        'library' => array(
+          array('edit', 'edit.frontend'),
+        ),
+      ),
+    ),
+  );
+}
diff --git a/js/edit.js b/js/edit.js
index a235ea3..caeaab7 100644
--- a/js/edit.js
+++ b/js/edit.js
@@ -65,6 +65,8 @@ Drupal.edit.init = function() {
     $('a.edit_view-edit-toggle').parent().removeClass('active');
     $('a.edit_view-edit-toggle.edit-' + (isViewing ? 'view' : 'edit')).addClass('active');
     $('a.edit_view-edit-toggle.edit-' + (isViewing ? 'view' : 'edit')).parent().addClass('active');
+    $('a.edit-save-button').toggle(!isViewing);
+    $('.edit-save-button').removeClass('blue-button').addClass('gray-button');
 
     if (wasViewing && !isViewing) {
       $(Drupal.theme('editOverlay', {}))
@@ -439,6 +441,10 @@ Drupal.edit.editables = {
     .delegate('a.field-close', 'click.edit', function(e) {
       return self._buttonFieldCloseClicked(e, $editable, $field);
     });
+    $('.edit-save-button').click(function(e) {
+      Drupal.edit.editables._saveEdits();
+      return false;
+    })
 
     // Changes to $editable based on the type.
     var callback = ($field.hasClass('edit-type-direct'))
@@ -778,6 +784,12 @@ Drupal.edit.editables = {
   _buttonFieldSaveToBlue: function(e, $editable, $field) {
     Drupal.edit.toolbar.get($editable)
     .find('a.save').addClass('blue-button').removeClass('gray-button');
+    $('.edit-save-button').addClass('blue-button').removeClass('gray-button');
+  },
+
+  _saveEdits: function() {
+    $('a.field-save').trigger('click.edit');
+    $('.edit-save-button').removeClass('blue-button').addClass('gray-button');
   },
 
   _buttonFieldSaveClicked: function(e, $editable, $field) {
@@ -831,7 +843,9 @@ Drupal.edit.editables = {
     }
     // Content changed: show modal.
     else {
-      Drupal.edit.modal.create(
+      Drupal.edit.editables._saveEdits();
+
+      /*Drupal.edit.modal.create(
         Drupal.t('You have unsaved changes'),
         Drupal.theme('editButtons', { 'buttons' : [
           { url: '#', classes: 'gray-button discard', label: Drupal.t('Discard changes') },
@@ -839,7 +853,7 @@ Drupal.edit.editables = {
         ]}),
         $editable
       );
-      setTimeout(Drupal.edit.modal.show, 0);
+      setTimeout(Drupal.edit.modal.show, 0);*/
     };
     return false;
   }
