Index: /CKEditor/trunk/_source/core/config.js
===================================================================
--- /CKEditor/trunk/_source/core/config.js	(revision 3209)
+++ /CKEditor/trunk/_source/core/config.js	(revision 3210)
@@ -152,5 +152,5 @@
 	 */
 
-	plugins : 'basicstyles,blockquote,button,clipboard,colorbutton,contextmenu,elementspath,enterkey,entities,find,flash,font,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,newpage,pagebreak,pastefromword,pastetext,preview,print,removeformat,smiley,showblocks,sourcearea,stylescombo,table,specialchar,tab,templates,toolbar,undo,wysiwygarea,wsc',
+	plugins : 'basicstyles,blockquote,button,clipboard,colorbutton,contextmenu,elementspath,enterkey,entities,find,flash,font,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,newpage,pagebreak,pastefromword,pastetext,preview,print,removeformat,save,smiley,showblocks,sourcearea,stylescombo,table,specialchar,tab,templates,toolbar,undo,wysiwygarea,wsc',
 
 	/**
Index: /CKEditor/trunk/_source/core/editor.js
===================================================================
--- /CKEditor/trunk/_source/core/editor.js	(revision 3209)
+++ /CKEditor/trunk/_source/core/editor.js	(revision 3210)
@@ -250,13 +250,20 @@
 					});
 
-				// If we have a submit function, override it also, because it doesn't fire the "submit" event.
-				if ( form.submit && form.submit.call )
+				// Setup the submit function because it doesn't fire the
+				// "submit" event.
+				if ( !form.$.submit.nodeName )
 				{
-					CKEDITOR.tools.override( form.submit, function( originalSubmit )
+					form.$.submit = CKEDITOR.tools.override( form.$.submit, function( originalSubmit )
 						{
 							return function()
 								{
 									editor.updateElement();
-									originalSubmit.apply( this, arguments );
+
+									// For IE, the DOM submit function is not a
+									// function, so we need thid check.
+									if ( originalSubmit.apply )
+										originalSubmit.apply( this, arguments );
+									else
+										originalSubmit();
 								};
 						});
Index: /CKEditor/trunk/_source/lang/en.js
===================================================================
--- /CKEditor/trunk/_source/lang/en.js	(revision 3209)
+++ /CKEditor/trunk/_source/lang/en.js	(revision 3210)
@@ -31,4 +31,5 @@
 	source			: 'Source',
 	newPage			: 'New Page',
+	save			: 'Save',
 	preview			: 'Preview',
 	cut				: 'Cut',
Index: /CKEditor/trunk/_source/plugins/save/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/save/plugin.js	(revision 3210)
+++ /CKEditor/trunk/_source/plugins/save/plugin.js	(revision 3210)
@@ -0,0 +1,51 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileSave plugin.
+ */
+
+(function()
+{
+	var saveCmd =
+	{
+		exec : function( editor )
+		{
+			var $form = editor.element.$.form;
+
+			if ( $form )
+			{
+				try
+				{
+					$form.submit();
+				}
+				catch( e )
+				{
+					// If there's a button named "submit" then the form.submit
+					// function is masked and can't be called in IE/FF, so we
+					// call the click() method of that button.
+					if ( $form.submit.click )
+						$form.submit.click()
+				}
+			}
+		}
+	};
+
+	var pluginName = 'save';
+
+	// Register a plugin named "save".
+	CKEDITOR.plugins.add( pluginName,
+	{
+		init : function( editor )
+		{
+			editor.addCommand( pluginName, saveCmd );
+			editor.ui.addButton( 'Save',
+				{
+					label : editor.lang.save,
+					command : pluginName
+				});
+		}
+	});
+})();
Index: /CKEditor/trunk/_source/plugins/toolbar/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/toolbar/plugin.js	(revision 3209)
+++ /CKEditor/trunk/_source/plugins/toolbar/plugin.js	(revision 3210)
@@ -226,5 +226,5 @@
 CKEDITOR.config.toolbar =
 [
-	['Source','-','NewPage','Preview','-','Templates'],
+	['Source','-','Save','NewPage','Preview','-','Templates'],
 	['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker'],
 	['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
Index: /CKEditor/trunk/_source/skins/default/icons.css
===================================================================
--- /CKEditor/trunk/_source/skins/default/icons.css	(revision 3209)
+++ /CKEditor/trunk/_source/skins/default/icons.css	(revision 3210)
@@ -280,2 +280,7 @@
 	background-position: 0 -160px;
 }
+
+.cke_skin_default .cke_button_save .cke_icon
+{
+	background-position: 0 -32px;
+}
