Index: /CKEditor/trunk/CHANGES.html
===================================================================
--- /CKEditor/trunk/CHANGES.html	(revision 6313)
+++ /CKEditor/trunk/CHANGES.html	(revision 6314)
@@ -88,4 +88,5 @@
 		<li><a href="http://dev.ckeditor.com/ticket/5256">#5256</a> : JS error when percent sign used in image url.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6577">#6577</a> : [FF] Selection error when editor element is hidden.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/5500">#5500</a> : [IE] 'value' attribute of text input dialog field was missing.</li>
 	</ul>
 	<h3>
Index: /CKEditor/trunk/_source/core/dom/element.js
===================================================================
--- /CKEditor/trunk/_source/core/dom/element.js	(revision 6313)
+++ /CKEditor/trunk/_source/core/dom/element.js	(revision 6314)
@@ -453,5 +453,6 @@
 
 						case 'hspace':
-							return this.$.hspace;
+						case 'value':
+							return this.$[ name ];
 
 						case 'style':
Index: /CKEditor/trunk/_source/plugins/forms/dialogs/button.js
===================================================================
--- /CKEditor/trunk/_source/plugins/forms/dialogs/button.js	(revision 6313)
+++ /CKEditor/trunk/_source/plugins/forms/dialogs/button.js	(revision 6314)
@@ -5,4 +5,21 @@
 CKEDITOR.dialog.add( 'button', function( editor )
 {
+	function commitAttributes( element )
+	{
+		var val = this.getValue();
+		if ( val )
+		{
+			element.attributes[ this.id ] = val;
+			if ( this.id == 'name' )
+				element.attributes[ 'data-cke-saved-name' ] = val;
+		}
+		else
+		{
+			delete element.attributes[ this.id ];
+			if ( this.id == 'name' )
+				delete element.attributes[ 'data-cke-saved-name' ];
+		}
+	}
+
 	return {
 		title : editor.lang.button.title,
@@ -25,17 +42,23 @@
 		onOk : function()
 		{
-			var editor,
+			var editor = this.getParentEditor(),
 				element = this.button,
 				isInsertMode = !element;
 
-			if ( isInsertMode )
-			{
-				editor = this.getParentEditor();
-				element = editor.document.createElement( 'input' );
-			}
+			var fake = element ? CKEDITOR.htmlParser.fragment.fromHtml( element.getOuterHtml() ).children[ 0 ]
+					: new CKEDITOR.htmlParser.element( 'input' );
+			this.commitContent( fake );
+
+			var writer = new CKEDITOR.htmlParser.basicWriter();
+			fake.writeHtml( writer );
+			var newElement = CKEDITOR.dom.element.createFromHtml( writer.getHtml(), editor.document );
 
 			if ( isInsertMode )
-				editor.insertElement( element );
-			this.commitContent( { element : element } );
+				editor.insertElement( newElement );
+			else
+			{
+				newElement.replace( element );
+				editor.getSelection().selectElement( newElement );
+			}
 		},
 		contents : [
@@ -46,5 +69,5 @@
 				elements : [
 					{
-						id : '_cke_saved_name',
+						id : 'name',
 						type : 'text',
 						label : editor.lang.common.name,
@@ -57,16 +80,5 @@
 									'' );
 						},
-						commit : function( data )
-						{
-							var element = data.element;
-
-							if ( this.getValue() )
-								element.data( 'cke-saved-name', this.getValue() );
-							else
-							{
-								element.data( 'cke-saved-name', false );
-								element.removeAttribute( 'name' );
-							}
-						}
+						commit : commitAttributes
 					},
 					{
@@ -80,13 +92,5 @@
 							this.setValue( element.getAttribute( 'value' ) || '' );
 						},
-						commit : function( data )
-						{
-							var element = data.element;
-
-							if ( this.getValue() )
-								element.setAttribute( 'value', this.getValue() );
-							else
-								element.removeAttribute( 'value' );
-						}
+						commit : commitAttributes
 					},
 					{
@@ -106,26 +110,5 @@
 							this.setValue( element.getAttribute( 'type' ) || '' );
 						},
-						commit : function( data )
-						{
-							var element = data.element;
-
-							if ( CKEDITOR.env.ie )
-							{
-								var elementType = element.getAttribute( 'type' );
-								var currentType = this.getValue();
-
-								if ( currentType != elementType )
-								{
-									var replace = CKEDITOR.dom.element.createFromHtml( '<input type="' + currentType +
-										'"></input>', editor.document );
-									element.copyAttributes( replace, { type : 1 } );
-									replace.replace( element );
-									editor.getSelection().selectElement( replace );
-									data.element = replace;
-								}
-							}
-							else
-								element.setAttribute( 'type', this.getValue() );
-						}
+						commit : commitAttributes
 					}
 				]
Index: /CKEditor/trunk/_source/plugins/forms/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/forms/plugin.js	(revision 6313)
+++ /CKEditor/trunk/_source/plugins/forms/plugin.js	(revision 6314)
@@ -276,8 +276,5 @@
 				case 'value' :
 					var type = this.getAttribute( 'type' );
-					if ( type == 'checkbox' || type == 'radio' )
-						return this.$.value != 'on';
-					break;
-				default:
+					return type == 'checkbox' || type == 'radio' ? this.$.value != 'on' : this.$.value;
 			}
 		}
