Index: CKEditor/trunk/CHANGES.html
===================================================================
--- CKEditor/trunk/CHANGES.html	(revision 6896)
+++ CKEditor/trunk/CHANGES.html	(revision 6904)
@@ -36,10 +36,40 @@
 	</h1>
 	<h3>
-			CKEditor 3.5.4 (SVN)</h3>
+			CKEditor 3.6 (SVN)</h3>
 	<p>
 			New features:</p>
 	<ul>
-		<li></li>
-	</ul>
+		<li><a href="http://dev.ckeditor.com/ticket/7044">#7044</a> : New BBCode sample plugin that makes the editor output (one dialect of) BBCode format.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/5647">#5647</a> : Accessibility enhancements to the structure of the toolbar.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/5647">#5647</a> : The Kama skin now presents separators for the toolbar items, making it easier to group buttons and have a cleaner layout.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/5647">#5647</a> : Usability enhancements to keyboard navigation on the toolbar. The <em>Tab</em> key is now used to jump between toolbar groups, while the <em>Arrow</em> keys can be used to cycle within the group. The new <code><a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.toolbarGroupCycling">toolbarGroupCycling</a></code> setting can be used to change the <em>Arrow</em> keys behavior.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/1376">#1376</a> : It is now possible to put the editor in the "read-only" state, so that the users would not be able to introduce changes to the contents. Check out the new <code><a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#setReadOnly">CKEDITOR.editor::setReadOnly</a></code> method, the <code><a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#readOnly">CKEDITOR.editor::readOnly</a></code> property, the <code><a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#event:readOnly">CKEDITOR.editor::readOnly</a></code> event, and the <code><a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.readOnly">readOnly</a></code> setting.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/3582">#3582</a> : New presentation of anchor elements in the WYSIWYG mode.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6737">#6737</a> : The Format drop-down list will now display the preview of its contents exactly as defined in their style configurations.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6654">#6654</a> : A new <code><a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.autoParagraph">autoParagraph</a></code> configuration setting is added to disable the auto paragraphing feature.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/901">#901</a> : New Stylesheet Parser (<code>stylesheetparser</code>) plugin that fills the Styles drop-down list based on the CSS classes available for the content. Check the new sample to learn how to use it.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/2988">#2988</a> : New Document Properties (<code>docprops</code>) plugin that sets the metadata of the page in the Full Page mode.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/7240">#7240</a> : New Developer Tools (<code>devtools</code>) plugin that shows information about dialog window UI elements to allow for easier customization.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6841">#6841</a> : Pressing the <em>Enter</em> key at the end of a pre-formatted block will now exit from it.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6850">#6850</a> : The About CKEditor dialog window now contains a link to CKEditor User's Guide.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/5745">#5745</a> : Extra configuration options for the <code>iframeDialog</code> can now be passed.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6589">#6589</a> : The <code>onDialogEvent</code> function will now be used automatically in the <code>iframeDialog</code> contents if no callback is used on creation.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/7757">#7757</a> : Georgian localization added.</li>
+	</ul>
+	<p>
+			Fixed issues:</p>
+	<ul>
+		<li><a href="http://dev.ckeditor.com/ticket/6774">#6774</a> : Internal styles are not included in the <code>contents.css</code> sample.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6521">#6521</a> : Added sample for the TableResize plugin.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6664">#6664</a> : Page break is sometimes merged into block-level elements.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/7594">#7594</a> : Toolbar keyboard navigation is not possible after recreating the editor.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6657">#6657</a> : Allow to style the entire dialog window field when the input element is disabled.</li>
+		<li>Updated the following language files:<ul>
+			<li>Hebrew;</li>
+			<li>Polish;</li>
+		</ul></li>
+	</ul>
+	<h3>
+			CKEditor 3.5.4</h3>
 	<p>
 			Fixed issues:</p>
Index: CKEditor/trunk/_dev/docs_build/template/publish.js
===================================================================
--- CKEditor/trunk/_dev/docs_build/template/publish.js	(revision 6896)
+++ CKEditor/trunk/_dev/docs_build/template/publish.js	(revision 6904)
@@ -1,3 +1,3 @@
-﻿/** Called automatically by JsDoc Toolkit. */
+/** Called automatically by JsDoc Toolkit. */
 function publish(symbolSet) {
 	publish.conf = {  // trailing slash expected for dirs
Index: CKEditor/trunk/_dev/releaser/release.bat
===================================================================
--- CKEditor/trunk/_dev/releaser/release.bat	(revision 6896)
+++ CKEditor/trunk/_dev/releaser/release.bat	(revision 6904)
@@ -11,3 +11,3 @@
 :: rmdir /S /Q release
 
-java -jar ckreleaser/ckreleaser.jar ckreleaser.release ../.. release "3.5.4 (SVN)" ckeditor_3.5.4_svn --run-before-release=langtool.bat
+java -jar ckreleaser/ckreleaser.jar ckreleaser.release ../.. release "3.6 (SVN)" ckeditor_3.6_svn --run-before-release=langtool.bat
Index: CKEditor/trunk/_dev/releaser/release.sh
===================================================================
--- CKEditor/trunk/_dev/releaser/release.sh	(revision 6896)
+++ CKEditor/trunk/_dev/releaser/release.sh	(revision 6904)
@@ -13,4 +13,4 @@
 
 pushd $DIR
-java -jar ckreleaser/ckreleaser.jar ckreleaser.release ../.. release "3.5.4 (SVN)" ckeditor_3.5.4_svn --run-before-release=$LANGTOOL
+java -jar ckreleaser/ckreleaser.jar ckreleaser.release ../.. release "3.6 (SVN)" ckeditor_3.6_svn --run-before-release=$LANGTOOL
 popd
Index: CKEditor/trunk/_samples/assets/parsesample.css
===================================================================
--- CKEditor/trunk/_samples/assets/parsesample.css	(revision 6904)
+++ CKEditor/trunk/_samples/assets/parsesample.css	(revision 6904)
@@ -0,0 +1,70 @@
+body
+{
+	font-family: Arial, Verdana, sans-serif;
+	font-size: 12px;
+	color: #222;
+	background-color: #fff;
+}
+
+/* preserved spaces for rtl list item bullets. (#6249)*/
+ol,ul,dl
+{
+	padding-right:40px;
+}
+
+h1,h2,h3,h4
+{
+	font-family: Georgia, Times, serif;
+}
+
+h1.lightBlue
+{
+	color: #00A6C7;
+	font-size: 1.8em;
+	font-weight:normal;
+}
+
+h3.green
+{
+	color: #739E39;
+	font-weight:normal;
+}
+
+span.markYellow { background-color: yellow; }
+span.markGreen { background-color: lime; }
+
+img.left
+{
+	padding: 5px;
+	margin-right: 5px;
+	float:left;
+	border:2px solid #DDD;
+}
+
+img.right
+{
+	padding: 5px;
+	margin-right: 5px;
+	float:right;
+	border:2px solid #DDD;
+}
+
+a.green
+{
+	color:#739E39;
+}
+
+table.grey
+{
+	background-color : #F5F5F5;
+}
+
+table.grey th
+{
+	background-color : #DDD;
+}
+
+ul.square
+{
+	list-style-type : square;
+}
Index: CKEditor/trunk/_samples/bbcode.html
===================================================================
--- CKEditor/trunk/_samples/bbcode.html	(revision 6904)
+++ CKEditor/trunk/_samples/bbcode.html	(revision 6904)
@@ -0,0 +1,140 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>BBCode Plugin &mdash; CKEditor Sample</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type" />
+	<!-- CKReleaser %REMOVE_LINE%
+	<script type="text/javascript" src="../ckeditor.js"></script>
+	CKReleaser %REMOVE_START% -->
+	<script type="text/javascript" src="../ckeditor_source.js"></script>
+	<!-- CKReleaser %REMOVE_END% -->
+	<script src="sample.js" type="text/javascript"></script>
+	<link href="sample.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+	<h1 class="samples">
+		CKEditor Sample &mdash; BBCode Plugin
+	</h1>
+	<div class="description">
+	<p>
+		This sample shows how to configure CKEditor to output <a href="http://en.wikipedia.org/wiki/BBCode">BBCode</a> format instead of HTML.
+		Please note that the editor configuration was modified to reflect what is needed in a BBCode editing environment.
+		Smiley images, for example, were stripped to the emoticons that are commonly used in some BBCode dialects.
+	</p>
+	<p>
+		Please note that currently there is no standard for the BBCode markup language, so its implementation
+		for different platforms (message boards, blogs etc.) can vary. This means that before using CKEditor to
+		output BBCode you may need to adjust the implementation to your own environment.
+	</p>
+	<p>
+		A snippet of the configuration code can be seen below; check the source of this page for
+		a full definition:
+	</p>
+	<pre class="samples">
+CKEDITOR.replace( 'editor1',
+	{
+		<strong>extraPlugins : 'bbcode',</strong>
+		removePlugins : 'bidi,button,dialogadvtab,div,filebrowser,flash,format,forms,horizontalrule,iframe,indent,justify,liststyle,pagebreak,showborders,stylescombo,table,tabletools,templates',
+		toolbar :
+		[
+			['Source', '-', 'Save','NewPage','-','Undo','Redo'],
+			['Find','Replace','-','SelectAll','RemoveFormat'],
+			['Link', 'Unlink', 'Image'],
+			'/',
+			['FontSize', 'Bold', 'Italic','Underline'],
+			['NumberedList','BulletedList','-','Blockquote'],
+			['TextColor', '-', 'Smiley','SpecialChar', '-', 'Maximize']
+		],
+		smiley_images :
+		[
+			'regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','tounge_smile.gif',
+			'embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angel_smile.gif','shades_smile.gif',
+			'cry_smile.gif','kiss.gif'
+		],
+		smiley_descriptions :
+		[
+			'smiley', 'sad', 'wink', 'laugh', 'cheeky', 'blush', 'surprise',
+			'indecision', 'angel', 'cool', 'crying', 'kiss'
+		]
+	});	</pre>
+	</div>
+
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
+			<p>
+				<strong>CKEditor requires JavaScript to run</strong>. In a browser with no JavaScript
+				support, like yours, you should still see the contents (HTML data) and you should
+				be able to edit it normally, without a rich editor interface.
+			</p>
+		</noscript>
+	</div>
+	<form action="sample_posteddata.php" method="post">
+		<p>
+			<label for="editor1">
+				Editor 1:</label>
+			<textarea cols="80" id="editor1" name="editor1" rows="10">This is some [b]sample text[/b]. You are using [url=http://ckeditor.com/]CKEditor[/url].</textarea>
+			<script type="text/javascript">
+			//<![CDATA[
+
+			// Replace the <textarea id="editor"> with an CKEditor
+			// instance, using the "bbcode" plugin, shaping some of the
+			// editor configuration to fit BBCode environment.
+			CKEDITOR.replace( 'editor1',
+				{
+					extraPlugins : 'bbcode',
+					// Remove unused plugins.
+					removePlugins : 'bidi,button,dialogadvtab,div,filebrowser,flash,format,forms,horizontalrule,iframe,indent,justify,liststyle,pagebreak,showborders,stylescombo,table,tabletools,templates',
+					// Width and height are not supported in the BBCode format, so object resizing is disabled.
+					disableObjectResizing : true,
+					// Define font sizes in percent values.
+					fontSize_sizes : "30/30%;50/50%;100/100%;120/120%;150/150%;200/200%;300/300%",
+					toolbar :
+					[
+						['Source', '-', 'Save','NewPage','-','Undo','Redo'],
+						['Find','Replace','-','SelectAll','RemoveFormat'],
+						['Link', 'Unlink', 'Image', 'Smiley','SpecialChar'],
+						'/',
+						['Bold', 'Italic','Underline'],
+						['FontSize'],
+						['TextColor'],
+						['NumberedList','BulletedList','-','Blockquote'],
+						['Maximize']
+					],
+					// Strip CKEditor smileys to those commonly used in BBCode.
+					smiley_images :
+					[
+						'regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','tounge_smile.gif',
+						'embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angel_smile.gif','shades_smile.gif',
+						'cry_smile.gif','kiss.gif'
+					],
+					smiley_descriptions :
+					[
+						'smiley', 'sad', 'wink', 'laugh', 'cheeky', 'blush', 'surprise',
+						'indecision', 'angel', 'cool', 'crying', 'kiss'
+					]
+			} );
+
+			//]]>
+			</script>
+		</p>
+		<p>
+			<input type="submit" value="Submit" />
+		</p>
+	</form>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2011, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: CKEditor/trunk/_samples/devtools.html
===================================================================
--- CKEditor/trunk/_samples/devtools.html	(revision 6904)
+++ CKEditor/trunk/_samples/devtools.html	(revision 6904)
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Using DevTools Plugin &mdash; CKEditor Sample</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type" />
+	<!-- CKReleaser %REMOVE_LINE%
+	<script type="text/javascript" src="../ckeditor.js"></script>
+	CKReleaser %REMOVE_START% -->
+	<script type="text/javascript" src="../ckeditor_source.js"></script>
+	<!-- CKReleaser %REMOVE_END% -->
+	<script src="sample.js" type="text/javascript"></script>
+	<link href="sample.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+	<h1 class="samples">
+		CKEditor Sample &mdash; Using the Developer Tools Plugin
+	</h1>
+	<div class="description">
+	<p>
+		This sample shows how to configure CKEditor instances to use the
+		<strong>Developer Tools</strong> (<code>devtools</code>) plugin that displays
+		information about dialog window elements, including the name of the dialog window,
+		tab, and UI element. Please note that the tooltip also contains a link to the
+		<a href="http://docs.cksource.com/ckeditor_api/">CKEditor JavaScript API</a>
+		documentation for each of the selected elements.
+	</p>
+	<p>
+		This plugin is aimed at developers who would like to customize their CKEditor
+		instances and create their own plugins. By default it is turned off; it is
+		usually useful to only turn it on in the development phase. Note that it works with
+		all CKEditor dialog windows, including the ones that were created by custom plugins.
+	</p>
+	<p>
+		To add a CKEditor instance using the <strong>devtools</strong> plugin, insert
+		the following JavaScript call into your code:
+	</p>
+	<pre class="samples">CKEDITOR.replace( '<em>textarea_id</em>',
+	{
+		<strong>extraPlugins : 'devtools'</strong>
+	});</pre>
+	<p>
+		Note that <code><em>textarea_id</em></code> in the code above is the <code>id</code> attribute of
+		the <code>&lt;textarea&gt;</code> element to be replaced with CKEditor.
+	</p>
+	</div>
+
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
+			<p>
+				<strong>CKEditor requires JavaScript to run</strong>. In a browser with no JavaScript
+				support, like yours, you should still see the contents (HTML data) and you should
+				be able to edit it normally, without a rich editor interface.
+			</p>
+		</noscript>
+	</div>
+	<form action="sample_posteddata.php" method="post">
+		<p>
+			<label for="editor1">
+				Editor 1:</label>
+			<textarea cols="80" id="editor1" name="editor1" rows="10">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://ckeditor.com/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
+			<script type="text/javascript">
+			//<![CDATA[
+
+				// This call can be placed at any point after the
+				// <textarea>, or inside a <head><script> in a
+				// window.onload event handler.
+
+				// Replace the <textarea id="editor"> with an CKEditor
+				// instance, using default configurations.
+				CKEDITOR.replace( 'editor1' ,
+				{
+					extraPlugins : 'devtools'
+				});
+
+			//]]>
+			</script>
+		</p>
+		<p>
+			<input type="submit" value="Submit" />
+		</p>
+	</form>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2011, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: CKEditor/trunk/_samples/fullpage.html
===================================================================
--- CKEditor/trunk/_samples/fullpage.html	(revision 6896)
+++ CKEditor/trunk/_samples/fullpage.html	(revision 6904)
@@ -6,5 +6,5 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>Full Page Editing &mdash; CKEditor Sample</title>
+	<title>Full Page Editing with Document Properties Plugin &mdash; CKEditor Sample</title>
 	<meta content="text/html; charset=utf-8" http-equiv="content-type" />
 	<!-- CKReleaser %REMOVE_LINE%
@@ -18,5 +18,5 @@
 <body>
 	<h1 class="samples">
-		CKEditor Sample &mdash; Full Page Editing
+		CKEditor Sample &mdash; Full Page Editing with Document Properties Plugin
 	</h1>
 	<div class="description">
@@ -26,9 +26,15 @@
 	</p>
 	<p>
-		CKEditor is inserted with a JavaScript call using the following code:
+		The <strong>Document Properties</strong> (<code>docprops</code>) plugin is also turned on.
+		This plugin allows you to set the metadata of the page, including the page encoding, margins,
+		meta tags, or background.
+	</p>
+	<p>
+		The CKEditor instance below is inserted with a JavaScript call using the following code:
 	</p>
 	<pre class="samples">CKEDITOR.replace( '<em>textarea_id</em>',
 	{
-		<strong>fullPage : true</strong>
+		<strong>fullPage : true,
+		extraPlugins : 'docprops'</strong>
 	});</pre>
 	<p>
@@ -50,5 +56,5 @@
 	<form action="sample_posteddata.php" method="post">
 			<label for="editor1">
-				Editor 1:</label>
+				CKEditor using the <code>docprops</code> plugin and working in the Full Page mode:</label>
 			<textarea cols="80" id="editor1" name="editor1" rows="10">&lt;html&gt;&lt;head&gt;&lt;title&gt;CKEditor Sample&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://ckeditor.com/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</textarea>
 			<script type="text/javascript">
@@ -57,5 +63,6 @@
 				CKEDITOR.replace( 'editor1',
 					{
-						fullPage : true
+						fullPage : true,
+						extraPlugins : 'docprops'
 					});
 
Index: CKEditor/trunk/_samples/index.html
===================================================================
--- CKEditor/trunk/_samples/index.html	(revision 6896)
+++ CKEditor/trunk/_samples/index.html	(revision 6904)
@@ -25,5 +25,5 @@
 			Replacement of textarea elements with CKEditor instances by using a JavaScript call.
 		</li>
-		<li><a class="samples" href="fullpage.html">Full page support</a><br />
+		<li><a class="samples" href="fullpage.html">Full page support with the Document Properties plugin</a><br />
 			CKEditor inserted with a JavaScript call and used to edit the whole page from <code>&lt;html&gt;</code> to <code>&lt;/html&gt;</code>.
 		</li>
@@ -41,7 +41,4 @@
 		<li><a class="samples" href="ui_languages.html">User Interface languages</a><br />
 			Changing CKEditor User Interface language and adding a drop-down list that lets the user choose the UI language.
-		</li>
-		<li><a class="samples" href="autogrow.html">AutoGrow plugin</a><br />
-			Using the AutoGrow plugin in order to make the editor grow to fit the size of its content.
 		</li>
 	</ul>
@@ -80,6 +77,29 @@
 			Configuring CKEditor to produce HTML code that can be used with Adobe Flash.
 		</li>
+		<li><a class="samples" href="readonly.html">Read-only mode</a><br />
+			Using the readOnly API to block introducing changes to the editor contents.
+		</li>
+	</ul>
+	<h2 class="samples">
+		Additional plugins
+	</h2>
+	<ul class="samples">
+		<li><a class="samples" href="autogrow.html">AutoGrow plugin</a><br />
+			Using the AutoGrow plugin in order to make the editor grow to fit the size of its content.
+		</li>
+		<li><a class="samples" href="bbcode.html">Output for BBCode</a><br />
+			Configuring CKEditor to produce BBCode tags instead of HTML.
+		</li>
+		<li><a class="samples" href="stylesheetparser.html">Stylesheet Parser plugin</a><br />
+			Using the Stylesheet Parser plugin to fill the Styles drop-down list based on the CSS classes available in the document stylesheet.
+		</li>
+		<li><a class="samples" href="devtools.html">Developer Tools plugin</a><br />
+			Using the Developer Tools plugin to display information about dialog window UI elements to allow for easier customization.
+		</li>
 		<li><a class="samples" href="placeholder.html">Placeholder plugin</a><br />
 			Using the Placeholder plugin to create uneditable sections that can only be created and modified with a proper dialog window.
+		</li>
+		<li><a class="samples" href="tableresize.html">TableResize plugin</a><br />
+			Using the TableResize plugin to enable table column resizing.
 		</li>
 	</ul>
Index: CKEditor/trunk/_samples/output_for_flash.html
===================================================================
--- CKEditor/trunk/_samples/output_for_flash.html	(revision 6896)
+++ CKEditor/trunk/_samples/output_for_flash.html	(revision 6904)
@@ -89,5 +89,6 @@
 								['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
 								'/',
-								['Font','FontSize','-','TextColor','-','About']
+								['Font','FontSize'],
+								['TextColor','-','About']
 							],
 
Index: CKEditor/trunk/_samples/readonly.html
===================================================================
--- CKEditor/trunk/_samples/readonly.html	(revision 6904)
+++ CKEditor/trunk/_samples/readonly.html	(revision 6904)
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Read-only State &mdash; CKEditor Sample</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type" />
+	<!-- CKReleaser %REMOVE_LINE%
+	<script type="text/javascript" src="../ckeditor.js"></script>
+	CKReleaser %REMOVE_START% -->
+	<script type="text/javascript" src="../ckeditor_source.js"></script>
+	<!-- CKReleaser %REMOVE_END% -->
+	<script src="sample.js" type="text/javascript"></script>
+	<link href="sample.css" rel="stylesheet" type="text/css" />
+	<script type="text/javascript">
+	//<![CDATA[
+
+var editor;
+
+// The instanceReady event is fired, when an instance of CKEditor has finished
+// its initialization.
+CKEDITOR.on( 'instanceReady', function( ev )
+	{
+		editor = ev.editor;
+
+		// Show this "on" button.
+		document.getElementById( 'readOnlyOn' ).style.display = '';
+
+		// Event fired when the readOnly property changes.
+		editor.on( 'readOnly', function()
+			{
+				document.getElementById( 'readOnlyOn' ).style.display = this.readOnly ? 'none' : '';
+				document.getElementById( 'readOnlyOff' ).style.display = this.readOnly ? '' : 'none';
+			});
+	});
+
+function toggleReadOnly( makeEditable )
+{
+	// Change the read-only state of the editor.
+	// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#setReadOnly
+	editor.setReadOnly( makeEditable );
+}
+
+	//]]>
+	</script>
+
+</head>
+<body>
+	<h1 class="samples">
+		CKEditor Sample &mdash; Using the CKEditor Read-Only API
+	</h1>
+	<div class="description">
+	<p>
+		This sample shows how to use the
+		<code><a class="samples" href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#setReadOnly">setReadOnly</a></code>
+		API to put editor into the read-only state that makes it impossible for users to change the editor contents.
+	</p>
+	<p>
+		For details on how to create this setup check the source code of this sample page.
+	</p>
+	</div>
+
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
+			<p>
+				<strong>CKEditor requires JavaScript to run</strong>. In a browser with no JavaScript
+				support, like yours, you should still see the contents (HTML data) and you should
+				be able to edit it normally, without a rich editor interface.
+			</p>
+		</noscript>
+	</div>
+	<form action="sample_posteddata.php" method="post">
+		<p>
+			<textarea class="ckeditor" id="editor1" name="editor1" cols="100" rows="10">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://ckeditor.com/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
+		</p>
+		<p>
+			<input id="readOnlyOn" onclick="toggleReadOnly();" type="button" value="Make it read-only" style="display:none" />
+			<input id="readOnlyOff" onclick="toggleReadOnly( true );" type="button" value="Make it editable again" style="display:none" />
+		</p>
+	</form>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2011, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: CKEditor/trunk/_samples/stylesheetparser.html
===================================================================
--- CKEditor/trunk/_samples/stylesheetparser.html	(revision 6904)
+++ CKEditor/trunk/_samples/stylesheetparser.html	(revision 6904)
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Using Stylesheet Parser Plugin &mdash; CKEditor Sample</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type" />
+	<!-- CKReleaser %REMOVE_LINE%
+	<script type="text/javascript" src="../ckeditor.js"></script>
+	CKReleaser %REMOVE_START% -->
+	<script type="text/javascript" src="../ckeditor_source.js"></script>
+	<!-- CKReleaser %REMOVE_END% -->
+	<script src="sample.js" type="text/javascript"></script>
+	<link href="sample.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+	<h1 class="samples">
+		CKEditor Sample &mdash; Using the Stylesheet Parser Plugin
+	</h1>
+	<div class="description">
+	<p>
+		This sample shows how to configure CKEditor instances to use the
+		<strong>Stylesheet Parser</strong> (<code>stylesheetparser</code>) plugin that fills
+		the <strong>Styles</strong> drop-down list based on the CSS rules available in the document stylesheet.
+	</p>
+	<p>
+		To add a CKEditor instance using the <code>stylesheetparser</code> plugin, insert
+		the following JavaScript call into your code:
+	</p>
+	<pre class="samples">CKEDITOR.replace( '<em>textarea_id</em>',
+	{
+		<strong>extraPlugins : 'stylesheetparser'</strong>
+	});</pre>
+	<p>
+		Note that <code><em>textarea_id</em></code> in the code above is the <code>id</code> attribute of
+		the <code>&lt;textarea&gt;</code> element to be replaced with CKEditor.
+	</p>
+	</div>
+
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
+			<p>
+				<strong>CKEditor requires JavaScript to run</strong>. In a browser with no JavaScript
+				support, like yours, you should still see the contents (HTML data) and you should
+				be able to edit it normally, without a rich editor interface.
+			</p>
+		</noscript>
+	</div>
+	<form action="sample_posteddata.php" method="post">
+		<p>
+			<label for="editor1">
+				CKEditor using the <code>stylesheetparser</code> plugin with its default configuration:</label>
+			<textarea cols="80" id="editor1" name="editor1" rows="10">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://ckeditor.com/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
+			<script type="text/javascript">
+			//<![CDATA[
+
+				// This call can be placed at any point after the
+				// <textarea>, or inside a <head><script> in a
+				// window.onload event handler.
+
+				// Replace the <textarea id="editor"> with an CKEditor
+				// instance, using default configurations.
+				CKEDITOR.replace( 'editor1' ,
+				{
+					extraPlugins : 'stylesheetparser',
+					/*
+					 * Stylesheet for the contents.
+					 */
+					contentsCss : 'assets/parsesample.css',
+					/*
+					 *  Do not load the default Styles configuration.
+					 */
+					stylesSet : []
+				});
+
+			//]]>
+			</script>
+		</p>
+		<p>
+			<input type="submit" value="Submit" />
+		</p>
+	</form>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2011, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: CKEditor/trunk/_samples/tableresize.html
===================================================================
--- CKEditor/trunk/_samples/tableresize.html	(revision 6904)
+++ CKEditor/trunk/_samples/tableresize.html	(revision 6904)
@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Using TableResize Plugin &mdash; CKEditor Sample</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type" />
+	<!-- CKReleaser %REMOVE_LINE%
+	<script type="text/javascript" src="../ckeditor.js"></script>
+	CKReleaser %REMOVE_START% -->
+	<script type="text/javascript" src="../ckeditor_source.js"></script>
+	<!-- CKReleaser %REMOVE_END% -->
+	<script src="sample.js" type="text/javascript"></script>
+	<link href="sample.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+	<h1 class="samples">
+		CKEditor Sample &mdash; Using the TableResize Plugin
+	</h1>
+	<div class="description">
+	<p>
+		This sample shows how to configure CKEditor instances to use the
+		<strong>TableResize</strong> (<code>tableresize</code>) plugin that allows
+		the user to edit table columns by using the mouse.
+	</p>
+	<p>
+		The TableResize plugin makes it possible to modify table column width. Hover
+		your mouse over the column border to see the cursor change to indicate that
+		the column can be resized. Click and drag your mouse to set the desired width.
+	</p>
+	<p>
+		By default the plugin is turned off. To add a CKEditor instance using the
+		TableResize plugin, insert the following JavaScript call into your code:
+	</p>
+	<pre class="samples">CKEDITOR.replace( '<em>textarea_id</em>',
+	{
+		<strong>extraPlugins : 'tableresize'</strong>
+	});</pre>
+	<p>
+		Note that <code><em>textarea_id</em></code> in the code above is the <code>id</code> attribute of
+		the <code>&lt;textarea&gt;</code> element to be replaced with CKEditor.
+	</p>
+	</div>
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
+			<p>
+				<strong>CKEditor requires JavaScript to run</strong>. In a browser with no JavaScript
+				support, like yours, you should still see the contents (HTML data) and you should
+				be able to edit it normally, without a rich editor interface.
+			</p>
+		</noscript>
+	</div>
+	<form action="sample_posteddata.php" method="post">
+		<p>
+			<label for="editor1">
+				CKEditor using the <code>tableresize</code> plugin:</label>
+			<textarea cols="80" id="editor1" name="editor1" rows="10">
+&lt;table style="width: 500px;"&gt;
+	&lt;caption&gt;
+		A sample table&lt;/caption&gt;
+	&lt;tbody&gt;
+		&lt;tr&gt;
+			&lt;td&gt;
+				Column 1&lt;/td&gt;
+			&lt;td&gt;
+				Column 2&lt;/td&gt;
+		&lt;/tr&gt;
+		&lt;tr&gt;
+			&lt;td&gt;
+				You can resize a table column.&lt;/td&gt;
+			&lt;td&gt;
+				Hover your mouse over its border.&lt;/td&gt;
+		&lt;/tr&gt;
+		&lt;tr&gt;
+			&lt;td&gt;
+				Watch the cursor change.&lt;/td&gt;
+			&lt;td&gt;
+				Now click and drag to resize.&lt;/td&gt;
+		&lt;/tr&gt;
+	&lt;/tbody&gt;
+&lt;/table&gt;
+
+
+			</textarea>
+			<script type="text/javascript">
+			//<![CDATA[
+
+				// This call can be placed at any point after the
+				// <textarea>, or inside a <head><script> in a
+				// window.onload event handler.
+
+				// Replace the <textarea id="editor"> with an CKEditor
+				// instance, using default configurations.
+				CKEDITOR.replace( 'editor1', {
+					extraPlugins : 'tableresize'
+				});
+
+			//]]>
+			</script>
+		</p>
+		<p>
+			<input type="submit" value="Submit" />
+		</p>
+	</form>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2011, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: CKEditor/trunk/_source/core/dom/element.js
===================================================================
--- CKEditor/trunk/_source/core/dom/element.js	(revision 6896)
+++ CKEditor/trunk/_source/core/dom/element.js	(revision 6904)
@@ -430,4 +430,11 @@
 							break;
 
+						case 'http-equiv':
+							name = 'httpEquiv';
+							break;
+
+						case 'name':
+							return this.$.name;
+
 						case 'tabindex':
 							var tabIndex = standard.call( this, name );
@@ -715,4 +722,7 @@
 		isEditable : function()
 		{
+			if ( this.isReadOnly() )
+				return false;
+
 			// Get the element name.
 			var name = this.getName();
@@ -885,9 +895,26 @@
 		 * @example
 		 */
-		hasAttribute : function( name )
-		{
-			var $attr = this.$.attributes.getNamedItem( name );
-			return !!( $attr && $attr.specified );
-		},
+		hasAttribute : (function()
+		{
+			function standard( name )
+			{
+				var $attr = this.$.attributes.getNamedItem( name );
+				return !!( $attr && $attr.specified );
+			}
+
+			return ( CKEDITOR.env.ie && CKEDITOR.env.version < 8 ) ?
+					function( name )
+					{
+						// On IE < 8 the name attribute cannot be retrieved
+						// right after the element creation and setting the
+						// name with setAttribute.
+						if ( name == 'name' )
+							return !!this.$.name;
+
+						return standard.call( this, name );
+					}
+				:
+					standard;
+		})(),
 
 		/**
Index: CKEditor/trunk/_source/core/dom/range.js
===================================================================
--- CKEditor/trunk/_source/core/dom/range.js	(revision 6896)
+++ CKEditor/trunk/_source/core/dom/range.js	(revision 6904)
@@ -360,5 +360,5 @@
 			{
 				// If there's any visible text, then we're not at the start.
-				if ( CKEDITOR.tools.trim( node.getText() ).length )
+				if ( node.hasAscendant( 'pre' ) || CKEDITOR.tools.trim( node.getText() ).length )
 					return false;
 			}
@@ -1871,5 +1871,5 @@
 						}
 						// Range enclosed entirely in an editable element.
-						else if ( node.is( 'body' )
+						else if ( node.is( 'html' )
 							|| node.getAttribute( 'contentEditable' ) == 'true'
 							&& ( node.contains( anotherEnd ) || node.equals( anotherEnd ) ) )
Index: CKEditor/trunk/_source/core/editor.js
===================================================================
--- CKEditor/trunk/_source/core/editor.js	(revision 6896)
+++ CKEditor/trunk/_source/core/editor.js	(revision 6904)
@@ -160,4 +160,13 @@
 		 */
 		editor.tabIndex = editor.config.tabIndex || editor.element.getAttribute( 'tabindex' ) || 0;
+
+		/**
+		 * Indicates the read-only state of this editor. This is a read-only property.
+		 * @name CKEDITOR.editor.prototype.readOnly
+		 * @type Boolean
+		 * @since 3.6
+		 * @see CKEDITOR.editor#setReadOnly
+		 */
+		editor.readOnly = !!( editor.config.readOnly || editor.element.getAttribute( 'disabled' ) );
 
 		// Fire the "configLoaded" event.
@@ -395,5 +404,5 @@
 	};
 
-	function updateCommandsMode()
+	function updateCommands()
 	{
 		var command,
@@ -401,8 +410,12 @@
 			mode = this.mode;
 
+		if ( !mode )
+			return;
+
 		for ( var name in commands )
 		{
 			command = commands[ name ];
-			command[ command.startDisabled ? 'disable' : command.modes[ mode ] ? 'enable' : 'disable' ]();
+			command[ command.startDisabled ? 'disable' :
+					 this.readOnly && !command.readOnly ? 'disable' : command.modes[ mode ] ? 'enable' : 'disable' ]();
 		}
 	}
@@ -492,5 +505,6 @@
 			CKEDITOR.fire( 'instanceCreated', null, this );
 
-			this.on( 'mode', updateCommandsMode, null, null, 1 );
+			this.on( 'mode', updateCommands, null, null, 1 );
+			this.on( 'readOnly', updateCommands, null, null, 1 );
 
 			initConfig( this, instanceConfig );
@@ -712,4 +726,26 @@
 
 			!internal && this.fire( 'afterSetData', eventData );
+		},
+
+		/**
+		 * Puts or restores the editor into read-only state. When in read-only,
+		 * the user is not able to change the editor contents, but still use
+		 * some editor features. This function sets the readOnly property of
+		 * the editor, firing the "readOnly" event.<br><br>
+		 * <strong>Note:</strong> the current editing area will be reloaded.
+		 * @param {Boolean} [makeEditable] Indicates that the editor must be
+		 *		restored from read-only mode, making it editable.
+		 * @since 3.6
+		 */
+		setReadOnly : function( makeEditable )
+		{
+			if ( this.readOnly != !makeEditable )
+			{
+				this.readOnly = !makeEditable;
+
+				// Fire the readOnly event so the editor features can update
+				// their state accordingly.
+				this.fire( 'readOnly' );
+			}
 		},
 
@@ -842,4 +878,16 @@
 
 /**
+ * If "true", makes the editor start in read-only state. Otherwise, it'll check
+ * if the linked &lt;textarea&gt; has the "disabled" attribute.
+ * @name CKEDITOR.config.readOnly
+ * @see CKEDITOR.editor#setReadOnly
+ * @type Boolean
+ * @default false
+ * @since 3.6
+ * @example
+ * config.readOnly = true;
+ */
+
+/**
  * Fired when a CKEDITOR instance is created, but still before initializing it.
  * To interact with a fully initialized instance, use the
@@ -984,2 +1032,10 @@
  * @param {Object} element The element to insert.
  */
+
+/**
+ * Event fired after {@link CKEDITOR.editor#readOnly} property changes.
+ * @name CKEDITOR.editor#readOnly
+ * @event
+ * @since 3.6
+ * @param {CKEDITOR.editor} editor This editor instance.
+ */
Index: CKEditor/trunk/_source/core/lang.js
===================================================================
--- CKEditor/trunk/_source/core/lang.js	(revision 6896)
+++ CKEditor/trunk/_source/core/lang.js	(revision 6904)
@@ -54,4 +54,5 @@
 			'it'	: 1,
 			'ja'	: 1,
+			'ka'	: 1,
 			'km'	: 1,
 			'ko'	: 1,
Index: CKEditor/trunk/_source/core/ui.js
===================================================================
--- CKEditor/trunk/_source/core/ui.js	(revision 6896)
+++ CKEditor/trunk/_source/core/ui.js	(revision 6904)
@@ -72,4 +72,7 @@
 		var result = handler && handler.create.apply( this, item.args );
 
+		// Allow overrides from skin ui definitions..
+		item && ( result = CKEDITOR.tools.extend( result, this._.editor.skin[ item.type ], true ) );
+
 		// Add reference inside command object.
 		if ( command )
Index: CKEditor/trunk/_source/lang/_languages.js
===================================================================
--- CKEditor/trunk/_source/lang/_languages.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/_languages.js	(revision 6904)
@@ -41,4 +41,5 @@
 		it		: 'Italian',
 		ja		: 'Japanese',
+		ka		: 'Georgian',
 		km		: 'Khmer',
 		ko		: 'Korean',
Index: CKEditor/trunk/_source/lang/_translationstatus.txt
===================================================================
--- CKEditor/trunk/_source/lang/_translationstatus.txt	(revision 6896)
+++ CKEditor/trunk/_source/lang/_translationstatus.txt	(revision 6904)
@@ -2,59 +2,60 @@
 For licensing, see LICENSE.html or http://ckeditor.com/license
 
-af.js      Found: 521 Missing: 1
-ar.js      Found: 435 Missing: 87
-bg.js      Found: 268 Missing: 254
-bn.js      Found: 269 Missing: 253
-bs.js      Found: 175 Missing: 347
-ca.js      Found: 521 Missing: 1
-cs.js      Found: 520 Missing: 2
-cy.js      Found: 435 Missing: 87
-da.js      Found: 388 Missing: 134
-de.js      Found: 522 Missing: 0
-el.js      Found: 274 Missing: 248
-en-au.js   Found: 345 Missing: 177
-en-ca.js   Found: 345 Missing: 177
-en-gb.js   Found: 520 Missing: 2
-eo.js      Found: 247 Missing: 275
-es.js      Found: 522 Missing: 0
-et.js      Found: 289 Missing: 233
-eu.js      Found: 387 Missing: 135
-fa.js      Found: 290 Missing: 232
-fi.js      Found: 522 Missing: 0
-fo.js      Found: 521 Missing: 1
-fr-ca.js   Found: 289 Missing: 233
-fr.js      Found: 522 Missing: 0
-gl.js      Found: 271 Missing: 251
-gu.js      Found: 288 Missing: 234
-he.js      Found: 522 Missing: 0
-hi.js      Found: 290 Missing: 232
-hr.js      Found: 388 Missing: 134
-hu.js      Found: 512 Missing: 10
-is.js      Found: 295 Missing: 227
-it.js      Found: 388 Missing: 134
-ja.js      Found: 471 Missing: 51
-km.js      Found: 263 Missing: 259
-ko.js      Found: 281 Missing: 241
-lt.js      Found: 294 Missing: 228
-lv.js      Found: 271 Missing: 251
-mn.js      Found: 288 Missing: 234
-ms.js      Found: 253 Missing: 269
-nb.js      Found: 521 Missing: 1
-nl.js      Found: 513 Missing: 9
-no.js      Found: 521 Missing: 1
-pl.js      Found: 522 Missing: 0
-pt-br.js   Found: 506 Missing: 16
-pt.js      Found: 270 Missing: 252
-ro.js      Found: 289 Missing: 233
-ru.js      Found: 451 Missing: 71
-sk.js      Found: 334 Missing: 188
-sl.js      Found: 394 Missing: 128
-sr-latn.js Found: 264 Missing: 258
-sr.js      Found: 263 Missing: 259
-sv.js      Found: 521 Missing: 1
-th.js      Found: 275 Missing: 247
-tr.js      Found: 506 Missing: 16
-uk.js      Found: 513 Missing: 9
-vi.js      Found: 463 Missing: 59
-zh-cn.js   Found: 518 Missing: 4
-zh.js      Found: 388 Missing: 134
+af.js      Found: 520 Missing: 51
+ar.js      Found: 435 Missing: 136
+bg.js      Found: 268 Missing: 303
+bn.js      Found: 269 Missing: 302
+bs.js      Found: 175 Missing: 396
+ca.js      Found: 520 Missing: 51
+cs.js      Found: 519 Missing: 52
+cy.js      Found: 435 Missing: 136
+da.js      Found: 388 Missing: 183
+de.js      Found: 521 Missing: 50
+el.js      Found: 274 Missing: 297
+en-au.js   Found: 345 Missing: 226
+en-ca.js   Found: 345 Missing: 226
+en-gb.js   Found: 519 Missing: 52
+eo.js      Found: 247 Missing: 324
+es.js      Found: 571 Missing: 0
+et.js      Found: 289 Missing: 282
+eu.js      Found: 387 Missing: 184
+fa.js      Found: 290 Missing: 281
+fi.js      Found: 521 Missing: 50
+fo.js      Found: 520 Missing: 51
+fr-ca.js   Found: 289 Missing: 282
+fr.js      Found: 521 Missing: 50
+gl.js      Found: 271 Missing: 300
+gu.js      Found: 288 Missing: 283
+he.js      Found: 571 Missing: 0
+hi.js      Found: 290 Missing: 281
+hr.js      Found: 388 Missing: 183
+hu.js      Found: 511 Missing: 60
+is.js      Found: 295 Missing: 276
+it.js      Found: 388 Missing: 183
+ja.js      Found: 470 Missing: 101
+ka.js      Found: 570 Missing: 1
+km.js      Found: 263 Missing: 308
+ko.js      Found: 281 Missing: 290
+lt.js      Found: 294 Missing: 277
+lv.js      Found: 271 Missing: 300
+mn.js      Found: 288 Missing: 283
+ms.js      Found: 253 Missing: 318
+nb.js      Found: 520 Missing: 51
+nl.js      Found: 512 Missing: 59
+no.js      Found: 520 Missing: 51
+pl.js      Found: 571 Missing: 0
+pt-br.js   Found: 505 Missing: 66
+pt.js      Found: 270 Missing: 301
+ro.js      Found: 289 Missing: 282
+ru.js      Found: 451 Missing: 120
+sk.js      Found: 334 Missing: 237
+sl.js      Found: 394 Missing: 177
+sr-latn.js Found: 264 Missing: 307
+sr.js      Found: 263 Missing: 308
+sv.js      Found: 520 Missing: 51
+th.js      Found: 275 Missing: 296
+tr.js      Found: 505 Missing: 66
+uk.js      Found: 512 Missing: 59
+vi.js      Found: 462 Missing: 109
+zh-cn.js   Found: 517 Missing: 54
+zh.js      Found: 388 Missing: 183
Index: CKEditor/trunk/_source/lang/af.js
===================================================================
--- CKEditor/trunk/_source/lang/af.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/af.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Werkbalk',
-	editor	: 'Teksverwerker',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Teksverwerker',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'Info oor CKEditor',
 		dlgTitle	: 'Info oor CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Vir lisensie-informasie, besoek asb. ons webwerf:',
 		copy		: 'Kopiereg &copy; $1. Alle regte voorbehou.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Vergroot werkbalk',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Skryfrigting van links na regs',
 		rtl : 'Skryfrigting van regs na links'
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/ar.js
===================================================================
--- CKEditor/trunk/_source/lang/ar.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/ar.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'عن CKEditor',
 		dlgTitle	: 'عن CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'للحصول على معلومات الترخيص ، يرجى زيارة موقعنا على شبكة الانترنت:',
 		copy		: 'حقوق النشر &copy; $1. جميع الحقوق محفوظة.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/bg.js
===================================================================
--- CKEditor/trunk/_source/lang/bg.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/bg.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/bn.js
===================================================================
--- CKEditor/trunk/_source/lang/bn.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/bn.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/bs.js
===================================================================
--- CKEditor/trunk/_source/lang/bs.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/bs.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/ca.js
===================================================================
--- CKEditor/trunk/_source/lang/ca.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/ca.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Barra d\'eines',
-	editor	: 'Editor de text enriquit',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Editor de text enriquit',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'Quant al CKEditor',
 		dlgTitle	: 'Quant al CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Per informació sobre llicències visiteu el web:',
 		copy		: 'Copyright &copy; $1. Tots els drets reservats.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Amplia la barra d\'eines',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Direcció del text d\'esquerra a dreta',
 		rtl : 'Direcció del text de dreta a esquerra'
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/cs.js
===================================================================
--- CKEditor/trunk/_source/lang/cs.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/cs.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Panel nástrojů',
-	editor	: 'Textový editor',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Textový editor',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'O aplikaci CKEditor',
 		dlgTitle	: 'O aplikaci CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Pro informace o lincenci navštivte naši webovou stránku:',
 		copy		: 'Copyright &copy; $1. All rights reserved.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Zobrazit panel nástrojů',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Orientace textu zleva doprava',
 		rtl : 'Orientace textu zprava do leva'
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/cy.js
===================================================================
--- CKEditor/trunk/_source/lang/cy.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/cy.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'Ynghylch CKEditor',
 		dlgTitle	: 'Ynghylch CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Am wybodaeth ynghylch trwyddedau, ewch i\'n gwefan:',
 		copy		: 'Hawlfraint &copy; $1. Cedwir pob hawl.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Ehangu\'r Bar Offer',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/da.js
===================================================================
--- CKEditor/trunk/_source/lang/da.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/da.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'Om CKEditor',
 		dlgTitle	: 'Om CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For informationer omkring licens, se venligst vores hjemmeside (på engelsk):',
 		copy		: 'Copyright &copy; $1. Alle rettigheder forbeholdes.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/de.js
===================================================================
--- CKEditor/trunk/_source/lang/de.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/de.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Symbolleiste',
-	editor	: 'WYSIWYG-Editor',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'WYSIWYG-Editor',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'Über CKEditor',
 		dlgTitle	: 'Über CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Für Informationen über unsere Lizenzbestimmungen besuchen sie bitte unsere Webseite:',
 		copy		: 'Copyright &copy; $1. Alle Rechte vorbehalten.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Symbolleiste ausklappen',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Leserichtung von Links nach Rechts',
 		rtl : 'Leserichtung von Rechts nach Links'
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/el.js
===================================================================
--- CKEditor/trunk/_source/lang/el.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/el.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/en-au.js
===================================================================
--- CKEditor/trunk/_source/lang/en-au.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/en-au.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor',
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:',
 		copy		: 'Copyright &copy; $1. All rights reserved.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/en-ca.js
===================================================================
--- CKEditor/trunk/_source/lang/en-ca.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/en-ca.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor',
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:',
 		copy		: 'Copyright &copy; $1. All rights reserved.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/en-gb.js
===================================================================
--- CKEditor/trunk/_source/lang/en-gb.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/en-gb.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar',
-	editor	: 'Rich Text Editor',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor',
 		dlgTitle	: 'About CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:',
 		copy		: 'Copyright &copy; $1. All rights reserved.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right',
 		rtl : 'Text direction from right to left'
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/en.js
===================================================================
--- CKEditor/trunk/_source/lang/en.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/en.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar',
-	editor	: 'Rich Text Editor',
+	toolbars	: 'Editor toolbars',
+	editor		: 'Rich Text Editor',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor',
 		dlgTitle	: 'About CKEditor',
+		help	: 'Check $1 for help.',
+		userGuide : 'CKEditor User\'s Guide',
 		moreInfo	: 'For licensing information please visit our web site:',
 		copy		: 'Copyright &copy; $1. All rights reserved.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar',
 
+	toolbarGroups :
+	{
+		document : 'Document',
+		clipboard : 'Clipboard/Undo',
+		editing : 'Editing',
+		forms : 'Forms',
+		basicstyles : 'Basic Styles',
+		paragraph : 'Paragraph',
+		links : 'Links',
+		insert : 'Insert',
+		styles : 'Styles',
+		colors : 'Colors',
+		tools : 'Tools'
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right',
 		rtl : 'Text direction from right to left'
+	},
+
+	docprops :
+	{
+		label : 'Document Properties',
+		title : 'Document Properties',
+		design : 'Design',
+		meta : 'Meta Tags',
+		chooseColor : 'Choose',
+		other : 'Other...',
+		docTitle :	'Page Title',
+		charset : 	'Character Set Encoding',
+		charsetOther : 'Other Character Set Encoding',
+		charsetASCII : 'ASCII',
+		charsetCE : 'Central European',
+		charsetCT : 'Chinese Traditional (Big5)',
+		charsetCR : 'Cyrillic',
+		charsetGR : 'Greek',
+		charsetJP : 'Japanese',
+		charsetKR : 'Korean',
+		charsetTR : 'Turkish',
+		charsetUN : 'Unicode (UTF-8)',
+		charsetWE : 'Western European',
+		docType : 'Document Type Heading',
+		docTypeOther : 'Other Document Type Heading',
+		xhtmlDec : 'Include XHTML Declarations',
+		bgColor : 'Background Color',
+		bgImage : 'Background Image URL',
+		bgFixed : 'Non-scrolling (Fixed) Background',
+		txtColor : 'Text Color',
+		margin : 'Page Margins',
+		marginTop : 'Top',
+		marginLeft : 'Left',
+		marginRight : 'Right',
+		marginBottom : 'Bottom',
+		metaKeywords : 'Document Indexing Keywords (comma separated)',
+		metaDescription : 'Document Description',
+		metaAuthor : 'Author',
+		metaCopyright : 'Copyright',
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>'
 	}
 };
Index: CKEditor/trunk/_source/lang/eo.js
===================================================================
--- CKEditor/trunk/_source/lang/eo.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/eo.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/es.js
===================================================================
--- CKEditor/trunk/_source/lang/es.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/es.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Barra de herramientas',
-	editor	: 'Editor de texto enriquecido',
+	toolbars	: 'Barras de herramientas del editor',
+	editor		: 'Editor de texto enriquecido',
 
 	// Toolbar buttons without dialogs.
@@ -174,5 +174,5 @@
 		langDirLTR		: 'Izquierda a Derecha (LTR)',
 		langDirRTL		: 'Derecha a Izquierda (RTL)',
-		acccessKey		: 'Clave de Acceso',
+		acccessKey		: 'Tecla de Acceso',
 		name			: 'Nombre',
 		langCode			: 'Código idioma',
@@ -716,4 +716,6 @@
 		title		: 'Acerca de CKEditor',
 		dlgTitle	: 'Acerca de CKEditor',
+		help	: 'Lea la  $1 para resolver sus dudas.',
+		userGuide : 'Guía de usuario de CKEditor',
 		moreInfo	: 'Para información de licencia, por favor visite nuestro sitio web:',
 		copy		: 'Copyright &copy; $1. Todos los derechos reservados.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expandir barra de herramientas',
 
+	toolbarGroups :
+	{
+		document : 'Documento',
+		clipboard : 'Portapapeles/Deshacer',
+		editing : 'Edición',
+		forms : 'Formularios',
+		basicstyles : 'Estilos básicos',
+		paragraph : 'Párrafo',
+		links : 'Enlaces',
+		insert : 'Insertar',
+		styles : 'Estilos',
+		colors : 'Colores',
+		tools : 'Herramientas'
+	},
+
 	bidi :
 	{
 		ltr : 'Dirección del texto de izquierda a derecha',
 		rtl : 'Dirección del texto de derecha a izquierda'
+	},
+
+	docprops :
+	{
+		label : 'Propiedades del documento',
+		title : 'Propiedades del documento',
+		design : 'Diseño',
+		meta : 'Meta Tags',
+		chooseColor : 'Elegir',
+		other : 'Otro...',
+		docTitle :	'Título de página',
+		charset : 	'Codificación de caracteres',
+		charsetOther : 'Otra codificación de caracteres',
+		charsetASCII : 'ASCII',
+		charsetCE : 'Centro Europeo',
+		charsetCT : 'Chino Tradicional (Big5)',
+		charsetCR : 'Ruso',
+		charsetGR : 'Griego',
+		charsetJP : 'Japonés',
+		charsetKR : 'Koreano',
+		charsetTR : 'Turco',
+		charsetUN : 'Unicode (UTF-8)',
+		charsetWE : 'Europeo occidental',
+		docType : 'Tipo de documento',
+		docTypeOther : 'Otro tipo de documento',
+		xhtmlDec : 'Incluir declaración XHTML',
+		bgColor : 'Color de fondo',
+		bgImage : 'Imagen de fondo',
+		bgFixed : 'Fondo fijo (no se desplaza)',
+		txtColor : 'Color del texto',
+		margin : 'Márgenes',
+		marginTop : 'Superior',
+		marginLeft : 'Izquierdo',
+		marginRight : 'Derecho',
+		marginBottom : 'Inferior',
+		metaKeywords : 'Palabras claves del documento separadas por coma (meta keywords)',
+		metaDescription : 'Descripción del documento',
+		metaAuthor : 'Autor',
+		metaCopyright : 'Copyright',
+		previewHtml : '<p>Este es un <strong>texto de ejemplo</strong>. Usted está usando <a href="javascript:void(0)">CKEditor</a>.</p>'
 	}
 };
Index: CKEditor/trunk/_source/lang/et.js
===================================================================
--- CKEditor/trunk/_source/lang/et.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/et.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/eu.js
===================================================================
--- CKEditor/trunk/_source/lang/eu.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/eu.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'CKEditor(r)i buruz',
 		dlgTitle	: 'CKEditor(r)i buruz',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Lizentziari buruzko informazioa gure webgunean:',
 		copy		: 'Copyright &copy; $1. Eskubide guztiak erreserbaturik.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/fa.js
===================================================================
--- CKEditor/trunk/_source/lang/fa.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/fa.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/fi.js
===================================================================
--- CKEditor/trunk/_source/lang/fi.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/fi.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Työkalupalkki',
-	editor	: 'Rikastekstieditori',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rikastekstieditori',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'Tietoa CKEditorista',
 		dlgTitle	: 'Tietoa CKEditorista',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Lisenssitiedot löytyvät kotisivuiltamme:',
 		copy		: 'Copyright &copy; $1. Kaikki oikeuden pidätetään.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Laajenna työkalupalkki',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Tekstin suunta vasemmalta oikealle',
 		rtl : 'Tekstin suunta oikealta vasemmalle'
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/fo.js
===================================================================
--- CKEditor/trunk/_source/lang/fo.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/fo.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar',
-	editor	: 'Rich Text Editor',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'Um CKEditor',
 		dlgTitle	: 'Um CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Licens upplýsingar finnast á heimasíðu okkara:',
 		copy		: 'Copyright &copy; $1. All rights reserved.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Vís Toolbar',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Tekstkós frá vinstru til høgru',
 		rtl : 'Tekstkós frá høgru til vinstru'
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/fr-ca.js
===================================================================
--- CKEditor/trunk/_source/lang/fr-ca.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/fr-ca.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/fr.js
===================================================================
--- CKEditor/trunk/_source/lang/fr.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/fr.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Barre d\'outils',
-	editor	: 'Éditeur de Texte Enrichi',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Éditeur de Texte Enrichi',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'A propos de CKEditor',
 		dlgTitle	: 'A propos de CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Pour les informations de licence, veuillez visiter notre site web:',
 		copy		: 'Copyright &copy; $1. Tous droits réservés.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Dérouler la barre d\'outils',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Direction du texte de la gauche vers la droite',
 		rtl : 'Direction du texte de la droite vers la gauche'
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/gl.js
===================================================================
--- CKEditor/trunk/_source/lang/gl.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/gl.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/gu.js
===================================================================
--- CKEditor/trunk/_source/lang/gu.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/gu.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/he.js
===================================================================
--- CKEditor/trunk/_source/lang/he.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/he.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'סרגל הכלים',
-	editor	: 'עורך טקסט עשיר',
+	toolbars	: 'סרגלי כלים של העורך',
+	editor		: 'עורך טקסט עשיר',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'אודות CKEditor',
 		dlgTitle	: 'אודות CKEditor',
+		help	: 'היכנסו ל$1 לעזרה.',
+		userGuide : 'מדריך המשתמש של CKEditor',
 		moreInfo	: 'למידע נוסף בקרו באתרנו:',
 		copy		: 'Copyright &copy; $1. כל הזכויות שמורות.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'הרחבת סרגל כלים',
 
+	toolbarGroups :
+	{
+		document : 'מסמך',
+		clipboard : 'לוח הגזירים (Clipboard)/צעד אחרון',
+		editing : 'עריכה',
+		forms : 'טפסים',
+		basicstyles : 'עיצוב בסיסי',
+		paragraph : 'פסקה',
+		links : 'קישורים',
+		insert : 'הכנסה',
+		styles : 'עיצוב',
+		colors : 'צבעים',
+		tools : 'כלים'
+	},
+
 	bidi :
 	{
 		ltr : 'כיוון טקסט משמאל לימין (LTR)',
 		rtl : 'כיוון טקסט מימין לשמאל (RTL)'
+	},
+
+	docprops :
+	{
+		label : 'מאפייני מסמך',
+		title : 'מאפייני מסמך',
+		design : 'עיצוב',
+		meta : 'תגי Meta',
+		chooseColor : 'בחירה',
+		other : 'אחר...',
+		docTitle :	'כותרת עמוד',
+		charset : 	'קידוד תווים',
+		charsetOther : 'קידוד תווים אחר',
+		charsetASCII : 'ASCII',
+		charsetCE : 'מרכז אירופאי',
+		charsetCT : 'סיני מסורתי (Big5)',
+		charsetCR : 'קירילי',
+		charsetGR : 'יווני',
+		charsetJP : 'יפני',
+		charsetKR : 'קוריאני',
+		charsetTR : 'טורקי',
+		charsetUN : 'יוניקוד (UTF-8)',
+		charsetWE : 'מערב אירופאי',
+		docType : 'כותר סוג מסמך',
+		docTypeOther : 'כותר סוג מסמך אחר',
+		xhtmlDec : 'כלול הכרזות XHTML',
+		bgColor : 'צבע רקע',
+		bgImage : 'כתובת של תמונת רקע',
+		bgFixed : 'רקע לא נגלל (צמוד)',
+		txtColor : 'צבע טקסט',
+		margin : 'מרווחי עמוד',
+		marginTop : 'עליון',
+		marginLeft : 'שמאלי',
+		marginRight : 'ימני',
+		marginBottom : 'תחתון',
+		metaKeywords : 'מילות מפתח של המסמך (מופרדות בפסיק)',
+		metaDescription : 'תיאור המסמך',
+		metaAuthor : 'מחבר/ת',
+		metaCopyright : 'זכויות יוצרים',
+		previewHtml : '<p>זהו <strong>טקסט הדגמה</strong>. את/ה משתמש/ת ב<a href="javascript:void(0)">CKEditor</a>.</p>'
 	}
 };
Index: CKEditor/trunk/_source/lang/hi.js
===================================================================
--- CKEditor/trunk/_source/lang/hi.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/hi.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/hr.js
===================================================================
--- CKEditor/trunk/_source/lang/hr.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/hr.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'O CKEditoru',
 		dlgTitle	: 'O CKEditoru',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Za informacije o licencama posjetite našu web stranicu:',
 		copy		: 'Copyright &copy; $1. All rights reserved.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/hu.js
===================================================================
--- CKEditor/trunk/_source/lang/hu.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/hu.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Eszköztár',
-	editor	: 'HTML szerkesztő',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'HTML szerkesztő',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'CKEditor névjegy',
 		dlgTitle	: 'CKEditor névjegy',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Licenszelési információkért kérjük látogassa meg weboldalunkat:',
 		copy		: 'Copyright &copy; $1. Minden jog fenntartva.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Eszköztár szétnyitása',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Szöveg iránya balról jobbra',
 		rtl : 'Szöveg iránya jobbról balra'
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/is.js
===================================================================
--- CKEditor/trunk/_source/lang/is.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/is.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/it.js
===================================================================
--- CKEditor/trunk/_source/lang/it.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/it.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor',
 		dlgTitle	: 'About CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Per le informazioni sulla licenza si prega di visitare il nostro sito:',
 		copy		: 'Copyright &copy; $1. Tutti i diritti riservati.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/ja.js
===================================================================
--- CKEditor/trunk/_source/lang/ja.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/ja.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'ツールバー',
-	editor	: 'リッチテキストエディタ',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'リッチテキストエディタ',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'CKEditorバージョン情報',
 		dlgTitle	: 'CKEditorバージョン情報',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'ライセンス情報の詳細はウェブサイトにて確認してください:',
 		copy		: 'Copyright &copy; $1. All rights reserved.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'ツールバーを開く',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'テキストの向き : 左から右へ',
 		rtl : 'テキストの向き : 右から左へ'
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/ka.js
===================================================================
--- CKEditor/trunk/_source/lang/ka.js	(revision 6904)
+++ CKEditor/trunk/_source/lang/ka.js	(revision 6904)
@@ -0,0 +1,810 @@
+﻿/*
+Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.lang} object, for the Georgian
+ *		language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['ka'] =
+{
+	/**
+	 * The language reading direction. Possible values are "rtl" for
+	 * Right-To-Left languages (like Arabic) and "ltr" for Left-To-Right
+	 * languages (like English).
+	 * @default 'ltr'
+	 */
+	dir : 'ltr',
+
+	/*
+	 * Screenreader titles. Please note that screenreaders are not always capable
+	 * of reading non-English words. So be careful while translating it.
+	 */
+	editorTitle : 'ტექსტის რედაქტორი, %1, დააჭირეთ ALT 0-ს დახმარების მისაღებად.',
+
+	// ARIA descriptions.
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'ტექსტის რედაქტორი',
+
+	// Toolbar buttons without dialogs.
+	source			: 'კოდები',
+	newPage			: 'ახალი გვერდი',
+	save			: 'ჩაწერა',
+	preview			: 'გადახედვა',
+	cut				: 'ამოჭრა',
+	copy			: 'ასლი',
+	paste			: 'ჩასმა',
+	print			: 'ბეჭდვა',
+	underline		: 'გახაზული',
+	bold			: 'მსხვილი',
+	italic			: 'დახრილი',
+	selectAll		: 'ყველაფრის მონიშნვა',
+	removeFormat	: 'ფორმატირების მოხსნა',
+	strike			: 'გადახაზული',
+	subscript		: 'ინდექსი',
+	superscript		: 'ხარისხი',
+	horizontalrule	: 'ჰორიზონტალური ხაზის ჩასმა',
+	pagebreak		: 'გვერდის წყვეტა ბეჭდვისთვის',
+	pagebreakAlt		: 'გვერდის წყვეტა',
+	unlink			: 'ბმულის მოხსნა',
+	undo			: 'გაუქმება',
+	redo			: 'გამეორება',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'სერვერზე დათვალიერება',
+		url				: 'URL',
+		protocol		: 'პროტოკოლი',
+		upload			: 'ატვირთვა',
+		uploadSubmit	: 'სერვერზე გაგზავნა',
+		image			: 'სურათი',
+		flash			: 'Flash',
+		form			: 'ფორმა',
+		checkbox		: 'მონიშვნის ღილაკი',
+		radio			: 'ამორჩევის ღილაკი',
+		textField		: 'ტექსტური ველი',
+		textarea		: 'ტექსტური არე',
+		hiddenField		: 'მალული ველი',
+		button			: 'ღილაკი',
+		select			: 'არჩევის ველი',
+		imageButton		: 'სურათიანი ღილაკი',
+		notSet			: '<არაფერი>',
+		id				: 'Id',
+		name			: 'სახელი',
+		langDir			: 'ენის მიმართულება',
+		langDirLtr		: 'მარცხნიდან მარჯვნივ (LTR)',
+		langDirRtl		: 'მარჯვნიდან მარცხნივ (RTL)',
+		langCode		: 'ენის კოდი',
+		longDescr		: 'დიდი აღწერის URL',
+		cssClass		: 'CSS კლასი',
+		advisoryTitle	: 'სათაური',
+		cssStyle		: 'CSS სტილი',
+		ok				: 'დიახ',
+		cancel			: 'გაუქმება',
+		close			: 'დახურვა',
+		preview			: 'გადახედვა',
+		generalTab		: 'ინფორმაცია',
+		advancedTab		: 'გაფართოებული',
+		validateNumberFailed : 'ეს მნიშვნელობა არაა რიცხვი.',
+		confirmNewPage	: 'ამ დოკუმენტში ყველა ჩაუწერელი ცვლილება დაიკარგება. დარწმუნებული ხართ რომ ახალი გვერდის ჩატვირთვა გინდათ?',
+		confirmCancel	: 'ზოგიერთი პარამეტრი შეცვლილია, დარწმუნებულილ ხართ რომ ფანჯრის დახურვა გსურთ?',
+		options			: 'პარამეტრები',
+		target			: 'გახსნის ადგილი',
+		targetNew		: 'ახალი ფანჯარა (_blank)',
+		targetTop		: 'ზედა ფანჯარა (_top)',
+		targetSelf		: 'იგივე ფანჯარა (_self)',
+		targetParent	: 'მშობელი ფანჯარა (_parent)',
+		langDirLTR		: 'მარცხნიდან მარჯვნივ (LTR)',
+		langDirRTL		: 'მარჯვნიდან მარცხნივ (RTL)',
+		styles			: 'სტილი',
+		cssClasses		: 'CSS კლასი',
+		width			: 'სიგანე',
+		height			: 'სიმაღლე',
+		align			: 'სწორება',
+		alignLeft		: 'მარცხენა',
+		alignRight		: 'მარჯვენა',
+		alignCenter		: 'შუა',
+		alignTop		: 'ზემოთა',
+		alignMiddle		: 'შუა',
+		alignBottom		: 'ქვემოთა',
+		invalidHeight	: 'სიმაღლე რიცხვით უნდა იყოს წარმოდგენილი.',
+		invalidWidth	: 'სიგანე რიცხვით უნდა იყოს წარმოდგენილი.',
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, მიუწვდომელია</span>'
+	},
+
+	contextmenu :
+	{
+		options : 'კონტექსტური მენიუს პარამეტრები'
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'სპეციალური სიმბოლოს ჩასმა',
+		title		: 'სპეციალური სიმბოლოს არჩევა',
+		options : 'სპეციალური სიმბოლოს პარამეტრები'
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'ბმული',
+		other 		: '<სხვა>',
+		menu		: 'ბმულის რედაქტირება',
+		title		: 'ბმული',
+		info		: 'ბმულის ინფორმაცია',
+		target		: 'გახსნის ადგილი',
+		upload		: 'აქაჩვა',
+		advanced	: 'დაწვრილებით',
+		type		: 'ბმულის ტიპი',
+		toUrl		: 'URL',
+		toAnchor	: 'ბმული ტექსტში ღუზაზე',
+		toEmail		: 'ელფოსტა',
+		targetFrame		: '<frame>',
+		targetPopup		: '<popup ფანჯარა>',
+		targetFrameName	: 'Frame-ის სახელი',
+		targetPopupName	: 'Popup ფანჯრის სახელი',
+		popupFeatures	: 'Popup ფანჯრის პარამეტრები',
+		popupResizable	: 'ცვალებადი ზომით',
+		popupStatusBar	: 'სტატუსის ზოლი',
+		popupLocationBar: 'ნავიგაციის ზოლი',
+		popupToolbar	: 'ხელსაწყოთა ზოლი',
+		popupMenuBar	: 'მენიუს ზოლი',
+		popupFullScreen	: 'მთელი ეკრანი (IE)',
+		popupScrollBars	: 'გადახვევის ზოლები',
+		popupDependent	: 'დამოკიდებული (Netscape)',
+		popupLeft		: 'მარცხენა პოზიცია',
+		popupTop		: 'ზედა პოზიცია',
+		id				: 'Id',
+		langDir			: 'ენის მიმართულება',
+		langDirLTR		: 'მარცხნიდან მარჯვნივ (LTR)',
+		langDirRTL		: 'მარჯვნიდან მარცხნივ (RTL)',
+		acccessKey		: 'წვდომის ღილაკი',
+		name			: 'სახელი',
+		langCode			: 'ენის კოდი',
+		tabIndex			: 'Tab-ის ინდექსი',
+		advisoryTitle		: 'სათაური',
+		advisoryContentType	: 'შიგთავსის ტიპი',
+		cssClasses		: 'CSS კლასი',
+		charset			: 'კოდირება',
+		styles			: 'CSS სტილი',
+		rel			: 'კავშირი',
+		selectAnchor		: 'აირჩიეთ ღუზა',
+		anchorName		: 'ღუზის სახელით',
+		anchorId			: 'ელემენტის Id-თ',
+		emailAddress		: 'ელფოსტის მისამართები',
+		emailSubject		: 'წერილის სათაური',
+		emailBody		: 'წერილის ტექსტი',
+		noAnchors		: '(ამ დოკუმენტში ღუზა არაა)',
+		noUrl			: 'აკრიფეთ ბმულის URL',
+		noEmail			: 'აკრიფეთ ელფოსტის მისამართი'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'ღუზა',
+		menu		: 'ღუზის რედაქტირება',
+		title		: 'ღუზის პარამეტრები',
+		name		: 'ღუზუს სახელი',
+		errorName	: 'აკრიფეთ ღუზის სახელი'
+	},
+
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'გადანომრილი სიის პარამეტრები',
+		bulletedTitle		: 'ღილებიანი სიის პარამეტრები',
+		type				: 'ტიპი',
+		start				: 'საწყისი',
+		validateStartNumber				:'სიის საწყისი მთელი რიცხვი უნდა იყოს.',
+		circle				: 'წრეწირი',
+		disc				: 'წრე',
+		square				: 'კვადრატი',
+		none				: 'არაფერი',
+		notset				: '<არაფერი>',
+		armenian			: 'სომხური გადანომრვა',
+		georgian			: 'ქართული გადანომრვა (ან, ბან, გან, ..)',
+		lowerRoman			: 'რომაული გადანომრვცა პატარა ციფრებით (i, ii, iii, iv, v, ..)',
+		upperRoman			: 'რომაული გადანომრვა დიდი ციფრებით (I, II, III, IV, V, etc.)',
+		lowerAlpha			: 'პატარა ლათინური ასოებით (a, b, c, d, e, ..)',
+		upperAlpha			: 'დიდი ლათინური ასოებით (A, B, C, D, E, ..)',
+		lowerGreek			: 'პატარა ბერძნული ასოებით (ალფა, ბეტა, გამა, ..)',
+		decimal				: 'რიცხვებით (1, 2, 3, ..)',
+		decimalLeadingZero	: 'ნულით დაწყებული რიცხვებით (01, 02, 03, ..)'
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'ძებნა და შეცვლა',
+		find				: 'ძებნა',
+		replace				: 'შეცვლა',
+		findWhat			: 'საძიებელი ტექსტი:',
+		replaceWith			: 'შეცვლის ტექსტი:',
+		notFoundMsg			: 'მითითებული ტექსტი არ მოიძებნა.',
+		matchCase			: 'დიდი და პატარა ასოების დამთხვევა',
+		matchWord			: 'მთელი სიტყვის დამთხვევა',
+		matchCyclic			: 'დოკუმენტის ბოლოში გასვლის მერე თავიდან დაწყება',
+		replaceAll			: 'ყველას შეცვლა',
+		replaceSuccessMsg	: '%1 მოძებნილი შეიცვალა.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'ცხრილი',
+		title		: 'ცხრილის პარამეტრები',
+		menu		: 'ცხრილის პარამეტრები',
+		deleteTable	: 'ცხრილის წაშლა',
+		rows		: 'სტრიქონი',
+		columns		: 'სვეტი',
+		border		: 'ჩარჩოს ზომა',
+		widthPx		: 'წერტილი',
+		widthPc		: 'პროცენტი',
+		widthUnit	: 'საზომი ერთეული',
+		cellSpace	: 'უჯრის სივრცე (spacing)',
+		cellPad		: 'უჯრის კიდე (padding)',
+		caption		: 'სათაური',
+		summary		: 'შეჯამება',
+		headers		: 'სათაურები',
+		headersNone		: 'არაფერი',
+		headersColumn	: 'პირველი სვეტი',
+		headersRow		: 'პირველი სტრიქონი',
+		headersBoth		: 'ორივე',
+		invalidRows		: 'სტრიქონების რაოდენობა დადებითი რიცხვი უნდა იყოს.',
+		invalidCols		: 'სვეტების რაოდენობა დადებითი რიცხვი უნდა იყოს.',
+		invalidBorder	: 'ჩარჩოს ზომა რიცხვით უდნა იყოს წარმოდგენილი.',
+		invalidWidth	: 'ცხრილის სიგანე რიცხვით უნდა იყოს წარმოდგენილი.',
+		invalidHeight	: 'ცხრილის სიმაღლე რიცხვით უნდა იყოს წარმოდგენილი.',
+		invalidCellSpacing	: 'უჯრის სივრცე (spacing) რიცხვით უნდა იყოს წარმოდგენილი.',
+		invalidCellPadding	: 'უჯრის კიდე (padding) რიცხვით უნდა იყოს წარმოდგენილი.',
+
+		cell :
+		{
+			menu			: 'უჯრა',
+			insertBefore	: 'უჯრის ჩასმა მანამდე',
+			insertAfter		: 'უჯრის ჩასმა მერე',
+			deleteCell		: 'უჯრების წაშლა',
+			merge			: 'უჯრების შეერთება',
+			mergeRight		: 'შეერთება მარჯვენასთან',
+			mergeDown		: 'შეერთება ქვემოთასთან',
+			splitHorizontal	: 'გაყოფა ჰორიზონტალურად',
+			splitVertical	: 'გაყოფა ვერტიკალურად',
+			title			: 'უჯრის პარამეტრები',
+			cellType		: 'უჯრის ტიპი',
+			rowSpan			: 'სტრიქონების ოდენობა',
+			colSpan			: 'სვეტების ოდენობა',
+			wordWrap		: 'სტრიქონის გადატანა (Word Wrap)',
+			hAlign			: 'ჰორიზონტალური სწორება',
+			vAlign			: 'ვერტიკალური სწორება',
+			alignBaseline	: 'ძირითადი ხაზის გასწვრივ',
+			bgColor			: 'ფონის ფერი',
+			borderColor		: 'ჩარჩოს ფერი',
+			data			: 'მონაცემები',
+			header			: 'სათაური',
+			yes				: 'დიახ',
+			no				: 'არა',
+			invalidWidth	: 'უჯრის სიგანე რიცხვით უნდა იყოს წარმოდგენილი.',
+			invalidHeight	: 'უჯრის სიმაღლე რიცხვით უნდა იყოს წარმოდგენილი.',
+			invalidRowSpan	: 'სტრიქონების რაოდენობა მთელი რიცხვი უნდა იყოს.',
+			invalidColSpan	: 'სვეტების რაოდენობა მთელი რიცხვი უნდა იყოს.',
+			chooseColor		: 'არჩევა'
+		},
+
+		row :
+		{
+			menu			: 'სტრიქონი',
+			insertBefore	: 'სტრიქონის ჩამატება წინ',
+			insertAfter		: 'სტრიქონის ჩამატება მერე',
+			deleteRow		: 'სტრიქონების წაშლა'
+		},
+
+		column :
+		{
+			menu			: 'სვეტი',
+			insertBefore	: 'სვეტის ჩამატება წინ',
+			insertAfter		: 'სვეტის ჩამატება მერე',
+			deleteColumn	: 'სვეტების წაშლა'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'ღილაკის პარამეტრები',
+		text		: 'ტექსტი',
+		type		: 'ტიპი',
+		typeBtn		: 'ღილაკი',
+		typeSbm		: 'გაგზავნა',
+		typeRst		: 'გასუფთავება'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'მონიშვნის ღილაკის (Checkbox) პარამეტრები',
+		radioTitle	: 'ასარჩევი ღილაკის (Radio) პარამეტრები',
+		value		: 'ტექსტი',
+		selected	: 'არჩეული'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'ფორმის პარამეტრები',
+		menu		: 'ფორმის პარამეტრები',
+		action		: 'ქმედება',
+		method		: 'მეთოდი',
+		encoding	: 'კოდირება'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'არჩევის ველის პარამეტრები',
+		selectInfo	: 'ინფორმაცია',
+		opAvail		: 'შესაძლებელი ვარიანტები',
+		value		: 'მნიშვნელობა',
+		size		: 'ზომა',
+		lines		: 'ხაზები',
+		chkMulti	: 'მრავლობითი არჩევანის საშუალება',
+		opText		: 'ტექსტი',
+		opValue		: 'მნიშვნელობა',
+		btnAdd		: 'დამატება',
+		btnModify	: 'შეცვლა',
+		btnUp		: 'ზემოთ',
+		btnDown		: 'ქვემოთ',
+		btnSetValue : 'ამორჩეულ მნიშვნელოვნად დაყენება',
+		btnDelete	: 'წაშლა'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'ტექსტური არის პარამეტრები',
+		cols		: 'სვეტები',
+		rows		: 'სტრიქონები'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'ტექსტური ველის პარამეტრები',
+		name		: 'სახელი',
+		value		: 'მნიშვნელობა',
+		charWidth	: 'სიმბოლოს ზომა',
+		maxChars	: 'ასოების მაქსიმალური ოდენობა',
+		type		: 'ტიპი',
+		typeText	: 'ტექსტი',
+		typePass	: 'პაროლი'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'მალული ველის პარამეტრები',
+		name	: 'სახელი',
+		value	: 'მნიშვნელობა'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'სურათის პარამეტრები',
+		titleButton	: 'სურათიანი ღილაკის პარამეტრები',
+		menu		: 'სურათის პარამეტრები',
+		infoTab		: 'სურათის ინფორმცია',
+		btnUpload	: 'სერვერისთვის გაგზავნა',
+		upload		: 'ატვირთვა',
+		alt			: 'სანაცვლო ტექსტი',
+		lockRatio	: 'პროპორციის შენარჩუნება',
+		unlockRatio	: 'პროპორციების უგულებელყოფა',
+		resetSize	: 'ზომის დაბრუნება',
+		border		: 'ჩარჩო',
+		hSpace		: 'ჰორიზონტალური სივრცე',
+		vSpace		: 'ვერტიკალური სივრცე',
+		alertUrl	: 'აკრიფეთ სურათის URL',
+		linkTab		: 'ბმული',
+		button2Img	: 'გსურთ არჩეული სურათიანი ღილაკის გადაქცევა ჩვეულებრივ ღილაკად?',
+		img2Button	: 'გსურთ არჩეული ჩვეულებრივი ღილაკის გადაქცევა სურათიან ღილაკად?',
+		urlMissing	: 'სურათის URL არაა შევსებული.',
+		validateBorder	: 'ჩარჩო მთელი რიცხვი უნდა იყოს.',
+		validateHSpace	: 'ჰორიზონტალური სივრცე მთელი რიცხვი უნდა იყოს.',
+		validateVSpace	: 'ვერტიკალური სივრცე მთელი რიცხვი უნდა იყოს.'
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash-ის პარამეტრები',
+		propertiesTab	: 'პარამეტრები',
+		title			: 'Flash-ის პარამეტრები',
+		chkPlay			: 'ავტო გაშვება',
+		chkLoop			: 'ჩაციკლვა',
+		chkMenu			: 'Flash-ის მენიუს დაშვება',
+		chkFull			: 'მთელი ეკრანის დაშვება',
+ 		scale			: 'მასშტაბირება',
+		scaleAll		: 'ყველაფრის ჩვენება',
+		scaleNoBorder	: 'ჩარჩოს გარეშე',
+		scaleFit		: 'ზუსტი ჩასმა',
+		access			: 'სკრიპტის წვდომა',
+		accessAlways	: 'ყოველთვის',
+		accessSameDomain: 'იგივე დომენი',
+		accessNever		: 'არასდროს',
+		alignAbsBottom	: 'ჩარჩოს ქვემოთა ნაწილის სწორება ტექსტისთვის',
+		alignAbsMiddle	: 'ჩარჩოს შუა ნაწილის სწორება ტექსტისთვის',
+		alignBaseline	: 'საბაზისო ხაზის სწორება',
+		alignTextTop	: 'ტექსტი ზემოდან',
+		quality			: 'ხარისხი',
+		qualityBest		: 'საუკეთესო',
+		qualityHigh		: 'მაღალი',
+		qualityAutoHigh	: 'მაღალი (ავტომატური)',
+		qualityMedium	: 'საშუალო',
+		qualityAutoLow	: 'ძალიან დაბალი',
+		qualityLow		: 'დაბალი',
+		windowModeWindow: 'ფანჯარა',
+		windowModeOpaque: 'გაუმჭვირვალე',
+		windowModeTransparent : 'გამჭვირვალე',
+		windowMode		: 'ფანჯრის რეჟიმი',
+		flashvars		: 'ცვლადები Flash-ისთვის',
+		bgcolor			: 'ფონის ფერი',
+		hSpace			: 'ჰორიზ. სივრცე',
+		vSpace			: 'ვერტ. სივრცე',
+		validateSrc		: 'URL არ უნდა იყოს ცარიელი.',
+		validateHSpace	: 'ჰორიზონტალური სივრცე არ უნდა იყოს ცარიელი.',
+		validateVSpace	: 'ვერტიკალური სივრცე არ უნდა იყოს ცარიელი.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'მართლწერა',
+		title			: 'მართლწერა',
+		notAvailable	: 'უკაცრავად, ეს სერვისი ამჟამად მიუწვდომელია.',
+		errorLoading	: 'სერვისის გამოძახების შეცდომა: %s.',
+		notInDic		: 'არაა ლექსიკონში',
+		changeTo		: 'შეცვლელი',
+		btnIgnore		: 'უგულებელყოფა',
+		btnIgnoreAll	: 'ყველას უგულებელყოფა',
+		btnReplace		: 'შეცვლა',
+		btnReplaceAll	: 'ყველას შეცვლა',
+		btnUndo			: 'გაუქმება',
+		noSuggestions	: '- არაა შემოთავაზება -',
+		progress		: 'მიმდინარეობს მართლწერის შემოწმება...',
+		noMispell		: 'მართლწერის შემოწმება: შეცდომა არ მოიძებნა',
+		noChanges		: 'მართლწერის შემოწმება: არაფერი შეცვლილა',
+		oneChange		: 'მართლწერის შემოწმება: ერთი სიტყვა შეიცვალა',
+		manyChanges		: 'მართლწერის შემოწმება: %1 სიტყვა შეიცვალა',
+		ieSpellDownload	: 'მართლწერის შემოწმება არაა დაინსტალირებული. ჩამოვქაჩოთ ინტერნეტიდან?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'სიცილაკები',
+		title	: 'სიცილაკის ჩასმა',
+		options : 'სიცილაკის პარამეტრები'
+	},
+
+	elementsPath :
+	{
+		eleLabel : 'ელემეტის გზა',
+		eleTitle : '%1 ელემენტი'
+	},
+
+	numberedlist	: 'გადანომრილი სია',
+	bulletedlist	: 'ღილიანი სია',
+	indent			: 'მეტად შეწევა',
+	outdent			: 'ნაკლებად შეწევა',
+
+	justify :
+	{
+		left	: 'მარცხნივ სწორება',
+		center	: 'შუაში სწორება',
+		right	: 'მარჯვნივ სწორება',
+		block	: 'გადასწორება'
+	},
+
+	blockquote : 'ციტატა',
+
+	clipboard :
+	{
+		title		: 'ჩასმა',
+		cutError	: 'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა ამოჭრის ოპერაციის ავტომატურად განხორციელების საშუალებას. გამოიყენეთ კლავიატურა ამისთვის (Ctrl/Cmd+X).',
+		copyError	: 'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა ასლის ოპერაციის ავტომატურად განხორციელების საშუალებას. გამოიყენეთ კლავიატურა ამისთვის (Ctrl/Cmd+C).',
+		pasteMsg	: 'ჩასვით ამ არის შიგნით კლავიატურის გამოყენებით (<strong>Ctrl/Cmd+V</strong>) და დააჭირეთ OK-ს',
+		securityMsg	: 'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა clipboard-ის მონაცემების წვდომის უფლებას. კიდევ უნდა ჩასვათ ტექსტი ამ ფანჯარაში.',
+		pasteArea	: 'ჩასმის არე'
+	},
+
+	pastefromword :
+	{
+		confirmCleanup	: 'ჩასასმელი ტექსტი ვორდიდან გადმოტანილს გავს - გინდათ მისი წინასწარ გაწმენდა?',
+		toolbar			: 'ვორდიდან ჩასმა',
+		title			: 'ვორდიდან ჩასმა',
+		error			: 'შიდა შეცდომის გამო ვერ მოხერხდა ტექსტის გაწმენდა'
+	},
+
+	pasteText :
+	{
+		button	: 'მხოლოდ ტექსტის ჩასმა',
+		title	: 'მხოლოდ ტექსტის ჩასმა'
+	},
+
+	templates :
+	{
+		button			: 'თარგები',
+		title			: 'თარგები',
+		options : 'თარგების პარამეტრები',
+		insertOption	: 'მიმდინარე შეგთავსის შეცვლა',
+		selectPromptMsg	: 'აირჩიეთ თარგი რედაქტორისთვის',
+		emptyListMsg	: '(თარგი არაა განსაზღვრული)'
+	},
+
+	showBlocks : 'არეების ჩვენება',
+
+	stylesCombo :
+	{
+		label		: 'სტილები',
+		panelTitle	: 'ფორმატირების სტილები',
+		panelTitle1	: 'არის სტილები',
+		panelTitle2	: 'თანდართული სტილები',
+		panelTitle3	: 'ობიექტის სტილები'
+	},
+
+	format :
+	{
+		label		: 'ფიორმატირება',
+		panelTitle	: 'ფორმატირება',
+
+		tag_p		: 'ჩვეულებრივი',
+		tag_pre		: 'ფორმატირებული',
+		tag_address	: 'მისამართი',
+		tag_h1		: 'სათაური 1',
+		tag_h2		: 'სათაური 2',
+		tag_h3		: 'სათაური 3',
+		tag_h4		: 'სათაური 4',
+		tag_h5		: 'სათაური 5',
+		tag_h6		: 'სათაური 6',
+		tag_div		: 'ჩვეულებრივი (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Div კონტეინერის შექმნა',
+		toolbar				: 'Div კონტეინერის შექმნა',
+		cssClassInputLabel	: 'CSS კლასები',
+		styleSelectLabel	: 'სტილი',
+		IdInputLabel		: 'Id',
+		languageCodeInputLabel	: 'ენის კოდი',
+		inlineStyleInputLabel	: 'თანდართული სტილი',
+		advisoryTitleInputLabel	: 'სათაური',
+		langDirLabel		: 'ენის მინართულება',
+		langDirLTRLabel		: 'მარცხნიდან მარჯვნიც (LTR)',
+		langDirRTLLabel		: 'მარჯვნიდან მარცხნივ (RTL)',
+		edit				: 'Div-ის რედაქტირება',
+		remove				: 'Div-ის წაშლა'
+  	},
+
+	iframe :
+	{
+		title		: 'IFrame-ის პარამეტრები',
+		toolbar		: 'IFrame',
+		noUrl		: 'აკრიფეთ iframe-ის URL',
+		scrolling	: 'გადახვევის ზოლების დაშვება',
+		border		: 'ჩარჩოს გამოჩენა'
+	},
+
+	font :
+	{
+		label		: 'ფონტი',
+		voiceLabel	: 'ფონტი',
+		panelTitle	: 'ფონტის სახელი'
+	},
+
+	fontSize :
+	{
+		label		: 'ზომა',
+		voiceLabel	: 'ტექსტის ზომა',
+		panelTitle	: 'ტექსტის ზომა'
+	},
+
+	colorButton :
+	{
+		textColorTitle	: 'ტექსტის ფერი',
+		bgColorTitle	: 'ფონის ფერი',
+		panelTitle		: 'ფერები',
+		auto			: 'ავტომატური',
+		more			: 'მეტი ფერი...'
+	},
+
+	colors :
+	{
+		'000' : 'შავი',
+		'800000' : 'მუქი შინდისფერი',
+		'8B4513' : 'ყავისფერი',
+		'2F4F4F' : 'მოლურჯო ნაცრისფერი',
+		'008080' : 'ჩამქრალი ლურჯი',
+		'000080' : 'მუქი ლურჯი',
+		'4B0082' : 'იასამნისფერი',
+		'696969' : 'მუქი ნაცრისფერი',
+		'B22222' : 'აგურისფერი',
+		'A52A2A' : 'მუქი ყავისფერი',
+		'DAA520' : 'მოყვითალო',
+		'006400' : 'მუქი მწვანე',
+		'40E0D0' : 'ცისფერი',
+		'0000CD' : 'ზომიერად ლურჯი',
+		'800080' : 'იისფერი',
+		'808080' : 'ნაცრისფერი',
+		'F00' : 'წითელი',
+		'FF8C00' : 'მუქი სტაფილოსფერი',
+		'FFD700' : 'ოქროსფერი',
+		'008000' : 'მწვანე',
+		'0FF' : 'ღია ცისფერი',
+		'00F' : 'ლურჯი',
+		'EE82EE' : 'იისფერი',
+		'A9A9A9' : 'ბაცი ნაცრისფერი',
+		'FFA07A' : 'ჩამქრალი ვარდისფერი',
+		'FFA500' : 'სტაფილოსფერი',
+		'FFFF00' : 'ყვითელი',
+		'00FF00' : 'ლურჯი',
+		'AFEEEE' : 'ცისფერი',
+		'ADD8E6' : 'ღია ლურჯი',
+		'DDA0DD' : 'ღია იისფერი',
+		'D3D3D3' : 'ღია ნაცრისფერი',
+		'FFF0F5' : 'ღია ვარდისფერი',
+		'FAEBD7' : 'ღია ყავისფერი',
+		'FFFFE0' : 'ნათელი ყვითელი',
+		'F0FFF0' : 'ღია მწვანე',
+		'F0FFFF' : 'ღია ცისფერი 2',
+		'F0F8FF' : 'ღია ცისფერი 3',
+		'E6E6FA' : 'ღია იისფერი 2',
+		'FFF' : 'თეთრი'
+	},
+
+	scayt :
+	{
+		title			: 'მართლწერის შემოწმება კრეფისას',
+		opera_title		: 'არაა მხარდაჭერილი Opera-ს მიერ',
+		enable			: 'SCAYT-ის ჩართვა',
+		disable			: 'SCAYT-ის გამორთვა',
+		about			: 'SCAYT-ის შესახებ',
+		toggle			: 'SCAYT-ის გადართვა',
+		options			: 'პარამეტრები',
+		langs			: 'ენები',
+		moreSuggestions	: 'მეტი შემოთავაზება',
+		ignore			: 'უგულებელყოფა',
+		ignoreAll		: 'ყველას უგულებელყოფა',
+		addWord			: 'სიტყვის დამატება',
+		emptyDic		: 'ლექსიკონის სიტყვა არ უნდა იყოს ცარიელი.',
+
+		optionsTab		: 'პარამეტრები',
+		allCaps			: 'დიდი ასოებით დაწერილი სიტყვების უგულებელყოფა',
+		ignoreDomainNames : 'დომენური სახელების უგულებელყოფა',
+		mixedCase		: 'შერეული ასოებანი სიტყვების უგულებელყოფა',
+		mixedWithDigits	: 'ციფრებიანი სიტყვების უგულებელყოფა',
+
+		languagesTab	: 'ენები',
+
+		dictionariesTab	: 'ლექსიკონები',
+		dic_field_name	: 'ლექსიკონის სახელი',
+		dic_create		: 'შექმნა',
+		dic_restore		: 'დაბრუნება',
+		dic_delete		: 'წაშლა',
+		dic_rename		: 'გადარქმევა',
+		dic_info		: 'თავდაპირველად მომხმარებლის ლექსიკონი ინახება Cookie-ში. თუმცა Cookie შეზღუდულია ზომაში. როცა ლექსიკონის ზომა გაიზრდება საკმაოდ ის შეიძლება შევინახოთ ჩვენს სერვერზე. ჩვენს სერვერზე ლექსიკონს შესანახად უნდა მიუთითოთ მისი სახელი. თუ უკე გაქვთ ლექსიკონი, აკრიფეთ მისი სახელი და დააჭირეთ "დაბრუნების" ღილაკს.',
+
+		aboutTab		: 'ინფორმაცია'
+	},
+
+	about :
+	{
+		title		: 'CKEditor-ის შესახებ',
+		dlgTitle	: 'CKEditor-ის შესახებ',
+		help	: 'დახმარებისთვის იხილეთ $1.',
+		userGuide : 'CKEditor-ის მომხმარებლის სახელმძღვანელო',
+		moreInfo	: 'ლიცენზიის ინფორმაციისთვის ეწვიეთ ჩვენს საიტს:',
+		copy		: 'Copyright &copy; $1. ყველა უფლება დაცულია.'
+	},
+
+	maximize : 'გადიდება',
+	minimize : 'დაპატარავება',
+
+	fakeobjects :
+	{
+		anchor		: 'ღუზა',
+		flash		: 'Flash ანიმაცია',
+		iframe		: 'IFrame',
+		hiddenfield	: 'მალული ველი',
+		unknown		: 'უცნობი ობიექტი'
+	},
+
+	resize : 'გაწიე ზომის შესაცვლელად',
+
+	colordialog :
+	{
+		title		: 'ფერის შეცვლა',
+		options	:	'ფერის პარამეტრები',
+		highlight	: 'ჩვენება',
+		selected	: 'არჩეული ფერი',
+		clear		: 'გასუფთავება'
+	},
+
+	toolbarCollapse	: 'ხელსაწყოთა ზოლის შეწევა',
+	toolbarExpand	: 'ხელსაწყოთა ზოლის გამოწევა',
+
+	toolbarGroups :
+	{
+		document : 'დოკუმენტი',
+		clipboard : 'Clipboard/გაუქმება',
+		editing : 'რედაქტირება',
+		forms : 'ფორმები',
+		basicstyles : 'ძირითადი სტილები',
+		paragraph : 'აბზაცი',
+		links : 'ბმულები',
+		insert : 'ჩასმა',
+		styles : 'სტილები',
+		colors : 'ფერები',
+		tools : 'ხელსაწყოები'
+	},
+
+	bidi :
+	{
+		ltr : 'ტექსტის მიმართულება მარცხნიდან მარჯვნივ',
+		rtl : 'ტექსტის მიმართულება მარჯვნიდან მარცხნივ'
+	},
+
+	docprops :
+	{
+		label : 'დოკუმენტის პარამეტრები',
+		title : 'დოკუმენტის პარამეტრები',
+		design : 'დიზაინი',
+		meta : 'მეტაTag-ები',
+		chooseColor : 'არჩევა',
+		other : 'სხვა...',
+		docTitle :	'გვერდის სათაური',
+		charset : 	'კოდირება',
+		charsetOther : 'სხვა კოდირებები',
+		charsetASCII : 'ამერიკული (ASCII)',
+		charsetCE : 'ცენტრალურ ევროპული',
+		charsetCT : 'ტრადიციული ჩინური (Big5)',
+		charsetCR : 'კირილური',
+		charsetGR : 'ბერძნული',
+		charsetJP : 'იაპონური',
+		charsetKR : 'კორეული',
+		charsetTR : 'თურქული',
+		charsetUN : 'უნიკოდი (UTF-8)',
+		charsetWE : 'დასავლეთ ევროპული',
+		docType : 'დოკუმენტის ტიპი',
+		docTypeOther : 'სხვა ტიპის დოკუმენტი',
+		xhtmlDec : 'XHTML დეკლარაციების ჩართვა',
+		bgColor : 'ფონის ფერი',
+		bgImage : 'ფონური სურათის URL',
+		bgFixed : 'უმოძრაო (ფიქსირებული) ფონი',
+		txtColor : 'ტექსტის ფერი',
+		margin : 'გვერდის კიდეები',
+		marginTop : 'ზედა',
+		marginLeft : 'მარცხენა',
+		marginRight : 'მარჯვენა',
+		marginBottom : 'ქვედა',
+		metaKeywords : 'დოკუმენტის საკვანძო სიტყვები (მძიმით გამოყოფილი)',
+		metaDescription : 'დოკუმენტის აღწერა',
+		metaAuthor : 'ავტორი',
+		metaCopyright : 'Copyright',
+		previewHtml : '<p>ეს არის <strong>საცდელი ტექსტი</strong>. თქვენ <a href="javascript:void(0)">CKEditor</a>-ით სარგებლობთ.</p>'
+	}
+};
Index: CKEditor/trunk/_source/lang/km.js
===================================================================
--- CKEditor/trunk/_source/lang/km.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/km.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/ko.js
===================================================================
--- CKEditor/trunk/_source/lang/ko.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/ko.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/lt.js
===================================================================
--- CKEditor/trunk/_source/lang/lt.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/lt.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/lv.js
===================================================================
--- CKEditor/trunk/_source/lang/lv.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/lv.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/mn.js
===================================================================
--- CKEditor/trunk/_source/lang/mn.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/mn.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/ms.js
===================================================================
--- CKEditor/trunk/_source/lang/ms.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/ms.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/nb.js
===================================================================
--- CKEditor/trunk/_source/lang/nb.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/nb.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Verktøylinje',
-	editor	: 'Rikteksteditor',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rikteksteditor',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'Om CKEditor',
 		dlgTitle	: 'Om CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For lisensieringsinformasjon, vennligst besøk vårt nettsted:',
 		copy		: 'Copyright &copy; $1. Alle rettigheter reservert.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Vis verktøylinje',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Tekstretning fra venstre til høyre',
 		rtl : 'Tekstretning fra høyre til venstre'
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/nl.js
===================================================================
--- CKEditor/trunk/_source/lang/nl.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/nl.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Werkbalk',
-	editor	: 'Tekstverwerker',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Tekstverwerker',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'Over CKEditor',
 		dlgTitle	: 'Over CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Voor licentie informatie, bezoek onze website:',
 		copy		: 'Copyright &copy; $1. Alle rechten voorbehouden.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Werkbalk uitklappen',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Schrijfrichting van links naar rechts',
 		rtl : 'Schrijfrichting van rechts naar links'
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/no.js
===================================================================
--- CKEditor/trunk/_source/lang/no.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/no.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Verktøylinje',
-	editor	: 'Rikteksteditor',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rikteksteditor',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'Om CKEditor',
 		dlgTitle	: 'Om CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For lisensieringsinformasjon, vennligst besøk vårt nettsted:',
 		copy		: 'Copyright &copy; $1. Alle rettigheter reservert.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Vis verktøylinje',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Tekstretning fra venstre til høyre',
 		rtl : 'Tekstretning fra høyre til venstre'
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/pl.js
===================================================================
--- CKEditor/trunk/_source/lang/pl.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/pl.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Pasek narzędzi',
-	editor	: 'Edytor tekstu sformatowanego',
+	toolbars	: 'Paski narzędzi edytora',
+	editor		: 'Edytor tekstu sformatowanego',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'Informacje o programie CKEditor',
 		dlgTitle	: 'Informacje o programie CKEditor',
+		help	: 'Pomoc znajdziesz w $1.',
+		userGuide : 'podręczniku użytkownika programu CKEditor',
 		moreInfo	: 'Informacje na temat licencji można znaleźć na naszej stronie:',
 		copy		: 'Copyright &copy; $1. Wszelkie prawa zastrzeżone.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Rozwiń pasek narzędzi',
 
+	toolbarGroups :
+	{
+		document : 'Dokument',
+		clipboard : 'Schowek/Wstecz',
+		editing : 'Edycja',
+		forms : 'Formularze',
+		basicstyles : 'Style podstawowe',
+		paragraph : 'Akapit',
+		links : 'Hiperłącza',
+		insert : 'Wstawianie',
+		styles : 'Style',
+		colors : 'Kolory',
+		tools : 'Narzędzia'
+	},
+
 	bidi :
 	{
 		ltr : 'Kierunek tekstu od lewej strony do prawej',
 		rtl : 'Kierunek tekstu od prawej strony do lewej'
+	},
+
+	docprops :
+	{
+		label : 'Właściwości dokumentu',
+		title : 'Właściwości dokumentu',
+		design : 'Projekt strony',
+		meta : 'Znaczniki meta',
+		chooseColor : 'Wybierz',
+		other : 'Inne',
+		docTitle :	'Tytuł strony',
+		charset : 	'Kodowanie znaków',
+		charsetOther : 'Inne kodowanie znaków',
+		charsetASCII : 'ASCII',
+		charsetCE : 'Środkowoeuropejskie',
+		charsetCT : 'Chińskie tradycyjne (Big5)',
+		charsetCR : 'Cyrylica',
+		charsetGR : 'Greckie',
+		charsetJP : 'Japońskie',
+		charsetKR : 'Koreańskie',
+		charsetTR : 'Tureckie',
+		charsetUN : 'Unicode (UTF-8)',
+		charsetWE : 'Zachodnioeuropejskie',
+		docType : 'Definicja typu dokumentu',
+		docTypeOther : 'Inna definicja typu dokumentu',
+		xhtmlDec : 'Uwzględnij deklaracje XHTML',
+		bgColor : 'Kolor tła',
+		bgImage : 'Adres URL obrazka tła',
+		bgFixed : 'Tło nieruchome (nieprzewijające się)',
+		txtColor : 'Kolor tekstu',
+		margin : 'Marginesy strony',
+		marginTop : 'Górny',
+		marginLeft : 'Lewy',
+		marginRight : 'Prawy',
+		marginBottom : 'Dolny',
+		metaKeywords : 'Słowa kluczowe dokumentu (oddzielone przecinkami)',
+		metaDescription : 'Opis dokumentu',
+		metaAuthor : 'Autor',
+		metaCopyright : 'Prawa autorskie',
+		previewHtml : '<p>To jest <strong>przykładowy tekst</strong>. Korzystasz z programu <a href="javascript:void(0)">CKEditor</a>.</p>'
 	}
 };
Index: CKEditor/trunk/_source/lang/pt-br.js
===================================================================
--- CKEditor/trunk/_source/lang/pt-br.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/pt-br.js	(revision 6904)
@@ -34,6 +34,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Barra de Ferramentas',
-	editor	: 'Editor de Texto',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Editor de Texto',
 
 	// Toolbar buttons without dialogs.
@@ -715,4 +715,6 @@
 		title		: 'Sobre o CKEditor',
 		dlgTitle	: 'Sobre o CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Para informações sobre a licença por favor visite o nosso site:',
 		copy		: 'Copyright &copy; $1. Todos os direitos reservados.'
@@ -745,8 +747,63 @@
 	toolbarExpand	: 'Aumentar Barra de Ferramentas',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/pt.js
===================================================================
--- CKEditor/trunk/_source/lang/pt.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/pt.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/ro.js
===================================================================
--- CKEditor/trunk/_source/lang/ro.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/ro.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/ru.js
===================================================================
--- CKEditor/trunk/_source/lang/ru.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/ru.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'О программе CKEditor',
 		dlgTitle	: 'О программе CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'По вопросам лицензирования обращайтесь на наш сайт:',
 		copy		: 'Copyright &copy; $1. Все права защищены.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Развернуть панель инструментов',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/sk.js
===================================================================
--- CKEditor/trunk/_source/lang/sk.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/sk.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/sl.js
===================================================================
--- CKEditor/trunk/_source/lang/sl.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/sl.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'O programu CKEditor',
 		dlgTitle	: 'O programu CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Za informacijo o licenci prostim obiščite našo spletno stran:',
 		copy		: 'Copyright &copy; $1. Vse pravice pridržane.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/sr-latn.js
===================================================================
--- CKEditor/trunk/_source/lang/sr-latn.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/sr-latn.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/sr.js
===================================================================
--- CKEditor/trunk/_source/lang/sr.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/sr.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/sv.js
===================================================================
--- CKEditor/trunk/_source/lang/sv.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/sv.js	(revision 6904)
@@ -34,6 +34,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Verktygsfält',
-	editor	: 'Rich Text Editor',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor',
 
 	// Toolbar buttons without dialogs.
@@ -715,4 +715,6 @@
 		title		: 'Om CKEditor',
 		dlgTitle	: 'Om CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'För information av licenciering besök vår hemsida:',
 		copy		: 'Copyright &copy; $1. Alla rättigheter reserverade.'
@@ -745,8 +747,63 @@
 	toolbarExpand	: 'Visa verktygsfält',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text riktning från vänster till höger',
 		rtl : 'Text riktning från höger till vänster'
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/th.js
===================================================================
--- CKEditor/trunk/_source/lang/th.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/th.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'About CKEditor', // MISSING
 		dlgTitle	: 'About CKEditor', // MISSING
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'For licensing information please visit our web site:', // MISSING
 		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/tr.js
===================================================================
--- CKEditor/trunk/_source/lang/tr.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/tr.js	(revision 6904)
@@ -34,6 +34,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar',
-	editor	: 'Zengin Metin Editörü',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Zengin Metin Editörü',
 
 	// Toolbar buttons without dialogs.
@@ -715,4 +715,6 @@
 		title		: 'CKEditor Hakkında',
 		dlgTitle	: 'CKEditor Hakkında',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Lisanslama hakkında daha fazla bilgi almak için lütfen sitemizi ziyaret edin:',
 		copy		: 'Copyright &copy; $1. Tüm hakları saklıdır.'
@@ -745,8 +747,63 @@
 	toolbarExpand	: 'Toolbar\'ı aç',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/uk.js
===================================================================
--- CKEditor/trunk/_source/lang/uk.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/uk.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Панель інструментів',
-	editor	: 'Текстовий редактор',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Текстовий редактор',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'Про CKEditor',
 		dlgTitle	: 'Про CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Щодо інформації з ліцензування завітайте на наш сайт:',
 		copy		: 'Copyright &copy; $1. Всі права застережено.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Розгорнути панель інструментів',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Напрямок тексту зліва направо',
 		rtl : 'Напрямок тексту справа наліво'
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/vi.js
===================================================================
--- CKEditor/trunk/_source/lang/vi.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/vi.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Thanh công cụ',
-	editor	: 'Bộ soạn thảo',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Bộ soạn thảo',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: 'Thông tin về CKEditor',
 		dlgTitle	: 'Thông tin về CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: 'Vui lòng ghé thăm trang web của chúng tôi để có thông tin về giấy phép:',
 		copy		: 'Bản quyền &copy; $1. Giữ toàn quyền.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Mở rộng thnah công cụ',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/zh-cn.js
===================================================================
--- CKEditor/trunk/_source/lang/zh-cn.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/zh-cn.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: '工具栏',
-	editor	: '所见即所得编辑器',
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: '所见即所得编辑器',
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: '关于CKEditor',
 		dlgTitle	: '关于CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: '访问我们的网站以获取更多关于协议的信息',
 		copy		: 'Copyright &copy; $1. All rights reserved.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: '展开工具栏',
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : '文字方向为从左至右',
 		rtl : '文字方向为从右至左'
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/lang/zh.js
===================================================================
--- CKEditor/trunk/_source/lang/zh.js	(revision 6896)
+++ CKEditor/trunk/_source/lang/zh.js	(revision 6904)
@@ -35,6 +35,6 @@
 
 	// ARIA descriptions.
-	toolbar	: 'Toolbar', // MISSING
-	editor	: 'Rich Text Editor', // MISSING
+	toolbars	: 'Editor toolbars', // MISSING
+	editor		: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -716,4 +716,6 @@
 		title		: '關於 CKEditor',
 		dlgTitle	: '關於 CKEditor',
+		help	: 'Check $1 for help.', // MISSING
+		userGuide : 'CKEditor User\'s Guide', // MISSING
 		moreInfo	: '訪問我們的網站以獲取更多關於協議的信息',
 		copy		: 'Copyright &copy; $1. All rights reserved.'
@@ -746,8 +748,63 @@
 	toolbarExpand	: 'Expand Toolbar', // MISSING
 
+	toolbarGroups :
+	{
+		document : 'Document', // MISSING
+		clipboard : 'Clipboard/Undo', // MISSING
+		editing : 'Editing', // MISSING
+		forms : 'Forms', // MISSING
+		basicstyles : 'Basic Styles', // MISSING
+		paragraph : 'Paragraph', // MISSING
+		links : 'Links', // MISSING
+		insert : 'Insert', // MISSING
+		styles : 'Styles', // MISSING
+		colors : 'Colors', // MISSING
+		tools : 'Tools' // MISSING
+	},
+
 	bidi :
 	{
 		ltr : 'Text direction from left to right', // MISSING
 		rtl : 'Text direction from right to left' // MISSING
+	},
+
+	docprops :
+	{
+		label : 'Document Properties', // MISSING
+		title : 'Document Properties', // MISSING
+		design : 'Design', // MISSING
+		meta : 'Meta Tags', // MISSING
+		chooseColor : 'Choose', // MISSING
+		other : 'Other...', // MISSING
+		docTitle :	'Page Title', // MISSING
+		charset : 	'Character Set Encoding', // MISSING
+		charsetOther : 'Other Character Set Encoding', // MISSING
+		charsetASCII : 'ASCII', // MISSING
+		charsetCE : 'Central European', // MISSING
+		charsetCT : 'Chinese Traditional (Big5)', // MISSING
+		charsetCR : 'Cyrillic', // MISSING
+		charsetGR : 'Greek', // MISSING
+		charsetJP : 'Japanese', // MISSING
+		charsetKR : 'Korean', // MISSING
+		charsetTR : 'Turkish', // MISSING
+		charsetUN : 'Unicode (UTF-8)', // MISSING
+		charsetWE : 'Western European', // MISSING
+		docType : 'Document Type Heading', // MISSING
+		docTypeOther : 'Other Document Type Heading', // MISSING
+		xhtmlDec : 'Include XHTML Declarations', // MISSING
+		bgColor : 'Background Color', // MISSING
+		bgImage : 'Background Image URL', // MISSING
+		bgFixed : 'Non-scrolling (Fixed) Background', // MISSING
+		txtColor : 'Text Color', // MISSING
+		margin : 'Page Margins', // MISSING
+		marginTop : 'Top', // MISSING
+		marginLeft : 'Left', // MISSING
+		marginRight : 'Right', // MISSING
+		marginBottom : 'Bottom', // MISSING
+		metaKeywords : 'Document Indexing Keywords (comma separated)', // MISSING
+		metaDescription : 'Document Description', // MISSING
+		metaAuthor : 'Author', // MISSING
+		metaCopyright : 'Copyright', // MISSING
+		previewHtml : '<p>This is some <strong>sample text</strong>. You are using <a href="javascript:void(0)">CKEditor</a>.</p>' // MISSING
 	}
 };
Index: CKEditor/trunk/_source/plugins/a11yhelp/lang/en.js
===================================================================
--- CKEditor/trunk/_source/plugins/a11yhelp/lang/en.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/a11yhelp/lang/en.js	(revision 6904)
@@ -20,6 +20,6 @@
 								legend:
 									'Press ${toolbarFocus} to navigate to the toolbar. ' +
-									'Move to next toolbar button with TAB or RIGHT ARROW. ' +
-									'Move to previous button with SHIFT+TAB or LEFT ARROW. ' +
+									'Move to the next and previous toolbar group with TAB and SHIFT-TAB. ' +
+									'Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. ' +
 									'Press SPACE or ENTER to activate the toolbar button.'
 							},
Index: CKEditor/trunk/_source/plugins/a11yhelp/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/a11yhelp/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/a11yhelp/plugin.js	(revision 6904)
@@ -38,4 +38,5 @@
 					},
 					modes : { wysiwyg:1, source:1 },
+					readOnly : 1,
 					canUndo : false
 				});
Index: CKEditor/trunk/_source/plugins/about/dialogs/about.js
===================================================================
--- CKEditor/trunk/_source/plugins/about/dialogs/about.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/about/dialogs/about.js	(revision 6904)
@@ -58,4 +58,7 @@
 								'</p>' +
 								'<p>' +
+									lang.help.replace( '$1', '<a href="http://docs.cksource.com/CKEditor_3.x/Users_Guide/Quick_Reference">' + lang.userGuide + '</a>' ) +
+								'</p>' +
+								'<p>' +
 									lang.moreInfo + '<br>' +
 									'<a href="http://ckeditor.com/license">http://ckeditor.com/license</a>' +
Index: CKEditor/trunk/_source/plugins/about/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/about/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/about/plugin.js	(revision 6904)
@@ -12,4 +12,5 @@
 		command.modes = { wysiwyg:1, source:1 };
 		command.canUndo = false;
+		command.readOnly = 1;
 
 		editor.ui.addButton( 'About',
Index: CKEditor/trunk/_source/plugins/basicstyles/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/basicstyles/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/basicstyles/plugin.js	(revision 6904)
@@ -18,5 +18,5 @@
 			editor.attachStyleStateChange( style, function( state )
 				{
-					editor.getCommand( commandName ).setState( state );
+					!editor.readOnly && editor.getCommand( commandName ).setState( state );
 				});
 
Index: CKEditor/trunk/_source/plugins/bbcode/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/bbcode/plugin.js	(revision 6904)
+++ CKEditor/trunk/_source/plugins/bbcode/plugin.js	(revision 6904)
@@ -0,0 +1,924 @@
+﻿/*
+Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	CKEDITOR.on( 'dialogDefinition', function( ev )
+	{
+		var tab, name = ev.data.name,
+			definition = ev.data.definition;
+
+		if ( name == 'link' )
+		{
+			definition.removeContents( 'target' );
+			definition.removeContents( 'upload' );
+			definition.removeContents( 'advanced' );
+			tab = definition.getContents( 'info' );
+			tab.remove( 'emailSubject' );
+			tab.remove( 'emailBody' );
+		}
+		else if ( name == 'image' )
+		{
+			definition.removeContents( 'advanced' );
+			tab = definition.getContents( 'Link' );
+			tab.remove( 'cmbTarget' );
+			tab = definition.getContents( 'info' );
+			tab.remove( 'txtAlt' );
+			tab.remove( 'basic' );
+		}
+	});
+
+	var bbcodeMap = { 'b' : 'strong', 'u': 'u', 'i' : 'em', 'color' : 'span', 'size' : 'span', 'quote' : 'blockquote', 'code' : 'code', 'url' : 'a', 'email' : 'span', 'img' : 'span', '*' : 'li', 'list' : 'ol' },
+			convertMap = { 'strong' : 'b' , 'b' : 'b', 'u': 'u', 'em' : 'i', 'i': 'i', 'code' : 'code', 'li' : '*' },
+			tagnameMap = { 'strong' : 'b', 'em' : 'i', 'u' : 'u', 'li' : '*', 'ul' : 'list', 'ol' : 'list', 'code' : 'code', 'a' : 'link', 'img' : 'img', 'blockquote' : 'quote' },
+			stylesMap = { 'color' : 'color', 'size' : 'font-size' },
+			attributesMap = { 'url' : 'href', 'email' : 'mailhref', 'quote': 'cite', 'list' : 'listType' };
+
+	// List of block-like tags.
+	var dtd =  CKEDITOR.dtd,
+		blockLikeTags = CKEDITOR.tools.extend( { table:1 }, dtd.$block, dtd.$listItem, dtd.$tableContent, dtd.$list );
+
+	var semicolonFixRegex = /\s*(?:;\s*|$)/;
+	function serializeStyleText( stylesObject )
+	{
+		var styleText = '';
+		for ( var style in stylesObject )
+		{
+			var styleVal = stylesObject[ style ],
+				text = ( style + ':' + styleVal ).replace( semicolonFixRegex, ';' );
+
+			styleText += text;
+		}
+		return styleText;
+	}
+
+	function parseStyleText( styleText )
+	{
+		var retval = {};
+		( styleText || '' )
+				.replace( /&quot;/g, '"' )
+				.replace( /\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function( match, name, value )
+		{
+			retval[ name.toLowerCase() ] = value;
+		} );
+		return retval;
+	}
+
+	function RGBToHex( cssStyle )
+	{
+		return cssStyle.replace( /(?:rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))/gi, function( match, red, green, blue )
+			{
+				red = parseInt( red, 10 ).toString( 16 );
+				green = parseInt( green, 10 ).toString( 16 );
+				blue = parseInt( blue, 10 ).toString( 16 );
+				var color = [red, green, blue] ;
+
+				// Add padding zeros if the hex value is less than 0x10.
+				for ( var i = 0 ; i < color.length ; i++ )
+					color[i] = String( '0' + color[i] ).slice( -2 ) ;
+
+				return '#' + color.join( '' ) ;
+			 });
+	}
+
+	// Maintain the map of smiley-to-description.
+	var smileyMap = {"smiley":":)","sad":":(","wink":";)","laugh":":D","cheeky":":P","blush":":*)","surprise":":-o","indecision":":|","angry":">:(","angel":"o:)","cool":"8-)","devil":">:-)","crying":";(","kiss":":-*" },
+		smileyReverseMap = {},
+		smileyRegExp = [];
+
+	// Build regexp for the list of smiley text.
+	for ( var i in smileyMap )
+	{
+		smileyReverseMap[ smileyMap[ i ] ] = i;
+		smileyRegExp.push( smileyMap[ i ].replace( /\(|\)|\:|\/|\*|\-|\|/g, function( match ) { return '\\' + match; } ) );
+	}
+
+	smileyRegExp = new RegExp( smileyRegExp.join( '|' ), 'g' );
+
+	var decodeHtml = ( function ()
+	{
+		var regex = [],
+			entities =
+			{
+				nbsp	: '\u00A0',		// IE | FF
+				shy		: '\u00AD',		// IE
+				gt		: '\u003E',		// IE | FF |   --   | Opera
+				lt		: '\u003C'		// IE | FF | Safari | Opera
+			};
+
+		for ( var entity in entities )
+			regex.push( entity );
+
+		regex = new RegExp( '&(' + regex.join( '|' ) + ');', 'g' );
+
+		return function( html )
+		{
+			return html.replace( regex, function( match, entity )
+			{
+				return entities[ entity ];
+			});
+		};
+	})();
+
+	CKEDITOR.BBCodeParser = function()
+	{
+		this._ =
+		{
+			bbcPartsRegex : /(?:\[([^\/\]=]*?)(?:=([^\]]*?))?\])|(?:\[\/([a-z]{1,16})\])/ig
+		};
+	};
+
+	CKEDITOR.BBCodeParser.prototype =
+	{
+		parse : function( bbcode )
+		{
+			var parts,
+					part,
+					lastIndex = 0;
+
+			while ( ( parts = this._.bbcPartsRegex.exec( bbcode ) ) )
+			{
+				var tagIndex = parts.index;
+				if ( tagIndex > lastIndex )
+				{
+					var text = bbcode.substring( lastIndex, tagIndex );
+					this.onText( text, 1 );
+				}
+
+				lastIndex = this._.bbcPartsRegex.lastIndex;
+
+				/*
+				 "parts" is an array with the following items:
+				 0 : The entire match for opening/closing tags and line-break;
+				 1 : line-break;
+				 2 : open of tag excludes option;
+				 3 : tag option;
+				 4 : close of tag;
+				 */
+
+				// Opening tag
+				if ( ( part = parts[ 1 ] ) )
+				{
+					part = part.toLowerCase();
+
+					var tagName = bbcodeMap[ part ],
+							attribs = {},
+							styles = {},
+							optionPart = parts[ 2 ];
+
+					if ( optionPart )
+					{
+						if ( part == 'list' )
+						{
+							if ( !isNaN( optionPart ) )
+								optionPart = 'decimal';
+							else if ( /^[a-z]+$/.test( optionPart ) )
+								optionPart = 'lower-alpha';
+							else if ( /^[A-Z]+$/.test( optionPart ) )
+								optionPart = 'upper-alpha';
+						}
+
+						if ( stylesMap[ part ] )
+						{
+							// Font size represents percentage.
+							if ( part == 'size' )
+								optionPart += '%';
+
+							styles[ stylesMap[ part ] ] = optionPart;
+							attribs.style = serializeStyleText( styles );
+						}
+						else if ( attributesMap[ part ] )
+							attribs[ attributesMap[ part ] ] = optionPart;
+					}
+
+					// Two special handling - image and email, protect them
+					// as "span" with an attribute marker.
+					if ( part == 'email' || part == 'img' )
+						attribs[ 'bbcode' ] = part;
+
+					this.onTagOpen( tagName, attribs, CKEDITOR.dtd.$empty[ tagName ] );
+				}
+				// Closing tag
+				else if ( ( part = parts[ 3 ] ) )
+					this.onTagClose( bbcodeMap[ part ] );
+			}
+
+			if ( bbcode.length > lastIndex )
+				this.onText( bbcode.substring( lastIndex, bbcode.length ), 1 );
+		}
+	};
+
+	/**
+	 * Creates a {@link CKEDITOR.htmlParser.fragment} from an HTML string.
+	 * @param {String} source The HTML to be parsed, filling the fragment.
+	 * @param {Number} [fixForBody=false] Wrap body with specified element if needed.
+	 * @returns CKEDITOR.htmlParser.fragment The fragment created.
+	 * @example
+	 * var fragment = CKEDITOR.htmlParser.fragment.fromHtml( '<b>Sample</b> Text' );
+	 * alert( fragment.children[0].name );  "b"
+	 * alert( fragment.children[1].value );  " Text"
+	 */
+	CKEDITOR.htmlParser.fragment.fromBBCode = function( source )
+	{
+		var parser = new CKEDITOR.BBCodeParser(),
+			fragment = new CKEDITOR.htmlParser.fragment(),
+			pendingInline = [],
+			pendingBrs = 0,
+			currentNode = fragment,
+			returnPoint;
+
+		function checkPending( newTagName )
+		{
+			if ( pendingInline.length > 0 )
+			{
+				for ( var i = 0 ; i < pendingInline.length ; i++ )
+				{
+					var pendingElement = pendingInline[ i ],
+						pendingName = pendingElement.name,
+						pendingDtd = CKEDITOR.dtd[ pendingName ],
+						currentDtd = currentNode.name && CKEDITOR.dtd[ currentNode.name ];
+
+					if ( ( !currentDtd || currentDtd[ pendingName ] ) && ( !newTagName || !pendingDtd || pendingDtd[ newTagName ] || !CKEDITOR.dtd[ newTagName ] ) )
+					{
+						// Get a clone for the pending element.
+						pendingElement = pendingElement.clone();
+
+						// Add it to the current node and make it the current,
+						// so the new element will be added inside of it.
+						pendingElement.parent = currentNode;
+						currentNode = pendingElement;
+
+						// Remove the pending element (back the index by one
+						// to properly process the next entry).
+						pendingInline.splice( i, 1 );
+						i--;
+					}
+				}
+			}
+		}
+
+		function checkPendingBrs( tagName, closing )
+		{
+			var len = currentNode.children.length,
+				previous = len > 0 && currentNode.children[ len - 1 ],
+				lineBreakParent = !previous && BBCodeWriter.getRule( tagnameMap[ currentNode.name ], 'breakAfterOpen' ),
+				lineBreakPrevious = previous && previous.type == CKEDITOR.NODE_ELEMENT && BBCodeWriter.getRule( tagnameMap[ previous.name ], 'breakAfterClose' ),
+				lineBreakCurrent = tagName && BBCodeWriter.getRule( tagnameMap[ tagName ], closing ? 'breakBeforeClose' : 'breakBeforeOpen' );
+
+			if ( pendingBrs && ( lineBreakParent || lineBreakPrevious || lineBreakCurrent ) )
+				pendingBrs--;
+
+			// 1. Either we're at the end of block, where it requires us to compensate the br filler
+			// removing logic (from htmldataprocessor).
+			// 2. Or we're at the end of pseudo block, where it requires us to compensate
+			// the bogus br effect.
+			if ( pendingBrs && tagName in blockLikeTags )
+				pendingBrs++;
+
+			while ( pendingBrs && pendingBrs-- )
+				currentNode.children.push( previous = new CKEDITOR.htmlParser.element( 'br' ) );
+		}
+
+		function addElement( node, target )
+		{
+			checkPendingBrs( node.name, 1 );
+
+			target = target || currentNode || fragment;
+
+			var len = target.children.length,
+				previous = len > 0 && target.children[ len - 1 ] || null;
+
+			node.previous = previous;
+			node.parent = target;
+
+			target.children.push( node );
+
+			if ( node.returnPoint )
+			{
+				currentNode = node.returnPoint;
+				delete node.returnPoint;
+			}
+		}
+
+		parser.onTagOpen = function( tagName, attributes, selfClosing )
+		{
+			var element = new CKEDITOR.htmlParser.element( tagName, attributes );
+
+			// This is a tag to be removed if empty, so do not add it immediately.
+			if ( CKEDITOR.dtd.$removeEmpty[ tagName ] )
+			{
+				pendingInline.push( element );
+				return;
+			}
+
+			var currentName = currentNode.name;
+
+			var currentDtd = currentName
+				&& ( CKEDITOR.dtd[ currentName ]
+					|| ( currentNode._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span ) );
+
+			// If the element cannot be child of the current element.
+			if ( currentDtd && !currentDtd[ tagName ] )
+			{
+				var reApply = false,
+					addPoint;   // New position to start adding nodes.
+
+				// If the element name is the same as the current element name,
+				// then just close the current one and append the new one to the
+				// parent. This situation usually happens with <p>, <li>, <dt> and
+				// <dd>, specially in IE. Do not enter in this if block in this case.
+				if ( tagName == currentName )
+					addElement( currentNode, currentNode.parent );
+				else if ( tagName in CKEDITOR.dtd.$listItem )
+				{
+					parser.onTagOpen( 'ul', {} );
+					addPoint = currentNode;
+					reApply = true;
+				}
+				else
+				{
+					addElement( currentNode, currentNode.parent );
+
+					// The current element is an inline element, which
+					// cannot hold the new one. Put it in the pending list,
+					// and try adding the new one after it.
+					pendingInline.unshift( currentNode );
+					reApply = true;
+				}
+
+				if ( addPoint )
+					currentNode = addPoint;
+				// Try adding it to the return point, or the parent element.
+				else
+					currentNode = currentNode.returnPoint || currentNode.parent;
+
+				if ( reApply )
+				{
+					parser.onTagOpen.apply( this, arguments );
+					return;
+				}
+			}
+
+			checkPending( tagName );
+			checkPendingBrs( tagName );
+
+			element.parent = currentNode;
+			element.returnPoint = returnPoint;
+			returnPoint = 0;
+
+			if ( element.isEmpty )
+				addElement( element );
+			else
+				currentNode = element;
+		};
+
+		parser.onTagClose = function( tagName )
+		{
+			// Check if there is any pending tag to be closed.
+			for ( var i = pendingInline.length - 1 ; i >= 0 ; i-- )
+			{
+				// If found, just remove it from the list.
+				if ( tagName == pendingInline[ i ].name )
+				{
+					pendingInline.splice( i, 1 );
+					return;
+				}
+			}
+
+			var pendingAdd = [],
+				newPendingInline = [],
+				candidate = currentNode;
+
+			while ( candidate.type && candidate.name != tagName )
+			{
+				// If this is an inline element, add it to the pending list, if we're
+				// really closing one of the parents element later, they will continue
+				// after it.
+				if ( !candidate._.isBlockLike )
+					newPendingInline.unshift( candidate );
+
+				// This node should be added to it's parent at this point. But,
+				// it should happen only if the closing tag is really closing
+				// one of the nodes. So, for now, we just cache it.
+				pendingAdd.push( candidate );
+
+				candidate = candidate.parent;
+			}
+
+			if ( candidate.type )
+			{
+				// Add all elements that have been found in the above loop.
+				for ( i = 0 ; i < pendingAdd.length ; i++ )
+				{
+					var node = pendingAdd[ i ];
+					addElement( node, node.parent );
+				}
+
+				currentNode = candidate;
+
+
+				addElement( candidate, candidate.parent );
+
+				// The parent should start receiving new nodes now, except if
+				// addElement changed the currentNode.
+				if ( candidate == currentNode )
+					currentNode = currentNode.parent;
+
+				pendingInline = pendingInline.concat( newPendingInline );
+			}
+		};
+
+		parser.onText = function( text )
+		{
+			var currentDtd = CKEDITOR.dtd[ currentNode.name ];
+			if ( !currentDtd || currentDtd[ '#' ] )
+			{
+				checkPendingBrs();
+				checkPending();
+
+				text.replace(/([\r\n])|[^\r\n]*/g, function( piece, lineBreak )
+				{
+					if ( lineBreak !== undefined && lineBreak.length )
+						pendingBrs++;
+					else if ( piece.length )
+					{
+						var lastIndex = 0;
+
+						// Create smiley from text emotion.
+						piece.replace( smileyRegExp, function( match, index )
+						{
+							addElement( new CKEDITOR.htmlParser.text( piece.substring( lastIndex, index ) ), currentNode );
+							addElement( new CKEDITOR.htmlParser.element( 'smiley', { 'desc': smileyReverseMap[ match ] } ), currentNode );
+							lastIndex = index + match.length;
+						});
+
+						if ( lastIndex != piece.length )
+							addElement( new CKEDITOR.htmlParser.text( piece.substring( lastIndex, piece.length ) ), currentNode );
+					}
+				});
+			}
+		};
+
+		// Parse it.
+		parser.parse( CKEDITOR.tools.htmlEncode( source ) );
+
+		// Close all hanging nodes.
+		while ( currentNode.type )
+		{
+			var parent = currentNode.parent,
+				node = currentNode;
+
+			addElement( node, parent );
+			currentNode = parent;
+		}
+
+		return fragment;
+	};
+
+	CKEDITOR.htmlParser.BBCodeWriter = CKEDITOR.tools.createClass(
+	{
+		$ : function()
+		{
+			this._ =
+			{
+				output : [],
+				rules : []
+			};
+
+			// List and list item.
+			this.setRules( 'list',
+		   {
+			   breakBeforeOpen : 1,
+			   breakAfterOpen : 1,
+			   breakBeforeClose : 1,
+			   breakAfterClose : 1
+		   } );
+
+			this.setRules( '*',
+		   {
+			   breakBeforeOpen : 1,
+			   breakAfterOpen : 0,
+			   breakBeforeClose : 1,
+			   breakAfterClose : 0
+		   } );
+
+			this.setRules( 'quote',
+		   {
+			   breakBeforeOpen : 1,
+			   breakAfterOpen : 0,
+			   breakBeforeClose : 0,
+			   breakAfterClose : 1
+		   } );
+		},
+
+		proto :
+		{
+			/**
+			 * Sets formatting rules for a given tag. The possible rules are:
+			 * <ul>
+			 *	<li><b>breakBeforeOpen</b>: break line before the opener tag for this element.</li>
+			 *	<li><b>breakAfterOpen</b>: break line after the opener tag for this element.</li>
+			 *	<li><b>breakBeforeClose</b>: break line before the closer tag for this element.</li>
+			 *	<li><b>breakAfterClose</b>: break line after the closer tag for this element.</li>
+			 * </ul>
+			 *
+			 * All rules default to "false". Each call to the function overrides
+			 * already present rules, leaving the undefined untouched.
+			 *
+			 * @param {String} tagName The tag name to which set the rules.
+			 * @param {Object} rules An object containing the element rules.
+			 * @example
+			 * // Break line before and after "img" tags.
+			 * writer.setRules( 'list',
+			 *     {
+			 *         breakBeforeOpen : true
+			 *         breakAfterOpen : true
+			 *     });
+			 */
+			setRules : function( tagName, rules )
+			{
+				var currentRules = this._.rules[ tagName ];
+
+				if ( currentRules )
+					CKEDITOR.tools.extend( currentRules, rules, true );
+				else
+					this._.rules[ tagName ] = rules;
+			},
+
+			getRule : function( tagName, ruleName )
+			{
+				return this._.rules[ tagName ] && this._.rules[ tagName ][ ruleName ];
+			},
+
+			openTag : function( tag, attributes )
+			{
+				if ( tag in bbcodeMap )
+				{
+					if ( this.getRule( tag, 'breakBeforeOpen' ) )
+						this.lineBreak( 1 );
+
+					this.write( '[', tag );
+					var option = attributes.option;
+					option && this.write( '=', option );
+					this.write( ']' );
+
+					if ( this.getRule( tag, 'breakAfterOpen' ) )
+						this.lineBreak( 1 );
+				}
+				else if ( tag == 'br' )
+					this._.output.push( '\n' );
+			},
+
+			openTagClose : function() { },
+			attribute : function() { },
+
+			closeTag : function( tag )
+			{
+				if ( tag in bbcodeMap )
+				{
+					if ( this.getRule( tag, 'breakBeforeClose' ) )
+						this.lineBreak( 1 );
+
+					tag != '*' && this.write( '[/', tag, ']' );
+
+					if ( this.getRule( tag, 'breakAfterClose' ) )
+						this.lineBreak( 1 );
+				}
+			},
+
+			text : function( text )
+			{
+				this.write( text );
+			},
+
+			/**
+			 * Writes a comment.
+			 * @param {String} comment The comment text.
+			 * @example
+			 * // Writes "&lt;!-- My comment --&gt;".
+			 * writer.comment( ' My comment ' );
+			 */
+			comment : function() {},
+
+			/*
+			* Output line-break for formatting.
+			 */
+			lineBreak : function()
+			{
+				// Avoid line break when:
+				// 1) Previous tag already put one.
+				// 2) We're at output start.
+				if ( !this._.hasLineBreak && this._.output.length )
+				{
+					this.write( '\n' );
+					this._.hasLineBreak = 1;
+				}
+			},
+
+			write : function()
+			{
+				this._.hasLineBreak = 0;
+				var data = Array.prototype.join.call( arguments, '' );
+				this._.output.push( data );
+			},
+
+			reset : function()
+			{
+				this._.output = [];
+				this._.hasLineBreak = 0;
+			},
+
+			getHtml : function( reset )
+			{
+				var bbcode = this._.output.join( '' );
+
+				if ( reset )
+					this.reset();
+
+				return decodeHtml ( bbcode );
+			}
+		}
+	});
+
+	var BBCodeWriter = new CKEDITOR.htmlParser.BBCodeWriter();
+
+	CKEDITOR.plugins.add( 'bbcode',
+	  {
+		  requires : [ 'htmldataprocessor', 'entities' ],
+		  beforeInit : function( editor )
+		  {
+			  // Adapt some critical editor configuration for better support
+			  // of BBCode environment.
+			  var config = editor.config;
+			  CKEDITOR.tools.extend( config,
+			  {
+				  enterMode : CKEDITOR.ENTER_BR,
+				  basicEntities: false,
+				  entities : false,
+				  fillEmptyBlocks : false
+			  }, true );
+		  },
+		  init : function( editor )
+		  {
+			  var config = editor.config;
+
+			  function BBCodeToHtml( code )
+			  {
+				  var fragment = CKEDITOR.htmlParser.fragment.fromBBCode( code ),
+						  writer = new CKEDITOR.htmlParser.basicWriter();
+
+				  fragment.writeHtml( writer, dataFilter );
+				  return writer.getHtml( true );
+			  }
+
+			  var dataFilter = new CKEDITOR.htmlParser.filter();
+			  dataFilter.addRules(
+			  {
+				  elements :
+				  {
+					  'blockquote' : function( element )
+					  {
+						  var quoted = new CKEDITOR.htmlParser.element( 'div' );
+						  quoted.children = element.children;
+						  element.children = [ quoted ];
+						  var citeText = element.attributes.cite;
+						  if ( citeText )
+						  {
+							  var cite = new CKEDITOR.htmlParser.element( 'cite' );
+							  cite.add( new CKEDITOR.htmlParser.text( citeText.replace( /^"|"$/g, '' ) ) );
+							  delete element.attributes.cite;
+							  element.children.unshift( cite );
+						  }
+					  },
+					  'span' : function( element )
+					  {
+						  var bbcode;
+						  if ( ( bbcode = element.attributes.bbcode ) )
+						  {
+							  if ( bbcode == 'img' )
+							  {
+								  element.name = 'img';
+								  element.attributes.src = element.children[ 0 ].value;
+								  element.children = [];
+							  }
+							  else if ( bbcode == 'email' )
+							  {
+								  element.name = 'a';
+								  element.attributes.href = 'mailto:' + element.children[ 0 ].value;
+							  }
+
+							  delete element.attributes.bbcode;
+						  }
+					  },
+					  'ol' : function ( element )
+					  {
+						  if ( element.attributes.listType )
+						  {
+							  if ( element.attributes.listType != 'decimal' )
+								  element.attributes.style = 'list-style-type:' + element.attributes.listType;
+						  }
+						  else
+							  element.name = 'ul';
+
+						  delete element.attributes.listType;
+					  },
+					  a : function( element )
+					  {
+						  if ( !element.attributes.href )
+							  element.attributes.href = element.children[ 0 ].value;
+					  },
+					  'smiley' : function( element )
+					  {
+							element.name = 'img';
+
+							var description = element.attributes.desc,
+								image = config.smiley_images[ CKEDITOR.tools.indexOf( config.smiley_descriptions, description ) ],
+								src = CKEDITOR.tools.htmlEncode( config.smiley_path + image );
+
+						  element.attributes =
+						  {
+							  src : src,
+							  'data-cke-saved-src' : src,
+							  title :  description,
+							  alt : description
+						  };
+					  }
+				  }
+			  } );
+
+			  editor.dataProcessor.htmlFilter.addRules(
+			  {
+				elements :
+				{
+					$ : function( element )
+					{
+						var attributes = element.attributes,
+								style = parseStyleText( attributes.style ),
+								value;
+
+						var tagName = element.name;
+						if ( tagName in convertMap )
+							tagName = convertMap[ tagName ];
+						else if ( tagName == 'span' )
+						{
+							if ( ( value = style.color ) )
+							{
+								tagName = 'color';
+								value = RGBToHex( value );
+							}
+							else if ( ( value = style[ 'font-size' ] ) )
+							{
+								var percentValue = value.match( /(\d+)%$/ );
+								if ( percentValue )
+								{
+									value = percentValue[ 1 ];
+									tagName = 'size';
+								}
+							}
+						}
+						else if ( tagName == 'ol' || tagName == 'ul' )
+						{
+							if ( ( value = style[ 'list-style-type'] ) )
+							{
+								switch ( value )
+								{
+									case 'lower-alpha':
+										value = 'a';
+										break;
+									case 'upper-alpha':
+										value = 'A';
+										break;
+								}
+							}
+							else if ( tagName == 'ol' )
+								value = 1;
+
+							tagName = 'list';
+						}
+						else if ( tagName == 'blockquote' )
+						{
+							try
+							{
+								var cite = element.children[ 0 ],
+										quoted = element.children[ 1 ],
+										citeText = cite.name == 'cite' && cite.children[ 0 ].value;
+
+								if ( citeText )
+								{
+									value = '"' + citeText + '"';
+									element.children = quoted.children;
+								}
+
+							}
+							catch( er )
+							{
+							}
+
+							tagName = 'quote';
+						}
+						else if ( tagName == 'a' )
+						{
+							if ( ( value = attributes.href ) )
+							{
+								if ( value.indexOf( 'mailto:' ) !== -1 )
+								{
+									tagName = 'email';
+									// [email] should have a single text child with email address.
+									element.children = [ new CKEDITOR.htmlParser.text( value.replace( 'mailto:', '' ) ) ];
+									value = '';
+								}
+								else
+								{
+									var singleton = element.children.length == 1 && element.children[ 0 ];
+									if ( singleton
+											&& singleton.type == CKEDITOR.NODE_TEXT
+											&& singleton.value == value )
+										value = '';
+
+									tagName = 'url';
+								}
+							}
+						}
+						else if ( tagName == 'img' )
+						{
+							element.isEmpty = 0;
+
+							// Translate smiley (image) to text emotion.
+							var src = attributes[ 'data-cke-saved-src' ];
+							if ( src && src.indexOf( editor.config.smiley_path ) != -1 )
+								return new CKEDITOR.htmlParser.text( smileyMap[ attributes.alt ] );
+							else
+								element.children = [ new CKEDITOR.htmlParser.text( src ) ];
+						}
+
+						element.name = tagName;
+						value && ( element.attributes.option = value );
+
+						return null;
+					},
+
+					// Remove any bogus br from the end of a pseudo block,
+					// e.g. <div>some text<br /><p>paragraph</p></div>
+					br : function( element )
+					{
+						var next = element.next;
+						if ( next && next.name in blockLikeTags )
+							return false;
+					}
+				}
+			  }, 1 );
+
+			  editor.dataProcessor.writer = BBCodeWriter;
+
+			  editor.on( 'editingBlockReady', function ()
+			  {
+				  var wysiwyg = editor._.modes[ 'wysiwyg' ];
+				  wysiwyg.loadData = CKEDITOR.tools.override( wysiwyg.loadData, function( org )
+				  {
+					  return function( data )
+					  {
+						  return ( org.call( this, BBCodeToHtml( data ) ) );
+					  };
+				  } );
+			  } );
+		  },
+
+		  afterInit : function( editor )
+		  {
+			  var filters;
+			  if ( editor._.elementsPath  )
+			  {
+				  // Eliminate irrelevant elements from displaying, e.g body and p.
+				  if ( ( filters = editor._.elementsPath.filters ) )
+					filters.push( function( element )
+						{
+							var htmlName = element.getName(),
+								name = tagnameMap[ htmlName ] || false;
+
+							// Specialized anchor presents as email.
+							if ( name == 'link' && element.getAttribute( 'href' ).indexOf( 'mailto:' ) === 0 )
+								name = 'email';
+							// Styled span could be either size or color.
+							else if ( htmlName == 'span' )
+							{
+								if ( element.getStyle( 'font-size' ) )
+									name = 'size';
+								else if ( element.getStyle( 'color' ) )
+									name = 'color';
+							}
+							else if ( name == 'img' )
+							{
+								var src = element.data( 'cke-saved-src' );
+								if ( src && src.indexOf( editor.config.smiley_path ) === 0 )
+									name = 'smiley';
+							}
+
+							return name;
+						});
+			  }
+		  }
+	  } );
+
+})();
Index: CKEditor/trunk/_source/plugins/bidi/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/bidi/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/bidi/plugin.js	(revision 6904)
@@ -23,4 +23,8 @@
 		var editor = evt.editor,
 			path = evt.data.path;
+
+		if ( editor.readOnly )
+			return;
+
 		var useComputedState = editor.config.useComputedState,
 			selectedElement;
Index: CKEditor/trunk/_source/plugins/blockquote/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/blockquote/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/blockquote/plugin.js	(revision 6904)
@@ -26,6 +26,9 @@
 	function onSelectionChange( evt )
 	{
-		var editor = evt.editor,
-			command = editor.getCommand( 'blockquote' );
+		var editor = evt.editor;
+		if ( editor.readOnly )
+			return;
+
+		var command = editor.getCommand( 'blockquote' );
 		command.state = getState( editor, evt.data.path );
 		command.fire( 'state' );
Index: CKEditor/trunk/_source/plugins/button/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/button/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/button/plugin.js	(revision 6904)
@@ -17,5 +17,5 @@
  * @example
  */
-CKEDITOR.UI_BUTTON = 1;
+CKEDITOR.UI_BUTTON = 'button';
 
 /**
@@ -56,47 +56,8 @@
 };
 
-/**
- * Handles a button click.
- * @private
- */
-CKEDITOR.ui.button._ =
-{
-	instances : [],
-
-	keydown : function( index, ev )
-	{
-		var instance = CKEDITOR.ui.button._.instances[ index ];
-
-		if ( instance.onkey )
-		{
-			ev = new CKEDITOR.dom.event( ev );
-			return ( instance.onkey( instance, ev.getKeystroke() ) !== false );
-		}
-	},
-
-	focus : function( index, ev )
-	{
-		var instance = CKEDITOR.ui.button._.instances[ index ],
-			retVal;
-
-		if ( instance.onfocus )
-			retVal = ( instance.onfocus( instance, new CKEDITOR.dom.event( ev ) ) !== false );
-
-		// FF2: prevent focus event been bubbled up to editor container, which caused unexpected editor focus.
-		if ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 )
-			ev.preventBubble();
-		return retVal;
-	}
-};
-
 ( function()
 {
-	var keydownFn = CKEDITOR.tools.addFunction( CKEDITOR.ui.button._.keydown, CKEDITOR.ui.button._ ),
-		focusFn = CKEDITOR.tools.addFunction( CKEDITOR.ui.button._.focus, CKEDITOR.ui.button._ );
-
 CKEDITOR.ui.button.prototype =
 {
-	canGroup : true,
-
 	/**
 	 * Renders the button.
@@ -113,6 +74,5 @@
 			classes = '',
 			command = this.command, // Get the command name.
-			clickFn,
-			index;
+			clickFn;
 
 		this._.editor = editor;
@@ -134,7 +94,28 @@
 		};
 
+		var keydownFn = CKEDITOR.tools.addFunction( function( ev )
+			{
+				if ( instance.onkey )
+				{
+					ev = new CKEDITOR.dom.event( ev );
+					return ( instance.onkey( instance, ev.getKeystroke() ) !== false );
+				}
+			});
+
+		var focusFn = CKEDITOR.tools.addFunction( function( ev )
+			{
+				var retVal;
+
+				if ( instance.onfocus )
+					  retVal = ( instance.onfocus( instance, new CKEDITOR.dom.event( ev ) ) !== false );
+
+				// FF2: prevent focus event been bubbled up to editor container, which caused unexpected editor focus.
+				if ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 )
+					  ev.preventBubble();
+				return retVal;
+			});
+
 		instance.clickFn = clickFn = CKEDITOR.tools.addFunction( instance.execute, instance );
 
-		instance.index = index = CKEDITOR.ui.button._.instances.push( instance ) - 1;
 
 		// Indicate a mode sensitive button.
@@ -142,17 +123,31 @@
 		{
 			var modeStates = {};
+
+			function updateState()
+			{
+				// "this" is a CKEDITOR.ui.button instance.
+
+				var mode = editor.mode;
+
+				if ( mode )
+				{
+					// Restore saved button state.
+					var state = this.modes[ mode ] ? modeStates[ mode ] != undefined ? modeStates[ mode ] :
+							CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED;
+
+					this.setState( editor.readOnly && !this.readOnly ? CKEDITOR.TRISTATE_DISABLED : state );
+				}
+			}
+
 			editor.on( 'beforeModeUnload', function()
 				{
-					modeStates[ editor.mode ] = this._.state;
+					if ( editor.mode && this._.state != CKEDITOR.TRISTATE_DISABLED )
+						modeStates[ editor.mode ] = this._.state;
 				}, this );
 
-			editor.on( 'mode', function()
-				{
-					var mode = editor.mode;
-					// Restore saved button state.
-					this.setState( this.modes[ mode ] ?
-						modeStates[ mode ] != undefined ? modeStates[ mode ] :
-							CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );
-				}, this);
+			editor.on( 'mode', updateState, this);
+
+			// If this button is sensitive to readOnly state, update it accordingly.
+			!this.readOnly && editor.on( 'readOnly', updateState, this);
 		}
 		else if ( command )
@@ -211,6 +206,6 @@
 
 		output.push(
-					' onkeydown="return CKEDITOR.tools.callFunction(', keydownFn, ', ', index, ', event);"' +
-					' onfocus="return CKEDITOR.tools.callFunction(', focusFn,', ', index, ', event);"' +
+					' onkeydown="return CKEDITOR.tools.callFunction(', keydownFn, ', event);"' +
+					' onfocus="return CKEDITOR.tools.callFunction(', focusFn,', event);"' +
 				' onclick="CKEDITOR.tools.callFunction(', clickFn, ', this); return false;">' +
 					'<span class="cke_icon"' );
@@ -289,7 +284,2 @@
 	this.add( name, CKEDITOR.UI_BUTTON, definition );
 };
-
-CKEDITOR.on( 'reset', function()
-	{
-		CKEDITOR.ui.button._.instances = [];
-	});
Index: CKEditor/trunk/_source/plugins/clipboard/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/clipboard/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/clipboard/plugin.js	(revision 6904)
@@ -284,5 +284,7 @@
 		CKEDITOR.env.ie && ( depressBeforeEvent = 1 );
 
-		var retval = editor.document.$.queryCommandEnabled( command ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED;
+		var retval = CKEDITOR.TRISTATE_OFF;
+		try { retval = editor.document.$.queryCommandEnabled( command ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED; }catch( er ){}
+
 		depressBeforeEvent = 0;
 		return retval;
Index: CKEditor/trunk/_source/plugins/devtools/lang/en.js
===================================================================
--- CKEditor/trunk/_source/plugins/devtools/lang/en.js	(revision 6904)
+++ CKEditor/trunk/_source/plugins/devtools/lang/en.js	(revision 6904)
@@ -0,0 +1,16 @@
+﻿/*
+Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang( 'devtools', 'en',
+{
+	devTools :
+	{
+		title		: 'Element Information',
+		dialogName	: 'Dialog window name',
+		tabName		: 'Tab name',
+		elementId	: 'Element ID',
+		elementType	: 'Element type'
+	}
+});
Index: CKEditor/trunk/_source/plugins/devtools/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/devtools/plugin.js	(revision 6904)
+++ CKEditor/trunk/_source/plugins/devtools/plugin.js	(revision 6904)
@@ -0,0 +1,173 @@
+﻿/*
+Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'devtools',
+{
+	lang : [ 'en' ],
+
+	init : function( editor )
+	{
+		editor._.showDialogDefinitionTooltips = 1;
+	},
+	onLoad : function()
+	{
+		CKEDITOR.document.appendStyleText( CKEDITOR.config.devtools_styles ||
+							'#cke_tooltip { padding: 5px; border: 2px solid #333; background: #ffffff }' +
+							'#cke_tooltip h2 { font-size: 1.1em; border-bottom: 1px solid; margin: 0; padding: 1px; }' +
+							'#cke_tooltip ul { padding: 0pt; list-style-type: none; }' );
+	}
+});
+
+(function()
+{
+	function defaultCallback( editor, dialog, element, tabName )
+	{
+		var lang = editor.lang.devTools,
+			link = '<a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dialog.definition.' +
+					( element ? ( element.type == 'text' ? 'textInput' : element.type ) : 'content' ) +
+					'.html" target="_blank">' + ( element ? element.type : 'content' ) + '</a>',
+			str =
+				'<h2>' + lang.title + '</h2>' +
+				'<ul>' +
+					'<li><strong>' + lang.dialogName + '</strong> : ' + dialog.getName() + '</li>' +
+					'<li><strong>' + lang.tabName + '</strong> : ' + tabName + '</li>';
+
+		if ( element )
+			str += '<li><strong>' + lang.elementId + '</strong> : ' + element.id + '</li>';
+
+		str += '<li><strong>' + lang.elementType + '</strong> : ' + link + '</li>';
+
+		return str + '</ul>';
+	}
+
+	function showTooltip( callback, el, editor, dialog, obj, tabName )
+	{
+		var pos = el.getDocumentPosition(),
+			styles = { 'z-index' : CKEDITOR.dialog._.currentZIndex + 10, top : ( pos.y + el.getSize( 'height' ) ) + 'px' };
+
+		tooltip.setHtml( callback( editor, dialog, obj, tabName ) );
+		tooltip.show();
+
+		// Translate coordinate for RTL.
+		if ( editor.lang.dir == 'rtl' )
+		{
+			var viewPaneSize = CKEDITOR.document.getWindow().getViewPaneSize();
+			styles.right = ( viewPaneSize.width - pos.x - el.getSize( 'width' ) ) + 'px';
+		}
+		else
+			styles.left = pos.x + 'px';
+
+		tooltip.setStyles( styles );
+	}
+
+	var tooltip;
+	CKEDITOR.on( 'reset', function()
+	{
+		tooltip && tooltip.remove();
+		tooltip = null;
+	});
+
+	CKEDITOR.on( 'dialogDefinition', function( evt )
+	{
+		var editor = evt.editor;
+		if ( editor._.showDialogDefinitionTooltips )
+		{
+			if ( !tooltip )
+			{
+				tooltip = CKEDITOR.dom.element.createFromHtml( '<div id="cke_tooltip" tabindex="-1" style="position: absolute"></div>', CKEDITOR.document );
+				tooltip.hide();
+				tooltip.on( 'mouseover', function(){ this.show(); } );
+				tooltip.on( 'mouseout', function(){ this.hide(); } );
+				tooltip.appendTo( CKEDITOR.document.getBody() );
+			}
+
+			var dialog = evt.data.definition.dialog,
+				callback = editor.config.devtools_textCallback || defaultCallback;
+
+			dialog.on( 'load', function()
+			{
+				var tabs = dialog.parts.tabs.getChildren(), tab;
+				for ( var i = 0, len = tabs.count(); i < len; i++ )
+				{
+					tab = tabs.getItem( i );
+					tab.on( 'mouseover', function()
+					{
+						var id = this.$.id;
+						showTooltip( callback, this, editor, dialog, null, id.substring( 4, id.lastIndexOf( '_' ) ) );
+					});
+					tab.on( 'mouseout', function()
+					{
+						tooltip.hide();
+					});
+				}
+
+				dialog.foreach( function( obj )
+				{
+					if ( obj.type in { hbox : 1, vbox : 1 } )
+						return;
+
+					var el = obj.getElement();
+					if ( el )
+					{
+						el.on( 'mouseover', function()
+						{
+							showTooltip( callback, this, editor, dialog, obj, dialog._.currentTabId );
+						});
+						el.on( 'mouseout', function()
+						{
+							tooltip.hide();
+						});
+					}
+				});
+			});
+		}
+	});
+})();
+
+/**
+ * A function that returns the text to be displayed inside the developer tooltip when hovering over a dialog UI element.
+ * There are 4 parameters that are being passed into the function: editor, dialog, element, tab name.
+ * @name editor.config.devtools_textCallback
+ * @since 3.6
+ * @type Function
+ * @default (see example)
+ * @example
+ * // This is actually the default value.
+ * // Show dialog name, tab id and element id.
+ * config.devtools_textCallback = function( editor, dialog, element, tabName )
+ * {
+ * 	var lang = editor.lang.devTools,
+ * 		link = '<a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dialog.definition.' +
+ * 				( element ? ( element.type == 'text' ? 'textInput' : element.type ) : 'content' ) +
+ * 				'.html" target="_blank">' + ( element ? element.type : 'content' ) + '</a>',
+ * 		str =
+ * 			'<h2>' + lang.title + '</h2>' +
+ * 			'<ul>' +
+ * 				'<li><strong>' + lang.dialogName + '</strong> : ' + dialog.getName() + '</li>' +
+ * 				'<li><strong>' + lang.tabName + '</strong> : ' + tabName + '</li>';
+ *
+ * 	if ( element )
+ * 		str += '<li><strong>' + lang.elementId + '</strong> : ' + element.id + '</li>';
+ *
+ * 	str += '<li><strong>' + lang.elementType + '</strong> : ' + link + '</li>';
+ *
+ * 	return str + '</ul>';
+ * }
+ */
+
+/**
+ * A setting that holds CSS rules to be injected do page and contain styles to be applied to the tooltip element.
+ * @name CKEDITOR.config.devtools_styles
+ * @since 3.6
+ * @type String
+ * @default (see example)
+ * @example
+ * // This is actually the default value.
+ * CKEDITOR.config.devtools_styles = &quot;
+ *  #cke_tooltip { padding: 5px; border: 2px solid #333; background: #ffffff }
+ *  #cke_tooltip h2 { font-size: 1.1em; border-bottom: 1px solid; margin: 0; padding: 1px; }
+ *  #cke_tooltip ul { padding: 0pt; list-style-type: none; }
+ * &quot;;
+ */
Index: CKEditor/trunk/_source/plugins/dialog/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/dialog/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/dialog/plugin.js	(revision 6904)
@@ -2242,4 +2242,7 @@
 				if ( elementDefinition.className )
 					classes[ elementDefinition.className ] = 1;
+				if ( elementDefinition.disabled )
+					classes[ 'cke_disabled' ] = 1;
+
 				var attributeClasses = ( attributes['class'] && attributes['class'].split ) ? attributes['class'].split( ' ' ) : [];
 				for ( i = 0 ; i < attributeClasses.length ; i++ )
@@ -2726,5 +2729,5 @@
 		disable : function()
 		{
-			var element = this.getInputElement();
+			var element = this.getElement();
 			element.setAttribute( 'disabled', 'true' );
 			element.addClass( 'cke_disabled' );
@@ -2737,5 +2740,5 @@
 		enable : function()
 		{
-			var element = this.getInputElement();
+			var element = this.getElement();
 			element.removeAttribute( 'disabled' );
 			element.removeClass( 'cke_disabled' );
Index: CKEditor/trunk/_source/plugins/dialogui/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/dialogui/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/dialogui/plugin.js	(revision 6904)
@@ -619,5 +619,5 @@
 					{
 						innerHTML.push( '<option value="',
-							CKEDITOR.tools.htmlEncode( item[1] !== undefined ? item[1] : item[0] ), '" /> ',
+							CKEDITOR.tools.htmlEncode( item[1] !== undefined ? item[1] : item[0] ).replace( /"/g, '&quot;' ), '" /> ',
 							CKEDITOR.tools.htmlEncode( item[0] ) );
 					}
Index: CKEditor/trunk/_source/plugins/docprops/dialogs/docprops.js
===================================================================
--- CKEditor/trunk/_source/plugins/docprops/dialogs/docprops.js	(revision 6904)
+++ CKEditor/trunk/_source/plugins/docprops/dialogs/docprops.js	(revision 6904)
@@ -0,0 +1,686 @@
+﻿/*
+Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add( 'docProps', function( editor )
+{
+	var lang = editor.lang.docprops,
+		langCommon = editor.lang.common,
+		metaHash = {};
+
+	function getDialogValue( dialogName, callback )
+	{
+		var onOk = function()
+		{
+			releaseHandlers( this );
+			callback( this, this._.parentDialog );
+		};
+		var releaseHandlers = function( dialog )
+		{
+			dialog.removeListener( 'ok', onOk );
+			dialog.removeListener( 'cancel', releaseHandlers );
+		};
+		var bindToDialog = function( dialog )
+		{
+			dialog.on( 'ok', onOk );
+			dialog.on( 'cancel', releaseHandlers );
+		};
+		editor.execCommand( dialogName );
+		if ( editor._.storedDialogs.colordialog )
+			bindToDialog( editor._.storedDialogs.colordialog );
+		else
+		{
+			CKEDITOR.on( 'dialogDefinition', function( e )
+			{
+				if ( e.data.name != dialogName )
+					return;
+
+				var definition = e.data.definition;
+
+				e.removeListener();
+				definition.onLoad = CKEDITOR.tools.override( definition.onLoad, function( orginal )
+				{
+					return function()
+					{
+						bindToDialog( this );
+						definition.onLoad = orginal;
+						if ( typeof orginal == 'function' )
+							orginal.call( this );
+					};
+				});
+			});
+		}
+	}
+	function handleOther()
+	{
+		var dialog = this.getDialog(),
+			other = dialog.getContentElement( 'general', this.id + 'Other' );
+		if ( !other )
+			return;
+		if ( this.getValue() == 'other' )
+		{
+			other.getInputElement().removeAttribute( 'readOnly' );
+			other.focus();
+			other.getElement().removeClass( 'cke_disabled' );
+		}
+		else
+		{
+			other.getInputElement().setAttribute( 'readOnly', true );
+			other.getElement().addClass( 'cke_disabled' );
+		}
+	}
+	function commitMeta( name, isHttp, value )
+	{
+		return function( doc, html, head )
+		{
+			var hash = metaHash,
+				val = typeof value != 'undefined' ? value : this.getValue();
+			if ( !val && ( name in hash ) )
+				hash[ name ].remove();
+			else if ( val && ( name in hash ) )
+				hash[ name ].setAttribute( 'content', val );
+			else if ( val )
+			{
+				var meta = new CKEDITOR.dom.element( 'meta', editor.document );
+				meta.setAttribute( isHttp ? 'http-equiv' : 'name', name );
+				meta.setAttribute( 'content', val );
+				head.append( meta );
+			}
+		};
+	}
+	function setupMeta( name, ret )
+	{
+		return function()
+		{
+			var hash = metaHash,
+				result = ( name in hash ) ? hash[ name ].getAttribute( 'content' ) || '' : '';
+			if ( ret )
+				return result;
+			this.setValue( result );
+			return null;
+		};
+	}
+	function commitMargin( name )
+	{
+		return function( doc, html, head, body )
+		{
+			body.removeAttribute( 'margin' + name );
+			var val = this.getValue();
+			if ( val !== '' )
+				body.setStyle( 'margin-' + name, CKEDITOR.tools.cssLength( val ) );
+			else
+				body.removeStyle( 'margin-' + name );
+		};
+	}
+
+	function createMetaHash( doc )
+	{
+		var hash = {},
+			metas = doc.getElementsByTag( 'meta' ),
+			count = metas.count();
+
+		for ( var i = 0; i < count; i++ )
+		{
+			var meta = metas.getItem( i );
+			hash[ meta.getAttribute( meta.hasAttribute( 'http-equiv' ) ? 'http-equiv' : 'name' ).toLowerCase() ] = meta;
+		}
+		return hash;
+	}
+	// We cannot just remove the style from the element, as it might be affected from non-inline stylesheets.
+	// To get the proper result, we should manually set the inline style to its default value.
+	function resetStyle( element, prop, resetVal )
+	{
+		element.removeStyle( prop );
+		if ( element.getComputedStyle( prop ) != resetVal )
+			element.setStyle( prop, resetVal );
+	}
+
+	// Utilty to shorten the creation of color fields in the dialog.
+	var colorField = function( id, label, fieldProps )
+	{
+		return {
+			type : 'hbox',
+			padding : 0,
+			widths : [ '60%', '40%' ],
+			children : [
+				CKEDITOR.tools.extend( {
+					type : 'text',
+					id : id,
+					label : lang[ label ]
+				}, fieldProps || {}, 1 ),
+				{
+					type : 'button',
+					id : id + 'Choose',
+					label : lang.chooseColor,
+					className : 'colorChooser',
+					onClick : function()
+					{
+						var self = this;
+						getDialogValue( 'colordialog', function( colorDialog )
+						{
+							var dialog = self.getDialog();
+							dialog.getContentElement( dialog._.currentTabId, id ).setValue( colorDialog.getContentElement( 'picker', 'selectedColor' ).getValue() );
+						});
+					}
+				}
+			]
+		};
+	};
+	var previewSrc = 'javascript:' +
+		'void((function(){' +
+			encodeURIComponent(
+				'document.open();' +
+				( CKEDITOR.env.isCustomDomain() ? 'document.domain=\'' + document.domain + '\';' : '' ) +
+				'document.write( \'<html style="background-color: #ffffff; height: 100%"><head></head><body style="width: 100%; height: 100%; margin: 0px">' + lang.previewHtml + '</body></html>\' );' +
+				'document.close();'
+			) +
+		'})())';
+
+	return {
+		title : lang.title,
+		minHeight: 330,
+		minWidth: 500,
+		onShow : function()
+		{
+			var doc = editor.document,
+				html = doc.getElementsByTag( 'html' ).getItem( 0 ),
+				head = doc.getHead(),
+				body = doc.getBody();
+			metaHash = createMetaHash( doc );
+			this.setupContent( doc, html, head, body );
+		},
+		onHide : function()
+		{
+			metaHash = {};
+		},
+		onOk : function()
+		{
+			var doc = editor.document,
+				html = doc.getElementsByTag( 'html' ).getItem( 0 ),
+				head = doc.getHead(),
+				body = doc.getBody();
+			this.commitContent( doc, html, head, body );
+		},
+		contents : [
+			{
+				id : 'general',
+				label : langCommon.generalTab,
+				elements : [
+					{
+						type : 'text',
+						id : 'title',
+						label : lang.docTitle,
+						setup : function( doc )
+						{
+							this.setValue( doc.getElementsByTag( 'title' ).getItem( 0 ).data( 'cke-title' ) );
+						},
+						commit : function( doc, html, head, body, isPreview )
+						{
+							if ( isPreview )
+								return;
+							doc.getElementsByTag( 'title' ).getItem( 0 ).data( 'cke-title', this.getValue() );
+						}
+					},
+					{
+						type : 'hbox',
+						children : [
+							{
+								type : 'select',
+								id : 'dir',
+								label : langCommon.langDir,
+								style : 'width: 100%',
+								items : [
+									[ langCommon.notSet , '' ],
+									[ langCommon.langDirLtr, 'ltr' ],
+									[ langCommon.langDirRtl, 'rtl' ]
+								],
+								setup : function( doc, html, head, body )
+								{
+									this.setValue( body.getDirection() || '' );
+								},
+								commit : function( doc, html, head, body )
+								{
+									var val = this.getValue();
+									if ( val )
+										body.setAttribute( 'dir', val );
+									else
+										body.removeAttribute( 'dir' );
+									body.removeStyle( 'direction' );
+								}
+							},
+							{
+								type : 'text',
+								id : 'langCode',
+								label : langCommon.langCode,
+								setup : function( doc, html )
+								{
+									this.setValue( html.getAttribute( 'xml:lang' ) || html.getAttribute( 'lang' ) || '' );
+								},
+								commit : function( doc, html, head, body, isPreview )
+								{
+									if ( isPreview )
+										return;
+									var val = this.getValue();
+									if ( val )
+										html.setAttributes( { 'xml:lang' : val, lang : val } );
+									else
+										html.removeAttributes( { 'xml:lang' : 1, lang : 1 } );
+								}
+							}
+						]
+					},
+					{
+						type : 'hbox',
+						children : [
+							{
+								type : 'select',
+								id : 'charset',
+								label : lang.charset,
+								style : 'width: 100%',
+								items : [
+									[ langCommon.notSet, '' ],
+									[ lang.charsetASCII, 'us-ascii' ],
+									[ lang.charsetCE, 'iso-8859-2' ],
+									[ lang.charsetCT, 'big5' ],
+									[ lang.charsetCR, 'iso-8859-5' ],
+									[ lang.charsetGR, 'iso-8859-7' ],
+									[ lang.charsetJP, 'iso-2022-jp' ],
+									[ lang.charsetKR, 'iso-2022-kr' ],
+									[ lang.charsetTR, 'iso-8859-9' ],
+									[ lang.charsetUN, 'utf-8' ],
+									[ lang.charsetWE, 'iso-8859-1' ],
+									[ lang.other, 'other' ]
+								],
+								'default' : '',
+								onChange : function()
+								{
+									this.getDialog().selectedCharset = this.getValue() != 'other' ? this.getValue() : '';
+									handleOther.call( this );
+								},
+								setup : function()
+								{
+									this.metaCharset = ( 'charset' in metaHash );
+
+									var func = setupMeta( this.metaCharset ? 'charset' : 'content-type', 1, 1 ),
+										val = func.call( this );
+
+									!this.metaCharset && val.match( /charset=[^=]+$/ ) && ( val = val.substring( val.indexOf( '=' ) + 1 ) );
+
+									if ( val )
+									{
+										this.setValue( val.toLowerCase() );
+										if ( !this.getValue() )
+										{
+											this.setValue( 'other' );
+											var other = this.getDialog().getContentElement( 'general', 'charsetOther' );
+											other && other.setValue( val );
+										}
+										this.getDialog().selectedCharset = val;
+									}
+
+									handleOther.call( this );
+								},
+								commit : function( doc, html, head, body, isPreview )
+								{
+									if ( isPreview )
+										return;
+									var value = this.getValue(),
+										other = this.getDialog().getContentElement( 'general', 'charsetOther' );
+
+									value == 'other' && ( value = other ? other.getValue() : '' );
+
+									value && !this.metaCharset && ( value = ( metaHash[ 'content-type' ] ? metaHash[ 'content-type' ].getAttribute( 'content' ).split( ';' )[0] : 'text/html' ) + '; charset=' + value );
+
+									var func = commitMeta( this.metaCharset ? 'charset' : 'content-type', 1, value );
+									func.call( this, doc, html, head );
+								}
+							},
+							{
+								type : 'text',
+								id : 'charsetOther',
+								label : lang.charsetOther,
+								onChange : function(){ this.getDialog().selectedCharset = this.getValue(); }
+							}
+						]
+					},
+					{
+						type : 'hbox',
+						children : [
+							{
+								type : 'select',
+								id : 'docType',
+								label : lang.docType,
+								style : 'width: 100%',
+								items : [
+									[ langCommon.notSet , '' ],
+									[ 'XHTML 1.1', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">' ],
+									[ 'XHTML 1.0 Transitional', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' ],
+									[ 'XHTML 1.0 Strict', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' ],
+									[ 'XHTML 1.0 Frameset', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">' ],
+									[ 'HTML 5', '<!DOCTYPE html>' ],
+									[ 'HTML 4.01 Transitional', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' ],
+									[ 'HTML 4.01 Strict', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">' ],
+									[ 'HTML 4.01 Frameset', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">' ],
+									[ 'HTML 3.2', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">' ],
+									[ 'HTML 2.0', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">' ],
+									[ lang.other, 'other' ]
+								],
+								onChange : handleOther,
+								setup : function()
+								{
+									if ( editor.docType )
+									{
+										this.setValue( editor.docType );
+										if ( !this.getValue() )
+										{
+											this.setValue( 'other' );
+											var other = this.getDialog().getContentElement( 'general', 'docTypeOther' );
+											other && other.setValue( editor.docType );
+										}
+									}
+									handleOther.call( this );
+								},
+								commit : function( doc, html, head, body, isPreview )
+								{
+									if ( isPreview )
+										return;
+									var value = this.getValue(),
+										other = this.getDialog().getContentElement( 'general', 'docTypeOther' );
+									editor.docType = value == 'other' ? ( other ? other.getValue() : '' ) : value;
+								}
+							},
+							{
+								type : 'text',
+								id : 'docTypeOther',
+								label : lang.docTypeOther
+							}
+						]
+					},
+					{
+						type : 'checkbox',
+						id : 'xhtmlDec',
+						label : lang.xhtmlDec,
+						setup : function()
+						{
+							this.setValue( !!editor.xmlDeclaration );
+						},
+						commit : function( doc, html, head, body, isPreview )
+						{
+							if ( isPreview )
+								return;
+							if ( this.getValue() )
+							{
+								editor.xmlDeclaration = '<?xml version="1.0" encoding="' + ( this.getDialog().selectedCharset || 'utf-8' )+ '"?>' ;
+								html.setAttribute( 'xmlns', 'http://www.w3.org/1999/xhtml' );
+							}
+							else
+							{
+								editor.xmlDeclaration = '';
+								html.removeAttribute( 'xmlns' );
+							}
+						}
+					}
+				]
+			},
+			{
+				id : 'design',
+				label : lang.design,
+				elements : [
+					{
+						type : 'hbox',
+						widths : [ '60%', '40%' ],
+						children : [
+							{
+								type : 'vbox',
+								children : [
+									colorField( 'txtColor', 'txtColor',
+									{
+										setup : function( doc, html, head, body )
+										{
+											this.setValue( body.getComputedStyle( 'color' ) );
+										},
+										commit : function( doc, html, head, body, isPreview )
+										{
+											if ( this.isChanged() || isPreview )
+											{
+												body.removeAttribute( 'text' );
+												var val = this.getValue();
+												if ( val )
+													body.setStyle( 'color', val );
+												else
+													body.removeStyle( 'color' );
+											}
+										}
+									}),
+									colorField( 'bgColor', 'bgColor', {
+										setup : function( doc, html, head, body )
+										{
+											var val = body.getComputedStyle( 'background-color' ) || '';
+											this.setValue( val == 'transparent' ? '' : val );
+										},
+										commit : function( doc, html, head, body, isPreview )
+										{
+											if ( this.isChanged() || isPreview )
+											{
+												body.removeAttribute( 'bgcolor' );
+												var val = this.getValue();
+												if ( val )
+													body.setStyle( 'background-color', val );
+												else
+													resetStyle( body, 'background-color', 'transparent' );
+											}
+										}
+									}),
+									{
+										type : 'hbox',
+										widths : [ '60%', '40%' ],
+										padding : 0,
+										children : [
+											{
+												type : 'text',
+												id : 'bgImage',
+												label : lang.bgImage,
+												setup : function( doc, html, head, body )
+												{
+													var val = body.getComputedStyle( 'background-image' ) || '';
+													if ( val == 'none' )
+														val = '';
+													else
+													{
+														val = val.replace( /url\(\s*(["']?)\s*([^\)]*)\s*\1\s*\)/i, function( match, quote, url )
+														{
+															return url;
+														});
+													}
+													this.setValue( val );
+												},
+												commit : function( doc, html, head, body )
+												{
+													body.removeAttribute( 'background' );
+													var val = this.getValue();
+													if ( val )
+														body.setStyle( 'background-image', 'url(' + val + ')' );
+													else
+														resetStyle( body, 'background-image', 'none' );
+												}
+											},
+											{
+												type : 'button',
+												id : 'bgImageChoose',
+												label : langCommon.browseServer,
+												style : 'display:inline-block;margin-top:10px;',
+												hidden : true,
+												filebrowser : 'bg:bgImage'
+											}
+										]
+									},
+									{
+										type : 'checkbox',
+										id : 'bgFixed',
+										label : lang.bgFixed,
+										setup : function( doc, html, head, body )
+										{
+											this.setValue( body.getComputedStyle( 'background-attachment' ) == 'fixed' );
+										},
+										commit : function( doc, html, head, body )
+										{
+											if ( this.getValue() )
+												body.setStyle( 'background-attachment', 'fixed' );
+											else
+												resetStyle( body, 'background-attachment', 'scroll' );
+										}
+									}
+								]
+							},
+							{
+								type : 'vbox',
+								children : [
+									{
+										type : 'html',
+										id : 'marginTitle',
+										html : '<div style="text-align: center; margin: 0px auto; font-weight: bold">' + lang.margin + '</div>'
+									},
+									{
+										type : 'text',
+										id : 'marginTop',
+										label : lang.marginTop,
+										style : 'width: 80px; text-align: center; margin: 0px auto',
+										controlStyle : 'text-align: center',
+										setup : function( doc, html, head, body )
+										{
+											this.setValue( body.getStyle( 'margin-top' ) || body.getAttribute( 'margintop' ) || '' );
+										},
+										commit : commitMargin( 'top' ),
+										onLoad : function()
+										{
+											this.getElement().getParent().setStyle( 'text-align', 'center' );
+										}
+									},
+									{
+										type : 'hbox',
+										children : [
+											{
+												type : 'text',
+												id : 'marginLeft',
+												label : lang.marginLeft,
+												style : 'width: 80px; text-align: center; margin: 0px auto',
+												controlStyle : 'text-align: center',
+												setup : function( doc, html, head, body )
+												{
+													this.setValue( body.getStyle( 'margin-left' ) || body.getAttribute( 'marginleft' ) || '' );
+												},
+												commit : commitMargin( 'left' ),
+												onLoad : function()
+												{
+													this.getElement().getParent().setStyle( 'text-align', 'center' );
+												}
+											},
+											{
+												type : 'text',
+												id : 'marginRight',
+												label : lang.marginRight,
+												style : 'width: 80px; text-align: center; margin: 0px auto',
+												controlStyle : 'text-align: center',
+												setup : function( doc, html, head, body )
+												{
+													this.setValue( body.getStyle( 'margin-right' ) || body.getAttribute( 'marginright' ) || '' );
+												},
+												commit : commitMargin( 'right' ),
+												onLoad : function()
+												{
+													this.getElement().getParent().setStyle( 'text-align', 'center' );
+												}
+											}
+										]
+									},
+									{
+										type : 'text',
+										id : 'marginBottom',
+										label : lang.marginBottom,
+										style : 'width: 80px; text-align: center; margin: 0px auto',
+										controlStyle : 'text-align: center',
+										setup : function( doc, html, head, body )
+										{
+											this.setValue( body.getStyle( 'margin-bottom' ) || body.getAttribute( 'marginbottom' ) || '' );
+										},
+										commit : commitMargin( 'bottom' ),
+										onLoad : function()
+										{
+											this.getElement().getParent().setStyle( 'text-align', 'center' );
+										}
+									}
+								]
+							}
+						]
+					}
+				]
+			},
+			{
+				id : 'meta',
+				label : lang.meta,
+				elements : [
+					{
+						type : 'textarea',
+						id : 'metaKeywords',
+						label : lang.metaKeywords,
+						setup : setupMeta( 'keywords' ),
+						commit : commitMeta( 'keywords' )
+					},
+					{
+						type : 'textarea',
+						id : 'metaDescription',
+						label : lang.metaDescription,
+						setup : setupMeta( 'description' ),
+						commit : commitMeta( 'description' )
+					},
+					{
+						type : 'text',
+						id : 'metaAuthor',
+						label : lang.metaAuthor,
+						setup : setupMeta( 'author' ),
+						commit : commitMeta( 'author' )
+					},
+					{
+						type : 'text',
+						id : 'metaCopyright',
+						label : lang.metaCopyright,
+						setup : setupMeta( 'copyright' ),
+						commit : commitMeta( 'copyright' )
+					}
+				]
+			},
+			{
+				id : 'preview',
+				label : langCommon.preview,
+				elements : [
+					{
+						type : 'html',
+						id : 'previewHtml',
+						html : '<iframe src="' + previewSrc + '" style="width: 100%; height: 310px" hidefocus="true" frameborder="0" ' +
+								'id="cke_docProps_preview_iframe"></iframe>',
+						onLoad : function()
+						{
+							this.getDialog().on( 'selectPage', function( ev )
+							{
+								if ( ev.data.page == 'preview' )
+								{
+									var self = this;
+									setTimeout( function()
+									{
+										var doc = CKEDITOR.document.getById( 'cke_docProps_preview_iframe' ).getFrameDocument(),
+											html = doc.getElementsByTag( 'html' ).getItem( 0 ),
+											head = doc.getHead(),
+											body = doc.getBody();
+										self.commitContent( doc, html, head, body, 1 );
+									}, 50 );
+								}
+							});
+							CKEDITOR.document.getById( 'cke_docProps_preview_iframe' ).getAscendant( 'table' ).setStyle( 'height', '100%' );
+						}
+					}
+				]
+			}
+		]
+	};
+});
Index: CKEditor/trunk/_source/plugins/docprops/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/docprops/plugin.js	(revision 6904)
+++ CKEditor/trunk/_source/plugins/docprops/plugin.js	(revision 6904)
@@ -0,0 +1,22 @@
+﻿/*
+Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add( 'docprops',
+{
+	init : function( editor )
+	{
+		var cmd = new CKEDITOR.dialogCommand( 'docProps' );
+		// Only applicable on full page mode.
+		cmd.modes = { wysiwyg : editor.config.fullPage };
+		editor.addCommand( 'docProps', cmd );
+		CKEDITOR.dialog.add( 'docProps', this.path + 'dialogs/docprops.js' );
+
+		editor.ui.addButton( 'DocProps',
+		{
+			label : editor.lang.docprops.label,
+			command : 'docProps'
+		});
+	}
+});
Index: CKEditor/trunk/_source/plugins/editingblock/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/editingblock/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/editingblock/plugin.js	(revision 6904)
@@ -11,9 +11,4 @@
 (function()
 {
-	var getMode = function( editor, mode )
-	{
-		return editor._.modes && editor._.modes[ mode || editor.mode ];
-	};
-
 	// This is a semaphore used to avoid recursive calls between
 	// the following data handling functions.
@@ -50,5 +45,5 @@
 						{
 							isHandlingData = true;
-							getMode( editor ).loadData( editor.getData() );
+							editor.getMode().loadData( editor.getData() );
 							isHandlingData = false;
 						}
@@ -60,6 +55,9 @@
 							editor.on( 'mode', function()
 								{
-									setData();
-									editor.removeListener( 'mode', arguments.callee );
+									if ( editor.mode )
+									{
+										setData();
+										editor.removeListener( 'mode', arguments.callee );
+									}
 								});
 						}
@@ -72,5 +70,5 @@
 					{
 						isHandlingData = true;
-						editor.setData( getMode( editor ).getData(), null, 1 );
+						editor.setData( editor.getMode().getData(), null, 1 );
 						isHandlingData = false;
 					}
@@ -80,5 +78,5 @@
 				{
 					if ( editor.mode )
-						event.data = getMode( editor ).getSnapshotData();
+						event.data = editor.getMode().getSnapshotData();
 				});
 
@@ -86,5 +84,5 @@
 				{
 					if ( editor.mode )
-						getMode( editor ).loadSnapshotData( event.data );
+						editor.getMode().loadSnapshotData( event.data );
 				});
 
@@ -168,5 +166,5 @@
 			this.fire( 'beforeModeUnload' );
 
-			var currentMode = getMode( this );
+			var currentMode = this.getMode();
 			data = currentMode.getData();
 			currentMode.unload( holderElement );
@@ -177,5 +175,5 @@
 
 		// Load required mode.
-		var modeEditor = getMode( this, mode );
+		var modeEditor = this.getMode( mode );
 		if ( !modeEditor )
 			throw '[CKEDITOR.editor.setMode] Unknown mode "' + mode + '".';
@@ -194,4 +192,15 @@
 
 	/**
+	 * Gets the current or any of the objects that represent the editing
+	 * area modes. The two most common editing modes are "wysiwyg" and "source".
+	 * @param {String} [mode] The mode to be retrieved. If not specified, the
+	 *		current one is returned.
+	 */
+	CKEDITOR.editor.prototype.getMode = function( mode )
+	{
+		return this._.modes && this._.modes[ mode || this.mode ];
+	};
+
+	/**
 	 * Moves the selection focus to the editing are space in the editor.
 	 */
@@ -199,5 +208,5 @@
 	{
 		this.forceNextSelectionCheck();
-		var mode = getMode( this );
+		var mode = this.getMode();
 		if ( mode )
 			mode.focus();
Index: CKEditor/trunk/_source/plugins/elementspath/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/elementspath/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/elementspath/plugin.js	(revision 6904)
@@ -16,4 +16,5 @@
 		{
 			editorFocus : false,
+			readOnly : 1,
 			exec : function( editor )
 			{
@@ -125,12 +126,23 @@
 					while ( element )
 					{
-						var ignore = 0;
+						var ignore = 0,
+							name;
+
+						if ( element.data( 'cke-display-name' ) )
+							name = element.data( 'cke-display-name' );
+						else if ( element.data( 'cke-real-element-type' ) )
+							name = element.data( 'cke-real-element-type' );
+						else
+							name = element.getName();
+
 						for ( var i = 0; i < filters.length; i++ )
 						{
-							if ( filters[ i ]( element ) === false )
+							var ret = filters[ i ]( element, name );
+							if ( ret === false )
 							{
 								ignore = 1;
 								break;
 							}
+							name = ret || name;
 						}
 
@@ -138,9 +150,4 @@
 						{
 							var index = elementsList.push( element ) - 1;
-							var name;
-							if ( element.data( 'cke-real-element-type' ) )
-								name = element.data( 'cke-real-element-type' );
-							else
-								name = element.getName();
 
 							// Use this variable to add conditional stuff to the
@@ -190,10 +197,12 @@
 				});
 
-			editor.on( 'contentDomUnload', function()
-				{
-					// If the spaceElement hasn't been initialized, don't try to do it at this time
-					// Only reuse existing reference.
-					spaceElement && spaceElement.setHtml( emptyHtml );
-				});
+			function empty()
+			{
+				spaceElement && spaceElement.setHtml( emptyHtml );
+				delete editor._.elementsPath.list;
+			}
+
+			editor.on( 'readOnly', empty );
+			editor.on( 'contentDomUnload', empty );
 
 			editor.addCommand( 'elementsPathFocus', commands.toolbarFocus );
Index: CKEditor/trunk/_source/plugins/enterkey/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/enterkey/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/enterkey/plugin.js	(revision 6904)
@@ -12,7 +12,19 @@
 		init : function( editor )
 		{
-			var specialKeys = editor.specialKeys;
-			specialKeys[ 13 ] = enter;
-			specialKeys[ CKEDITOR.SHIFT + 13 ] = shiftEnter;
+			editor.addCommand( 'enter', {
+				modes : { wysiwyg:1 },
+				editorFocus : false,
+				exec : function( editor ){ enter( editor ); }
+			});
+
+			editor.addCommand( 'shiftEnter', {
+				modes : { wysiwyg:1 },
+				editorFocus : false,
+				exec : function( editor ){ shiftEnter( editor ); }
+			});
+
+			var keystrokes = editor.keystrokeHandler.keystrokes;
+			keystrokes[ 13 ] = 'enter';
+			keystrokes[ CKEDITOR.SHIFT + 13 ] = 'shiftEnter';
 		}
 	});
@@ -32,10 +44,12 @@
 			var doc = range.document;
 
+			var atBlockStart = range.checkStartOfBlock(),
+				atBlockEnd = range.checkEndOfBlock(),
+				path = new CKEDITOR.dom.elementPath( range.startContainer ),
+				block = path.block;
+
 			// Exit the list when we're inside an empty list item block. (#5376)
-			if ( range.checkStartOfBlock() && range.checkEndOfBlock() )
-			{
-				var path = new CKEDITOR.dom.elementPath( range.startContainer ),
-						block = path.block;
-
+			if ( atBlockStart && atBlockEnd )
+			{
 				if ( block && ( block.is( 'li' ) || block.getParent().is( 'li' ) ) )
 				{
@@ -44,4 +58,7 @@
 				}
 			}
+			// Don't split <pre> if we're in the middle of it, act as shift enter key.
+			else if ( !atBlockEnd && block && block.is( 'pre' ) )
+				enterBr( editor, mode, range, forceMode );
 
 			// Determine the block element to be used.
@@ -108,5 +125,6 @@
 					// a Shift+Enter (#77). Create a new block element instead
 					// (later in the code).
-					if ( previousBlock.is( 'li' ) || !headerTagRegex.test( previousBlock.getName() ) )
+					if ( previousBlock.is( 'li' ) ||
+							! ( headerTagRegex.test( previousBlock.getName() ) || previousBlock.is( 'pre' ) ) )
 					{
 						// Otherwise, duplicate the previous block.
@@ -337,12 +355,5 @@
 		// 1. We want to enforce the mode to be respected, instead
 		// of cloning the current block. (#77)
-		// 2. Always perform a block break when inside <pre> (#5402).
-		if ( editor.getSelection().getStartElement().hasAscendant( 'pre', true ) )
-		{
-			setTimeout( function() { enterBlock( editor, editor.config.enterMode, null, true ); }, 0 );
-			return true;
-		}
-		else
-			return enter( editor, editor.config.shiftEnterMode, 1 );
+		return enter( editor, editor.config.shiftEnterMode, 1 );
 	}
 
@@ -362,5 +373,5 @@
 			{
 				editor.fire( 'saveSnapshot' );	// Save undo step.
-				if ( mode == CKEDITOR.ENTER_BR || editor.getSelection().getStartElement().hasAscendant( 'pre', 1 ) )
+				if ( mode == CKEDITOR.ENTER_BR )
 					enterBr( editor, mode, null, forceMode );
 				else
Index: CKEditor/trunk/_source/plugins/entities/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/entities/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/entities/plugin.js	(revision 6904)
@@ -7,5 +7,5 @@
 {
 	// Base HTML entities.
-	var htmlbase = 'nbsp,gt,lt';
+	var htmlbase = 'nbsp,gt,lt,amp';
 
 	var entities =
@@ -62,5 +62,6 @@
 				shy		: '\u00AD',		// IE
 				gt		: '\u003E',		// IE | FF |   --   | Opera
-				lt		: '\u003C'		// IE | FF | Safari | Opera
+				lt		: '\u003C',		// IE | FF | Safari | Opera
+				amp : '\u0026'		// ALL
 			};
 
@@ -114,5 +115,8 @@
 			{
 				// Mandatory HTML base entities.
-				var selectedEntities = htmlbase;
+				var selectedEntities = '';
+
+				if ( config.basicEntities !== false )
+					selectedEntities += htmlbase;
 
 				if ( config.entities )
@@ -131,6 +135,6 @@
 				var entitiesTable = buildTable( selectedEntities );
 
-				// Create the Regex used to find entities in the text.
-				var entitiesRegex = '[' + entitiesTable.regex + ']';
+				// Create the Regex used to find entities in the text, leave it matches nothing if entities are empty.
+				var entitiesRegex = entitiesTable.regex ? '[' + entitiesTable.regex + ']' : 'a^';
 				delete entitiesTable.regex;
 
@@ -171,4 +175,20 @@
 
 /**
+ * Whether to escape HTML preserved entities in text, including:
+ * <ul>
+ * <li>nbsp</li>
+ * <li>gt</li>
+ * <li>lt</li>
+ * <li>amp</li>
+ * </ul>
+ * <strong>Note:</strong> It should not be subjected to change unless you're outputting non-HTML data format like BBCode.
+ * @type Boolean
+ * @default true
+ * @example
+ * config.basicEntities = false;
+ */
+CKEDITOR.config.basicEntities = true;
+
+/**
  * Whether to use HTML entities in the output.
  * @name CKEDITOR.config.entities
Index: CKEditor/trunk/_source/plugins/find/dialogs/find.js
===================================================================
--- CKEditor/trunk/_source/plugins/find/dialogs/find.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/find/dialogs/find.js	(revision 6904)
@@ -629,4 +629,5 @@
 								{
 									type : 'button',
+									id : 'btnFind',
 									align : 'left',
 									style : 'width:100%',
@@ -694,4 +695,5 @@
 								{
 									type : 'button',
+									id : 'btnFindReplace',
 									align : 'left',
 									style : 'width:100%',
@@ -727,4 +729,5 @@
 								{
 									type : 'button',
+									id : 'btnReplaceAll',
 									align : 'left',
 									style : 'width:100%',
@@ -852,4 +855,6 @@
 
 				this.selectPage( startupPage );
+
+				this[ ( startupPage == 'find' && this._.editor.readOnly? 'hide' : 'show' ) + 'Page' ]( 'replace');
 			},
 			onHide : function()
Index: CKEditor/trunk/_source/plugins/find/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/find/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/find/plugin.js	(revision 6904)
@@ -16,4 +16,5 @@
 		var findCommand = editor.addCommand( 'find', new CKEDITOR.dialogCommand( 'find' ) );
 		findCommand.canUndo = false;
+		findCommand.readOnly = 1;
 
 		editor.ui.addButton( 'Replace',
Index: CKEditor/trunk/_source/plugins/format/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/format/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/format/plugin.js	(revision 6904)
@@ -46,5 +46,5 @@
 
 						// Add the tag entry to the panel list.
-						this.add( tag, '<' + tag + '>' + label + '</' + tag + '>', label );
+						this.add( tag, styles[tag].buildPreview( label ), label );
 					}
 				},
Index: CKEditor/trunk/_source/plugins/forms/dialogs/select.js
===================================================================
--- CKEditor/trunk/_source/plugins/forms/dialogs/select.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/forms/dialogs/select.js	(revision 6904)
@@ -409,4 +409,5 @@
 									{
 										type : 'button',
+										id : 'btnAdd',
 										style : '',
 										label : editor.lang.select.btnAdd,
@@ -432,4 +433,5 @@
 									{
 										type : 'button',
+										id : 'btnModify',
 										label : editor.lang.select.btnModify,
 										title : editor.lang.select.btnModify,
@@ -454,4 +456,5 @@
 									{
 										type : 'button',
+										id : 'btnUp',
 										style : 'width:100%;',
 										label : editor.lang.select.btnUp,
@@ -470,4 +473,5 @@
 									{
 										type : 'button',
+										id : 'btnDown',
 										style : 'width:100%;',
 										label : editor.lang.select.btnDown,
@@ -495,4 +499,5 @@
 							{
 								type : 'button',
+								id : 'btnSetValue',
 								label : editor.lang.select.btnSetValue,
 								title : editor.lang.select.btnSetValue,
@@ -508,4 +513,5 @@
 							{
 								type : 'button',
+								id : 'btnDelete',
 								label : editor.lang.select.btnDelete,
 								title : editor.lang.select.btnDelete,
Index: CKEditor/trunk/_source/plugins/forms/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/forms/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/forms/plugin.js	(revision 6904)
@@ -262,23 +262,27 @@
 if ( CKEDITOR.env.ie )
 {
-	CKEDITOR.dom.element.prototype.hasAttribute = function( name )
-	{
-		var $attr = this.$.attributes.getNamedItem( name );
-
-		if ( this.getName() == 'input' )
-		{
-			switch ( name )
-			{
-				case 'class' :
-					return this.$.className.length > 0;
-				case 'checked' :
-					return !!this.$.checked;
-				case 'value' :
-					var type = this.getAttribute( 'type' );
-					return type == 'checkbox' || type == 'radio' ? this.$.value != 'on' : this.$.value;
-			}
-		}
-
-		return !!( $attr && $attr.specified );
-	};
+	CKEDITOR.dom.element.prototype.hasAttribute = CKEDITOR.tools.override( CKEDITOR.dom.element.prototype.hasAttribute,
+		function( original )
+		{
+			return function( name )
+				{
+					var $attr = this.$.attributes.getNamedItem( name );
+
+					if ( this.getName() == 'input' )
+					{
+						switch ( name )
+						{
+							case 'class' :
+								return this.$.className.length > 0;
+							case 'checked' :
+								return !!this.$.checked;
+							case 'value' :
+								var type = this.getAttribute( 'type' );
+								return type == 'checkbox' || type == 'radio' ? this.$.value != 'on' : this.$.value;
+						}
+					}
+
+					return original.apply( this, arguments );
+				};
+		});
 }
Index: CKEditor/trunk/_source/plugins/htmldataprocessor/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/htmldataprocessor/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/htmldataprocessor/plugin.js	(revision 6904)
@@ -96,12 +96,5 @@
 	var defaultDataFilterRules =
 	{
-		elements : {
-			a : function( element )
-			{
-				var attrs = element.attributes;
-				if ( attrs && attrs[ 'data-cke-saved-name' ] )
-					attrs[ 'class' ] = ( attrs[ 'class' ] ? attrs[ 'class' ] + ' ' : '' ) + 'cke_anchor';
-			}
-		},
+		elements : {},
 		attributeNames :
 		[
Index: CKEditor/trunk/_source/plugins/iframedialog/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/iframedialog/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/iframedialog/plugin.js	(revision 6904)
@@ -13,5 +13,17 @@
 	onLoad : function()
 	{
-		CKEDITOR.dialog.addIframe = function( name, title, src, width, height, onContentLoad )
+		/**
+		 * An iframe base dialog.
+		 * @param {String} name Name of the dialog
+		 * @param {String} title Title of the dialog
+		 * @param {Number} minWidth Minimum width of the dialog
+		 * @param {Number} minHeight Minimum height of the dialog
+		 * @param {Function} [onContentLoad] Function called when the iframe has been loaded.
+		 * If it isn't specified, the inner frame is notified of the dialog events ('load',
+		 * 'resize', 'ok' and 'cancel') on a function called 'onDialogEvent'
+		 * @param {Object} [userDefinition] Additional properties for the dialog definition
+		 * @example
+		 */
+		CKEDITOR.dialog.addIframe = function( name, title, src, minWidth, minHeight, onContentLoad, userDefinition )
 		{
 			var element =
@@ -25,10 +37,47 @@
 			if ( typeof( onContentLoad ) == 'function' )
 				element.onContentLoad = onContentLoad;
+			else
+				element.onContentLoad = function()
+				{
+					var element = this.getElement(),
+						childWindow = element.$.contentWindow;
+
+					// If the inner frame has defined a "onDialogEvent" function, setup listeners
+					if ( childWindow.onDialogEvent )
+					{
+						var dialog = this.getDialog(),
+							notifyEvent = function(e)
+							{
+								return childWindow.onDialogEvent(e);
+							};
+
+						dialog.on( 'ok', notifyEvent );
+						dialog.on( 'cancel', notifyEvent );
+						dialog.on( 'resize', notifyEvent );
+
+						// Clear listeners
+						dialog.on( 'hide', function(e)
+							{
+								dialog.removeListener( 'ok', notifyEvent );
+								dialog.removeListener( 'cancel', notifyEvent );
+								dialog.removeListener( 'resize', notifyEvent );
+
+								e.removeListener();
+							} );
+
+						// Notify child iframe of load:
+						childWindow.onDialogEvent( {
+								name : 'load',
+								sender : this,
+								editor : dialog._.editor
+							} );
+					}
+				};
 
 			var definition =
 			{
 				title : title,
-				minWidth : width,
-				minHeight : height,
+				minWidth : minWidth,
+				minHeight : minHeight,
 				contents :
 				[
@@ -42,5 +91,8 @@
 			};
 
-			return this.add( name, function(){ return definition; } );
+			for ( var i in userDefinition )
+				definition[i] = userDefinition[i];
+
+			this.add( name, function(){ return definition; } );
 		};
 
Index: CKEditor/trunk/_source/plugins/image/dialogs/image.js
===================================================================
--- CKEditor/trunk/_source/plugins/image/dialogs/image.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/image/dialogs/image.js	(revision 6904)
@@ -116,4 +116,7 @@
 		var switchLockRatio = function( dialog, value )
 		{
+			if ( !dialog.getContentElement( 'info', 'ratioLock' ) )
+				return null;
+
 			var oImageOriginal = dialog.originalElement;
 
@@ -170,6 +173,8 @@
 			if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
 			{
-				dialog.setValueOf( 'info', 'txtWidth', oImageOriginal.$.width );
-				dialog.setValueOf( 'info', 'txtHeight', oImageOriginal.$.height );
+				var widthField = dialog.getContentElement( 'info', 'txtWidth' ),
+					heightField = dialog.getContentElement( 'info', 'txtHeight' );
+				widthField && widthField.setValue( oImageOriginal.$.width );
+				heightField && heightField.setValue( oImageOriginal.$.height );
 			}
 			updatePreview( dialog );
@@ -452,6 +457,10 @@
 					this.hidePage( 'Link' );		//Hide Link tab.
 				var doc = this._.element.getDocument();
-				this.addFocusable( doc.getById( btnResetSizeId ), 5 );
-				this.addFocusable( doc.getById( btnLockSizesId ), 5 );
+
+				if ( this.getContentElement( 'info', 'ratioLock' ) )
+				{
+					this.addFocusable( doc.getById( btnResetSizeId ), 5 );
+					this.addFocusable( doc.getById( btnLockSizesId ), 5 );
+				}
 
 				this.commitContent = commitContent;
@@ -613,4 +622,5 @@
 							[
 								{
+									id : 'basic',
 									type : 'vbox',
 									children :
@@ -729,4 +739,5 @@
 												},
 												{
+													id : 'ratioLock',
 													type : 'html',
 													style : 'margin-top:30px;width:40px;height:40px;',
@@ -1060,4 +1071,5 @@
 										{
 											type : 'html',
+											id : 'htmlPreview',
 											style : 'width:95%;',
 											html : '<div>' + CKEDITOR.tools.htmlEncode( editor.lang.common.preview ) +'<br>'+
Index: CKEditor/trunk/_source/plugins/indent/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/indent/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/indent/plugin.js	(revision 6904)
@@ -16,4 +16,7 @@
 	function onSelectionChange( evt )
 	{
+		if ( evt.editor.readOnly )
+			return null;
+
 		var editor = evt.editor,
 			elementPath = evt.data.path,
Index: CKEditor/trunk/_source/plugins/justify/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/justify/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/justify/plugin.js	(revision 6904)
@@ -50,4 +50,7 @@
 	function onSelectionChange( evt )
 	{
+		if ( evt.editor.readOnly )
+			return;
+
 		var command = evt.editor.getCommand( this.name );
 		command.state = getState.call( this, evt.editor, evt.data.path );
Index: CKEditor/trunk/_source/plugins/link/dialogs/anchor.js
===================================================================
--- CKEditor/trunk/_source/plugins/link/dialogs/anchor.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/link/dialogs/anchor.js	(revision 6904)
@@ -7,15 +7,16 @@
 {
 	// Function called in onShow to load selected element.
-	var loadElements = function( editor, selection, element )
+	var loadElements = function( element )
 	{
-		this.editMode = true;
-		this.editObj = element;
+		this._.selectedElement = element;
 
-		var attributeValue = this.editObj.getAttribute( 'name' );
-		if ( attributeValue )
-			this.setValueOf( 'info','txtName', attributeValue );
-		else
-			this.setValueOf( 'info','txtName', "" );
+		var attributeValue = element.data( 'cke-saved-name' );
+		this.setValueOf( 'info','txtName', attributeValue || '' );
 	};
+
+	function createFakeAnchor( editor, anchor )
+	{
+		return editor.createFakeElement( anchor, 'cke_anchor', 'anchor' );
+	}
 
 	return {
@@ -25,48 +26,92 @@
 		onOk : function()
 		{
-			// Always create a new anchor, because of IE BUG.
-			var name = this.getValueOf( 'info', 'txtName' ),
-				element = CKEDITOR.env.ie && !( CKEDITOR.document.$.documentMode >= 8 ) ?
-				editor.document.createElement( '<a name="' + CKEDITOR.tools.htmlEncode( name ) + '">' ) :
-				editor.document.createElement( 'a' );
+			var name = this.getValueOf( 'info', 'txtName' );
+			var attributes =
+			{
+				name : name,
+				'data-cke-saved-name' : name
+			};
 
-			// Move contents and attributes of old anchor to new anchor.
-			if ( this.editMode )
+			if ( this._.selectedElement )
 			{
-				this.editObj.copyAttributes( element, { name : 1 } );
-				this.editObj.moveChildren( element );
+				if ( this._.selectedElement.data( 'cke-realelement' ) )
+				{
+					var newFake = createFakeAnchor( editor, editor.document.createElement( 'a', { attributes: attributes } ) );
+					newFake.replace( this._.selectedElement );
+				}
+				else
+					this._.selectedElement.setAttributes( attributes );
+			}
+			else
+			{
+				var sel = editor.getSelection(),
+						range = sel && sel.getRanges()[ 0 ];
+
+				// Empty anchor
+				if ( range.collapsed )
+				{
+					if ( CKEDITOR.plugins.link.synAnchorSelector )
+						attributes[ 'class' ] = 'cke_anchor_empty';
+
+					if ( CKEDITOR.plugins.link.emptyAnchorFix )
+					{
+						attributes[ 'contenteditable' ] = 'false';
+						attributes[ 'data-cke-editable' ] = 1;
+					}
+
+					var anchor = editor.document.createElement( 'a', { attributes: attributes } );
+
+					// Transform the anchor into a fake element for browsers that need it.
+					if ( CKEDITOR.plugins.link.fakeAnchor )
+						anchor = createFakeAnchor( editor, anchor );
+
+					range.insertNode( anchor );
+				}
+				else
+				{
+					if ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 )
+						attributes['class'] = 'cke_anchor';
+
+					// Apply style.
+					var style = new CKEDITOR.style( { element : 'a', attributes : attributes } );
+					style.type = CKEDITOR.STYLE_INLINE;
+					style.apply( editor.document );
+				}
+			}
+		},
+
+		onHide : function()
+		{
+			delete this._.selectedElement;
+		},
+
+		onShow : function()
+		{
+			var selection = editor.getSelection(),
+				fullySelected = selection.getSelectedElement(),
+				partialSelected;
+
+			// Detect the anchor under selection.
+			if ( fullySelected )
+			{
+				if ( CKEDITOR.plugins.link.fakeAnchor )
+				{
+					var realElement = CKEDITOR.plugins.link.tryRestoreFakeAnchor( editor, fullySelected );
+					realElement && loadElements.call( this, realElement );
+					this._.selectedElement = fullySelected;
+				}
+				else if ( fullySelected.is( 'a' ) && fullySelected.hasAttribute( 'name' ) )
+					loadElements.call( this, fullySelected );
+			}
+			else
+			{
+				partialSelected = CKEDITOR.plugins.link.getSelectedLink( editor );
+				if ( partialSelected )
+				{
+					loadElements.call( this, partialSelected );
+					selection.selectElement( partialSelected );
+				}
 			}
 
-			// Set name.
-			element.data( 'cke-saved-name', false );
-			element.setAttribute( 'name', name );
-
-			// Insert a new anchor.
-			var fakeElement = editor.createFakeElement( element, 'cke_anchor', 'anchor' );
-			if ( !this.editMode )
-				editor.insertElement( fakeElement );
-			else
-			{
-				fakeElement.replace( this.fakeObj );
-				editor.getSelection().selectElement( fakeElement );
-			}
-
-			return true;
-		},
-		onShow : function()
-		{
-			this.editObj = false;
-			this.fakeObj = false;
-			this.editMode = false;
-
-			var selection = editor.getSelection();
-			var element = selection.getSelectedElement();
-			if ( element && element.data( 'cke-real-element-type' ) && element.data( 'cke-real-element-type' ) == 'anchor' )
-			{
-				this.fakeObj = element;
-				element = editor.restoreRealElement( this.fakeObj );
-				loadElements.apply( this, [ editor, selection, element ] );
-				selection.selectElement( this.fakeObj );
-			}
 			this.getContentElement( 'info', 'txtName' ).focus();
 		},
Index: CKEditor/trunk/_source/plugins/link/dialogs/link.js
===================================================================
--- CKEditor/trunk/_source/plugins/link/dialogs/link.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/link/dialogs/link.js	(revision 6904)
@@ -236,5 +236,7 @@
 			advAttr( 'advTitle', 'title' );
 			advAttr( 'advContentType', 'type' );
-			advAttr( 'advCSSClasses', 'class' );
+			CKEDITOR.plugins.link.synAnchorSelector ?
+				retval.adv.advCSSClasses = getLinkClass( element )
+				: advAttr( 'advCSSClasses', 'class' );
 			advAttr( 'advCharset', 'charset' );
 			advAttr( 'advStyles', 'style' );
@@ -243,22 +245,11 @@
 
 		// Find out whether we have any anchors in the editor.
-		// Get all IMG elements in CK document.
-		var elements = editor.document.getElementsByTag( 'img' ),
-			realAnchors = new CKEDITOR.dom.nodeList( editor.document.$.anchors ),
-			anchors = retval.anchors = [];
-
-		for ( var i = 0; i < elements.count() ; i++ )
+		var anchorList = new CKEDITOR.dom.nodeList( editor.document.$.anchors ),
+			anchors = retval.anchors = [],
+			item;
+
+		for ( var i = 0, count = anchorList.count(); i < count; i++ )
 		{
-			var item = elements.getItem( i );
-			if ( item.data( 'cke-realelement' ) && item.data( 'cke-real-element-type' ) == 'anchor' )
-				anchors.push( editor.restoreRealElement( item ) );
-		}
-
-		for ( i = 0 ; i < realAnchors.count() ; i++ )
-			anchors.push( realAnchors.getItem( i ) );
-
-		for ( i = 0 ; i < anchors.length ; i++ )
-		{
-			item = anchors[ i ];
+			item = anchorList.getItem( i );
 			anchors[ i ] = { name : item.getAttribute( 'name' ), id : item.getAttribute( 'id' ) };
 		}
@@ -266,5 +257,4 @@
 		// Record down the selected element in the dialog.
 		this._.selectedElement = element;
-
 		return retval;
 	};
@@ -368,4 +358,10 @@
 		}
 		return 'String.fromCharCode(' + encodedChars.join( ',' ) + ')';
+	}
+
+	function getLinkClass( ele )
+	{
+		var className = ele.getAttribute( 'class' );
+		return className ? className.replace( /\s*(?:cke_anchor_empty|cke_anchor)(?:\s*$)?/g, '' ) : '';
 	}
 
@@ -1152,6 +1148,4 @@
 		onShow : function()
 		{
-			this.fakeObj = false;
-
 			var editor = this.getParentEditor(),
 				selection = editor.getSelection(),
@@ -1161,12 +1155,4 @@
 			if ( ( element = plugin.getSelectedLink( editor ) ) && element.hasAttribute( 'href' ) )
 				selection.selectElement( element );
-			else if ( ( element = selection.getSelectedElement() ) && element.is( 'img' )
-					&& element.data( 'cke-real-element-type' )
-					&& element.data( 'cke-real-element-type' ) == 'anchor' )
-			{
-				this.fakeObj = element;
-				element = editor.restoreRealElement( this.fakeObj );
-				selection.selectElement( this.fakeObj );
-			}
 			else
 				element = null;
@@ -1303,8 +1289,5 @@
 
 				if ( data.adv[ 'advName' ] )
-				{
 					attributes[ 'name' ] = attributes[ 'data-cke-saved-name' ] = data.adv[ 'advName' ];
-					attributes[ 'class' ] = ( attributes[ 'class' ] ? attributes[ 'class' ] + ' ' : '' ) + 'cke_anchor';
-				}
 				else
 					removeAttributes = removeAttributes.concat( [ 'data-cke-saved-name', 'name' ] );
@@ -1351,23 +1334,10 @@
 					textView = element.getHtml();
 
-				// IE BUG: Setting the name attribute to an existing link doesn't work.
-				// Must re-create the link from weired syntax to workaround.
-				if ( CKEDITOR.env.ie && !( CKEDITOR.document.$.documentMode >= 8 ) && attributes.name != element.getAttribute( 'name' ) )
-				{
-					var newElement = new CKEDITOR.dom.element( '<a name="' + CKEDITOR.tools.htmlEncode( attributes.name ) + '">',
-							editor.document );
-
-					selection = editor.getSelection();
-
-					element.copyAttributes( newElement, { name : 1 } );
-					element.moveChildren( newElement );
-					newElement.replace( element );
-					element = newElement;
-
-					selection.selectElement( element );
-				}
-
 				element.setAttributes( attributes );
 				element.removeAttributes( removeAttributes );
+
+				if ( data.adv && data.adv.advName && CKEDITOR.plugins.link.synAnchorSelector )
+					element.addClass( element.getChildCount() ? 'cke_anchor' : 'cke_anchor_empty' );
+
 				// Update text view when user changes protocol (#4612).
 				if ( href == textView || data.type == 'email' && textView.indexOf( '@' ) != -1 )
@@ -1377,12 +1347,4 @@
 						data.email.address : attributes[ 'data-cke-saved-href' ] );
 				}
-				// Make the element display as an anchor if a name has been set.
-				if ( element.getAttribute( 'name' ) )
-					element.addClass( 'cke_anchor' );
-				else
-					element.removeClass( 'cke_anchor' );
-
-				if ( this.fakeObj )
-					editor.createFakeElement( element, 'cke_anchor', 'anchor' ).replace( this.fakeObj );
 
 				delete this._.selectedElement;
Index: CKEditor/trunk/_source/plugins/link/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/link/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/link/plugin.js	(revision 6904)
@@ -31,28 +31,45 @@
 
 		// Add the CSS styles for anchor placeholders.
-		var side = editor.lang.dir == 'rtl' ? 'right' : 'left';
+
+		var side = ( editor.lang.dir == 'rtl' ? 'right' : 'left' );
+		var basicCss =
+			'background:url(' + CKEDITOR.getUrl( this.path + 'images/anchor.gif' ) + ') no-repeat ' + side + ' center;' +
+			'border:1px dotted #00f;';
+
 		editor.addCss(
+			'a.cke_anchor,a.cke_anchor_empty' +
+			// IE6 breaks with the following selectors.
+			( ( CKEDITOR.env.ie && CKEDITOR.env.version < 7 ) ? '' :
+				',a[name],a[data-cke-saved-name]' ) +
+			'{' +
+				basicCss +
+				'padding-' + side + ':18px;' +
+				// Show the arrow cursor for the anchor image (FF at least).
+				'cursor:auto;' +
+			'}' +
+			( CKEDITOR.env.ie ? (
+				'a.cke_anchor_empty' +
+				'{' +
+					// Make empty anchor selectable on IE.
+					'display:inline-block;' +
+				'}'
+				) : '' ) +
 			'img.cke_anchor' +
 			'{' +
-				'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/anchor.gif' ) + ');' +
-				'background-position: center center;' +
-				'background-repeat: no-repeat;' +
-				'border: 1px solid #a9a9a9;' +
-				'width: 18px !important;' +
-				'height: 18px !important;' +
-			'}\n' +
-			'a.cke_anchor' +
-			'{' +
-				'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/anchor.gif' ) + ');' +
-				'background-position: ' + side + ' center;' +
-				'background-repeat: no-repeat;' +
-				'border: 1px solid #a9a9a9;' +
-				'padding-' + side + ': 18px;' +
-			'}'
-		   	);
+				basicCss +
+				'width:16px;' +
+				'min-height:15px;' +
+				// The default line-height on IE.
+				'height:1.15em;' +
+				// Opera works better with "middle" (even if not perfect)
+				'vertical-align:' + ( CKEDITOR.env.opera ? 'middle' : 'text-bottom' ) + ';' +
+			'}');
 
 		// Register selection change handler for the unlink button.
 		 editor.on( 'selectionChange', function( evt )
 			{
+				if ( editor.readOnly )
+					return;
+
 				/*
 				 * Despite our initial hope, document.queryCommandEnabled() does not work
@@ -61,5 +78,5 @@
 				var command = editor.getCommand( 'unlink' ),
 					element = evt.data.path.lastElement && evt.data.path.lastElement.getAscendant( 'a', true );
-				if ( element && element.getName() == 'a' && element.getAttribute( 'href' ) )
+				if ( element && element.getName() == 'a' && element.getAttribute( 'href' ) && element.getChildCount() )
 					command.setState( CKEDITOR.TRISTATE_OFF );
 				else
@@ -74,6 +91,9 @@
 				{
 					if ( element.is( 'a' ) )
-						evt.data.dialog =  ( element.getAttribute( 'name' ) && !element.getAttribute( 'href' ) ) ? 'anchor' : 'link';
-					else if ( element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'anchor' )
+					{
+						evt.data.dialog = ( element.getAttribute( 'name' ) && ( !element.getAttribute( 'href' ) || !element.getChildCount() ) ) ? 'anchor' : 'link';
+						editor.getSelection().selectElement( element );
+					}
+					else if ( CKEDITOR.plugins.link.tryRestoreFakeAnchor( editor, element ) )
 						evt.data.dialog = 'anchor';
 				}
@@ -118,17 +138,18 @@
 						return null;
 
-					var isAnchor = ( element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'anchor' );
-
-					if ( !isAnchor )
-					{
-						if ( !( element = CKEDITOR.plugins.link.getSelectedLink( editor ) ) )
+					var anchor = CKEDITOR.plugins.link.tryRestoreFakeAnchor( editor, element );
+
+					if ( !anchor && !( anchor = CKEDITOR.plugins.link.getSelectedLink( editor ) ) )
 							return null;
 
-						isAnchor = ( element.getAttribute( 'name' ) && !element.getAttribute( 'href' ) );
-					}
-
-					return isAnchor ?
-							{ anchor : CKEDITOR.TRISTATE_OFF } :
-							{ link : CKEDITOR.TRISTATE_OFF, unlink : CKEDITOR.TRISTATE_OFF };
+					var menu = {};
+
+					if ( anchor.getAttribute( 'href' ) && anchor.getChildCount() )
+						menu = { link : CKEDITOR.TRISTATE_OFF, unlink : CKEDITOR.TRISTATE_OFF };
+
+					if ( anchor && anchor.hasAttribute( 'name' ) )
+						menu.anchor = CKEDITOR.TRISTATE_OFF;
+
+					return menu;
 				});
 		}
@@ -140,5 +161,7 @@
 
 		var dataProcessor = editor.dataProcessor,
-			dataFilter = dataProcessor && dataProcessor.dataFilter;
+			dataFilter = dataProcessor && dataProcessor.dataFilter,
+			htmlFilter = dataProcessor && dataProcessor.htmlFilter,
+			pathFilters = editor._.elementsPath && editor._.elementsPath.filters;
 
 		if ( dataFilter )
@@ -151,6 +174,57 @@
 						{
 							var attributes = element.attributes;
-							if ( attributes.name && !attributes.href )
+							if ( !attributes.name )
+								return null;
+
+							var isEmpty = !element.children.length;
+
+							if ( CKEDITOR.plugins.link.synAnchorSelector )
+							{
+								// IE needs a specific class name to be applied
+								// to the anchors, for appropriate styling.
+								var ieClass = isEmpty ? 'cke_anchor_empty' : 'cke_anchor';
+								var cls = attributes[ 'class' ];
+								if ( attributes.name && ( !cls || cls.indexOf( ieClass ) < 0 ) )
+									attributes[ 'class' ] = ( cls || '' ) + ' ' + ieClass;
+
+								if ( isEmpty && CKEDITOR.plugins.link.emptyAnchorFix )
+								{
+									attributes.contenteditable = 'false';
+									attributes[ 'data-cke-editable' ] = 1;
+								}
+							}
+							else if ( CKEDITOR.plugins.link.fakeAnchor && isEmpty )
 								return editor.createFakeParserElement( element, 'cke_anchor', 'anchor' );
+
+							return null;
+						}
+					}
+				});
+		}
+
+		if ( CKEDITOR.plugins.link.emptyAnchorFix && htmlFilter )
+		{
+			htmlFilter.addRules(
+				{
+					elements :
+					{
+						a : function( element )
+						{
+							delete element.attributes.contenteditable;
+						}
+					}
+				});
+		}
+
+		if ( pathFilters )
+		{
+			pathFilters.push( function( element, name )
+				{
+					if ( name == 'a' )
+					{
+						if ( CKEDITOR.plugins.link.tryRestoreFakeAnchor( editor, element ) ||
+							( element.getAttribute( 'name' ) && ( !element.getAttribute( 'href' ) || !element.getChildCount() ) ) )
+						{
+							return 'anchor';
 						}
 					}
@@ -197,4 +271,24 @@
 		}
 		catch( e ) { return null; }
+	},
+
+	// Opera and WebKit don't make it possible to select empty anchors. Fake
+	// elements must be used for them.
+	fakeAnchor : CKEDITOR.env.opera || CKEDITOR.env.webkit,
+
+	// For browsers that don't support CSS3 a[name]:empty(), note IE9 is included because of #7783.
+	synAnchorSelector : CKEDITOR.env.ie,
+
+	// For browsers that have editing issue with empty anchor.
+	emptyAnchorFix : CKEDITOR.env.ie && CKEDITOR.env.version < 8,
+
+	tryRestoreFakeAnchor : function( editor, element )
+	{
+		if ( element && element.data( 'cke-real-element-type' ) && element.data( 'cke-real-element-type' ) == 'anchor' )
+		{
+			var link  = editor.restoreRealElement( element );
+			if ( link.data( 'cke-saved-name' ) )
+				return link;
+		}
 	}
 };
Index: CKEditor/trunk/_source/plugins/list/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/list/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/list/plugin.js	(revision 6904)
@@ -219,4 +219,7 @@
 	function onSelectionChange( evt )
 	{
+		if ( evt.editor.readOnly )
+			return null;
+
 		var path = evt.data.path,
 			blockLimit = path.blockLimit,
@@ -229,6 +232,6 @@
 			  && !element.equals( blockLimit ); i++ )
 		{
-			if ( listNodeNames[ elements[i].getName() ] )
-				return this.setState( this.type == elements[i].getName() ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF );
+			if ( listNodeNames[ elements[ i ].getName() ] )
+				return this.setState( this.type == elements[ i ].getName() ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF );
 		}
 
Index: CKEditor/trunk/_source/plugins/maximize/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/maximize/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/maximize/plugin.js	(revision 6904)
@@ -86,5 +86,5 @@
 		{
 			var one = all[ i ];
-			if ( one.mode == 'wysiwyg' )
+			if ( one.mode == 'wysiwyg' && !one.readOnly )
 			{
 				var body = one.document.getBody();
@@ -156,4 +156,5 @@
 				{
 					modes : { wysiwyg : 1, source : 1 },
+					readOnly : 1,
 					editorFocus : false,
 					exec : function()
Index: CKEditor/trunk/_source/plugins/menu/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/menu/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/menu/plugin.js	(revision 6904)
@@ -98,5 +98,5 @@
 							var item = this.editor.getMenuItem( itemName );
 
-							if ( item )
+							if ( item && ( !item.command || this.editor.getCommand( item.command ).state ) )
 							{
 								item.state = listenerItems[ itemName ];
Index: CKEditor/trunk/_source/plugins/menubutton/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/menubutton/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/menubutton/plugin.js	(revision 6904)
@@ -18,5 +18,5 @@
  * @example
  */
-CKEDITOR.UI_MENUBUTTON = 5;
+CKEDITOR.UI_MENUBUTTON = 'menubutton';
 
 (function()
Index: CKEditor/trunk/_source/plugins/pagebreak/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/pagebreak/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/pagebreak/plugin.js	(revision 6904)
@@ -23,29 +23,64 @@
 			});
 
+		var cssStyles = [
+			'{' ,
+				'background: url(' + CKEDITOR.getUrl( this.path + 'images/pagebreak.gif' ) + ') no-repeat center center;' ,
+				'clear: both;' ,
+				'width:100%; _width:99.9%;' ,
+				'border-top: #999999 1px dotted;' ,
+				'border-bottom: #999999 1px dotted;' ,
+				'padding:0;' ,
+				'height: 5px;' ,
+				'cursor: default;' ,
+			'}'
+			].join( '' ).replace(/;/g, ' !important;' );	// Increase specificity to override other styles, e.g. block outline.
+
 		// Add the style that renders our placeholder.
-		editor.addCss(
-			'img.cke_pagebreak' +
-			'{' +
-				'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/pagebreak.gif' ) + ');' +
-				'background-position: center center;' +
-				'background-repeat: no-repeat;' +
-				'clear: both;' +
-				'display: block;' +
-				'float: none;' +
-				'width:100% !important; _width:99.9% !important;' +
-				'border-top: #999999 1px dotted;' +
-				'border-bottom: #999999 1px dotted;' +
-				'height: 5px !important;' +
-				'page-break-after: always;' +
+		editor.addCss( 'div.cke_pagebreak' + cssStyles );
 
-			'}' );
+		// Opera needs help to select the page-break.
+		CKEDITOR.env.opera && editor.on( 'contentDom', function()
+		{
+			editor.document.on( 'click', function( evt )
+			{
+				var target = evt.data.getTarget();
+				if ( target.is( 'div' ) && target.hasClass( 'cke_pagebreak')  )
+					editor.getSelection().selectElement( target );
+			});
+		});
 	},
 
 	afterInit : function( editor )
 	{
+		var label = editor.lang.pagebreakAlt;
+
 		// Register a filter to displaying placeholders after mode change.
+		var dataProcessor = editor.dataProcessor,
+			dataFilter = dataProcessor && dataProcessor.dataFilter,
+			htmlFilter = dataProcessor && dataProcessor.htmlFilter;
 
-		var dataProcessor = editor.dataProcessor,
-			dataFilter = dataProcessor && dataProcessor.dataFilter;
+		if ( htmlFilter )
+		{
+			htmlFilter.addRules(
+			{
+				attributes : {
+					'class' : function( value, element )
+					{
+						var className =  value.replace( 'cke_pagebreak', '' );
+						if ( className != value )
+						{
+							var span = CKEDITOR.htmlParser.fragment.fromHtml( '<span style="display: none;">&nbsp;</span>' );
+							element.children.length = 0;
+							element.add( span );
+							var attrs = element.attributes;
+							delete attrs[ 'aria-label' ];
+							delete attrs.contenteditable;
+							delete attrs.title;
+						}
+						return className;
+					}
+				}
+			}, 5 );
+		}
 
 		if ( dataFilter )
@@ -64,9 +99,11 @@
 							if ( childStyle && ( /page-break-after\s*:\s*always/i ).test( style ) && ( /display\s*:\s*none/i ).test( childStyle ) )
 							{
-								var fakeImg = editor.createFakeParserElement( element, 'cke_pagebreak', 'div' );
-								var label = editor.lang.pagebreakAlt;
-								fakeImg.attributes[ 'alt' ] = label;
-								fakeImg.attributes[ 'aria-label' ] = label;
-								return fakeImg;
+								attributes.contenteditable = "false";
+								attributes[ 'class' ] = "cke_pagebreak";
+								attributes[ 'data-cke-display-name' ] = "pagebreak";
+								attributes[ 'aria-label' ] = label;
+								attributes[ 'title' ] = label;
+
+								element.children.length = 0;
 							}
 						}
@@ -83,11 +120,16 @@
 	exec : function( editor )
 	{
-		// Create the element that represents a print break.
 		var label = editor.lang.pagebreakAlt;
-		var breakObject = CKEDITOR.dom.element.createFromHtml( '<div style="page-break-after: always;"><span style="display: none;">&nbsp;</span></div>' );
 
-		// Creates the fake image used for this element.
-		breakObject = editor.createFakeElement( breakObject, 'cke_pagebreak', 'div' );
-		breakObject.setAttributes( { alt : label, 'aria-label' : label, title : label } );
+		// Create read-only element that represents a print break.
+		var pagebreak = CKEDITOR.dom.element.createFromHtml(
+			'<div style="' +
+			'page-break-after: always;"' +
+			'contenteditable="false" ' +
+			'title="'+ label + '" ' +
+			'aria-label="'+ label + '" ' +
+			'data-cke-display-name="pagebreak" ' +
+			'class="cke_pagebreak">' +
+			'</div>' );
 
 		var ranges = editor.getSelection().getRanges( true );
@@ -100,18 +142,20 @@
 
 			if ( i < ranges.length -1 )
-				breakObject = breakObject.clone( true );
+				pagebreak = pagebreak.clone( true );
 
 			range.splitBlock( 'p' );
-			range.insertNode( breakObject );
+			range.insertNode( pagebreak );
 			if ( i == ranges.length - 1 )
 			{
-				range.moveToPosition( breakObject, CKEDITOR.POSITION_AFTER_END );
+				var next = pagebreak.getNext();
+				range.moveToPosition( pagebreak, CKEDITOR.POSITION_AFTER_END );
+
+				// If there's nothing or a non-editable block followed by, establish a new paragraph
+				// to make sure cursor is not trapped.
+				if ( !next || next.type == CKEDITOR.NODE_ELEMENT && !next.isEditable() )
+					range.fixBlock( true, editor.config.enterMode == CKEDITOR.ENTER_DIV ? 'div' : 'p'  );
+
 				range.select();
 			}
-
-			var previous = breakObject.getPrevious();
-
-			if ( previous && CKEDITOR.dtd[ previous.getName() ].div )
-				breakObject.move( previous );
 		}
 
Index: CKEditor/trunk/_source/plugins/panel/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/panel/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/panel/plugin.js	(revision 6904)
@@ -17,5 +17,5 @@
  * @example
  */
-CKEDITOR.UI_PANEL = 2;
+CKEDITOR.UI_PANEL = 'panel';
 
 CKEDITOR.ui.panel = function( document, definition )
Index: CKEditor/trunk/_source/plugins/panelbutton/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/panelbutton/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/panelbutton/plugin.js	(revision 6904)
@@ -18,5 +18,5 @@
  * @example
  */
-CKEDITOR.UI_PANELBUTTON = 4;
+CKEDITOR.UI_PANELBUTTON = 'panelbutton';
 
 (function()
Index: CKEditor/trunk/_source/plugins/preview/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/preview/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/preview/plugin.js	(revision 6904)
@@ -14,4 +14,5 @@
 		modes : { wysiwyg:1, source:1 },
 		canUndo : false,
+		readOnly : 1,
 		exec : function( editor )
 		{
Index: CKEditor/trunk/_source/plugins/print/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/print/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/print/plugin.js	(revision 6904)
@@ -38,4 +38,5 @@
 	},
 	canUndo : false,
+	readOnly : 1,
 	modes : { wysiwyg : !( CKEDITOR.env.opera ) }		// It is imposible to print the inner document in Opera.
 };
Index: CKEditor/trunk/_source/plugins/richcombo/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/richcombo/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/richcombo/plugin.js	(revision 6904)
@@ -19,5 +19,5 @@
  * @example
  */
-CKEDITOR.UI_RICHCOMBO = 3;
+CKEDITOR.UI_RICHCOMBO = 'richcombo';
 
 CKEDITOR.ui.richCombo = CKEDITOR.tools.createClass(
@@ -129,10 +129,14 @@
 			};
 
-			editor.on( 'mode', function()
-				{
-					this.setState( this.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );
-					this.setValue( '' );
-				},
-				this );
+			function updateState()
+			{
+				var state = this.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED;
+				this.setState( editor.readOnly && !this.readOnly ? CKEDITOR.TRISTATE_DISABLED : state );
+				this.setValue( '' );
+			}
+
+			editor.on( 'mode', updateState, this );
+			// If this combo is sensitive to readOnly state, update it accordingly.
+			!this.readOnly && editor.on( 'readOnly', updateState, this);
 
 			var keyDownFn = CKEDITOR.tools.addFunction( function( ev, element )
@@ -162,5 +166,5 @@
 
 			output.push(
-				'<span class="cke_rcombo">',
+				'<span class="cke_rcombo" role="presentation">',
 				'<span id=', id );
 
@@ -169,5 +173,5 @@
 
 			output.push(
-				'>',
+				' role="presentation">',
 					'<span id="' + id+ '_label" class=cke_label>', this.label, '</span>',
 					'<a hidefocus=true title="', this.title, '" tabindex="-1"',
Index: CKEditor/trunk/_source/plugins/save/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/save/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/save/plugin.js	(revision 6904)
@@ -13,4 +13,5 @@
 	{
 		modes : { wysiwyg:1, source:1 },
+		readOnly : 1,
 
 		exec : function( editor )
Index: CKEditor/trunk/_source/plugins/selection/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/selection/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/selection/plugin.js	(revision 6904)
@@ -93,4 +93,5 @@
 	{
 		modes : { wysiwyg : 1, source : 1 },
+		readOnly : CKEDITOR.env.ie || CKEDITOR.env.webkit,
 		exec : function( editor )
 		{
Index: CKEditor/trunk/_source/plugins/showblocks/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/showblocks/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/showblocks/plugin.js	(revision 6904)
@@ -90,4 +90,5 @@
 	var commandDefinition =
 	{
+		readOnly : 1,
 		preserveState : true,
 		editorFocus : false,
@@ -101,6 +102,9 @@
 		refresh : function( editor )
 		{
-			var funcName = ( this.state == CKEDITOR.TRISTATE_ON ) ? 'addClass' : 'removeClass';
-			editor.document.getBody()[ funcName ]( 'cke_show_blocks' );
+			if ( editor.document )
+			{
+				var funcName = ( this.state == CKEDITOR.TRISTATE_ON ) ? 'addClass' : 'removeClass';
+				editor.document.getBody()[ funcName ]( 'cke_show_blocks' );
+			}
 		}
 	};
Index: CKEditor/trunk/_source/plugins/showborders/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/showborders/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/showborders/plugin.js	(revision 6904)
@@ -41,4 +41,5 @@
 		preserveState : true,
 		editorFocus : false,
+		readOnly: 1,
 
 		exec : function ( editor )
@@ -50,6 +51,9 @@
 		refresh : function( editor )
 		{
-			var funcName = ( this.state == CKEDITOR.TRISTATE_ON ) ? 'addClass' : 'removeClass';
-			editor.document.getBody()[ funcName ]( 'cke_show_borders' );
+			if ( editor.document )
+			{
+				var funcName = ( this.state == CKEDITOR.TRISTATE_ON ) ? 'addClass' : 'removeClass';
+				editor.document.getBody()[ funcName ]( 'cke_show_borders' );
+			}
 		}
 	};
Index: CKEditor/trunk/_source/plugins/smiley/dialogs/smiley.js
===================================================================
--- CKEditor/trunk/_source/plugins/smiley/dialogs/smiley.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/smiley/dialogs/smiley.js	(revision 6904)
@@ -184,4 +184,5 @@
 	{
 		type : 'html',
+		id : 'smileySelector',
 		html : html.join( '' ),
 		onLoad : function( event )
Index: CKEditor/trunk/_source/plugins/sourcearea/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/sourcearea/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/sourcearea/plugin.js	(revision 6904)
@@ -41,4 +41,6 @@
 							textarea.addClass( 'cke_source' );
 							textarea.addClass( 'cke_enable_context_menu' );
+
+							editor.readOnly && textarea.setAttribute( 'readOnly', 'readonly' );
 
 							var styles =
@@ -146,4 +148,15 @@
 						}
 					});
+			});
+
+		editor.on( 'readOnly', function()
+			{
+				if ( editor.mode == 'source' )
+				{
+					if ( editor.readOnly )
+						editor.textarea.setAttribute( 'readOnly', 'readonly' );
+					else
+						editor.textarea.removeAttribute( 'readOnly' );
+				}
 			});
 
@@ -182,5 +195,5 @@
 			modes : { wysiwyg:1, source:1 },
 			editorFocus : false,
-
+			readOnly : 1,
 			exec : function( editor )
 			{
Index: CKEditor/trunk/_source/plugins/styles/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/styles/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/styles/plugin.js	(revision 6904)
@@ -214,5 +214,5 @@
 		checkElementRemovable : function( element, fullMatch )
 		{
-			if ( !element )
+			if ( !element || element.isReadOnly() )
 				return false;
 
@@ -289,5 +289,5 @@
 
 		// Builds the preview HTML based on the styles definition.
-		buildPreview : function()
+		buildPreview : function( label )
 		{
 			var styleDefinition = this._.definition,
@@ -316,5 +316,5 @@
 				html.push( ' style="', cssStyle, '"' );
 
-			html.push( '>', styleDefinition.name, '</', elementName, '>' );
+			html.push( '>', ( label || styleDefinition.name ), '</', elementName, '>' );
 
 			return html.join( '' );
Index: CKEditor/trunk/_source/plugins/stylescombo/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/stylescombo/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/stylescombo/plugin.js	(revision 6904)
@@ -15,5 +15,6 @@
 				lang = editor.lang.stylesCombo,
 				styles = {},
-				stylesList = [];
+				stylesList = [],
+				combo;
 
 			function loadStylesSet( callback )
@@ -63,5 +64,5 @@
 					init : function()
 					{
-						var combo = this;
+						combo = this;
 
 						loadStylesSet( function()
@@ -182,4 +183,20 @@
 						if ( !counter[ CKEDITOR.STYLE_OBJECT ] )
 							this.hideGroup( lang[ 'panelTitle' + String( CKEDITOR.STYLE_OBJECT ) ] );
+					},
+
+					// Force a reload of the data
+					reset: function()
+					{
+						if ( combo )
+						{
+							delete combo._.panel;
+							delete combo._.list;
+							combo._.committed = 0;
+							combo._.items = {};
+							combo._.state = CKEDITOR.TRISTATE_OFF;
+						}
+						styles = {};
+						stylesList = [];
+						loadStylesSet();
 					}
 				});
Index: CKEditor/trunk/_source/plugins/stylesheetparser/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/stylesheetparser/plugin.js	(revision 6904)
+++ CKEditor/trunk/_source/plugins/stylesheetparser/plugin.js	(revision 6904)
@@ -0,0 +1,143 @@
+﻿/*
+Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @stylesheetParser plugin.
+ */
+
+(function()
+{
+	// We want to extract only the elements with classes defined in the stylesheets:
+	function parseClasses( aRules, skipSelectors, validSelectors )
+	{
+		// aRules are just the different rules in the style sheets
+		// We want to merge them and them split them by commas, so we end up with only
+		// the selectors
+		var s = aRules.join(' ');
+		// Remove selectors splitting the elements, leave only the class selector (.)
+		s = s.replace( /(,|>|\+|~)/g, ' ' );
+		// Remove attribute selectors: table[border="0"]
+		s = s.replace( /\[[^\]]*/g, '' );
+		// Remove Ids: div#main
+		s = s.replace( /#[^\s]*/g, '' );
+		// Remove pseudo-selectors and pseudo-elements: :hover :nth-child(2n+1) ::before
+		s = s.replace( /\:{1,2}[^\s]*/g, '' );
+
+		s = s.replace( /\s+/g, ' ' );
+
+		var aSelectors = s.split( ' ' ),
+			aClasses = [];
+
+		for ( var i = 0; i < aSelectors.length ; i++ )
+		{
+			var selector = aSelectors[ i ];
+
+			if ( validSelectors.test( selector ) && !skipSelectors.test( selector ) )
+			{
+				// If we still don't know about this one, add it
+				if ( CKEDITOR.tools.indexOf( aClasses, selector ) == -1 )
+					aClasses.push( selector );
+			}
+		}
+
+		return aClasses;
+	}
+
+	function LoadStylesCSS( theDoc, skipSelectors, validSelectors )
+	{
+		var styles = [],
+			// It will hold all the rules of the applied stylesheets (except those internal to CKEditor)
+			aRules = [],
+			i;
+
+		for ( i = 0; i < theDoc.styleSheets.length; i++ )
+		{
+			var sheet = theDoc.styleSheets[ i ],
+				node = sheet.ownerNode || sheet.owningElement;
+
+			// Skip the internal stylesheets
+			if ( node.getAttribute( 'data-cke-temp' ) )
+				continue;
+
+			// Exclude stylesheets injected by extensions
+			if ( sheet.href && sheet.href.substr(0, 9) == 'chrome://' )
+				continue;
+
+			var sheetRules = sheet.cssRules || sheet.rules;
+			for ( var j = 0; j < sheetRules.length; j++ )
+				aRules.push( sheetRules[ j ].selectorText );
+		}
+
+		var aClasses = parseClasses( aRules, skipSelectors, validSelectors );
+
+		// Add each style to our "Styles" collection.
+		for ( i = 0; i < aClasses.length; i++ )
+		{
+			var oElement = aClasses[ i ].split( '.' ),
+				element = oElement[ 0 ].toLowerCase(),
+				sClassName = oElement[ 1 ];
+
+			styles.push( {
+				name : element + '.' + sClassName,
+				element : element,
+				attributes : {'class' : sClassName}
+			});
+		}
+
+		return styles;
+	}
+
+	// Register a plugin named "stylesheetparser".
+	CKEDITOR.plugins.add( 'stylesheetparser',
+	{
+		requires: [ 'styles' ],
+		onLoad : function()
+		{
+			var obj = CKEDITOR.editor.prototype;
+			obj.getStylesSet = CKEDITOR.tools.override( obj.getStylesSet,  function( org )
+			{
+				return function( callback )
+				{
+					var self = this;
+					org.call( this, function( definitions )
+					{
+						// Rules that must be skipped
+						var skipSelectors = self.config.stylesheetParser_skipSelectors || ( /(^body\.|^\.)/i ),
+							// Rules that are valid
+							validSelectors = self.config.stylesheetParser_validSelectors || ( /\w+\.\w+/ );
+
+						callback( ( self._.stylesDefinitions = definitions.concat( LoadStylesCSS( self.document.$, skipSelectors, validSelectors ) ) ) );
+					});
+				};
+			});
+
+		}
+	});
+})();
+
+
+/**
+ * Regular Expression to check if a css rule must be skipped by
+ * the stylesheet parser plugin (so it's ignored and not available)
+ * @name CKEDITOR.config.stylesheetParser_skipSelectors
+ * @type RegExp
+ * @default /(^body\.|^\.)/i
+ * @since 3.6
+ * @example
+ * // Ignore rules for body, caption, only a class or classes starting with "high".
+ * config.stylesheetParser_skipSelectors = /(^body\.|^caption\.|\.high|^\.)/i;
+ */
+
+ /**
+ * Regular Expression to check if a css rule must be allowed by
+ * the stylesheet parser plugin
+ * @name CKEDITOR.config.stylesheetParser_validSelectors
+ * @type RegExp
+ * @default /\w+\.\w+/
+ * @since 3.6
+ * @example
+ * // Add only rules for p and span elements.
+ * config.stylesheetParser_validSelectors = /\^(p|span)\.\w+/;
+ */
Index: CKEditor/trunk/_source/plugins/templates/dialogs/templates.js
===================================================================
--- CKEditor/trunk/_source/plugins/templates/dialogs/templates.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/templates/dialogs/templates.js	(revision 6904)
@@ -169,4 +169,5 @@
 								[
 									{
+										id : 'selectTplText',
 										type : 'html',
 										html :
Index: CKEditor/trunk/_source/plugins/toolbar/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/toolbar/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/toolbar/plugin.js	(revision 6904)
@@ -37,4 +37,5 @@
 		{
 			modes : { wysiwyg : 1, source : 1 },
+			readOnly : 1,
 
 			exec : function( editor )
@@ -59,82 +60,93 @@
 		init : function( editor )
 		{
+			var endFlag;
+
 			var itemKeystroke = function( item, keystroke )
 			{
-				var next, nextToolGroup, groupItemsCount;
-				var rtl = editor.lang.dir == 'rtl';
+				var next, toolbar;
+				var rtl = editor.lang.dir == 'rtl',
+					toolbarGroupCycling = editor.config.toolbarGroupCycling;
+
+				toolbarGroupCycling = toolbarGroupCycling === undefined || toolbarGroupCycling;
 
 				switch ( keystroke )
 				{
-					case rtl ? 37 : 39 :					// RIGHT-ARROW
 					case 9 :					// TAB
+					case CKEDITOR.SHIFT + 9 :	// SHIFT + TAB
+						// Cycle through the toolbars, starting from the one
+						// closest to the current item.
+						while ( !toolbar || !toolbar.items.length )
+						{
+							toolbar = keystroke == 9 ?
+								( ( toolbar ? toolbar.next : item.toolbar.next ) || editor.toolbox.toolbars[ 0 ] ) :
+								( ( toolbar ? toolbar.previous : item.toolbar.previous ) || editor.toolbox.toolbars[ editor.toolbox.toolbars.length - 1 ] );
+
+							// Look for the first item that accepts focus.
+							if ( toolbar.items.length )
+							{
+								item = toolbar.items[ endFlag ? ( toolbar.items.length - 1 ) : 0 ];
+								while ( item && !item.focus )
+								{
+									item = endFlag ? item.previous : item.next;
+
+									if ( !item )
+										toolbar = 0;
+								}
+							}
+						}
+
+						if ( item )
+							item.focus();
+
+						return false;
+
+					case rtl ? 37 : 39 :		// RIGHT-ARROW
+					case 40 :					// DOWN-ARROW
+						next = item;
 						do
 						{
 							// Look for the next item in the toolbar.
-							next = item.next;
-
-							if ( !next )
-							{
-								nextToolGroup = item.toolbar.next;
-								groupItemsCount = nextToolGroup && nextToolGroup.items.length;
-
-								// Bypass the empty toolgroups.
-								while ( groupItemsCount === 0 )
-								{
-									nextToolGroup = nextToolGroup.next;
-									groupItemsCount = nextToolGroup && nextToolGroup.items.length;
-								}
-
-								if ( nextToolGroup )
-									next = nextToolGroup.items[ 0 ];
-							}
-
-							item = next;
-						}
-						while ( item && !item.focus )
+							next = next.next;
+
+							// If it's the last item, cycle to the first one.
+							if ( !next && toolbarGroupCycling )
+								next = item.toolbar.items[ 0 ];
+						}
+						while ( next && !next.focus )
 
 						// If available, just focus it, otherwise focus the
 						// first one.
-						if ( item )
-							item.focus();
+						if ( next )
+							next.focus();
 						else
-							editor.toolbox.focus();
+							// Send a TAB.
+							itemKeystroke( item, 9 );
 
 						return false;
 
-					case rtl ? 39 : 37 :					// LEFT-ARROW
-					case CKEDITOR.SHIFT + 9 :	// SHIFT + TAB
+					case rtl ? 39 : 37 :		// LEFT-ARROW
+					case 38 :					// UP-ARROW
+						next = item;
 						do
 						{
 							// Look for the previous item in the toolbar.
-							next = item.previous;
-
-							if ( !next )
-							{
-								nextToolGroup = item.toolbar.previous;
-								groupItemsCount = nextToolGroup && nextToolGroup.items.length;
-
-								// Bypass the empty toolgroups.
-								while ( groupItemsCount === 0 )
-								{
-									nextToolGroup = nextToolGroup.previous;
-									groupItemsCount = nextToolGroup && nextToolGroup.items.length;
-								}
-
-								if ( nextToolGroup )
-									next = nextToolGroup.items[ groupItemsCount - 1 ];
-							}
-
-							item = next;
-						}
-						while ( item && !item.focus )
+							next = next.previous;
+
+							// If it's the first item, cycle to the last one.
+							if ( !next && toolbarGroupCycling )
+								next = item.toolbar.items[ item.toolbar.items.length - 1 ];
+						}
+						while ( next && !next.focus )
 
 						// If available, just focus it, otherwise focus the
 						// last one.
-						if ( item )
-							item.focus();
+						if ( next )
+							next.focus();
 						else
 						{
-							var lastToolbarItems = editor.toolbox.toolbars[ editor.toolbox.toolbars.length - 1 ].items;
-							lastToolbarItems[ lastToolbarItems.length - 1 ].focus();
+							endFlag = 1;
+							// Send a SHIFT + TAB.
+							itemKeystroke( item, CKEDITOR.SHIFT + 9 );
+							endFlag = 0;
 						}
 
@@ -161,5 +173,5 @@
 						var labelId = CKEDITOR.tools.getNextId();
 
-						var output = [ '<div class="cke_toolbox" role="toolbar" aria-labelledby="', labelId, '" onmousedown="return false;"' ],
+						var output = [ '<div class="cke_toolbox" role="group" aria-labelledby="', labelId, '" onmousedown="return false;"' ],
 							expanded =  editor.config.toolbarStartupExpanded !== false,
 							groupStarted;
@@ -168,5 +180,5 @@
 
 						// Sends the ARIA label.
-						output.push( '<span id="', labelId, '" class="cke_voice_label">', editor.lang.toolbar, '</span>' );
+						output.push( '<span id="', labelId, '" class="cke_voice_label">', editor.lang.toolbars, '</span>' );
 
 						var toolbars = editor.toolbox.toolbars,
@@ -179,5 +191,9 @@
 						for ( var r = 0 ; r < toolbar.length ; r++ )
 						{
-							var row = toolbar[ r ];
+							var toolbarId,
+								toolbarObj = 0,
+								toolbarName,
+								row = toolbar[ r ],
+								items;
 
 							// It's better to check if the row object is really
@@ -189,7 +205,4 @@
 								continue;
 
-							var toolbarId = CKEDITOR.tools.getNextId(),
-								toolbarObj = { id : toolbarId, items : [] };
-
 							if ( groupStarted )
 							{
@@ -204,31 +217,50 @@
 							}
 
-							output.push( '<span id="', toolbarId, '" class="cke_toolbar" role="presentation"><span class="cke_toolbar_start"></span>' );
-
-							// Add the toolbar to the "editor.toolbox.toolbars"
-							// array.
-							var index = toolbars.push( toolbarObj ) - 1;
-
-							// Create the next/previous reference.
-							if ( index > 0 )
-							{
-								toolbarObj.previous = toolbars[ index - 1 ];
-								toolbarObj.previous.next = toolbarObj;
-							}
+							items = row.items || row;
 
 							// Create all items defined for this toolbar.
-							for ( var i = 0 ; i < row.length ; i++ )
+							for ( var i = 0 ; i < items.length ; i++ )
 							{
 								var item,
-									itemName = row[ i ];
-
-								if ( itemName == '-' )
-									item = CKEDITOR.ui.separator;
-								else
-									item = editor.ui.create( itemName );
+									itemName = items[ i ],
+									canGroup;
+
+								item = editor.ui.create( itemName );
 
 								if ( item )
 								{
-									if ( item.canGroup )
+									canGroup = item.canGroup !== false;
+
+									// Initialize the toolbar first, if needed.
+									if ( !toolbarObj )
+									{
+										// Create the basic toolbar object.
+										toolbarId = CKEDITOR.tools.getNextId();
+										toolbarObj = { id : toolbarId, items : [] };
+										toolbarName = row.name && ( editor.lang.toolbarGroups[ row.name ] || row.name );
+
+										// Output the toolbar opener.
+										output.push( '<span id="', toolbarId, '" class="cke_toolbar"',
+											( toolbarName ? ' aria-labelledby="'+ toolbarId +  '_label"' : '' ),
+											' role="toolbar">' );
+
+										// If a toolbar name is available, send the voice label.
+										toolbarName && output.push( '<span id="', toolbarId, '_label" class="cke_voice_label">', toolbarName, '</span>' );
+
+										output.push( '<span class="cke_toolbar_start"></span>' );
+
+										// Add the toolbar to the "editor.toolbox.toolbars"
+										// array.
+										var index = toolbars.push( toolbarObj ) - 1;
+
+										// Create the next/previous reference.
+										if ( index > 0 )
+										{
+											toolbarObj.previous = toolbars[ index - 1 ];
+											toolbarObj.previous.next = toolbarObj;
+										}
+									}
+
+									if ( canGroup )
 									{
 										if ( !groupStarted )
@@ -274,5 +306,6 @@
 							}
 
-							output.push( '<span class="cke_toolbar_end"></span></span>' );
+							if ( toolbarObj )
+								output.push( '<span class="cke_toolbar_end"></span></span>' );
 						}
 
@@ -295,4 +328,5 @@
 							editor.addCommand( 'toolbarCollapse',
 								{
+									readOnly : 1,
 									exec : function( editor )
 									{
@@ -360,6 +394,4 @@
 						if ( instance.clickFn ) CKEDITOR.tools.removeFunction( instance.clickFn );
 						if ( instance.keyDownFn ) CKEDITOR.tools.removeFunction( instance.keyDownFn );
-
-						if ( instance.index ) CKEDITOR.ui.button._.instances[ instance.index ] = null;
 					}
 				}
@@ -367,21 +399,24 @@
 
 			editor.addCommand( 'toolbarFocus', commands.toolbarFocus );
+
+			editor.ui.add( '-', CKEDITOR.UI_SEPARATOR, {} );
+			editor.ui.addHandler( CKEDITOR.UI_SEPARATOR,
+			{
+				create: function()
+				{
+					return {
+						render : function( editor, output )
+						{
+							output.push( '<span class="cke_separator" role="separator"></span>' );
+							return {};
+						}
+					};
+				}
+			});
 		}
 	});
 })();
 
-/**
- * The UI element that renders a toolbar separator.
- * @type Object
- * @example
- */
-CKEDITOR.ui.separator =
-{
-	render : function( editor, output )
-	{
-		output.push( '<span class="cke_separator" role="separator"></span>' );
-		return {};
-	}
-};
+CKEDITOR.UI_SEPARATOR = 'separator';
 
 /**
@@ -428,38 +463,34 @@
  * config.toolbar_Full =
  * [
- *     ['Source','-','Save','NewPage','Preview','-','Templates'],
- *     ['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'],
- *     ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
- *     ['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField'],
+ *     { name: 'document',    items : [ 'Source','-','Save','NewPage','DocProps','Preview','Print','-','Templates' ] },
+ *     { name: 'clipboard',   items : [ 'Cut','Copy','Paste','PasteText','PasteFromWord','-','Undo','Redo' ] },
+ *     { name: 'editing',     items : [ 'Find','Replace','-','SelectAll','-','SpellChecker', 'Scayt' ] },
+ *     { name: 'forms',       items : [ 'Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField' ] },
  *     '/',
- *     ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
- *     ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote','CreateDiv'],
- *     ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
- *     ['BidiLtr', 'BidiRtl' ],
- *     ['Link','Unlink','Anchor'],
- *     ['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak','Iframe'],
+ *     { name: 'basicstyles', items : [ 'Bold','Italic','Underline','Strike','Subscript','Superscript','-','RemoveFormat' ] },
+ *     { name: 'paragraph',   items : [ 'NumberedList','BulletedList','-','Outdent','Indent','-','Blockquote','CreateDiv','-','JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock','-','BidiLtr','BidiRtl' ] },
+ *     { name: 'links',       items : [ 'Link','Unlink','Anchor' ] },
+ *     { name: 'insert',      items : [ 'Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak' ] },
  *     '/',
- *     ['Styles','Format','Font','FontSize'],
- *     ['TextColor','BGColor'],
- *     ['Maximize', 'ShowBlocks','-','About']
+ *     { name: 'styles',      items : [ 'Styles','Format','Font','FontSize' ] },
+ *     { name: 'colors',      items : [ 'TextColor','BGColor' ] },
+ *     { name: 'tools',       items : [ 'Maximize', 'ShowBlocks','-','About' ] }
  * ];
  */
 CKEDITOR.config.toolbar_Full =
 [
-	['Source','-','Save','NewPage','Preview','-','Templates'],
-	['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'],
-	['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
-	['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField'],
+	{ name: 'document',		items : [ 'Source','-','Save','NewPage','DocProps','Preview','Print','-','Templates' ] },
+	{ name: 'clipboard',	items : [ 'Cut','Copy','Paste','PasteText','PasteFromWord','-','Undo','Redo' ] },
+	{ name: 'editing',		items : [ 'Find','Replace','-','SelectAll','-','SpellChecker', 'Scayt' ] },
+	{ name: 'forms',		items : [ 'Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField' ] },
 	'/',
-	['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
-	['NumberedList','BulletedList','-','Outdent','Indent','Blockquote','CreateDiv'],
-	['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
-	['BidiLtr', 'BidiRtl' ],
-	['Link','Unlink','Anchor'],
-	['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak','Iframe'],
+	{ name: 'basicstyles',	items : [ 'Bold','Italic','Underline','Strike','Subscript','Superscript','-','RemoveFormat' ] },
+	{ name: 'paragraph',	items : [ 'NumberedList','BulletedList','-','Outdent','Indent','-','Blockquote','CreateDiv','-','JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock','-','BidiLtr','BidiRtl' ] },
+	{ name: 'links',		items : [ 'Link','Unlink','Anchor' ] },
+	{ name: 'insert',		items : [ 'Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak','Iframe' ] },
 	'/',
-	['Styles','Format','Font','FontSize'],
-	['TextColor','BGColor'],
-	['Maximize', 'ShowBlocks','-','About']
+	{ name: 'styles',		items : [ 'Styles','Format','Font','FontSize' ] },
+	{ name: 'colors',		items : [ 'TextColor','BGColor' ] },
+	{ name: 'tools',		items : [ 'Maximize', 'ShowBlocks','-','About' ] }
 ];
 
@@ -500,2 +531,15 @@
  * config.toolbarStartupExpanded = false;
  */
+
+/**
+ * When enabled, makes the arrow keys navigation cycle within the current
+ * toolbar group. Otherwise the arrows will move trought all items available in
+ * the toolbar. The TAB key will still be used to quickly jump among the
+ * toolbar groups.
+ * @name CKEDITOR.config.toolbarGroupCycling
+ * @since 3.6
+ * @type Boolean
+ * @default true
+ * @example
+ * config.toolbarGroupCycling = false;
+ */
Index: CKEditor/trunk/_source/plugins/undo/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/undo/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/undo/plugin.js	(revision 6904)
@@ -91,5 +91,5 @@
 			editor.on( 'mode', function()
 				{
-					undoManager.enabled = editor.mode == 'wysiwyg';
+					undoManager.enabled = editor.readOnly ? false : editor.mode == 'wysiwyg';
 					undoManager.onChange();
 				});
Index: CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js	(revision 6896)
+++ CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js	(revision 6904)
@@ -382,10 +382,11 @@
 		}
 
-		// When enterMode set to block, we'll establing new paragraph only if we're
-		// selecting inline contents right under body. (#3657)
-		if ( enterMode != CKEDITOR.ENTER_BR
-		     && range.collapsed
-			 && blockLimit.getName() == 'body'
-			 && !path.block )
+		// When we're in block enter mode, a new paragraph will be established
+		// to encapsulate inline contents right under body. (#3657)
+		if ( editor.config.autoParagraph !== false
+				&& enterMode != CKEDITOR.ENTER_BR
+				&& range.collapsed
+				&& blockLimit.getName() == 'body'
+				&& !path.block )
 		{
 			editor.fire( 'updateSnapshot' );
@@ -462,5 +463,5 @@
 		init : function( editor )
 		{
-			var fixForBody = ( editor.config.enterMode != CKEDITOR.ENTER_BR )
+			var fixForBody = ( editor.config.enterMode != CKEDITOR.ENTER_BR && editor.config.autoParagraph !== false )
 				? editor.config.enterMode == CKEDITOR.ENTER_DIV ? 'div' : 'p' : false;
 
@@ -589,4 +590,6 @@
 						body.spellcheck = !editor.config.disableNativeSpellChecker;
 
+						var editable = !editor.readOnly;
+
 						if ( CKEDITOR.env.ie )
 						{
@@ -597,5 +600,5 @@
 							// taking the editing focus at startup. (#141 / #523)
 							body.disabled = true;
-							body.contentEditable = true;
+							body.contentEditable = editable;
 							body.removeAttribute( 'disabled' );
 						}
@@ -609,18 +612,18 @@
 								if ( CKEDITOR.env.gecko && CKEDITOR.env.version >= 10900
 										|| CKEDITOR.env.opera )
-									domDocument.$.body.contentEditable = true;
+									domDocument.$.body.contentEditable = editable;
 								else if ( CKEDITOR.env.webkit )
-									domDocument.$.body.parentNode.contentEditable = true;
+									domDocument.$.body.parentNode.contentEditable = editable;
 								else
-									domDocument.$.designMode = 'on';
+									domDocument.$.designMode = editable? 'off' : 'on';
 							}, 0 );
 						}
 
-						CKEDITOR.env.gecko && CKEDITOR.tools.setTimeout( activateEditing, 0, null, editor );
+						editable && CKEDITOR.env.gecko && CKEDITOR.tools.setTimeout( activateEditing, 0, null, editor );
 
 						domWindow	= editor.window	= new CKEDITOR.dom.window( domWindow );
 						domDocument	= editor.document	= new CKEDITOR.dom.document( domDocument );
 
-						domDocument.on( 'dblclick', function( evt )
+						editable && domDocument.on( 'dblclick', function( evt )
 						{
 							var element = evt.data.getTarget(),
@@ -703,6 +706,6 @@
 						// IE standard compliant in editing frame doesn't focus the editor when
 						// clicking outside actual content, manually apply the focus. (#1659)
-						if ( CKEDITOR.env.ie
-							&& domDocument.$.compatMode == 'CSS1Compat'
+						if ( editable &&
+								CKEDITOR.env.ie && domDocument.$.compatMode == 'CSS1Compat'
 								|| CKEDITOR.env.gecko
 								|| CKEDITOR.env.opera )
@@ -735,5 +738,5 @@
 								var doc = editor.document;
 
-								if ( CKEDITOR.env.gecko && CKEDITOR.env.version >= 10900 )
+								if ( editable && CKEDITOR.env.gecko && CKEDITOR.env.version >= 10900 )
 									blinkCursor();
 								else if ( CKEDITOR.env.opera )
@@ -753,6 +756,7 @@
 
 						var keystrokeHandler = editor.keystrokeHandler;
-						if ( keystrokeHandler )
-							keystrokeHandler.attach( domDocument );
+						// Prevent backspace from navigating off the page.
+						keystrokeHandler.blockedKeystrokes[ 8 ] = !editable;
+						keystrokeHandler.attach( domDocument );
 
 						if ( CKEDITOR.env.ie )
@@ -761,5 +765,5 @@
 							// Override keystrokes which should have deletion behavior
 							//  on control types in IE . (#4047)
-							domDocument.on( 'keydown', function( evt )
+							editable && domDocument.on( 'keydown', function( evt )
 							{
 								var keyCode = evt.data.getKeystroke();
@@ -950,4 +954,8 @@
 											editor.docType = docType = match;
 											return '';
+										}).replace( /<\?xml\s[^\?]*\?>/i, function( match )
+										{
+											editor.xmlDeclaration = match;
+											return '';
 										});
 								}
@@ -1022,4 +1030,5 @@
 									fullPage = config.fullPage,
 									docType = fullPage && editor.docType,
+									xmlDeclaration = fullPage && editor.xmlDeclaration,
 									doc = iframe.getFrameDocument();
 
@@ -1039,4 +1048,6 @@
 									data = data.replace( emptyParagraphRegexp, function( match, lookback ) { return lookback; } );
 
+								if ( xmlDeclaration )
+									data = xmlDeclaration + '\n' + data;
 								if ( docType )
 									data = docType + '\n' + data;
@@ -1128,4 +1139,14 @@
 				});
 
+			editor.on( 'readOnly', function()
+				{
+					if ( editor.mode == 'wysiwyg' )
+					{
+						// Symply reload the wysiwyg area. It'll take care of read-only.
+						var wysiwyg = editor.getMode();
+						wysiwyg.loadData( wysiwyg.getData() );
+					}
+				});
+
 			// IE>=8 stricts mode doesn't have 'contentEditable' in effect
 			// on element unless it has layout. (#5562)
@@ -1141,9 +1162,23 @@
 			// Set the HTML style to 100% to have the text cursor in affect (#6341)
 			else if ( CKEDITOR.env.gecko )
+			{
 				editor.addCss( 'html { height: 100% !important; }' );
+				editor.addCss( 'img:-moz-broken { -moz-force-broken-image-icon : 1;	width : 24px; height : 24px; }' );
+			}
+
+			/* #3658: [IE6] Editor document has horizontal scrollbar on long lines
+			To prevent this misbehavior, we show the scrollbar always */
+			/* #6341: The text cursor must be set on the editor area. */
+			/* #6632: Avoid having "text" shape of cursor in IE7 scrollbars.*/
+			editor.addCss( 'html {	_overflow-y: scroll; cursor: text;	*cursor:auto;}' );
+			// Use correct cursor for these elements
+			editor.addCss( 'img, input, textarea { cursor: default;}' );
 
 			// Switch on design mode for a short while and close it after then.
 			function blinkCursor( retry )
 			{
+				if ( editor.readOnly )
+					return;
+
 				CKEDITOR.tools.tryThese(
 					function()
@@ -1298,4 +1333,16 @@
 
 /**
+ * Whether automatically create wrapping blocks around inline contents inside document body,
+ * this helps to ensure the integrality of the block enter mode.
+ * <strong>Note:</strong> Changing the default value might introduce unpredictable usability issues.
+ * @name CKEDITOR.config.autoParagraph
+ * @since 3.6
+ * @type Boolean
+ * @default true
+ * @example
+ * config.autoParagraph = false;
+ */
+
+/**
  * Fired when some elements are added to the document
  * @name CKEDITOR.editor#ariaWidget
Index: CKEditor/trunk/_source/skins/kama/icons.css
===================================================================
--- CKEditor/trunk/_source/skins/kama/icons.css	(revision 6896)
+++ CKEditor/trunk/_source/skins/kama/icons.css	(revision 6904)
@@ -9,4 +9,9 @@
 }
 
+.cke_skin_kama .cke_button_docProps .cke_icon
+{
+	background-position: 0 -16px;
+}
+
 .cke_skin_kama .cke_button_newpage .cke_icon
 {
Index: CKEditor/trunk/_source/skins/kama/skin.js
===================================================================
--- CKEditor/trunk/_source/skins/kama/skin.js	(revision 6896)
+++ CKEditor/trunk/_source/skins/kama/skin.js	(revision 6904)
@@ -11,4 +11,5 @@
 		editor		: { css : [ 'editor.css' ] },
 		dialog		: { css : [ 'dialog.css' ] },
+		richcombo	: { canGroup: false },
 		templates	: { css : [ 'templates.css' ] },
 		margins		: [ 0, 0, 0, 0 ],
Index: CKEditor/trunk/_source/skins/kama/toolbar.css
===================================================================
--- CKEditor/trunk/_source/skins/kama/toolbar.css	(revision 6896)
+++ CKEditor/trunk/_source/skins/kama/toolbar.css	(revision 6904)
@@ -80,12 +80,13 @@
 }
 
-.cke_skin_kama .cke_toolbar
-{
-	display: inline;
-}
-
 .cke_skin_kama .cke_separator
 {
-	display: none;
+	display: inline-block;
+	border-left: solid 1px #D3D3D3;
+	margin: 3px 2px 0;
+	height: 16px;
+
+	/* These are for IE < 8, but it's ok for the others */
+	vertical-align: top;
 }
 
@@ -129,10 +130,4 @@
 }
 
-.cke_skin_kama .cke_toolgroup
-{
-	display: block;
-	height: 22px;
-}
-
 .cke_skin_kama .cke_button a,
 .cke_skin_kama .cke_button a:hover,
@@ -254,5 +249,4 @@
 	height: 16px;
 	display: inline-block;
-	float: left;
 	cursor: default;
 }
@@ -279,8 +273,4 @@
 }
 
-.cke_skin_kama .cke_rtl .cke_button .cke_icon
-{
-	float: right;
-}
 
 .cke_skin_kama .cke_button .cke_label
@@ -290,13 +280,4 @@
 	padding-left: 3px;
 	line-height: 18px;
-	vertical-align: middle;
-	float: left;
-}
-
-.cke_skin_kama .cke_rtl .cke_button .cke_label
-{
-	padding-left: 0;
-	padding-right: 3px;
-	float: right;
 }
 
@@ -330,5 +311,4 @@
 	_background-image: url(images/sprites_ie6.png);
 	background-repeat: no-repeat;
-	float: left;
 	cursor: default;
 }
@@ -342,10 +322,4 @@
 {
 	filter: ;
-}
-
-.cke_skin_kama .cke_rtl .cke_button .cke_buttonarrow
-{
-	background-position: 0 -1469px; /* (0, -5) */
-	float: right;
 }
 
@@ -374,4 +348,5 @@
 .cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button .cke_icon,
 .cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button .cke_buttonarrow,
+.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_separator,
 .cke_skin_kama .cke_browser_gecko .cke_rtl .cke_toolbar_start
 {
@@ -389,16 +364,4 @@
 {
 	float: right;
-}
-
-/*** IE ***/
-
-/* The biggest problem with IE is the RTL support (and float:right). It's
-   totally broken, and quite delicate. IE8 fixed these issues. */
-
-.cke_skin_kama .cke_browser_ie .cke_rtl .cke_button .cke_icon,
-.cke_skin_kama .cke_browser_ie .cke_rtl .cke_button .cke_label,
-.cke_skin_kama .cke_browser_ie .cke_rtl .cke_button .cke_buttonarrow
-{
-	float: none;
 }
 
@@ -421,15 +384,7 @@
 /*** Mixed Fixes ***/
 
-.cke_skin_kama .cke_browser_ie8 .cke_button .cke_label,
-.cke_skin_kama .cke_browser_opera .cke_button .cke_label,
-.cke_skin_kama .cke_browser_webkit .cke_button .cke_label
-{
-	line-height: 20px;
-}
-
-.cke_skin_kama .cke_browser_opera.cke_browser_quirks .cke_button .cke_label,
-.cke_skin_kama .cke_browser_iequirks .cke_button .cke_label
-{
-	line-height: 17px;
+.cke_skin_kama .cke_browser_ie .cke_button .cke_label
+{
+	line-height: 16px;
 }
 
Index: CKEditor/trunk/_source/skins/office2003/icons.css
===================================================================
--- CKEditor/trunk/_source/skins/office2003/icons.css	(revision 6896)
+++ CKEditor/trunk/_source/skins/office2003/icons.css	(revision 6904)
@@ -9,4 +9,9 @@
 }
 
+.cke_skin_office2003 .cke_button_docProps .cke_icon
+{
+	background-position: 0 -16px;
+}
+
 .cke_skin_office2003 .cke_button_newpage .cke_icon
 {
Index: CKEditor/trunk/_source/skins/office2003/richcombo.css
===================================================================
--- CKEditor/trunk/_source/skins/office2003/richcombo.css	(revision 6896)
+++ CKEditor/trunk/_source/skins/office2003/richcombo.css	(revision 6904)
@@ -8,21 +8,9 @@
 	margin-top: 2px;
 	vertical-align: top;
-	float: left;
 }
 
 .cke_skin_office2003 .cke_browser_ie .cke_rcombo
 {
-	#float: none;
 	#display: inline;
-}
-
-.cke_skin_office2003 .cke_rtl .cke_rcombo
-{
-	float: right;
-}
-
-.cke_skin_office2003 .cke_browser_ie .cke_rcombo
-{
-	#float: none;
 }
 
@@ -157,4 +145,9 @@
 }
 
+.cke_skin_office2003 .cke_browser_iequirks .cke_rcombo .cke_openbutton .cke_icon
+{
+	height: 20px;
+}
+
 /* IE with zoom != 100% will distort the icons otherwise #4821 */
 .cke_skin_office2003 .cke_browser_ie .cke_rcombo .cke_openbutton .cke_icon
Index: CKEditor/trunk/_source/skins/office2003/skin.js
===================================================================
--- CKEditor/trunk/_source/skins/office2003/skin.js	(revision 6896)
+++ CKEditor/trunk/_source/skins/office2003/skin.js	(revision 6904)
@@ -9,4 +9,5 @@
 		editor		: { css : [ 'editor.css' ] },
 		dialog		: { css : [ 'dialog.css' ] },
+		separator		: { canGroup: false },
 		templates	: { css : [ 'templates.css' ] },
 		margins		: [ 0, 14, 18, 14 ]
Index: CKEditor/trunk/_source/skins/v2/icons.css
===================================================================
--- CKEditor/trunk/_source/skins/v2/icons.css	(revision 6896)
+++ CKEditor/trunk/_source/skins/v2/icons.css	(revision 6904)
@@ -9,4 +9,9 @@
 }
 
+.cke_skin_v2 .cke_button_docProps .cke_icon
+{
+	background-position: 0 -16px;
+}
+
 .cke_skin_v2 .cke_button_newpage .cke_icon
 {
Index: CKEditor/trunk/_source/skins/v2/richcombo.css
===================================================================
--- CKEditor/trunk/_source/skins/v2/richcombo.css	(revision 6896)
+++ CKEditor/trunk/_source/skins/v2/richcombo.css	(revision 6904)
@@ -8,21 +8,9 @@
 	margin-top: 2px;
 	vertical-align: top;
-	float: left;
 }
 
 .cke_skin_v2 .cke_browser_ie .cke_rcombo
 {
-	#float: none;
 	#display: inline;
-}
-
-.cke_skin_v2 .cke_rtl .cke_rcombo
-{
-	float: right;
-}
-
-.cke_skin_v2 .cke_browser_ie .cke_rcombo
-{
-	#float: none;
 }
 
@@ -59,10 +47,8 @@
 .cke_skin_v2 .cke_rcombo .cke_label
 {
-	display: inline-block;
 	float: left;
-
-	line-height: 24px;
+	line-height: 20px;
+	line-height: 22px\9;
 	height: 22px;
-	vertical-align: top;
 	padding-left: 4px;
 	padding-right: 5px;
Index: CKEditor/trunk/_source/skins/v2/skin.js
===================================================================
--- CKEditor/trunk/_source/skins/v2/skin.js	(revision 6896)
+++ CKEditor/trunk/_source/skins/v2/skin.js	(revision 6904)
@@ -9,4 +9,5 @@
 		editor		: { css : [ 'editor.css' ] },
 		dialog		: { css : [ 'dialog.css' ] },
+		separator		: { canGroup: false },
 		templates	: { css : [ 'templates.css' ] },
 		margins		: [ 0, 14, 18, 14 ]
Index: CKEditor/trunk/ckeditor.pack
===================================================================
--- CKEditor/trunk/ckeditor.pack	(revision 6896)
+++ CKEditor/trunk/ckeditor.pack	(revision 6904)
@@ -49,5 +49,5 @@
 		'CKEDITOR.SHRINK_ELEMENT' : 1,
 		'CKEDITOR.SHRINK_TEXT' : 2,
-		'CKEDITOR.UI_BUTTON' : 1,
+		'CKEDITOR.UI_BUTTON' : '\'button\'',
 		'CKEDITOR.DIALOG_RESIZE_NONE' : 0,
 		'CKEDITOR.DIALOG_RESIZE_WIDTH' : 1,
@@ -59,11 +59,11 @@
 		'CKEDITOR.STYLE_INLINE' : 2,
 		'CKEDITOR.STYLE_OBJECT' : 3,
-		'CKEDITOR.UI_PANELBUTTON' : 4,
+		'CKEDITOR.UI_PANELBUTTON' : '\'panelbutton\'',
 		'CKEDITOR.SELECTION_NONE' : 1,
 		'CKEDITOR.SELECTION_TEXT' : 2,
 		'CKEDITOR.SELECTION_ELEMENT' : 3,
-		'CKEDITOR.UI_RICHCOMBO' : 3,
-		'CKEDITOR.UI_MENUBUTTON' : 5,
-		'CKEDITOR.UI_PANEL' : 2
+		'CKEDITOR.UI_RICHCOMBO' : '\'richcombo\'',
+		'CKEDITOR.UI_MENUBUTTON' : '\'menubutton\'',
+		'CKEDITOR.UI_PANEL' : '\'panel\''
 	},
 
Index: CKEditor/trunk/contents.css
===================================================================
--- CKEditor/trunk/contents.css	(revision 6896)
+++ CKEditor/trunk/contents.css	(revision 6904)
@@ -22,24 +22,2 @@
     padding-right:40px;
 }
-
-html
-{
-	/* #3658: [IE6] Editor document has horizontal scrollbar on long lines
-	To prevent this misbehavior, we show the scrollbar always */
-	_overflow-y: scroll;
-	/* #6341: The text cursor must be set on the editor area. */
-	cursor: text;
-	/* #6632: Avoid having "text" shape of cursor in IE7 scrollbars.*/
-	*cursor:auto;
-}
-
-img:-moz-broken
-{
-	-moz-force-broken-image-icon : 1;
-	width : 24px;
-	height : 24px;
-}
-img, input, textarea
-{
-	cursor: default;
-}
