Index: /CKEditor/branches/prototype/_source/core/config.js
===================================================================
--- /CKEditor/branches/prototype/_source/core/config.js	(revision 2739)
+++ /CKEditor/branches/prototype/_source/core/config.js	(revision 2740)
@@ -159,5 +159,5 @@
 	 * config.plugins = 'elementspath,toolbar,wysiwygarea';
 	 */
-	plugins : 'basicstyles,button,dialog,elementspath,horizontalrule,htmldataprocessor,keystrokes,removeformat,smiley,link,sourcearea,tab,toolbar,wysiwygarea,forms,image,find,specialchar',
+	plugins : 'basicstyles,button,dialog,elementspath,horizontalrule,htmldataprocessor,keystrokes,removeformat,smiley,link,sourcearea,tab,toolbar,wysiwygarea,forms,image,find,table,specialchar',
 
 	/**
Index: /CKEditor/branches/prototype/_source/lang/en.js
===================================================================
--- /CKEditor/branches/prototype/_source/lang/en.js	(revision 2739)
+++ /CKEditor/branches/prototype/_source/lang/en.js	(revision 2740)
@@ -182,4 +182,28 @@
 	dlgReplaceWordChk		: 'Match whole word',
 
+	// Table Dialog
+	dlgTableTitle		: 'Table Properties',
+	dlgTableRows		: 'Rows',
+	dlgTableColumns		: 'Columns',
+	dlgTableBorder		: 'Border size',
+	dlgTableAlign		: 'Alignment',
+	dlgTableAlignNotSet	: '<Not set>',
+	dlgTableAlignLeft	: 'Left',
+	dlgTableAlignCenter	: 'Center',
+	dlgTableAlignRight	: 'Right',
+	dlgTableWidth		: 'Width',
+	dlgTableWidthPx		: 'pixels',
+	dlgTableWidthPc		: 'percent',
+	dlgTableHeight		: 'Height',
+	dlgTableCellSpace	: 'Cell spacing',
+	dlgTableCellPad		: 'Cell padding',
+	dlgTableCaption		: 'Caption',
+	dlgTableSummary		: 'Summary',
+	dlgTableHeaders		: 'Headers',
+	dlgTableHeadersNone		: 'None',
+	dlgTableHeadersColumn	: 'First column',
+	dlgTableHeadersRow		: 'First Row',
+	dlgTableHeadersBoth		: 'Both',
+
 	// Button Dialog
 	dlgButtonText		: 'Text (Value)',
Index: /CKEditor/branches/prototype/_source/plugins/table/dialogs/table.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/table/dialogs/table.js	(revision 2740)
+++ /CKEditor/branches/prototype/_source/plugins/table/dialogs/table.js	(revision 2740)
@@ -0,0 +1,272 @@
+/*
+ * 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( 'table', function( editor )
+{
+	return {
+		title : editor.lang.dlgTableTitle,
+		minWidth : 480,
+		minHeight : 290,
+		onShow : function( )
+		{
+		},
+		onOk : function( )
+		{
+			return true;
+		},
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.dlgTableTitle,
+				accessKey : 'I',
+				elements :
+				[
+					{
+						type : 'hbox',
+						widths : [ '40%', '10%', '60%' ],
+						children : 
+						[
+							{
+								type : 'vbox',
+								children : 
+								[
+									{
+										type : 'text',
+										id : 'txtRows',
+										labelLayout : 'horizontal',	
+										widths : [ '60%','40%' ],
+										style : 'width:105px',
+										'default' : 3,
+										label : editor.lang.dlgTableRows,
+										validate: function( ) {
+											if ( this.getValue() != '' )
+											{
+												if ( isNaN( parseInt( this.getValue(), 10 ) ) )
+												{
+													this.select();
+													return false;
+												}
+											}
+											return true;
+										}
+									},
+									{
+										type : 'text',
+										id : 'txtCols',
+										labelLayout : 'horizontal',	
+										widths : [ '60%','40%' ],
+										style : 'width:105px',
+										'default' : '2',
+										label : editor.lang.dlgTableColumns,
+										validate: function( ) {
+											if ( this.getValue() != '' )
+											{
+												if ( isNaN( parseInt( this.getValue(), 10 ) ) )
+												{
+													this.select();
+													return false;
+												}
+											}
+											return true;
+										}
+									},
+									{
+										type : 'text',
+										id : 'txtBorder',
+										labelLayout : 'horizontal',	
+										widths : [ '60%','40%' ],
+										style : 'width:105px',
+										'default' : '1',
+										label : editor.lang.dlgTableBorder,
+										validate: function( ) {
+											if ( this.getValue() != '' )
+											{
+												if ( isNaN( parseInt( this.getValue(), 10 ) ) )
+												{
+													this.select();
+													return false;
+												}
+											}
+											return true;
+										}
+									},
+									{
+										id : 'cmbAlign',
+										type : 'select',
+										labelLayout : 'horizontal',	
+										widths : [ '40%','60%' ],
+										label : editor.lang.dlgTableAlign,
+										items :
+										[
+											[ editor.lang.dlgTableAlignNotSet , ''],
+											[ editor.lang.dlgTableAlignLeft , 'left'],
+											[ editor.lang.dlgTableAlignCenter , 'center'],
+											[ editor.lang.dlgTableAlignRight , 'right']
+										]
+									}
+								]
+							},
+							{
+								type : 'html',
+								align : 'right',
+								html : ''
+							},						
+							{
+								type : 'vbox',
+								align : 'right',
+								children : 
+								[			
+									{
+										type : 'hbox',
+										align : 'center',
+										widths : [ '70%', '30%' ],
+										children : 
+										[
+											{
+												type : 'text',
+												id : 'txtWidth',
+												labelLayout : 'horizontal',	
+												widths : [ '50%','50%' ],
+												label : editor.lang.dlgTableWidth,
+												validate: function( ) {
+													if ( this.getValue() != '' )
+													{
+														if ( isNaN( parseInt( this.getValue(), 10 ) ) )
+														{
+															this.select();
+															return false;
+														}
+													}
+													return true;
+												}
+											},
+											{
+												id : 'cmbWidthType',
+												type : 'select',
+												labelLayout : 'horizontal',	
+												widths : [ '0%','100%' ],
+												label : '',
+												items :
+												[
+													[ editor.lang.dlgTableWidthPx , 'pixels'],
+													[ editor.lang.dlgTableWidthPc , 'procents']
+												]
+											}
+										]
+									},
+									{
+										type : 'hbox',
+										widths : [ '70%', '30%' ],
+										children : 
+										[
+											{
+												type : 'text',
+												id : 'txtHeight',
+												labelLayout : 'horizontal',
+												widths : [ '50%','50%' ],
+												label : editor.lang.dlgTableHeight,
+												validate: function( ) {
+													if ( this.getValue() != '' )
+													{
+														if ( isNaN( parseInt( this.getValue(), 10 ) ) )
+														{
+															this.select();
+															return false;
+														}
+													}
+													return true;
+												}
+											},
+											{
+												type : 'html',
+												html : editor.lang.dlgTableWidthPx
+											}	
+										]
+									},
+									{
+										type : 'text',
+										id : 'txtCellSpace',
+										labelLayout : 'horizontal',	
+										widths : [ '50%','50%' ],
+										style : 'width:140px',
+										label : editor.lang.dlgTableCellSpace,
+										validate: function( ) {
+											if ( this.getValue() != '' )
+											{
+												if ( isNaN( parseInt( this.getValue(), 10 ) ) )
+												{
+													this.select();
+													return false;
+												}
+											}
+											return true;
+										}
+									},
+									{
+										type : 'text',
+										id : 'txtCellPad',
+										labelLayout : 'horizontal',	
+										widths : [ '50%','50%' ],
+										style : 'width:140px',
+										label : editor.lang.dlgTableCellPad,
+										validate: function( ) {
+											if ( this.getValue() != '' )
+											{
+												if ( isNaN( parseInt( this.getValue(), 10 ) ) )
+												{
+													this.select();
+													return false;
+												}
+											}
+											return true;
+										}
+									}
+								]
+							}
+						]
+					},
+					{
+						type : 'html',
+						align : 'right',
+						html : ''
+					},	
+					{
+						id : 'txtCaption',
+						type : 'text',
+						label : editor.lang.dlgTableCaption,
+						widths : [ '30%','70%' ],
+						labelLayout : 'horizontal',	
+						style : 'width:400px'
+					},
+					{
+						id : 'txtSummary',
+						type : 'text',
+						labelLayout : 'horizontal',	
+						label : editor.lang.dlgTableSummary,
+						widths : [ '30%','70%' ],
+						accessKey : 'A',
+						style : 'width:400px'
+					}
+				]
+			}
+		]
+	};
+} );
Index: /CKEditor/branches/prototype/_source/plugins/toolbar/plugin.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/toolbar/plugin.js	(revision 2739)
+++ /CKEditor/branches/prototype/_source/plugins/toolbar/plugin.js	(revision 2740)
@@ -223,5 +223,6 @@
 [
 	[ 'Source', '-', 'Bold', 'Italic', 'Underline', 'Strike', '-', 'Subscript', 'Superscript', '-', 'Find','Replace','-',
-	'SelectAll', 'RemoveFormat', '-', 'Link', 'Unlink', 'Smiley', 'SpecialChar', 'Image', 'HorizontalRule', '-',
+	'SelectAll', 'RemoveFormat', '-',
+	'Link', 'Unlink', 'Image', 'Table', 'Smiley', 'HorizontalRule', 'SpecialChar', '-',
 	'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 2739)
+++ /CKEditor/branches/prototype/_source/skins/default/toolbar.css	(revision 2740)
@@ -196,4 +196,9 @@
 }
 
+.cke_skin_default a.cke_button_table .cke_icon
+{
+	background-position: 0 -608px;
+}
+
 .cke_skin_default a.cke_button_horizontalrule .cke_icon
 {
