Index: /CKEditor/branches/prototype/_source/core/config.js
===================================================================
--- /CKEditor/branches/prototype/_source/core/config.js	(revision 2667)
+++ /CKEditor/branches/prototype/_source/core/config.js	(revision 2668)
@@ -159,5 +159,5 @@
 	 * config.plugins = 'elementspath,toolbar,wysiwygarea';
 	 */
-	plugins : 'basicstyles,button,dialog,elementspath,horizontalrule,htmldataprocessor,keystrokes,removeformat,smiley,link,sourcearea,tab,toolbar,wysiwygarea',
+	plugins : 'basicstyles,button,dialog,elementspath,horizontalrule,htmldataprocessor,keystrokes,removeformat,smiley,link,sourcearea,tab,toolbar,wysiwygarea,forms',
 
 	/**
Index: /CKEditor/branches/prototype/_source/dialogs/button.js
===================================================================
--- /CKEditor/branches/prototype/_source/dialogs/button.js	(revision 2668)
+++ /CKEditor/branches/prototype/_source/dialogs/button.js	(revision 2668)
@@ -0,0 +1,83 @@
+/*
+ * CKEditor - The text editor for Internet - http://ckeditor.com
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ */
+CKEDITOR.dialog.add( 'button', function( editor )
+{
+	return {
+		title : editor.lang.buttonProp,
+		resizable : CKEDITOR.DIALOG_RESIZE_NONE,
+		minWidth : 400,
+		minHeight : 230,
+		onOk: function( data ) {
+			return true;
+		},
+
+		onCancel: function() {
+		},
+		
+		onLoad: function( data ) {
+			return true;
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.buttonProp,
+				title : editor.lang.buttonProp,
+				accessKey : 'I',
+				elements : [
+					{
+						id : 'txtName',
+						type : 'text',
+						label : editor.lang.dlgCheckboxName,
+						'default' : '',
+						validate: function( data ) {
+							return true;
+						}
+					},
+					{
+						id : 'txtValue',
+						type : 'text',
+						label : editor.lang.dlgButtonText,
+						accessKey : 'V',
+						validate: function( data ) {
+							return true;
+						}
+					},
+					{
+						id : 'txtType',
+						type : 'select',
+						label : editor.lang.dlgButtonType,
+						'default' : 'url',
+						accessKey : 'T',
+						items :
+						[
+							[ editor.lang.dlgButtonTypeBtn, 'button' ],
+							[ editor.lang.dlgButtonTypeSbm, 'submit' ],
+							[ editor.lang.dlgButtonTypeRst, 'reset' ]
+						],
+						validate: function( data ) {
+							return true;
+						}
+					}
+				]
+			}
+		]
+	};
+});
Index: /CKEditor/branches/prototype/_source/dialogs/checkbox.js
===================================================================
--- /CKEditor/branches/prototype/_source/dialogs/checkbox.js	(revision 2668)
+++ /CKEditor/branches/prototype/_source/dialogs/checkbox.js	(revision 2668)
@@ -0,0 +1,79 @@
+/*
+ * CKEditor - The text editor for Internet - http://ckeditor.com
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ */
+CKEDITOR.dialog.add( 'checkbox', function( editor )
+{
+	return {
+		title : editor.lang.checkboxProp,
+		resizable : CKEDITOR.DIALOG_RESIZE_NONE,
+		minWidth : 400,
+		minHeight : 230,
+		onOk: function( data ) {
+			return true;
+		},
+
+		onCancel: function() {
+		},
+		
+		onLoad: function( data ) {
+			return true;
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.checkboxProp,
+				title : editor.lang.checkboxProp,
+				accessKey : 'I',
+				elements : [
+					{
+						id : 'txtName',
+						type : 'text',
+						label : editor.lang.dlgCheckboxName,
+						'default' : '',
+						accessKey : 'N',
+						validate: function( data ) {
+							return true;
+						}
+					},
+					{
+						id : 'txtValue',
+						type : 'text',
+						label : editor.lang.dlgCheckboxValue,
+						'default' : '',
+						accessKey : 'V',
+						validate: function( data ) {
+							return true;
+						}
+					},
+					{
+						id : 'cmbSelected',
+						type : 'checkbox',
+						label : editor.lang.dlgCheckboxSelected,
+						'default' : 'url',
+						accessKey : 'S',
+						validate: function( data ) {
+							return true;
+						}
+					}
+				]
+			}
+		]
+	};
+});
Index: /CKEditor/branches/prototype/_source/dialogs/form.js
===================================================================
--- /CKEditor/branches/prototype/_source/dialogs/form.js	(revision 2668)
+++ /CKEditor/branches/prototype/_source/dialogs/form.js	(revision 2668)
@@ -0,0 +1,85 @@
+/*
+ * CKEditor - The text editor for Internet - http://ckeditor.com
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ */
+CKEDITOR.dialog.add( 'form', function( editor )
+{
+	return {
+		title : editor.lang.formProp,
+		resizable : CKEDITOR.DIALOG_RESIZE_NONE,
+		minWidth : 400,
+		minHeight : 230,
+		onOk: function( data ) {
+			return true;
+		},
+
+		onCancel: function() {
+		},
+		
+		onLoad: function( data ) {
+			return true;
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.formProp,
+				title : editor.lang.formProp,
+				accessKey : 'I',
+				elements : [
+					{
+						id : 'txtName',
+						type : 'text',
+						label : editor.lang.dlgFormName,
+						'default' : '',
+						accessKey : 'N',
+						validate: function( data ) {
+							return true;
+						}
+					},
+					{
+						id : 'txtAction',
+						type : 'text',
+						label : editor.lang.dlgFormAction,
+						'default' : '',
+						accessKey : 'A',
+						validate: function( data ) {
+							return true;
+						}
+					},
+					{
+						id : 'txtMethod',
+						type : 'select',
+						label : editor.lang.dlgFormMethod,
+						'default' : 'url',
+						accessKey : 'M',
+						items :
+						[
+							[ editor.lang.url, 'url' ],
+							[ editor.lang.linkToAnchor, 'anchor' ],
+							[ editor.lang.linkToEmail, 'email' ]
+						],
+						validate: function( data ) {
+							return true;
+						}
+					}
+				]
+			}
+		]
+	};
+});
Index: /CKEditor/branches/prototype/_source/dialogs/hiddenfield.js
===================================================================
--- /CKEditor/branches/prototype/_source/dialogs/hiddenfield.js	(revision 2668)
+++ /CKEditor/branches/prototype/_source/dialogs/hiddenfield.js	(revision 2668)
@@ -0,0 +1,69 @@
+/*
+ * CKEditor - The text editor for Internet - http://ckeditor.com
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ */
+CKEDITOR.dialog.add( 'hiddenfield', function( editor )
+{
+	return {
+		title : editor.lang.hiddenFieldProp,
+		resizable : CKEDITOR.DIALOG_RESIZE_NONE,
+		minWidth : 400,
+		minHeight : 200,
+		onOk: function( data ) {
+			return true;
+		},
+
+		onCancel: function() {
+		},
+		
+		onLoad: function( data ) {
+			return true;
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.hiddenFieldProp,
+				title : editor.lang.hiddenFieldProp,
+				accessKey : 'I',
+				elements : [
+					{
+						id : 'txtName',
+						type : 'text',
+						label : editor.lang.dlgHiddenName,
+						'default' : '',
+						accessKey : 'N',
+						validate: function( data ) {
+							return true;
+						}
+					},
+					{
+						id : 'txtValue',
+						type : 'text',
+						label : editor.lang.dlgHiddenValue,
+						'default' : '',
+						accessKey : 'V',
+						validate: function( data ) {
+							return true;
+						}
+					}
+				]
+			}
+		]
+	};
+});
Index: /CKEditor/branches/prototype/_source/dialogs/image.js
===================================================================
--- /CKEditor/branches/prototype/_source/dialogs/image.js	(revision 2668)
+++ /CKEditor/branches/prototype/_source/dialogs/image.js	(revision 2668)
@@ -0,0 +1,313 @@
+/*
+ * CKEditor - The text editor for Internet - http://ckeditor.com
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ */
+
+imageDialog = function( editor, dialogType )
+{
+	var uploadAction = 'nowhere.php';
+	var imageDialog = ( dialogType == 'image' );
+
+	return {
+		title : ( imageDialog ) ? editor.lang.dlgImgTitle : editor.lang.imageButtonProp,
+		minWidth : 450,
+		minHeight : 400,
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.dlgImgInfoTab,
+				accessKey : 'I',
+				elements :
+				[
+					{
+						type : 'vbox',
+						padding : 0,
+						children : 
+						[
+							{
+								type : 'html',
+								style : 'padding:0px;margin:0px',
+								html : '<span>' + CKEDITOR.tools.htmlEncode( editor.lang.dlgImgURL ) + '</span>'
+							},
+							{
+								type : 'hbox',
+								widths : [ '290px', '120px' ],
+								children : 
+								[
+									{
+										id : 'txtUrl',
+										type : 'text',
+										labelLayout : 'horizontal',
+										label : '',
+										style : 'width: 280px',
+										validate: function( data ) {
+											return true;
+										}
+									},
+									{
+										type : 'button',
+										id : 'browse',
+										label : editor.lang.browseServer,
+									},
+								]
+							},
+						]
+					},
+					{
+						type : 'hbox',
+						widths : [ '100px', '250px' ],
+						align : 'top',
+						children : 
+						[
+							{
+								type : 'vbox',
+								padding : 0,
+								style : 'width:100px',
+								children : 
+								[
+									{
+										type : 'text',
+										id : 'txtWidth',
+										style : 'width:50px',
+										label : editor.lang.dlgImgWidth,
+										validate: function( data ) {
+											if ( this.getValue()!='')
+											{
+												if ( isNaN( parseInt( this.getValue(), 10 ) ) )
+												{
+													this.select();
+													return false;
+												}
+											}
+											return true;
+										}
+									},
+									{
+										type : 'text',
+										id : 'txtHeight',
+										style : 'width:50px',
+										label : editor.lang.dlgImgHeight,
+										validate: function( data ) {
+											if ( this.getValue()!='')
+											{
+												if ( isNaN( parseInt( this.getValue(), 10 ) ) )
+												{
+													this.select();
+													return false;
+												}
+											}
+											return true;
+										}
+									},
+									{
+										id : 'txtBorder',
+										type : 'text',
+										style : 'width:50px',
+										label : editor.lang.dlgImgBorder,
+										validate: function( data ) {
+											if ( this.getValue()!='')
+											{
+												if ( isNaN( parseInt( this.getValue(), 10 ) ) )
+												{
+													this.select();
+													return false;
+												}
+											}
+											return true;
+										}
+									},
+									{
+										id : 'txtHSpace',
+										type : 'text',
+										style : 'width:50px',
+										label : editor.lang.dlgImgHSpace,
+										validate: function( data ) {
+											if ( this.getValue()!='')
+											{
+												if ( isNaN( parseInt( this.getValue(), 10 ) ) )
+												{
+													this.select();
+													return false;
+												}
+											}
+											return true;
+										}
+									},
+									{
+										id : 'txtVSpace',
+										type : 'text',
+										label : editor.lang.dlgImgVSpace,
+										style : 'width:50px',
+										validate: function( data ) {
+											if ( this.getValue()!='')
+											{
+												if ( isNaN( parseInt( this.getValue(), 10 ) ) )
+												{
+													this.select();
+													return false;
+												}
+											}
+											return true;
+										}
+									},
+									{
+										id : 'cmbAlign',
+										type : 'select',
+										label : editor.lang.dlgImgAlign,
+										style : 'width : 90px',
+										items :
+										[
+											[ editor.lang.dlgGenNotSet , ''],
+											[ editor.lang.dlgImgAlignLeft , 'left'],
+											[ editor.lang.dlgImgAlignAbsBottom , 'absBottom'],
+											[ editor.lang.dlgImgAlignAbsMiddle , 'absMiddle'],
+											[ editor.lang.dlgImgAlignBaseline , 'baseline'],
+											[ editor.lang.dlgImgAlignBottom , 'bottom'],
+											[ editor.lang.dlgImgAlignMiddle , 'middle'],
+											[ editor.lang.dlgImgAlignRight , 'right'],
+											[ editor.lang.dlgImgAlignTextTop , 'textTop'],
+											[ editor.lang.dlgImgAlignTop , 'top'],
+										]
+									},
+								]
+							},
+							{
+								type : 'vbox',
+								height : '100%',
+								children : 
+								[
+									{
+										type : 'html',
+										style : 'width:260px; height:180px; margin:0px 0px 0px 10px;',
+										html: '<div>' + CKEDITOR.tools.htmlEncode( editor.lang.dlgImgPreview ) +
+												'<div id="ImagePreviewBox" style="border: 1px solid black;height:100%"></div>'+
+												'</div>'
+									}
+								]
+							}
+						]
+					},
+					{
+						id : 'txtAlt',
+						type : 'text',
+						label : editor.lang.dlgImgAlt,
+						accessKey : 'A',
+						style : 'width:385px',
+						validate: function( data ) {
+							return true;
+						}
+					},
+				]
+			},
+			{
+				id : 'Upload',
+				label : editor.lang.dlgImgUpload,
+				elements : 
+				[
+					{
+						type : 'file',
+						id : 'upload',
+						label : editor.lang.dlgImgBtnUpload,
+						action : uploadAction,
+						size : 38
+					},
+					{
+						type : 'fileButton',
+						id : 'uploadButton',
+						label : editor.lang.dlgImgBtnUpload,
+						'for' : [ 'Upload', 'upload' ]
+					}
+				]
+			},
+			{
+				id : 'advanced',
+				label : editor.lang.dlgDivAdvancedTab,
+				elements : 
+				[
+					{
+						type : 'hbox',
+						widths : [ '40%', '30%', '30%' ],
+						children :
+						[
+							{
+								type : 'text',
+								id : 'linkId',
+								label : editor.lang.dlgGenId
+							},
+							{
+								id : 'cmbLangDir',
+								type : 'select',
+								label : editor.lang.dlgGenLangDir,
+								style : 'width : 100%;',
+								items :
+								[
+									[ editor.lang.dlgGenNotSet, '' ],
+									[ editor.lang.dlgGenLangDirLtr, 'ltr' ],
+									[ editor.lang.dlgGenLangDirRtl, 'rtl' ]
+								]
+							},
+							{
+								type : 'text',
+								id : 'txtLangCode',
+								label : editor.lang.dlgGenLangCode
+							},
+						]
+					},
+					{
+						type : 'text',
+						id : 'txtGenLongDescr',
+						label : editor.lang.dlgGenLongDescr
+					},
+					{
+						type : 'hbox',
+						widths : [ '50%', '50%' ],
+						children :
+						[
+							{
+								type : 'text',
+								id : 'txtGenClass',
+								label : editor.lang.dlgGenClass
+							},
+							{
+								type : 'text',
+								id : 'txtGenTitle',
+								label : editor.lang.dlgGenTitle
+							},
+						]
+					},
+					{
+						type : 'text',
+						id : 'txtdlgGenStyle',
+						label : editor.lang.dlgGenStyle
+					},
+				]
+			}
+		]
+	}
+};
+
+CKEDITOR.dialog.add( 'image', function( editor ){
+		return imageDialog( editor, 'image' )
+	}
+);
+
+CKEDITOR.dialog.add( 'imagebutton', function( editor ){
+		return imageDialog( editor, 'imagebutton' )
+	}
+);
Index: /CKEditor/branches/prototype/_source/dialogs/radio.js
===================================================================
--- /CKEditor/branches/prototype/_source/dialogs/radio.js	(revision 2668)
+++ /CKEditor/branches/prototype/_source/dialogs/radio.js	(revision 2668)
@@ -0,0 +1,79 @@
+/*
+ * CKEditor - The text editor for Internet - http://ckeditor.com
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ */
+CKEDITOR.dialog.add( 'radio', function( editor )
+{
+	return {
+		title : editor.lang.radioButtonProp,
+		resizable : CKEDITOR.DIALOG_RESIZE_NONE,
+		minWidth : 400,
+		minHeight : 200,
+		onOk: function( data ) {
+			return true;
+		},
+
+		onCancel: function() {
+		},
+		
+		onLoad: function( data ) {
+			return true;
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.radioButtonProp,
+				title : editor.lang.radioButtonProp,
+				accessKey : 'I',
+				elements : [
+					{
+						id : 'txtName',
+						type : 'text',
+						label : editor.lang.dlgCheckboxName,
+						'default' : '',
+						accessKey : 'N',
+						validate: function( data ) {
+							return true;
+						}
+					},
+					{
+						id : 'txtValue',
+						type : 'text',
+						label : editor.lang.dlgCheckboxValue,
+						'default' : '',
+						accessKey : 'V',
+						validate: function( data ) {
+							return true;
+						}
+					},
+					{
+						id : 'txtSelected',
+						type : 'checkbox',
+						label : editor.lang.dlgCheckboxSelected,
+						'default' : 'url',
+						accessKey : 'S',
+						validate: function( data ) {
+							return true;
+						}
+					}
+				]
+			}
+		]
+	};
+});
Index: /CKEditor/branches/prototype/_source/dialogs/select.js
===================================================================
--- /CKEditor/branches/prototype/_source/dialogs/select.js	(revision 2668)
+++ /CKEditor/branches/prototype/_source/dialogs/select.js	(revision 2668)
@@ -0,0 +1,229 @@
+/*
+ * CKEditor - The text editor for Internet - http://ckeditor.com
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ */
+CKEDITOR.dialog.add( 'select', function( editor )
+{
+	return {
+		title : editor.lang.selectionFieldProp,
+		resizable : CKEDITOR.DIALOG_RESIZE_NONE,
+		minWidth : 400,
+		minHeight : 300,
+		onOk: function( data ) {
+			return true;
+		},
+
+		onCancel: function() {
+		},
+		
+		onLoad: function( data ) {
+			return true;
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.dlgSelectSelectInfo,
+				title : editor.lang.dlgSelectSelectInfo,
+				accessKey : '',
+				elements : [
+					{
+						id : 'txtName',
+						type : 'text',
+						label : editor.lang.dlgCheckboxName,
+						'default' : '',
+						accessKey : 'N',
+						validate: function( data ) {
+							return true;
+						}
+					},
+					{
+						id : 'txtValue',
+						type : 'text',
+						label : editor.lang.dlgSelectValue,
+						'default' : '',
+						disabled : true						
+					},
+					{
+						type : 'hbox',
+						widths : [ '60%','40%'],
+						children :
+						[
+							{
+								id : 'txtSize',
+								type : 'text',
+								label : editor.lang.dlgSelectSize,
+								'default' : '',
+								accessKey : 'V',
+								validate: function( data ) {
+									if ( this.getValue()!='')
+									{
+										var selectSize = parseInt( this.getValue(), 10 );
+										if ( isNaN( selectSize ) )
+										{
+											this.select();
+											return false;
+										}
+									}
+									return true;
+								}
+							},
+							{
+								type : 'html',
+								style : 'border:1px solid black;padding: 30px;background-color:red',
+								html : '<br />'+editor.lang.dlgSelectLines		//Imposible to use styles.
+							}
+						]
+					}
+				]
+			},
+			{
+				id : 'options',
+				label : editor.lang.dlgSelectOpAvail,
+				title : editor.lang.dlgSelectOpAvail,
+				accessKey : 'M',
+				elements : [
+					{
+						type : 'hbox',
+						widths : [ '35%','35%','15%','15%'],
+						children :
+						[
+							{
+								id : 'txtName',
+								type : 'text',
+								label : editor.lang.dlgSelectOpText,
+								style : 'width:105px',
+								validate: function( data ) {
+									return true;
+								}
+							},
+							{
+								id : 'txtValue',
+								type : 'text',
+								label : editor.lang.dlgSelectOpValue,
+								style : 'width:105px',
+								validate: function( data ) {
+									return true;
+								}
+							},
+							{
+								type : 'button',
+								style : '',
+								label : editor.lang.dlgSelectBtnAdd,
+								title : editor.lang.dlgSelectBtnAdd,
+								onClick : function(){
+								}
+							},
+							{
+								type : 'button',
+								label : editor.lang.dlgSelectBtnModify,
+								title : editor.lang.dlgSelectBtnModify,
+								onClick : function(){
+								}
+							}
+						]
+					},
+					{
+						type : 'hbox',
+						widths : [ '35%','35%','30%'],
+						children :
+						[
+							{
+								type : 'select',
+								id : 'cmbText',
+								label : editor.lang.dlgSelectOpText,
+								title : editor.lang.dlgSelectOpText,
+								size : 5,
+								style : 'width:105px',
+								items:	[
+								],
+								onChange : function(){
+								}
+							},
+							{
+								type : 'select',
+								id : 'cmbText',
+								label : editor.lang.dlgSelectOpText,
+								title : editor.lang.dlgSelectOpText,
+								size : '5',
+								style : 'width:105px',
+								items:	[
+								],
+								onChange : function(){
+								}
+							},
+							{
+								type : 'vbox',
+								children : 
+								[
+									{
+										type : 'button',
+										style : 'width:100%;',
+										label : editor.lang.dlgSelectBtnUp,
+										title : editor.lang.dlgSelectBtnUp,
+										onClick : function(){
+										}
+									},
+									{
+										type : 'button',
+										style : 'width:100%;',
+										label : editor.lang.dlgSelectBtnDown,
+										title : editor.lang.dlgSelectBtnDown,
+										onClick : function(){
+										}
+									}
+								]
+							}
+						]
+					},	
+					{
+						type : 'hbox',
+						widths : [ '30%','30%','40%'],
+						children :
+						[
+							{
+								type : 'button',
+								label : editor.lang.dlgSelectBtnSetValue,
+								title : editor.lang.dlgSelectBtnSetValue,
+								onClick : function(){
+								}
+							},
+							{
+								type : 'button',
+								label : editor.lang.dlgSelectBtnDelete,
+								title : editor.lang.dlgSelectBtnDelete,
+								onClick : function(){
+								}
+							},
+							{
+								id : 'txtType',
+								type : 'checkbox',
+								label : editor.lang.dlgSelectChkMulti,
+								'default' : 'url',
+								accessKey : 'M',
+								validate: function( data ) {
+									return true;
+								}
+							},
+						]
+					}
+				]
+			}
+		]
+	};
+});
Index: /CKEditor/branches/prototype/_source/dialogs/textfield.js
===================================================================
--- /CKEditor/branches/prototype/_source/dialogs/textfield.js	(revision 2668)
+++ /CKEditor/branches/prototype/_source/dialogs/textfield.js	(revision 2668)
@@ -0,0 +1,136 @@
+/*
+ * CKEditor - The text editor for Internet - http://ckeditor.com
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ */
+CKEDITOR.dialog.add( 'textfield', function( editor )
+{
+	return {
+		title : editor.lang.textFieldProp,
+		resizable : CKEDITOR.DIALOG_RESIZE_NONE,
+		minWidth : 400,
+		minHeight : 230,
+		onOk: function( data ) {
+			return true;
+		},
+
+		onCancel: function() {
+		},
+		
+		onLoad: function( data ) {
+			return true;
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.textFieldProp,
+				title : editor.lang.textFieldProp,
+				accessKey : 'I',
+				elements : [
+					{
+						type : 'hbox',
+						widths : [ '50%', '50%' ],
+						children :
+						[
+							{
+								id : 'txtName',
+								type : 'text',
+								label : editor.lang.dlgTextName,
+								'default' : '',
+								accessKey : 'N',
+								validate: function( data ) {
+									return true;
+								}
+							},
+							{
+								id : 'txtValue',
+								type : 'text',
+								label : editor.lang.dlgTextValue,
+								'default' : '',
+								accessKey : 'V',
+								validate: function( data ) {
+									return true;
+								}
+							}
+						]
+					},
+					{
+						type : 'hbox',
+						widths : [ '50%', '50%' ],
+						children :
+						[
+							{
+								id : 'txtTextCharWidth',
+								type : 'text',
+								label : editor.lang.dlgTextCharWidth,
+								'default' : '',
+								accessKey : 'C',
+								validate: function( data ) {
+									if ( this.getValue()!='')
+									{
+										var charWidth = parseInt( this.getValue(), 10 );
+										if ( isNaN( charWidth ) )
+										{
+											this.select();
+											return false;
+										}
+									}
+									return true;
+								}
+							},
+							{
+								id : 'txtMaxChars',
+								type : 'text',
+								label : editor.lang.dlgTextMaxChars,
+								'default' : '',
+								accessKey : 'M',
+								validate: function( data ) {
+									if ( this.getValue()!='')
+									{
+										var maxChars = parseInt( this.getValue(), 10 );
+										if ( isNaN( maxChars ) )
+										{
+											this.select();
+											return false;
+										}
+									}
+									return true;
+								}
+							}
+						]
+					},
+					{
+						id : 'txtType',
+						type : 'select',
+						label : editor.lang.dlgTextType,
+						'default' : 'text',
+						accessKey : 'M',
+						items :
+						[
+							[ editor.lang.dlgTextTypeText, 'text' ],
+							[ editor.lang.dlgTextTypePass, 'pass' ],
+						],
+						validate: function( data ) {
+							return true;
+						}
+					}
+				]
+			}
+		]
+	};
+});
Index: /CKEditor/branches/prototype/_source/lang/en.js
===================================================================
--- /CKEditor/branches/prototype/_source/lang/en.js	(revision 2667)
+++ /CKEditor/branches/prototype/_source/lang/en.js	(revision 2668)
@@ -89,4 +89,128 @@
 	url				: 'URL',
 	protocol		: 'Protocol',
+	form			: 'Form',
+	checkbox		: 'Checkbox',
+	radio		: 'Radio Button',
+	textField		: 'Text Field',
+	textarea		: 'Textarea',
+	hiddenField		: 'Hidden Field',
+	button			: 'Button',
+	select	: 'Selection Field',
+	imageButton		: 'Image Button',
+
+	
+	//Dialog titles.
+	formProp		: 'Form Properties',
+	buttonProp		: 'Button Properties',
+	checkboxProp	: 'Checkbox Properties',
+	hiddenFieldProp	: 'Hidden Field Properties',
+	radioButtonProp	: 'Radio Button Properties',
+	imageButtonProp	: 'Image Button Properties',
+	textFieldProp	: 'Text Field Properties',
+	selectionFieldProp	: 'Selection Field Properties',
+	extareaProp	: 'Textarea Properties',
+
+	// Div Dialog
+	dlgDivGeneralTab	: 'General',
+	dlgDivAdvancedTab	: 'Advanced',
+	dlgDivStyle		: 'Style',
+	dlgDivInlineStyle	: 'Inline Style',
+	
+	// General Dialogs Labels
+	dlgGenNotSet		: '<not set>',
+	dlgGenId			: 'Id',
+	dlgGenLangDir		: 'Language Direction',
+	dlgGenLangDirLtr	: 'Left to Right (LTR)',
+	dlgGenLangDirRtl	: 'Right to Left (RTL)',
+	dlgGenLangCode		: 'Language Code',
+	dlgGenAccessKey		: 'Access Key',
+	dlgGenName			: 'Name',
+	dlgGenTabIndex		: 'Tab Index',
+	dlgGenLongDescr		: 'Long Description URL',
+	dlgGenClass			: 'Stylesheet Classes',
+	dlgGenTitle			: 'Advisory Title',
+	dlgGenContType		: 'Advisory Content Type',
+	dlgGenLinkCharset	: 'Linked Resource Charset',
+	dlgGenStyle			: 'Style',
+
+	// Button Dialog
+	dlgButtonText		: 'Text (Value)',
+	dlgButtonType		: 'Type',
+	dlgButtonTypeBtn	: 'Button',
+	dlgButtonTypeSbm	: 'Submit',
+	dlgButtonTypeRst	: 'Reset',
+
+	// Checkbox and Radio Button Dialogs
+	dlgCheckboxName		: 'Name',
+	dlgCheckboxValue	: 'Value',
+	dlgCheckboxSelected	: 'Selected',
+
+	// Form Dialog
+	dlgFormName		: 'Name',
+	dlgFormAction	: 'Action',
+	dlgFormMethod	: 'Method',
+
+	// Select Field Dialog
+	dlgSelectSelectInfo	: 'Select Info',
+	dlgSelectOpAvail	: 'Available Options',
+	dlgSelectName		: 'Name',
+	dlgSelectValue		: 'Value',
+	dlgSelectSize		: 'Size',
+	dlgSelectLines		: 'lines',
+	dlgSelectChkMulti	: 'Allow multiple selections',
+	dlgSelectOpText		: 'Text',
+	dlgSelectOpValue	: 'Value',
+	dlgSelectBtnAdd		: 'Add',
+	dlgSelectBtnModify	: 'Modify',
+	dlgSelectBtnUp		: 'Up',
+	dlgSelectBtnDown	: 'Down',
+	dlgSelectBtnSetValue : 'Set as selected value',
+	dlgSelectBtnDelete	: 'Delete',
+
+	// Textarea Dialog
+	dlgTextareaName	: 'Name',
+	dlgTextareaCols	: 'Columns',
+	dlgTextareaRows	: 'Rows',
+
+	// Text Field Dialog
+	dlgTextName			: 'Name',
+	dlgTextValue		: 'Value',
+	dlgTextCharWidth	: 'Character Width',
+	dlgTextMaxChars		: 'Maximum Characters',
+	dlgTextType			: 'Type',
+	dlgTextTypeText		: 'Text',
+	dlgTextTypePass		: 'Password',
+
+	// Hidden Field Dialog
+	dlgHiddenName	: 'Name',
+	dlgHiddenValue	: 'Value',
+
+	// Image Dialog
+	dlgImgTitle		: 'Image Properties',
+	dlgImgInfoTab	: 'Image Info',
+	dlgImgBtnUpload	: 'Send it to the Server',
+	dlgImgURL		: 'URL',
+	dlgImgUpload	: 'Upload',
+	dlgImgAlt		: 'Alternative Text',
+	dlgImgWidth		: 'Width',
+	dlgImgHeight	: 'Height',
+	dlgImgLockRatio	: 'Lock Ratio',
+	dlgBtnResetSize	: 'Reset Size',
+	dlgImgBorder	: 'Border',
+	dlgImgHSpace	: 'HSpace',
+	dlgImgVSpace	: 'VSpace',
+	dlgImgAlign		: 'Align',
+	dlgImgAlignLeft	: 'Left',
+	dlgImgAlignAbsBottom: 'Abs Bottom',
+	dlgImgAlignAbsMiddle: 'Abs Middle',
+	dlgImgAlignBaseline	: 'Baseline',
+	dlgImgAlignBottom	: 'Bottom',
+	dlgImgAlignMiddle	: 'Middle',
+	dlgImgAlignRight	: 'Right',
+	dlgImgAlignTextTop	: 'Text Top',
+	dlgImgAlignTop	: 'Top',
+	dlgImgPreview	: 'Preview',
+	dlgImgAlertUrl	: 'Please type the image URL',
+	dlgImgLinkTab	: 'Link',
 
 	elementsPath :
Index: /CKEditor/branches/prototype/_source/plugins/forms/plugin.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/forms/plugin.js	(revision 2668)
+++ /CKEditor/branches/prototype/_source/plugins/forms/plugin.js	(revision 2668)
@@ -0,0 +1,155 @@
+/*
+ * CKEditor - The text editor for Internet - http://ckeditor.com
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ */
+
+CKEDITOR.plugins.add( 'forms',
+{
+	init : function( editor, pluginPath )
+	{
+		var forms = CKEDITOR.plugins.forms;
+		editor.ui.addButton( 'Form',
+			{
+				label : editor.lang.form,
+				command : 'form'
+			});
+		editor.addCommand( 'form', forms.commands.form );
+
+		editor.ui.addButton( 'Checkbox',
+			{
+				label : editor.lang.checkbox,
+				command : 'checkbox'
+			});
+		editor.addCommand( 'checkbox', forms.commands.checkbox );
+
+		editor.ui.addButton( 'Radio',
+			{
+				label : editor.lang.radio,
+				command : 'radio'
+			});
+		editor.addCommand( 'radio', forms.commands.radio );
+
+		editor.ui.addButton( 'TextField',
+			{
+				label : editor.lang.textField,
+				command : 'textfield'
+			});
+		editor.addCommand( 'textfield', forms.commands.textfield );
+
+		editor.ui.addButton( 'Select',
+			{
+				label : editor.lang.select,
+				command : 'select'
+			});
+		editor.addCommand( 'select', forms.commands.select );
+
+		editor.ui.addButton( 'Button',
+			{
+				label : editor.lang.button,
+				command : 'button'
+			});
+		editor.addCommand( 'button', forms.commands.button );
+
+		editor.ui.addButton( 'ImageButton',
+			{
+				label : editor.lang.imageButton,
+				command : 'imagebutton'
+			});
+		editor.addCommand( 'imagebutton', forms.commands.imagebutton );
+
+		editor.ui.addButton( 'HiddenField',
+			{
+				label : editor.lang.hiddenField,
+				command : 'hiddenfield'
+			});
+		editor.addCommand( 'hiddenfield', forms.commands.hiddenfield );
+
+		CKEDITOR.dialog.add( 'form',		'_source/dialogs/form.js' );
+		CKEDITOR.dialog.add( 'checkbox',	'_source/dialogs/checkbox.js' );
+		CKEDITOR.dialog.add( 'radio', 		'_source/dialogs/radio.js' );
+		CKEDITOR.dialog.add( 'textfield',	'_source/dialogs/textfield.js' );
+		CKEDITOR.dialog.add( 'select',		'_source/dialogs/select.js' );
+		CKEDITOR.dialog.add( 'button',		'_source/dialogs/button.js' );
+		CKEDITOR.dialog.add( 'imagebutton',	'_source/dialogs/image.js' );
+		CKEDITOR.dialog.add( 'hiddenfield',	'_source/dialogs/hiddenfield.js' );
+	}
+} );
+
+CKEDITOR.plugins.forms =
+{
+	commands : 
+	{
+		form :
+		{
+			exec : function( editor )
+			{
+				editor.openDialog( 'form' );
+			}
+		},
+		checkbox :
+		{
+			exec : function( editor )
+			{
+				editor.openDialog( 'checkbox' );
+			}
+		},
+		radio :
+		{
+			exec : function( editor )
+			{
+				editor.openDialog( 'radio' );
+			}
+		},
+		textfield :
+		{
+			exec : function( editor )
+			{
+				editor.openDialog( 'textfield' );
+			}
+		},
+		select :
+		{
+			exec : function( editor )
+			{
+				editor.openDialog( 'select' );
+			}
+		},
+		button :
+		{
+			exec : function( editor )
+			{
+				editor.openDialog( 'button' );
+			}
+		},
+		imagebutton :
+		{
+			exec : function( editor )
+			{
+				editor.openDialog( 'imagebutton' );
+			}
+		},
+		hiddenfield :
+		{
+			exec : function( editor )
+			{
+				editor.openDialog( 'hiddenfield' );
+			}
+		},
+	},
+};
Index: /CKEditor/branches/prototype/_source/plugins/toolbar/plugin.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/toolbar/plugin.js	(revision 2667)
+++ /CKEditor/branches/prototype/_source/plugins/toolbar/plugin.js	(revision 2668)
@@ -222,4 +222,5 @@
 CKEDITOR.config.toolbar =
 [
-	[ 'Source', '-', 'Bold', 'Italic', 'Underline', 'Strike', '-', 'Subscript', 'Superscript', '-', 'SelectAll', 'RemoveFormat', '-', 'Link', 'Smiley', 'HorizontalRule' ]
+	[ 'Source', '-', 'Bold', 'Italic', 'Underline', 'Strike', '-', 'Subscript', 'Superscript', '-', 'SelectAll', 'RemoveFormat', '-', 'Link', 'Smiley', 'HorizontalRule', '-',
+	'Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField' ]
 ];
Index: /CKEditor/branches/prototype/_source/skins/default/toolbar.css
===================================================================
--- /CKEditor/branches/prototype/_source/skins/default/toolbar.css	(revision 2667)
+++ /CKEditor/branches/prototype/_source/skins/default/toolbar.css	(revision 2668)
@@ -186,2 +186,47 @@
 	background-position: 0 -528px;
 }
+
+.cke_skin_default a.cke_button_form .cke_icon
+{
+	background-position: 0 -752px;
+}
+
+.cke_skin_default a.cke_button_checkbox .cke_icon
+{
+	background-position: 0 -768px;
+}
+
+.cke_skin_default a.cke_button_radio .cke_icon
+{
+	background-position: 0 -784px;
+}
+
+.cke_skin_default a.cke_button_textfield .cke_icon
+{
+	background-position: 0 -800px;
+}
+
+.cke_skin_default a.cke_button_textarea .cke_icon
+{
+	background-position: 0 -816px;
+}
+
+.cke_skin_default a.cke_button_select .cke_icon
+{
+	background-position: 0 -832px;
+}
+
+.cke_skin_default a.cke_button_button .cke_icon
+{
+	background-position: 0 -848px;
+}
+
+.cke_skin_default a.cke_button_imagebutton .cke_icon
+{
+	background-position: 0 -864px;
+}
+
+.cke_skin_default a.cke_button_hiddenfield .cke_icon
+{
+	background-position: 0 -880px;
+}
