Index: /CKEditor/branches/features/adobeair/.htaccess
===================================================================
--- /CKEditor/branches/features/adobeair/.htaccess	(revision 5612)
+++ /CKEditor/branches/features/adobeair/.htaccess	(revision 5613)
@@ -1,4 +1,4 @@
 #
-# Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 # For licensing, see LICENSE.html or http://ckeditor.com/license
 #
Index: /CKEditor/branches/features/adobeair/CHANGES.html
===================================================================
--- /CKEditor/branches/features/adobeair/CHANGES.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/CHANGES.html	(revision 5613)
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 -->
@@ -36,21 +36,465 @@
 	</h1>
 	<h3>
-		CKEditor 3.1 (SVN)</h3>
+			CKEditor 3.3.2 (SVN)</h3>
+	<p>
+			New features:</p>
+	<ul>
+			<li></li>
+	</ul>
+	<p>
+			Fixed issues:</p>
+	<ul>
+		<li></li>
+	</ul>
+	<h3>
+			CKEditor 3.3.1</h3>
+	<p>
+			Fixed issues:</p>
+	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/5780">#5780</a> : Text selection lost when opening some of the dialogs.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5787">#5787</a> : Liststyle plugin wasn't packaged into the core (CKEDITOR.resourceManager.load exception).</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5637">#5637</a> : Fix wrong nesting that generated "&lt;head&gt; must be a child of &lt;html&gt;" warning in Webkit.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5790">#5790</a> : Internal only attributes output on fullpage &lt;html&gt; tag.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5761">#5761</a> : [IE] Color dialog matrix buttons are barely clickable in quirks mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5759">#5759</a> : [IE] Clicking on the scrollbar and then on the host page causes error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5772">#5772</a> : List style dialog is missing tab page ids.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5782">#5782</a> : [FF] Wysiwyg mode is broken by 'display' style changes on editor's parent DOM tree.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5801">#5801</a> : [IE] contentEditable="false" doesn't apply in effect on inline-elements.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5794">#5794</a> : Empty find matching twice results in JavaScript error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5732">#5732</a> : If it isn't possible to connect to the SCAYT servers the dialogs might hang in Firefox. Fix for Firefox>=3.6.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5807">#5807</a> : [FF2] New page command results in uneditable document.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5807">#5807</a> : [FF2] SCAYT plugin is disabled in Firefox2 due to selection interference.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5772">#5772</a> : [IE] Some numbered list style types are not supported by IE6/7 and causes JavaScript error.</li>
+	</ul>
+	<h3>
+		CKEditor 3.3</h3>
+	<p>
+		New features:</p>
+	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/635">#635</a> : The properties dialog will now open when double clicking on objects.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3893">#3893</a> : It's now possible to indent/outdent lists when selecting the first list item.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4968">#4968</a> : The <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.contentsLangDirection">contentsLangDirection</a> setting now has a default value 'ui' which inherit language direction from the editor UI language.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4649">#4649</a> : The color picker dialog is now accessible.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3593">#3593</a> : The editing area is now enabled by contentEditable="true" instead of designMode="on" to allow creating uneditable content elements in all browsers.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4056">#4056</a> : Hidden fields will now be displayed as fake element just like in FCKeditor 2.</li>
+	</ul>
+<h3>
+		CKEditor 3.2.2</h3>
+	<p>
+		New features:</p>
+	<ul>
+		<li>The SCAYT spell checker is now enabled by default through the <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.scayt_autoStartup">autoStartup</a> setting.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5631">#5631</a> : The SCAYT context menu options can now be reorganized through the <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.scayt_contextMenuItemsOrder">scayt_contextMenuItemsOrder</a> setting.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4231">#4231</a> : Introducing the <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.resize_dir">resize_dir setting</a>, to be able to restrict manual resizing of the editor to only one direction (horizontal/vertical).</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5479">#5479</a> : Introducing the classic ASP integration files and samples.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5024">#5024</a> : Added samples (<a href="http://nightly.ckeditor.com/latest/ckeditor/_samples/output_html.html">HTML</a> and <a href="http://nightly.ckeditor.com/latest/ckeditor/_samples/output_xhtml.html">XHTML</a>) to show how to output HTML using fonts and other attributes instead of styles.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4358">#4358</a> : Introduced the List Properties dialog.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5485">#5485</a> : Adding the <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.contentsLanguage">contentsLanguage</a> configuration option to be able to set the language for the editor contents.</li>
+	</ul>
+	<p>
+		Fixed issues:</p>
+	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/5330">#5330</a> : Corrected detection of CTRL and META keys in Macs for the context menu.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5434">#5434</a> : Fixed access denied issues with IE when accessing web sites through IPv6 IP addresses.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4476">#4476</a> : [IE] Inaccessible empty list item contains sub list.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4881">#4881</a> : [IE] Selection range broken because of cutting a single control type element from it.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5505">#5505</a> : Image dialog throw JavaScript error when click close dialog before preview area is loading.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5144">#5144</a> : [Chrome] Paste in Webkit sometimes leaves extra 'div' element.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5021">#5021</a> : [Firefox] Typing in empty document start from second line when <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.enterMode">enterMode</a> = CKEDITOR.ENTER_BR.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5416">#5416</a> : [IE] Delete table throws a error when <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.enterMode">enterMode</a> = CKEDITOR.ENTER_BR.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4459">#4459</a> : [IE] Select element is penetrating the maximized editor in IE6.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5559">#5559</a> : [IE] The first call to <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#setData">setData</a> is affected by iframe cache when loading the wysiwyg mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5567">#5567</a> : [IE] Remove inline styles in some case doesn't join identical siblings.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5450">#5450</a> : [FireFox] Press ENTER on 'replace' button result wrong.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5121">#5121</a> : Recognizes the &lt;br /&gt; tag as a separator when apply block styles and <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.enterMode">enterMode</a> = CKEDITOR.ENTER_BR.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5575">#5575</a> : <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.html#.replaceAll">CKEDITOR.replaceAll</a> should consider all kind of white spaces between class names.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5582">#5582</a> : Prevent the default behavior when click the 'x' button to close dialog box.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5584">#5584</a> : ENTER key with <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.forceEnterMode">forceEnterMode</a> turns on doesn't inherit current block attributes.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4797">#4797</a> : [Opera] Press ENTER key in dialog fields to close throws JavaScript error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5578">#5578</a> : Add flash fake element align property when switch mode (source to wysiwyg).</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5577">#5577</a> : Update delete column behavior when choose multiple cells in the same column.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5512">#5512</a> : Open context menu with SHIFT+F10 doesn't get correct editor selection.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5433">#5433</a> : English protocol text directions in Link dialog are not incorrect in 'rtl' UI languages.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5553">#5553</a> : Paste dialog clipboard area text direction is incorrect for 'rtl' content languages.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4734">#4734</a> : Font size resets when font name is changed in an empty numbered list.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5237">#5237</a> : English text in dialogs' title is flipped when using RTL language.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3257">#3257</a> : Create list doesn't keep blocks as headings.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5111">#5111</a> : [Firefox] JAWS doesn't respect PC cursor mode (application role) on toolbar.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5530">#5530</a> : Page break for printing can't be removed with undo.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5381">#5381</a> : Unable to place cursor between two paragraphs in body.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5568">#5568</a> : [IE6/7] Selecting a entire table cell changes the original range.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5623">#5623</a> : [Firefox] Apply style that edges another inline style result incorrect.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5586">#5586</a> : [Firefox] Maximize the second editor ruins full screen mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5617">#5617</a> : HTML filter system does not allow two 'text' filter rules.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5663">#5663</a> : General memory clean up after destroying last instance.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5461">#5461</a> : [IE] Fix Paste from Word dialog doesn't accept imput problem.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5676">#5676</a> : Make color buttons use RRGGBB instead of RGB for better compatibility with IE.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4948">#4948</a> : [Safari] Select the first/last cell of table to open context menu may lead to undetected table.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5591">#5591</a> : [Firefox] Select a list item makes selected element broken.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5667">#5667</a> : Pasting in a RTL page content causes shows up the horizontal scrollbar.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5688">#5688</a> : Duplicate ids are used in dialog definition.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5719">#5719</a> : [IE] 'change' dialog event should not be triggered when dialog is already closed.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5747">#5747</a> : [IE] Error thrown when IE input field editing mode is turned on.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5516">#5516</a> : IE8: Toolbar buttons have higher bottom padding.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5402">#5402</a> : SHIFT-ENTER could now be used to exit from preformat block.</li>
+		<li>SCAYT plugin related:<ul>
+			<li><a href="http://dev.fckeditor.net/ticket/4836">#4836</a> : Using SCAYT result in fragile elements when applying inline styles.</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5425">#5425</a> : [Opera] Disable SCAYT plugin for Opera browser.</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5632">#5632</a> : SCAYT word marker is not visible on text with background-color set.</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4125">#4125</a> : Remove Format command incorrectly removes SCAYT word markers.</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5671">#5671</a> : SCAYT bootstrap script could be added multiple times unnecessarily.</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5573">#5573</a> : SCAYT move cursor position after insert element into marked word text.</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5546">#5546</a> : SCAYT interferes with undo/redo commands.</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5570">#5570</a> : [IE] First enabling SCAYT blind cursor in editor.</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5741">#5741</a> : Enable SCAYT cause error in multiple editor instances.</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5744">#5744</a> : Remove editor with SCAYT enabled in source mode throws error.</li>
+		</ul></li>
+		<li>Updated the following language files:<ul>
+			<li><a href="http://dev.fckeditor.net/ticket/5432">#5432</a> : Dutch;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5619">#5619</a> : Finnish;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5515">#5515</a> : Hebrew;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5588">#5588</a> : Turkish;</li>
+		</ul></li>
+	</ul>
+	<h3>
+		CKEditor 3.2.1</h3>
+	<p>
+		New features:</p>
+	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/4478">#4478</a> : Enable the SelectAll command in source mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5150">#5150</a> : Allow names in the CKEDITOR.config.colorButton_colors setting.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4810">#4810</a> : Adding configuration option for image dialog preview area filling text.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/536">#536</a> : Object style now could be applied on any parent element of current selection.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5290">#5290</a> : Unified stylesSet loading removing dependencies from the styles combo.
+					Now the configuration entry is named 'config.stylesSet' instead of config.stylesCombo_stylesSet and the default location
+					is under the 'styles' plugin instead of 'stylescombo'.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5352">#5352</a> : Allow to define the stylesSet array in the config object for the editor.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5302">#5302</a> : Adding config option "forceEnterMode".</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5216">#5216</a> : Extend CKEDITOR.appendTo to allow a data parameter for the initial value.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5024">#5024</a> : Added sample to show how to output XHTML and avoid deprecated tags.</li>
+	</ul>
+	<p>
+		Fixed issues:</p>
+	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/5152">#5152</a> : Indentation using class attribute doesn't work properly.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4682">#4682</a> : It wasn't possible to edit block elements in IE that had styles like width, height or float.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4750">#4750</a> : Correcting default order of buttons layout in dialogs on Mac.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4932">#4932</a> : Fixed collapse button not clickable on simple toolbar.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5228">#5228</a> : Link dialog is automatically changes protocol when URLs that starts with '?'.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4877">#4877</a> : Fixed CKEditor displays source code in one long line (IE quirks mode + office2003 skin).</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5132">#5132</a> : Apply inline style leaks into sibling words which are seperated spaces.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3599">#3599</a> : Background color style on sized text displayed as narrow band behind.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4661">#4661</a> : Translation missing in link dialog.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5240">#5240</a> : Flash alignment property is not presented visually on fake element.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4910">#4910</a> : Pasting in IE scrolls document to the end.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5041">#5041</a> : Table summary attribute can't be removed with dialog.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5124">#5124</a> : All inline styles cannot be applied on empty spaces.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3570">#3570</a> : SCAYT marker shouldn't appear inside elements path bar.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4553">#4553</a> : Dirty check result incorrect when editor document is empty.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4555">#4555</a> : Unreleased memory when editor is created and destroyed.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5118">#5118</a> : Arrow keys navigation in RTL languages is incorrect.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4721">#4721</a> : Remove attribute 'value' of checkbox in IE.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5278">#5278</a> : IE: Add validation to check for bad window names of popup window.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5171">#5171</a> : Dialogs contains lists don't have proper voice labels.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4791">#4791</a> : Can't place cursor inside a form that end with a checkbox/radio.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4479">#4479</a> : StylesCombo doesn't reflect the selection state until it's first opened.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4717">#4717</a> : 'Unlink' and 'Outdent' command buttons should be disabled on editor startup.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5119">#5119</a> : Disabled command buttons are not being properly styled when focused.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5307">#5307</a> : Hide dialog page cause problem when there's two tab pages remain.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5343">#5343</a> : Active list item ARIA role is wrongly placed.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3599">#3599</a> : Background color style applying to text with font size style has been narrowly rendered.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4711">#4711</a> : Line break character inside preformatted text makes it unable to type text at the end of previous line.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4829">#4829</a> : [IE] Apply style from combo has wrong result on manually created selection.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4830">#4830</a> : Retrieving selected element isn't always right, especially selecting using keyboard (SHIFT+ARROW).</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5128">#5128</a> : Element attribute inside preformatted text is corrupted when converting to other blocks.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5190">#5190</a> : Template list entry shouldn't gain initial focus open templates list dialog opens.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5238">#5238</a> : Menu button doesn't display arrow icon in high-contrast mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3576">#3576</a> : Non-attributed element of the same name with the applied style is incorrectly removed.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5221">#5221</a> : Insert table into empty document cause JavaScript error thrown.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5242">#5242</a> : Apply 'automatic' color option of text color incorrectly removes background-color style.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4719">#4719</a> : IE does not escape attribute values properly.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5170">#5170</a> : Firefox does not insert text into styled element properly.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4026">#4026</a> : Office2003 skin has no toolbar button borders in High Contrast in IE7.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4348">#4348</a> : There should have exception thrown when 'CKEDITOR_BASEPATH' couldn't be figured out automatically.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5364">#5364</a> : Focus may not be put into dialog correctly when dialog skin file is loading slow.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4016">#4016</a> : Justify the layout of forms select dialog in Chrome and IE7.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5373">#5373</a> : Variable 'pathBlockElements' defines wrong items in CKEDITOR.dom.elementPath.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5082">#5082</a> : Ctrl key should be described as Cmd key on Mac.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5182">#5182</a> : Context menu is not been announced correctly by ATs.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4898">#4898</a> : Can't navigate outside table under the last paragraph of document.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4950">#4950</a> : List commands could compromise list item attribute and styles.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5018">#5018</a> : Find result highlighting remove normal font color styles unintentionally.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5376">#5376</a> : Unable to exit list from within a empty block under list item.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5145">#5145</a> : Various SCAYT fixes.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5319">#5319</a> : Match whole word doesn't work anymore after replacement has happened.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5363">#5363</a> : 'title' attribute now presents on all editor iframes.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5374">#5374</a> : Unable to toggle inline style when the selection starts at the linefeed of the previous paragraph.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4513">#4513</a> : Selected link element is not always correctly detected when using keyboard arrows to perform such selection.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5372">#5372</a> : Newly created sub list should inherit nothing from the original (parent) list, except the list type.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5274">#5274</a> : [IE6] Templates preview image is displayed in wrong size.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5292">#5292</a> : Preview in font size and family doesn't work with custom styles.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5396">#5396</a> : Selection is lost when use cell properties dialog to change cell type to header.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4082">#4082</a> : [IE+Quirks] Preview text in the image dialog is not wrapping.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4197">#4197</a> : Fixing format combo don't hide when editor blur on Safari.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5401">#5401</a> : The context menu break layout with Office2003 and V2 skin on IE quirks mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4825">#4825</a> : Fixing browser context menu is opened when clicking right mouse button twice.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5356">#5356</a> : The SCAYT dialog had issues with Prototype enabled pages.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5266">#5266</a> : SCAYT was disturbing the rendering of TH elements.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4688">#4688</a> : SCAYT was interfering on checkDirty.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5429">#5429</a> : High Contrast mode was being mistakenly detected when loading the editor through Dojo's xhrGet.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5221">#5221</a> : Range is mangled when making collapsed selection in an empty paragraph.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5261">#5261</a> : Config option 'scayt_autoStartup' slow down editor loading.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3846">#3846</a> : Google Chrome - No Img properties after inserting.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5465">#5465</a> : ShiftEnter=DIV doesn't respect list item when pressing ENTER at end of list item.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5454">#5454</a> : After replaced success, the popup window couldn't be closed and a js error occured.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4784">#4784</a> : Incorrect cursor position after delete table cells.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5149">#5149</a> : [FF] Cursor disappears after maximize when the editor has focus.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5220">#5220</a> : DTD now shows tolerance to &lt;style&gt; appear inside content.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5440">#5440</a> : Mobile browsers (iPhone, Android...) are marked as incompatible as they don't support editing features.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5504">#5504</a> : [IE6/7] 'Paste' dialog will always get opened even when user allows the clipboard access dialog when using 'Paste' button.</li>
+		<li>Updated the following language files:<ul>
+			<li><a href="http://dev.fckeditor.net/ticket/5326">#5326</a> : Catalan;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5370">#5370</a> : Faroese;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5392">#5392</a> : Finnish;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4580">#4580</a> : Hungarian;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5301">#5301</a> : Norwegian;</li>
+		</ul></li>
+	</ul>
+	<h3>
+		CKEditor 3.2</h3>
+	<p>
+		New features:</p>
+	<ul>
+		<li>Several accessibility enhancements:<ul>
+			<li><a href="http://dev.fckeditor.net/ticket/4502">#4502</a> : The editor accessibility is now totally based on <a href="http://www.w3.org/WAI/intro/aria">WAI-ARIA</a>.</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5015">#5015</a> : Adding accessibility help dialog plugin.</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5014">#5014</a> : Keyboard navigation compliance with screen reader suggested keys.</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4595">#4595</a> : Better accessibility in the Templates dialog.</li>
+			<li><a href="http://dev.fckeditor.net/ticket/3389">#3389</a> : Esc/Arrow Key now works for closing sub menu.</li>
+		</ul></li>
+		<li><a href="http://dev.fckeditor.net/ticket/4973">#4973</a> : The Style field in the Div Container dialog is now loading the styles defined in the default styleset used by the Styles toolbar combo.</li>
+	</ul>
+	<p>
+		Fixed issues:</p>
+	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/5049">#5049</a> : Form Field list command in JAWS incorrectly lists extra fields.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5008">#5008</a> : Lock/Unlock ratio buttons in the Image dialog was poorly designed in High Contrast mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3980">#3980</a> : All labels in dialogs now use &lt;label&gt; instead of &lt;div&gt;.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5213">#5213</a> : Reorganization of some entries in the language files to make it more consistent.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5199">#5199</a> : In IE, single row toolbars didn't have the bottom padding.</li>
+	</ul>
+	<h3>
+		CKEditor 3.1.1</h3>
+	<p>
+		New features:</p>
+	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/4399">#4399</a> : Improved support for external file browsers by allowing executing a callback function.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4612">#4612</a> : The text of links is now updated if it matches the URL to which it points to.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4936">#4936</a> : New localization support for the Welsh language.</li>
+	</ul>
+	<p>
+		Fixed issues:</p>
+	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/4272">#4272</a> : Kama skin toolbar was broken in IE+Quirks+RTL.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4987">#4987</a> : Changed the url which is called by the Browser Server button in the Link tab of Image Properties dialog.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5030">#5030</a> : The CKEDITOR.timestamp wasn't been appended to the skin.js file.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4993">#4993</a> : Removed the float style from images when the user selects 'not set' for alignment.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4944">#4944</a> : Fixed a bug where nested list structures with inconsequent levels were not being pasted correctly from MS Word.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4637">#4637</a> : Table cells' 'nowrap' attribute was not being loaded by the cell property dialog. Thanks to pomu0325.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4724">#4724</a> : Using the mouse to insert a link in IE might create incorrect results.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4640">#4640</a> : Small optimizations for the fileBrowser plugin.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4583">#4583</a> : The "Target Frame Name" field is now visible when target is set to 'frame' only.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4863">#4863</a> : Fixing iframedialog's height doesn't stretch to 100% (except IE Quirks).</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4964">#4964</a> : The BACKSPACE key positioning was not correct in some cases with Firefox.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4980">#4980</a> : Setting border, vspace and hspace of images to zero was not working.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4773">#4773</a> : The fileBrowser plugin was overwriting onClick functions eventually defined on fileButton elements.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4731">#4731</a> : The clipboard plugin was missing a reference to the dialog plugin.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5051">#5051</a> : The about plugin was missing a reference to the dialog plugin.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5146">#5146</a> : The wsc plugin was missing a reference to the dialog plugin.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4632">#4632</a> : The print command will now properly break on the insertion point of page break for printing.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4862">#4862</a> : The English (United Kingdom) language file has been renamed to en-gb.js.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4618">#4618</a> : Selecting an emoticon or the lock and reset buttons in the image dialog fired the onBeforeUnload event in IE.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4678">#4678</a> : It was not possible to set tables' width to empty value.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5012">#5012</a> : Fixed dependency issues with the menu plugin.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5040">#5040</a> : The editor will not properly ignore font related settings that have extra item separators (semi-colons).</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4046">#4046</a> : Justify should respect config.enterMode = CKEDITOR.ENTER_BR.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4622">#4622</a> : Inserting tables multiple times was corrupting the undo system.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4647">#4647</a> : [IE] Selection on an element within positioned container is lost after open context-menu then click one menu item.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4683">#4683</a> : Double-quote character in attribute values was not escaped in the editor output.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4762">#4762</a> : [IE] Unexpected vertical-scrolling behavior happens whenever focus is moving out of editor in source mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4772">#4772</a> : Text color was not being applied properly on links.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4795">#4795</a> : [IE] Press 'Del' key on horizontal line or table result in error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4824">#4824</a> : [IE] &lt;br/&gt; at the very first table cell breaks the editor selection.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4851">#4851</a> : [IE] Delete table rows with context-menu may cause error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4951">#4951</a> : Replacing text with empty string was throwing errors.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4963">#4963</a> : Link dialog was not opening properly for e-mail type links.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5043">#5043</a> : Removed the possibility of having an unwanted script tag being outputted with the editor contents.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3678">#3678</a> : There were issues when editing links inside floating divs with IE.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4763">#4763</a> : Pressing ENTER key with text selected was not deleting the text in some situations.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5096">#5096</a> : Simple ampersand attribute value doesn't work for more than one occurrence.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3494">#3494</a> : Context menu is too narrow in some translations.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5005">#5005</a> : Fixed HTML errors in PHP samples.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5123">#5123</a> : Fixed broken XHTML in User Interface Languages sample.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4893">#4893</a> : Editor now understands table cell inline styles.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4611">#4611</a> : Selection around &lt;select&gt; in editor doesn't cause error anymore.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4886">#4886</a> : Extra BR tags were being created in the output HTML.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4933">#4933</a> : Empty tags with BR were being left in the DOM.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5127">#5127</a> : There were errors when removing dialog definition pages through code.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4767">#4767</a> : CKEditor was not working when ckeditor_source.js is loaded in the &lt;body&gt; .</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5062">#5062</a> : Avoided security warning message when loading the wysiwyg area in IE6 under HTTPS.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5135">#5135</a> : The TAB key will now behave properly when in Source mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4988">#4988</a> : It wasn't possible to use forcePasteAsPlainText with Safari on Mac.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5095">#5095</a> : Safari on Mac deleted the current selection in the editor when Edit menu was clicked.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5140">#5140</a> : In High Contrast mode, arrows were now been displayed for menus with submenus.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5163">#5163</a> : The undo system was not working on some specific cases.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5162">#5162</a> : The ajax sample was throwing errors when loading data.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4999">#4999</a> : The Template dialog was not generating an undo snapshot.</li>
+		<li>Updated the following language files:<ul>
+			<li><a href="http://dev.fckeditor.net/ticket/5006">#5006</a> : Dutch;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5039">#5039</a> : Finnish;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5148">#5148</a> : Hebrew;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5071">#5071</a> : Russian;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/5147">#5147</a> : Spanish;</li>
+		</ul></li>
+	</ul>
+	<h3>
+		CKEditor 3.1</h3>
+	<p>
+		New features:</p>
+	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/4067">#4067</a> : Introduced the full page editing support (from &lt;html&gt; to &lt;/html&gt;).</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4228">#4228</a> : Introduced the Shared Spaces feature.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4379">#4379</a> : Introduced the new powerful pasting system and word cleanup procedure, including enhancements to the paste as plain text feature.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/2872">#2872</a> : Introduced the new native PHP API, the first standardized server side support.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4210">#4210</a> : Added CKEditor plugin for jQuery.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/2885">#2885</a> : Added 'div' dialog and corresponding context menu options.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4574">#4574</a> : Added the table merging tools and corresponding context menu options.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4340">#4340</a> : Added the email protection option for link dialog.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4463">#4463</a> : Added inline CSS support in all places where custom stylesheet could apply.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3881">#3881</a> : Added color dialog for 'more color' option in color buttons.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4341">#4341</a> : Added the 'showborder' plugin.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4549">#4549</a> : Make the anti-cache query string configurable.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4708">#4708</a> : Added the 'htmlEncodeOutput' config option.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4342">#4342</a> : Introduced the bodyId and bodyClass settings to specify the id and class. to be used in the editing area at runtime.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3401">#3401</a> : Introduced the baseHref setting so it's possible to set the URL to be used to resolve absolute and relative URLs in the contents.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4729">#4729</a> : Added support to fake elements for comments.</li>
+	</ul>
+	<p>
+		Fixed issues:</p>
+	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/4707">#4707</a> : Fixed invalid link is requested in image preview.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4461">#4461</a> : Fixed toolbar separator line along side combo enlarging the toolbar height.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4596">#4596</a> : Fixed image re-size lock buttons aren't accessible in high-contrast mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4676">#4676</a> : Fixed editing tables using table properties dialog overwrites original style values.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4714">#4714</a> : Fixed IE6 JavaScript error when editing flash by commit 'Flash' dialog.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3905">#3905</a> : Fixed 'wysiwyg' mode causes unauthenticated content warnings over SSL in FF 3.5.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4768">#4768</a> : Fixed open context menu in IE throws js error when focus is not inside document.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4822">#4822</a> : Fixed applying 'Headers' to existing table does not work in IE.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4855">#4855</a> : Fixed toolbar doesn't wrap well for 'v2' skin in all browsers.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4882">#4882</a> : Fixed auto detect paste from MS-Word is not working for Safari.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4882">#4882</a> : Fixed unexpected margin style left behind on content cleaning up from MS-Word.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4896">#4896</a> : Fixed paste nested list from MS-Word with measurement units set to cm is broken.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4899">#4899</a> : Fixed unable to undo pre-formatted style.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4900">#4900</a> : Fixed ratio-lock inconsistent between browsers.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4901">#4901</a> : Fixed unable to edit any link with popup window's features in Firefox.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4904">#4904</a> : Fixed when paste happen from dialog, it always throw JavaScript error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4905">#4905</a> : Fixed paste plain text result incorrect when content from dialog.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4889">#4889</a> : Fixed unable to undo 'New Page' command after typing inside editor.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4892">#4892</a> : Fixed table alignment style is not properly represented by the wrapping div.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4918">#4918</a> : Fixed switching mode when maximized is showing background page contents.</li>
+	</ul>
+	<h3>
+		CKEditor 3.0.2</h3>
+	<p>
+		New features:</p>
+	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/4343">#4343</a> : Added the configuration option &#39;browserContextMenuOnCtrl&#39; so it&#39;s possible to enable the default browser context menu by holding the CTRL key.</li>
+	</ul>
+	<p>
+		Fixed issues:</p>
+	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/4552">#4552</a> : Fixed float panel doesn't show up since editor instanced been destroyed once.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3918">#3918</a> : Fixed fake object is editable with Image dialog.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4053">#4053</a> : Fixed 'Form Properties' missing from context menu when selection collapsed inside form.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4401">#4401</a> : Fixed customized by removing 'upload' tab page from 'Link dialog' cause JavaScript error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4477">#4477</a> : Adding missing tag names in object style elements.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4567">#4567</a> : Fixed IE throw error when pressing BACKSPACE in source mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4573">#4573</a> : Fixed 'IgnoreEmptyPargraph' config doesn't work with the config 'entities' is set to 'false'.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4614">#4614</a> : Fixed attribute protection fails because of line-break.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4546">#4546</a> : Fixed UIColor plugin doesn't work when editor id contains CSS selector preserved keywords.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4609">#4609</a> : Fixed flash object is lost when loading data from outside editor.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4625">#4625</a> : Fixed editor stays visible in a div with style 'visibility:hidden'.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4621">#4621</a> : Fixed clicking below table caused an empty table been generated.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3373">#3373</a> : Fixed empty context menu when there's no menu item at all.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4473">#4473</a> : Fixed setting rules on the same element tag name throws error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4514">#4514</a> : Fixed press 'Back' button breaks wysiwyg editing mode is Firefox.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4542">#4542</a> : Fixed unable to access buttons using tab key in Safari and Opera.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4577">#4577</a> : Fixed relative link url is broken after opening 'Link' dialog.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4597">#4597</a> : Fixed custom style with same attribute name but different attribute value doesn't work.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4651">#4651</a> : Fixed 'Deleted' and 'Inserted' text style is not rendering in wysiwyg mode and is wrong is source mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4654">#4654</a> : Fixed 'CKEDITOR.config.font_defaultLabel(fontSize_defaultLabel)' is not working.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3950">#3950</a> : Fixed table column insertion incorrect when selecting empty cell area.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3912">#3912</a> : Fixed UIColor not working in IE when page has more than 30+ editors.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4031">#4031</a> : Fixed mouse cursor on toolbar combo has more than 3 shapes.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4041">#4041</a> : Fixed open context menu on multiple cells to remove them result in only one removed.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4185">#4185</a> : Fixed resize handler effect doesn't affect flash object on output.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4196">#4196</a> : Fixed 'Remove Numbered/Bulleted List' on nested list doesn't work well on nested list.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4200">#4200</a> : Fixed unable to insert 'password' type filed with attributes.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4530">#4530</a> : Fixed context menu couldn't open in Opera.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4536">#4536</a> : Fixed keyboard navigation doesn't work at all in IE quirks mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4584">#4584</a> : Fixed updated link Target field is not updating when updating to certain values.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4603">#4603</a> : Fixed unable to disable submenu items in contextmenu.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4672">#4672</a> : Fixed unable to redo the insertion of horizontal line.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4677">#4677</a> : Fixed 'Tab' key is trapped by hidden dialog elements.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4073">#4073</a> : Fixed insert template with replace option could result in empty document.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4455">#4455</a> : Fixed unable to start editing when image inside document not loaded.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4517">#4517</a> : Fixed 'dialog_backgroundCoverColor' doesn't work on IE6.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3165">#3165</a> : Fixed enter key in empty list item before nested one result in collapsed line.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4527">#4527</a> : Fixed checkbox generate invalid 'checked' attribute.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/1659">#1659</a> : Fixed unable to click below content to start editing in IE with 'config.docType' setting to standard compliant.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3933">#3933</a> : Fixed extra &lt;br&gt; left at the end of document when the last element is a table.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4736">#4736</a> : Fixed PAGE UP and PAGE DOWN keys in standards mode are not working.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4725">#4725</a> : Fixed hitting 'enter' before html comment node produces a JavaScript error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4522">#4522</a> : Fixed unable to redo when typing after insert an image with relative url.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4594">#4594</a> : Fixed context menu goes off-screen when mouse is at right had side of screen.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4673">#4673</a> : Fixed undo not available straight away if shift key is used to enter first character.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4690">#4690</a> : Fixed the parsing of nested inline elements.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4450">#4450</a> : Fixed selecting multiple table cells before apply justify commands generates spurious paragraph in Firefox.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4733">#4733</a> : Fixed dialog opening sometimes hang up Firefox and Safari.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4498">#4498</a> : Fixed toolbar collapse button missing tooltip.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4738">#4738</a> : Fixed inserting table inside bold/italic/underline generates error on ENTER_BR mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4246">#4246</a> : Fixed avoid XHTML deprecated attributes for image styling.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4543">#4543</a> : Fixed unable to move cursor between table and hr.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4764">#4764</a> : Fixed wrong exception message when CKEDITOR.editor.append() to non-existing elements.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4521">#4521</a> : Fixed dialog layout in IE6/7 may have scroll-bar and other weird effects.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4709">#4709</a> : Fixed inconsistent scroll-bar behavior on IE.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4776">#4776</a> : Fixed preview page failed to open when relative URl contains in document.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4812">#4812</a> : Fixed 'Esc' key not working on dialogs in Opera.</li>
+		<li>Updated the following language files:<ul>
+			<li><a href="http://dev.fckeditor.net/ticket/4346">#4346</a> : Dutch;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4837">#4837</a> : Finnish;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4371">#4371</a> : Hebrew;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4371">#4607</a> <a href="http://dev.fckeditor.net/ticket/4713">#4713</a> : Japanese;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4660">#4660</a> : Norwegian.</li>
+		</ul></li>
+	</ul>
+	<h3>
+		CKEditor 3.0.1</h3>
 	<p>
 		New features:</p>
 	<ul>
 		<li><a href="http://dev.fckeditor.net/ticket/4219">#4219</a> : Added fallback mechanism for config.language.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4194">#4194</a> : Added support for using multiple css style sheets within the editor.</li>
 	</ul>
 	<p>
 		Fixed issues:</p>
 	<ul>
-		<li><a href="http://dev.fckeditor.net/ticket/3898">#3898</a> : Added validation for URL presentance in Image dialog.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3898">#3898</a> : Added validation for URL value in Image dialog.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/3528">#3528</a> : Fixed Context Menu issue when triggered using Shift+F10.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/4028">#4028</a> : Maximize control's tool tip was wrong once it is maximized.</li>
-		<li><a href="http://dev.fckeditor.net/ticket/4237">#4237</a> : ToolBar is chopped off in Safari browser 3.x.</li>
-		<li><a href="http://dev.fckeditor.net/ticket/3898">#3898</a> : Added validation for URL presentance in Image dialog.</li>
-		<li><a href="http://dev.fckeditor.net/ticket/4241">#4241</a> : Float panels are left on screen while editor is destroyed.</li>		
-		<li><a href="http://dev.fckeditor.net/ticket/4274">#4274</a> : Double click event is incorrect handled in 'divreplace' sample.</li>	
-		<li><a href="http://dev.fckeditor.net/ticket/4354">#4354</a> : Fixed TAB key on toolbar to not focus disabled buttons.</li>	
+		<li><a href="http://dev.fckeditor.net/ticket/4237">#4237</a> : Toolbar is chopped off in Safari browser 3.x.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4241">#4241</a> : Float panels are left on screen while editor is destroyed.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4274">#4274</a> : Double click event is incorrect handled in 'divreplace' sample.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4354">#4354</a> : Fixed TAB key on toolbar to not focus disabled buttons.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/3856">#3856</a> : Fixed focus and blur events in source view mode.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/3438">#3438</a> : Floating panels are off by (-1px, 0px) in RTL mode.</li>
@@ -66,8 +510,36 @@
 		<li><a href="http://dev.fckeditor.net/ticket/3517">#3517</a> : Fixed "Match cyclic" field in Find & Replace dialog.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/4368">#4368</a> : borderColor table cell attribute haven't worked for none-IE</li>
-		<li><a href="http://dev.fckeditor.net/ticket/4203">#4203</a> : In IE quirksmode + toolbar collapsed + source mode editing block height was incorrect.</li>
-		<li><a href="http://dev.fckeditor.net/ticket/4387">#4387</a> : Right clicking in Kama skin can lead to a javascript error.</li>
-		<li><a href="http://dev.fckeditor.net/ticket/4397">#4397</a> : Wisiwig mode will cause the host page scroll.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4203">#4203</a> : In IE quirks mode + toolbar collapsed + source mode editing block height was incorrect.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4387">#4387</a> : Fixed: right clicking in Kama skin can lead to a javascript error.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4397">#4397</a> : Wysiwyg mode caused the host page scroll.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/4385">#4385</a> : Fixed editor's auto adjusting on DOM structure were confusing the dirty checking mechanism.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4397">#4397</a> : Fixed regression of [3816] where turn on design mode was causing Firefox3 to scroll the host page.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4254">#4254</a> : Added basic API sample.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4107">#4107</a> : Normalize css font-family style text for correct comparision.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3664">#3664</a> : Insert block element in empty editor document should not create new paragraph.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4037">#4037</a> : 'id' attribute is missing with Flash dialog advanced page.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4047">#4047</a> : Delete selected control type element when 'Backspace' is pressed on it.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4191">#4191</a> : Fixed: dialog changes confirmation on image dialog appeared even when no changes have been made.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4351">#4351</a> : Dash and dot could appear in attribute names.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4355">#4355</a> : 'maximize' and 'showblock' commands shouldn't take editor focus.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4504">#4504</a> : Fixed 'Enter'/'Esc' key is not working on dialog button.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4245">#4245</a> : 'Strange Template' now come with a style attribute for width.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4512">#4512</a> : Fixed styles plugin incorrectly adding semicolons to style text.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3855">#3855</a> : Fixed loading unminified _source files when ckeditor_source.js is used.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3717">#3717</a> : Dialog settings defaults can now be overridden in-page through the CKEDITOR.config object.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4481">#4481</a> : The 'stylesCombo_stylesSet' configuration entry didn't work for full URLs.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4480">#4480</a> : Fixed scope attribute in th.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4467">#4467</a> : Fixed bug to use custom icon in context menus. Thanks to george.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4190">#4190</a> : Fixed select field dialog layout in Safari.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4518">#4518</a> : Fixed unable to open dialog without editor focus in IE.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4519">#4519</a> : Fixed maximize without editor focus throw error in IE.</li>
+		<li>Updated the following language files:<ul>
+			<li><a href="http://dev.fckeditor.net/ticket/3947">#3947</a> : Arabic;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4466">#4466</a> : Czech;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4363">#4363</a> : Danish;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4346">#4346</a> : Dutch;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4371">#4371</a> <a href="http://dev.fckeditor.net/ticket/4456">#4456</a> : Hebrew;</li>
+			<li><a href="http://dev.fckeditor.net/ticket/4382">#4382</a> : Polish.</li>
+		</ul></li>
 	</ul>
 	<h3>
@@ -78,4 +550,5 @@
 	<li><a href="http://dev.fckeditor.net/ticket/3188">#3188</a> : Introduce
 		&lt;pre&gt; formatting feature when converting from other blocks.</li>
+	<li><a href="http://dev.fckeditor.net/ticket/4445">#4445</a> : editor::setData now support an optional callback parameter.</li>
 	</ul>
 	<p>
@@ -272,4 +745,5 @@
 		<li><a href="http://dev.fckeditor.net/ticket/4227">#4227</a> : Fixed destroy editor instance created on textarea which is not within form cause error.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/4240">#4240</a> : Fixed editor name containing hyphen break editor completely.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3828">#3828</a> : Malformed nested list is now corrected by the parser.</li>
 	</ul>
 	<h3>
@@ -283,5 +757,5 @@
 		</p>
 		<p id="copy">
-			Copyright &copy; 2003-2009, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
 			Knabben. All rights reserved.
 		</p>
Index: /CKEditor/branches/features/adobeair/INSTALL.html
===================================================================
--- /CKEditor/branches/features/adobeair/INSTALL.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/INSTALL.html	(revision 5613)
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 -->
@@ -85,5 +85,5 @@
 		</p>
 		<p id="copy">
-			Copyright &copy; 2003-2009, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
 			Knabben. All rights reserved.
 		</p>
Index: /CKEditor/branches/features/adobeair/LICENSE.html
===================================================================
--- /CKEditor/branches/features/adobeair/LICENSE.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/LICENSE.html	(revision 5613)
@@ -1,3 +1,3 @@
-﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
@@ -8,5 +8,5 @@
 
 CKEditor - The text editor for Internet - http://ckeditor.com
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 
 Licensed under the terms of any of the following licenses at your
@@ -1308,5 +1308,5 @@
 		<strong>CKEditor&trade;</strong> - The text editor for Internet&trade; - <a href="http://ckeditor.com">
 			http://ckeditor.com</a><br />
-		Copyright &copy; 2003-2009, <a href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
+		Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
 	</p>
 	<p>
Index: /CKEditor/branches/features/adobeair/_dev/docs_build/docs_build.bat
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/docs_build/docs_build.bat	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/docs_build/docs_build.bat	(revision 5613)
@@ -1,5 +1,5 @@
 @ECHO OFF
 ::
-:: Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+:: Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 :: For licensing, see LICENSE.html or http://ckeditor.com/license
 ::
Index: /CKEditor/branches/features/adobeair/_dev/docs_build/docs_build.conf
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/docs_build/docs_build.conf	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/docs_build/docs_build.conf	(revision 5613)
@@ -17,6 +17,11 @@
 		'../../_source/core/',
 		'../../_source/plugins/',
-		'../../_source/skins/kama/skin.js',
-		'../../_source/lang/en.js'
+		'../../_source/skins/kama/skin.js'
+	],
+
+	// Files to exclude.
+	E:
+	[
+		'yui.js'
 	],
 
Index: /CKEditor/branches/features/adobeair/_dev/docs_build/template/allfiles.tmpl
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/docs_build/template/allfiles.tmpl	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/docs_build/template/allfiles.tmpl	(revision 5613)
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 	<head>
-		<meta http-equiv="content-type" content="text/html; charset={+IO.encoding+}"" />
+		<meta http-equiv="content-type" content="text/html; charset={+IO.encoding+}" />
 		{! Link.base = ""; /* all generated links will be relative to this */ !}
-		<title>File Index - CKEditor 3.0 JavaScript API Documentation</title>
+		<title>File Index - CKEditor 3 JavaScript API Documentation</title>
 		<meta name="generator" content="JsDoc Toolkit" />
 		
@@ -26,5 +26,5 @@
 			<div>
 				<h2>{+new Link().toSrc(item.alias).withText(item.name)+}</h2>
-				<if test="item.desc">{+resolveLinks(summarize(item.desc))+}</if>
+				<if test="item.desc">{+resolveLinks(item.desc)+}</if>
 				<dl>
 					<if test="item.author">
Index: /CKEditor/branches/features/adobeair/_dev/docs_build/template/class.tmpl
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/docs_build/template/class.tmpl	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/docs_build/template/class.tmpl	(revision 5613)
@@ -6,5 +6,5 @@
 		<meta name="generator" content="JsDoc Toolkit" />
 		{! Link.base = "../"; /* all generated links will be relative to this */ !}
-		<title>{+data.alias+} - CKEditor 3.0 JavaScript API Documentation</title>
+		<title>{+data.alias+} - CKEditor 3 JavaScript API Documentation</title>
 
 		<style type="text/css">
@@ -51,4 +51,7 @@
 <!-- ============================== class summary ========================== -->			
 			<p class="description">
+				<if test="data.version"><br />Version
+					{+ data.version +}.<br />
+				</if>
 				<if test="data.augments.length"><br />Extends
 					{+
@@ -210,5 +213,5 @@
 							!}&nbsp;</td>
 							<td class="nameDescription">
-								<div class="fixedFont"><if test="member.isStatic && member.memberOf != '_global_'">{+member.memberOf+}.</if><b>{+new Link().toSymbol(member.alias).withText(member.name)+}</b>{+makeSignature(member.params)+}
+								<div class="fixedFont"><if test="member.isStatic && member.memberOf != '_global_'">{+member.memberOf+}.</if><b>{+new Link().toSymbol(member.alias).withText(member.name.replace(/\^\d+$/, ''))+}</b>{+makeSignature(member.params)+}
 								</div>
 								<div class="description">{+resolveLinks(summarize(member.desc))+}</div>
@@ -249,4 +252,64 @@
 			</if>
 
+<!-- ============================== events summary ======================== -->
+			<if test="data.events.length">
+				{! var ownEvents = data.events.filter(function($){return $.memberOf == data.alias  && !$.isNamespace}).sort(makeSortby("name")); !}
+				<if test="ownEvents.length">
+				<table class="summaryTable" cellspacing="0" summary="A summary of the events documented in the class {+data.alias+}.">
+					<caption>Event Summary</caption>
+					<thead>
+						<tr>
+							<th scope="col">Event Attributes</th>
+							<th scope="col">Event Name and Description</th>
+						</tr>
+					</thead>
+					<tbody>
+					<for each="member" in="ownEvents">
+						<tr>
+							<td class="attributes">{!
+								if (member.isPrivate) output += "&lt;private&gt; ";
+								if (member.isInner) output += "&lt;inner&gt; ";
+								if (member.isStatic) output += "&lt;static&gt; ";
+							!}&nbsp;</td>
+							<td class="nameDescription">
+								<div class="fixedFont"><if test="member.isStatic && member.memberOf != '_global_'">{+member.memberOf+}.</if><b>{+new Link().toSymbol(member.alias).withText(member.name)+}</b>{+makeSignature(member.params)+}
+								</div>
+								<div class="description">{+resolveLinks(summarize(member.desc))+}</div>
+							</td>
+						</tr>
+					</for>
+					</tbody>
+				</table>
+				</if>
+				
+				<if test="data.inheritsFrom.length">
+				<dl class="inheritsList">
+				{!
+					var borrowedMembers = data.events.filter(function($) {return $.memberOf != data.alias});
+					var contributers = [];
+					borrowedMembers.map(function($) {if (contributers.indexOf($.memberOf) < 0) contributers.push($.memberOf)});
+					for (var i = 0, l = contributers.length; i < l; i++) {
+						output +=
+							"<dt>Events borrowed from class "+new Link().toSymbol(contributers[i])+": </dt>"
+							+
+							"<dd>" +
+							borrowedMembers
+							.filter(
+								function($) { return $.memberOf == contributers[i] }
+							)
+							.sort(makeSortby("name"))
+							.map(
+								function($) { return new Link().toSymbol($.alias).withText($.name) }
+							)
+							.join(", ")
+							+
+							"</dd>";
+					}
+				
+				!}
+				</dl>
+				</if>
+			</if>
+
 <!-- ============================== constructor details ==================== -->		
 			<if test="!data.isBuiltin() && (data.isNamespace || data.is('CONSTRUCTOR'))">
@@ -398,5 +461,5 @@
 							<dt class="heading">Deprecated:</dt>
 							<dt>
-								{+ member.deprecated +}
+								{+ resolveLinks(member.deprecated) +}
 							</dt>
 							</dl>
@@ -437,5 +500,5 @@
 					
 					<span class="light">{{+ new Link().toSymbol( member.type || 'Undefined') +}}</span>
-					<if test="member.isStatic && member.memberOf != '_global_'"><span class="light">{+member.memberOf+}.</span></if><b>{+member.name+}</b>{+makeSignature(member.params)+}
+					<if test="member.isStatic && member.memberOf != '_global_'"><span class="light">{+member.memberOf+}.</span></if><b>{+member.name.replace(/\^\d+$/, '')+}</b>{+makeSignature(member.params)+}
 					
 					</div>
@@ -484,5 +547,5 @@
 							<dt class="heading">Deprecated:</dt>
 							<dt>
-								{+member.deprecated+}
+								{+resolveLinks(member.deprecated)+}
 							</dt>
 							</dl>
@@ -527,5 +590,115 @@
 				</for>
 			</if>
-			
+
+			<!-- ============================== event details ========================= -->		
+			<if test="defined(ownEvents) && ownEvents.length">
+				<div class="sectionTitle">
+					Event Detail
+				</div>
+				<for each="member" in="ownEvents">
+					<a name="event:{+Link.symbolNameToLinkName(member)+}"> </a>
+					<div class="fixedFont" style="float:left">{!
+						if (member.isPrivate) output += "&lt;private&gt; ";
+						if (member.isInner) output += "&lt;inner&gt; ";
+						if (member.isStatic) output += "&lt;static&gt; ";
+					!}
+					
+					<if test="member.type"><span class="light">{{+new Link().toSymbol(member.type)+}}</span></if>
+					<if test="member.isStatic && member.memberOf != '_global_'"><span class="light">{+member.memberOf+}.</span></if>
+					<b>{+member.name+}</b> : &lt;object&gt;.{+new Link().toSymbol('CKEDITOR.event#on').withText('on')+}( '{+member.name+}', function( e ){ ... } )
+					
+					</div>
+					<div style="float:right">
+						<span class="heading">Since:</span>
+							<if test="member.since">
+								{+ member.since +}
+							<else />
+								3.0
+							</if>
+					</div>
+					<div style="clear:both"></div>
+					<div class="description">
+						{+resolveLinks(member.desc)+}
+						<if test="member.srcFile != data.srcFile">
+							<br />
+							<i>Defined in: </i> {+new Link().toSrc(member.srcFile)+}.
+						</if>
+						<if test="member.author"><br /><i>Author: </i>{+member.author+}.</if>
+					</div>
+					
+					<if test="member.example.length">
+					<for each="example" in="member.example">
+						<if test="example.desc">
+							<pre class="code">{+example+}</pre>
+						</if>
+					</for>
+					<else />
+						<pre class="code"><span style="color:red">NO EXAMPLE AVAILABLE</span></pre>
+					</if>
+					
+							<dl class="detailList">
+							<dt class="heading">Parameters:</dt>
+								<dt>
+									<span class="light fixedFont">{{+new Link().toSymbol('CKEDITOR.eventInfo')+}}</span> <b>e</b>
+								</dt>
+								<dd>The standard event object passed to event listeners.</dd>
+
+							<for each="item" in="member.params">
+								<dt>
+									{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+}<b>e.{+item.name+}</b>
+									<if test="item.isOptional"><i>Optional<if test="item.defaultValue">, Default: {+item.defaultValue+}</if></i></if>
+								</dt>
+								<dd>{+ resolveLinks(item.desc) +}</dd>
+							</for>
+							</dl>
+
+						<if test="member.deprecated">
+							<dl class="detailList">
+							<dt class="heading">Deprecated:</dt>
+							<dt>
+								{+ resolveLinks(member.deprecated) +}
+							</dt>
+							</dl>
+						</if>
+						<if test="member.exceptions.length">
+							<dl class="detailList">
+							<dt class="heading">Throws:</dt>
+							<for each="item" in="member.exceptions">
+								<dt>
+									{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+} <b>{+item.name+}</b>
+								</dt>
+								<dd>{+ resolveLinks(item.desc) +}</dd>
+							</for>
+							</dl>
+						</if>
+						<if test="member.returns.length">
+							<dl class="detailList">
+							<dt class="heading">Returns:</dt>
+							<for each="item" in="member.returns">
+								<dd>{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+}{+resolveLinks(item.desc)+}</dd>
+							</for>
+							</dl>
+						</if>
+						<if test="member.requires.length">
+							<dl class="detailList">
+							<dt class="heading">Requires:</dt>
+							<for each="item" in="member.requires">
+								<dd>{+ resolveLinks(item) +}</dd>
+							</for>
+							</dl>
+						</if>
+						<if test="member.see.length">
+							<dl class="detailList">
+							<dt class="heading">See:</dt>
+							<for each="item" in="member.see">
+								<dd>{+ new Link().toSymbol(item) +}</dd>
+							</for>
+							</dl>
+						</if>
+
+					<if test="!$member_last"><hr /></if>
+				</for>
+			</if>
+
 			<hr />
 		</div>
Index: /CKEditor/branches/features/adobeair/_dev/docs_build/template/index.tmpl
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/docs_build/template/index.tmpl	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/docs_build/template/index.tmpl	(revision 5613)
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 	<head>
-		<meta http-equiv="content-type" content="text/html; charset={+IO.encoding+}"" />
+		<meta http-equiv="content-type" content="text/html; charset={+IO.encoding+}" />
 		
-		<title>CKEditor 3.0 JavaScript API Documentation</title>
+		<title>CKEditor 3 JavaScript API Documentation</title>
 		<meta name="generator" content="JsDoc Toolkit" />
 		
Index: /CKEditor/branches/features/adobeair/_dev/docs_build/template/publish.js
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/docs_build/template/publish.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/docs_build/template/publish.js	(revision 5613)
@@ -1,9 +1,10 @@
+﻿/** Called automatically by JsDoc Toolkit. */
 function publish(symbolSet) {
 	publish.conf = {  // trailing slash expected for dirs
-		ext: ".html",
-		outDir: JSDOC.opt.d || SYS.pwd+"../out/jsdoc/",
-		templatesDir: JSDOC.opt.t.replace( /\/+$/, '' ) + '/',
-		symbolsDir: "symbols/",
-		srcDir: "symbols/src/"
+		ext:          ".html",
+		outDir:       JSDOC.opt.d || SYS.pwd+"../out/jsdoc/",
+		templatesDir: ( JSDOC.opt.t && JSDOC.opt.t.replace( /\/+$/, '' ) + '/' ) || SYS.pwd+"../templates/jsdoc/",
+		symbolsDir:   "symbols/",
+		srcDir:       "symbols/src/"
 	};
 	if (!IO.exists(publish.conf.templatesDir)) {
@@ -11,4 +12,5 @@
 	}
 
+	// is source output is suppressed, just display the links to the source file
 	if (JSDOC.opt.s && defined(Link) && Link.prototype._makeSrcLink) {
 		Link.prototype._makeSrcLink = function(srcFilePath) {
@@ -17,9 +19,11 @@
 	}
 
+	// create the folders and subfolders to hold the output
 	IO.mkPath((publish.conf.outDir+"symbols/src").split("/"));
 
-	// used to check the details of things being linked to
+	// used to allow Link to check the details of things being linked to
 	Link.symbolSet = symbolSet;
 
+	// create the required templates
 	try {
 		var classTemplate = new JSDOC.JsPlate(publish.conf.templatesDir+"class.tmpl");
@@ -27,15 +31,17 @@
 	}
 	catch(e) {
-		print(e.message);
+		print("Couldn't create the required templates: "+e);
 		quit();
 	}
 
-	// filters
+	// some ustility filters
 	function hasNoParent($) {return ($.memberOf == "")}
 	function isaFile($) {return ($.is("FILE"))}
 	function isaClass($) {return ($.is("CONSTRUCTOR") || $.isNamespace)}
 
+	// get an array version of the symbolset, useful for filtering
 	var symbols = symbolSet.toArray();
 
+	// create the hilited source code files
 	var files = JSDOC.opt.srcFiles;
  	for (var i = 0, l = files.length; i < l; i++) {
@@ -45,21 +51,45 @@
  	}
 
+ 	// get a list of all the classes in the symbolset
  	var classes = symbols.filter(isaClass).sort(makeSortby("alias"));
 
+	// create a filemap in which outfiles must be to be named uniquely, ignoring case
+	if (JSDOC.opt.u) {
+		var filemapCounts = {};
+		Link.filemap = {};
+		for (var i = 0, l = classes.length; i < l; i++) {
+			var lcAlias = classes[i].alias.toLowerCase();
+
+			if (!filemapCounts[lcAlias]) filemapCounts[lcAlias] = 1;
+			else filemapCounts[lcAlias]++;
+
+			Link.filemap[classes[i].alias] =
+				(filemapCounts[lcAlias] > 1)?
+				lcAlias+"_"+filemapCounts[lcAlias] : lcAlias;
+		}
+	}
+
+	// create a class index, displayed in the left-hand column of every class page
 	Link.base = "../";
  	publish.classesIndex = classesTemplate.process(classes); // kept in memory
 
+	// create each of the class pages
 	for (var i = 0, l = classes.length; i < l; i++) {
 		var symbol = classes[i];
+
+		symbol.events = symbol.getEvents();   // 1 order matters
+		symbol.methods = symbol.getMethods(); // 2
+
 		var output = "";
 		output = classTemplate.process(symbol);
 
-		IO.saveFile(publish.conf.outDir+"symbols/", symbol.alias+publish.conf.ext, output);
-	}
-
-	// regenrate the index with different relative links
+		IO.saveFile(publish.conf.outDir+"symbols/", ((JSDOC.opt.u)? Link.filemap[symbol.alias] : symbol.alias) + publish.conf.ext, output);
+	}
+
+	// regenerate the index with different relative links, used in the index pages
 	Link.base = "";
 	publish.classesIndex = classesTemplate.process(classes);
 
+	// create the class index page
 	try {
 		var classesindexTemplate = new JSDOC.JsPlate(publish.conf.templatesDir+"index.tmpl");
@@ -71,4 +101,5 @@
 	classesindexTemplate = classesIndex = classes = null;
 
+	// create the file index page
 	try {
 		var fileindexTemplate = new JSDOC.JsPlate(publish.conf.templatesDir+"allfiles.tmpl");
@@ -76,6 +107,6 @@
 	catch(e) { print(e.message); quit(); }
 
-	var documentedFiles = symbols.filter(isaFile);
-	var allFiles = [];
+	var documentedFiles = symbols.filter(isaFile); // files that have file-level docs
+	var allFiles = []; // not all files have file-level docs, but we need to list every one
 
 	for (var i = 0; i < files.length; i++) {
@@ -96,4 +127,5 @@
 	allFiles = allFiles.sort( ckeditor_sortFiles );
 
+	// output the file index page
 	var filesIndex = fileindexTemplate.process(allFiles);
 	IO.saveFile(publish.conf.outDir, "files"+publish.conf.ext, filesIndex);
@@ -102,5 +134,5 @@
 
 
-/** Just the first sentence. Should not break on dotted variable names. */
+/** Just the first sentence (up to a full stop). Should not break on dotted variable names. */
 function summarize(desc) {
 	if (typeof desc != "undefined")
@@ -108,5 +140,5 @@
 }
 
-/** make a symbol sorter by some attribute */
+/** Make a symbol sorter by some attribute. */
 function makeSortby(attribute) {
 	return function(a, b) {
@@ -121,4 +153,5 @@
 }
 
+/** Pull in the contents of an external file at the given path. */
 function include(path) {
 	var path = publish.conf.templatesDir+path;
@@ -126,4 +159,5 @@
 }
 
+/** Turn a raw source file into a code-hilited page in the docs. */
 function makeSrcFile(path, srcDir, name) {
 	if (JSDOC.opt.s) return;
@@ -145,4 +179,5 @@
 }
 
+/** Build output for displaying function parameters. */
 function makeSignature(params) {
 	if (!params) return "()";
Index: /CKEditor/branches/features/adobeair/_dev/docs_build/template/static/footer.html
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/docs_build/template/static/footer.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/docs_build/template/static/footer.html	(revision 5613)
@@ -1,3 +1,3 @@
 <div class="fineprint" style="clear:both">
-	Copyright &copy; 2003-2009, <a href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
+	Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
 </div>
Index: /CKEditor/branches/features/adobeair/_dev/docs_build/template/static/header.html
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/docs_build/template/static/header.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/docs_build/template/static/header.html	(revision 5613)
@@ -1,4 +1,4 @@
 <div id="header">
-	<h1>CKEditor 3.0 JavaScript API Documentation</h1>
+	<h1>CKEditor 3 JavaScript API Documentation</h1>
 	<hr />
 </div>
Index: /CKEditor/branches/features/adobeair/_dev/dtd_test/dtd_test.html
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/dtd_test/dtd_test.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/dtd_test/dtd_test.html	(revision 5613)
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 -->
Index: /CKEditor/branches/features/adobeair/_dev/fixlineends/fixlineends.bat
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/fixlineends/fixlineends.bat	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/fixlineends/fixlineends.bat	(revision 5613)
@@ -1,5 +1,5 @@
 @ECHO OFF
 ::
-:: Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+:: Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 :: For licensing, see LICENSE.html or http://ckeditor.com/license
 ::
Index: /CKEditor/branches/features/adobeair/_dev/fixlineends/fixlineends.php
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/fixlineends/fixlineends.php	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/fixlineends/fixlineends.php	(revision 5613)
@@ -2,5 +2,5 @@
 <?php
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 
@@ -287,5 +287,5 @@
 
             case 'LF':
-                if(substr($line, -2) === CRLF) {
+                if (substr($line, -2) === CRLF) {
                     $line = substr($line, 0, -2) . LF;
                     $modified = true;
Index: /CKEditor/branches/features/adobeair/_dev/jslint/lint.bat
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/jslint/lint.bat	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/jslint/lint.bat	(revision 5613)
@@ -1,5 +1,5 @@
 @ECHO OFF
 ::
-:: Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+:: Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 :: For licensing, see LICENSE.html or http://ckeditor.com/license
 ::
Index: /CKEditor/branches/features/adobeair/_dev/jslint/lint.sh
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/jslint/lint.sh	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/jslint/lint.sh	(revision 5613)
@@ -1,4 +1,6 @@
+#!/usr/bin/env bash
+
 #
-# Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 # For licensing, see LICENSE.html or http://ckeditor.com/license
 #
@@ -8,4 +10,11 @@
 #
 
+if [ -L $0 ] ; then
+    DIR=$(dirname $(readlink -f $0)) ;
+else
+    DIR=$(dirname $0) ;
+fi ;
+
+pushd $DIR
 if [ "$1" = "" ]
 then
@@ -17,2 +26,3 @@
 	echo Process completed.
 fi
+popd
Index: /CKEditor/branches/features/adobeair/_dev/langtool/langtool.bat
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/langtool/langtool.bat	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/langtool/langtool.bat	(revision 5613)
@@ -1,5 +1,5 @@
 @ECHO OFF
 ::
-:: Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+:: Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 :: For licensing, see LICENSE.html or http://ckeditor.com/license
 ::
Index: /CKEditor/branches/features/adobeair/_dev/langtool/langtool.sh
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/langtool/langtool.sh	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/langtool/langtool.sh	(revision 5613)
@@ -1,8 +1,16 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
-# Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 # For licensing, see LICENSE.html or http://ckeditor.com/license
 
 # Checks translation files in given directory.
 
+if [ -L $0 ] ; then
+    DIR=$(dirname $(readlink -f $0)) ;
+else
+    DIR=$(dirname $0) ;
+fi ;
+
+pushd $DIR
 java -jar langtool/langtool.jar ../../_source/lang
+popd
Index: /CKEditor/branches/features/adobeair/_dev/packager/package.bat
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/packager/package.bat	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/packager/package.bat	(revision 5613)
@@ -1,4 +1,4 @@
 ::
-:: Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+:: Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 :: For licensing, see LICENSE.html or http://ckeditor.com/license
 ::
Index: /CKEditor/branches/features/adobeair/_dev/packager/package.sh
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/packager/package.sh	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/packager/package.sh	(revision 5613)
@@ -1,6 +1,14 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
-# Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+# Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 # For licensing, see LICENSE.html or http://ckeditor.com/license
 
+if [ -L $0 ] ; then
+    DIR=$(dirname $(readlink -f $0)) ;
+else
+    DIR=$(dirname $0) ;
+fi ;
+
+pushd $DIR
 java -jar ckpackager/ckpackager.jar ../../ckeditor.pack
+popd
Index: /CKEditor/branches/features/adobeair/_dev/packager/packagefilegen.html
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/packager/packagefilegen.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/packager/packagefilegen.html	(revision 5613)
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 -->
@@ -96,5 +96,5 @@
 		<textarea id="header" cols="80" rows="10" style="display: none">&lt;?xml version="1.0" encoding="utf-8" ?&gt;
 &lt;!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 --&gt;
@@ -102,5 +102,5 @@
 
 	&lt;Header&gt;&lt;![CDATA[/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -112,5 +112,5 @@
 header :
 	'/*'																			+ '\n' +
-	'Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.'	+ '\n' +
+	'Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.'	+ '\n' +
 	'For licensing, see LICENSE.html or http://ckeditor.com/license'				+ '\n' +
 	'*/'																			+ '\n' +
Index: /CKEditor/branches/features/adobeair/_dev/packager/packagefilegen_basic.html
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/packager/packagefilegen_basic.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/packager/packagefilegen_basic.html	(revision 5613)
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 -->
Index: /CKEditor/branches/features/adobeair/_dev/packager/packagefilegen_full.html
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/packager/packagefilegen_full.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/packager/packagefilegen_full.html	(revision 5613)
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 -->
@@ -106,5 +106,5 @@
 			<label for="editor1">
 				Editor 1:</label><br />
-			<textarea name="editor1" rows="10" cols="80">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
+			<textarea name="editor1" rows="10" cols="80">&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[
Index: /CKEditor/branches/features/adobeair/_dev/releaser/ckreleaser.release
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/releaser/ckreleaser.release	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/releaser/ckreleaser.release	(revision 5613)
@@ -1,5 +1,5 @@
 header :
 	'/*'																			+ '\n' +
-	'Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.'	+ '\n' +
+	'Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.'	+ '\n' +
 	'For licensing, see LICENSE.html or http://ckeditor.com/license'				+ '\n' +
 	'*/'																			+ '\n' +
@@ -11,6 +11,4 @@
 [
 	'_dev',
-	'_samples',
-	'_source/adapters',
 	'.svn',
 	'.settings',
@@ -27,7 +25,18 @@
 
 	{
+		source : '_source/adapters',
+		target : 'adapters',
+		minify : true
+	},
+
+	{
 		source : '_source/plugins',
 		target : 'plugins',
-		minify : true
+		minify : true,
+		ignore :
+		{
+			sourcePackage : 'ckeditor.pack',
+			files : 'packages[1].files'
+		}
 	},
 
@@ -48,11 +57,4 @@
 ],
 
-samples :
-{
-	source : '_samples',
-	target : '_samples',
-	template : '_samples/sample.html',
-},
-
 skins :
 {
Index: /CKEditor/branches/features/adobeair/_dev/releaser/langtool.bat
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/releaser/langtool.bat	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_dev/releaser/langtool.bat	(revision 5613)
@@ -0,0 +1,6 @@
+::
+:: Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+:: For licensing, see LICENSE.html or http://ckeditor.com/license
+::
+
+java -jar ../langtool/langtool/langtool.jar release/release/_source/lang
Index: /CKEditor/branches/features/adobeair/_dev/releaser/langtool.sh
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/releaser/langtool.sh	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_dev/releaser/langtool.sh	(revision 5613)
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+
+# Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+# For licensing, see LICENSE.html or http://ckeditor.com/license
+
+if [ -L $0 ] ; then
+    DIR=$(dirname $(readlink -f $0)) ;
+else
+    DIR=$(dirname $0) ;
+fi ;
+
+# pushd $DIR
+java -jar ../langtool/langtool/langtool.jar release/release/_source/lang
+# popd
Index: /CKEditor/branches/features/adobeair/_dev/releaser/release.bat
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/releaser/release.bat	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/releaser/release.bat	(revision 5613)
@@ -1,4 +1,4 @@
 ::
-:: Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+:: Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 :: For licensing, see LICENSE.html or http://ckeditor.com/license
 ::
@@ -11,3 +11,3 @@
 :: rmdir /S /Q release
 
-java -jar ckreleaser/ckreleaser.jar ckreleaser.release ../.. release "3.0 SVN" ckeditor_3.0_svn
+java -jar ckreleaser/ckreleaser.jar ckreleaser.release ../.. release "3.3.2 SVN" ckeditor_3.3.2_svn --run-before-release=langtool.bat
Index: /CKEditor/branches/features/adobeair/_dev/releaser/release.sh
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/releaser/release.sh	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_dev/releaser/release.sh	(revision 5613)
@@ -1,6 +1,16 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
-# Copyright (c) 2003-2009, Frederico Caldeira Knabben. All rights reserved.
+# Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 # For licensing, see LICENSE.html or http://ckeditor.com/license
 
-java -jar ckreleaser/ckreleaser.jar ckreleaser.release ../.. release "3.0 SVN" ckeditor_3.0_svn
+if [ -L $0 ] ; then
+    DIR=$(dirname $(readlink -f $0)) ;
+else
+    DIR=$(dirname $0) ;
+fi ;
+
+LANGTOOL="$(cd $(dirname "$0"); pwd)/langtool.sh"
+
+pushd $DIR
+java -jar ckreleaser/ckreleaser.jar ckreleaser.release ../.. release "3.3.2 SVN" ckeditor_3.3.2_svn --run-before-release=$LANGTOOL
+popd
Index: /CKEditor/branches/features/adobeair/_samples/ajax.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/ajax.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_samples/ajax.html	(revision 5613)
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 -->
@@ -7,6 +7,13 @@
 <head>
 	<title>Ajax - CKEditor Sample</title>
-	<script type="text/javascript" src="sample.js"></script>
-	<script id="headscript" type="text/javascript">
+	<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[
 
@@ -20,18 +27,7 @@
 	var html = document.getElementById( 'editorcontents' ).innerHTML;
 
-	// Create a new editor inside the <div id="editor">
-	editor = CKEDITOR.appendTo( 'editor' );
-	editor.setData( html );
-
-	// This sample may break here if the ckeditor_basic.js is used. In such case, the following code should be used instead:
-	/*
-	if ( editor.setData )
-		editor.setData( html );
-	else
-		CKEDITOR.on( 'loaded', function()
-			{
-				editor.setData( html );
-			});
-	*/
+	// Create a new editor inside the <div id="editor">, setting its value to html
+	var config = {};
+	editor = CKEDITOR.appendTo( 'editor', config, html );
 }
 
@@ -55,18 +51,40 @@
 </head>
 <body>
-	<div id="html">
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+	<p>
+		<input onclick="createEditor();" type="button" value="Create Editor" />
+		<input onclick="removeEditor();" type="button" value="Remove Editor" />
+	</p>
+	<!-- This div will hold the editor. -->
+	<div id="editor">
+	</div>
+	<div id="contents" style="display: none">
 		<p>
-			<input type="button" value="Create Editor" onclick="createEditor();" />
-			<input type="button" value="Remove Editor" onclick="removeEditor();" />
-		</p>
-		<div id="editor">
-		</div>
-		<div id="contents" style="display: none">
-			<p>Edited Contents:</p>
-			<div id="editorcontents"></div>
+			Edited Contents:</p>
+		<!-- This div will be used to display the editor contents. -->
+		<div id="editorcontents">
 		</div>
 	</div>
-	<div id="code">
-		<pre></pre>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
 	</div>
 </body>
Index: /CKEditor/branches/features/adobeair/_samples/api.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/api.html	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/api.html	(revision 5613)
@@ -0,0 +1,156 @@
+<!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>API usage - 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[
+
+// The instanceReady event is fired when an instance of CKEditor has finished
+// its initialization.
+CKEDITOR.on( 'instanceReady', function( ev )
+{
+	// Show the editor name and description in the browser status bar.
+	document.getElementById( 'eMessage' ).innerHTML = '<p>Instance "' + ev.editor.name + '" loaded.<\/p>';
+
+	// Show this sample buttons.
+	document.getElementById( 'eButtons' ).style.visibility = '';
+});
+
+function InsertHTML()
+{
+	// Get the editor instance that we want to interact with.
+	var oEditor = CKEDITOR.instances.editor1;
+	var value = document.getElementById( 'plainArea' ).value;
+
+	// Check the active editing mode.
+	if ( oEditor.mode == 'wysiwyg' )
+	{
+		// Insert the desired HTML.
+		oEditor.insertHtml( value );
+	}
+	else
+		alert( 'You must be on WYSIWYG mode!' );
+}
+
+function SetContents()
+{
+	// Get the editor instance that we want to interact with.
+	var oEditor = CKEDITOR.instances.editor1;
+	var value = document.getElementById( 'plainArea' ).value;
+
+	// Set the editor contents (replace the actual one).
+	oEditor.setData( value );
+}
+
+function GetContents()
+{
+	// Get the editor instance that we want to interact with.
+	var oEditor = CKEDITOR.instances.editor1;
+
+	// Get the editor contents
+	alert( oEditor.getData() );
+}
+
+function ExecuteCommand(commandName)
+{
+	// Get the editor instance that we want to interact with.
+	var oEditor = CKEDITOR.instances.editor1;
+
+	// Check the active editing mode.
+	if ( oEditor.mode == 'wysiwyg' )
+	{
+		// Execute the command.
+		oEditor.execCommand( commandName );
+	}
+	else
+		alert( 'You must be on WYSIWYG mode!' );
+}
+
+function CheckDirty()
+{
+	// Get the editor instance that we want to interact with.
+	var oEditor = CKEDITOR.instances.editor1;
+	alert( oEditor.checkDirty() );
+}
+
+function ResetDirty()
+{
+	// Get the editor instance that we want to interact with.
+	var oEditor = CKEDITOR.instances.editor1;
+	oEditor.resetDirty();
+	alert( 'The "IsDirty" status has been reset' );
+}
+
+	//]]>
+	</script>
+
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+			This sample shows how to use the CKeditor JavaScript API to interact with the editor
+			at runtime.</p>
+		<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[
+			// Replace the <textarea id="editor1"> with an CKEditor instance.
+			var editor = CKEDITOR.replace( 'editor1' );
+		//]]>
+		</script>
+
+		<div id="eMessage">
+		</div>
+		<div id="eButtons" style="visibility: hidden">
+			<input onclick="InsertHTML();" type="button" value="Insert HTML" />
+			<input onclick="SetContents();" type="button" value="Set Editor Contents" />
+			<input onclick="GetContents();" type="button" value="Get Editor Contents (XHTML)" />
+			<br />
+			<textarea cols="80" id="plainArea" rows="3">&lt;h2&gt;Test&lt;/h2&gt;&lt;p&gt;This is some &lt;a href="/Test1.html"&gt;sample&lt;/a&gt; HTML&lt;/p&gt;</textarea>
+			<br />
+			<br />
+			<input onclick="ExecuteCommand('bold');" type="button" value="Execute &quot;bold&quot; Command" />
+			<input onclick="ExecuteCommand('link');" type="button" value="Execute &quot;link&quot; Command" />
+			<br />
+			<br />
+			<input onclick="CheckDirty();" type="button" value="checkDirty()" />
+			<input onclick="ResetDirty();" type="button" value="resetDirty()" />
+		</div>
+	</form>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/api_dialog.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/api_dialog.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_samples/api_dialog.html	(revision 5613)
@@ -1,25 +1,32 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+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>Replace Textarea by Code - CKEditor Sample</title>
-	<script type="text/javascript" src="sample.js"></script>
+	<title>Using API to customize dialogs - 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" />
 	<style id="styles" type="text/css">
 
-.cke_button_myDialogCmd .cke_icon
-{
-	display : none !important;
-}
+		.cke_button_myDialogCmd .cke_icon
+		{
+			display: none !important;
+		}
 
-.cke_button_myDialogCmd .cke_label
-{
-	display : inline !important;
-}
+		.cke_button_myDialogCmd .cke_label
+		{
+			display: inline !important;
+		}
 
 	</style>
-	<script id="headscript" type="text/javascript">
+	<script type="text/javascript">
 	//<![CDATA[
 
@@ -90,21 +97,37 @@
 	//]]>
 	</script>
+
 </head>
 <body>
-	<div id="html">
-		<p>
-			This sample shows how to use the dialog API to customize dialogs whithout changing
-			the original editor code. The following customizations are being done::</p>
-		<ol>
-			<li><strong>Add dialog pages</strong> ("My Tab" in the Link dialog).</li>
-			<li><strong>Remove a dialog tab</strong> ("Target" tab from the Link dialog).</li>
-			<li><strong>Add dialog fields</strong> ("My Custom Field" into the Link dialog).</li>
-			<li><strong>Remove dialog fields</strong> ("Link Type" and "Browser Server" the Link dialog).</li>
-			<li><strong>Set default values for dialog fields</strong> (for the "URL" field in the
-				Link dialog). </li>
-			<li><strong>Create a custom dialog</strong> ("My Dialog" button).</li>
-		</ol>
-		<textarea id="editor1" name="editor1" rows="10" cols="80">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
-		<script type="text/javascript">
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+	<!-- This <fieldset> holds the HTML that you will usually find in your
+	     pages. -->
+	<p>
+		This sample shows how to use the dialog API to customize dialogs whithout changing
+		the original editor code. The following customizations are being done::</p>
+	<ol>
+		<li><strong>Add dialog pages</strong> ("My Tab" in the Link dialog).</li>
+		<li><strong>Remove a dialog tab</strong> ("Target" tab from the Link dialog).</li>
+		<li><strong>Add dialog fields</strong> ("My Custom Field" into the Link dialog).</li>
+		<li><strong>Remove dialog fields</strong> ("Link Type" and "Browser Server" the Link
+			dialog).</li>
+		<li><strong>Set default values for dialog fields</strong> (for the "URL" field in the
+			Link dialog). </li>
+		<li><strong>Create a custom dialog</strong> ("My Dialog" button).</li>
+	</ol>
+	<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[
 			// Replace the <textarea id="editor1"> with an CKEditor instance.
@@ -148,5 +171,14 @@
 				});
 		//]]>
-		</script>
+	</script>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
 	</div>
 </body>
Index: /CKEditor/branches/features/adobeair/_samples/api_dialog/my_dialog.js
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/api_dialog/my_dialog.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_samples/api_dialog/my_dialog.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_samples/asp/advanced.asp
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/asp/advanced.asp	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/asp/advanced.asp	(revision 5613)
@@ -0,0 +1,105 @@
+﻿<%@  codepage="65001" language="VBScript" %>
+<% Option Explicit %>
+<!-- #INCLUDE file="../../ckeditor.asp" -->
+<%
+
+	' You must set "Enable Parent Paths" on your web site
+	' in order for the above relative include to work.
+	' Or you can use #INCLUDE VIRTUAL="/full path/ckeditor.asp"
+
+%>
+<!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>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<link href="../sample.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+	<!-- This <fieldset> holds the HTML that you will usually find in your pages. -->
+	<fieldset title="Output">
+		<legend>Output</legend>
+		<form action="sample_posteddata.asp" method="post">
+			<p>
+				<label>Editor 1:</label><br/>
+			</p>
+<%
+	' Create class instance.
+	dim editor, initialValue, code, textareaAttributes
+	set editor = New CKEditor
+
+	' Do not print the code directly to the browser, return it instead
+	editor.returnOutput = true
+
+	' Path to CKEditor directory, ideally instead of relative dir, use an absolute path:
+	'   editor.basePath = "/ckeditor/"
+	' If not set, CKEditor will default to /ckeditor/
+	editor.basePath = "../../"
+
+	' Set global configuration (will be used by all instances of CKEditor).
+	editor.config("width") = 600
+
+	' Change default textarea attributes
+	set textareaAttributes = CreateObject("Scripting.Dictionary")
+	textareaAttributes.Add "rows", 10
+	textareaAttributes.Add "cols", 80
+	Set editor.textareaAttributes = textareaAttributes
+
+	' The initial value to be displayed in the editor.
+	initialValue = "<p>This is some <strong>sample text</strong>. You are using <a href=""http://ckeditor.com/"">CKEditor</a>.</p>"
+
+	' Create first instance.
+	code = editor.editor("editor1", initialValue)
+
+	response.write code
+%>
+			<p>
+				<label>Editor 2:</label><br/>
+			</p>
+<%
+' Configuration that will be used only by the second editor.
+
+editor.instanceConfig("toolbar") = Array( _
+		Array( "Source", "-", "Bold", "Italic", "Underline", "Strike" ), _
+		Array( "Image", "Link", "Unlink", "Anchor" ) _
+	)
+
+editor.instanceConfig("skin") = "v2"
+
+' Create second instance.
+response.write editor.editor("editor2", initialValue)
+%>
+			<p>
+				<input type="submit" value="Submit"/>
+			</p>
+		</form>
+	</fieldset>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/asp/events.asp
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/asp/events.asp	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/asp/events.asp	(revision 5613)
@@ -0,0 +1,136 @@
+﻿<%@  codepage="65001" language="VBScript" %>
+<% Option Explicit %>
+<!-- #INCLUDE file="../../ckeditor.asp" -->
+<%
+
+	' You must set "Enable Parent Paths" on your web site
+	' in order for the above relative include to work.
+	' Or you can use #INCLUDE VIRTUAL="/full path/ckeditor.asp"
+
+%>
+<!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>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<link href="../sample.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+	<!-- This <fieldset> holds the HTML that you will usually find in your pages. -->
+	<fieldset title="Output">
+		<legend>Output</legend>
+		<form action="sample_posteddata.asp" method="post">
+			<p>
+				<label>Editor 1:</label><br/>
+			</p>
+<%
+
+''
+ ' Adds global event, will hide "Target" tab in Link dialog in all instances.
+ '
+function CKEditorHideLinkTargetTab(editor)
+	dim functionCode
+	functionCode = "function (ev) {" & vbcrlf & _
+		"// Take the dialog name and its definition from the event data" & vbcrlf & _
+		"var dialogName = ev.data.name;" & vbcrlf & _
+		"var dialogDefinition = ev.data.definition;" & vbcrlf & _
+		"" & vbcrlf & _
+		"// Check if the definition is from the Link dialog." & vbcrlf & _
+		"if ( dialogName == 'link' )" & vbcrlf & _
+		"	dialogDefinition.removeContents('target')" & vbcrlf & _
+	"}" & vbcrlf
+
+	editor.addGlobalEventHandler "dialogDefinition", functionCode
+end function
+
+''
+ ' Adds global event, will notify about opened dialog.
+ '
+function CKEditorNotifyAboutOpenedDialog(editor)
+	dim functionCode
+	functionCode = "function (evt) {" & vbcrlf & _
+		"alert('Loading dialog: ' + evt.data.name);" & vbcrlf & _
+	"}"
+
+	editor.addGlobalEventHandler "dialogDefinition", functionCode
+end function
+
+
+dim editor, initialValue
+
+' Create class instance.
+set editor = new CKEditor
+
+' Set configuration option for all editors.
+editor.config("width") = 750
+
+' Path to CKEditor directory, ideally instead of relative dir, use an absolute path:
+'   editor.basePath = "/ckeditor/"
+' If not set, CKEditor will default to /ckeditor/
+editor.basePath = "../../"
+
+' The initial value to be displayed in the editor.
+initialValue = "<p>This is some <strong>sample text</strong>. You are using <a href=""http://ckeditor.com/"">CKEditor</a>.</p>"
+
+' Event that will be handled only by the first editor.
+editor.addEventHandler "instanceReady", "function (evt) {	alert('Loaded editor: ' + evt.editor.name );}"
+
+' Create first instance.
+editor.editor "editor1", initialValue
+
+' Clear event handlers, instances that will be created later will not have
+' the 'instanceReady' listener defined a couple of lines above.
+editor.clearEventHandlers empty
+%>
+			<p>
+				<label>Editor 2:</label><br/>
+			</p>
+<%
+' Configuration that will be used only by the second editor.
+editor.instanceConfig("width") = 600
+editor.instanceConfig("toolbar") = "Basic"
+
+' Add some global event handlers (for all editors).
+CKEditorHideLinkTargetTab(editor)
+CKEditorNotifyAboutOpenedDialog(editor)
+
+' Event that will be handled only by the second editor.
+editor.addInstanceEventHandler "instanceReady", "function (evt) { alert('Loaded second editor: ' + evt.editor.name );}"
+
+' Create second instance.
+editor.editor "editor2", initialValue
+%>
+			<p>
+				<input type="submit" value="Submit"/>
+			</p>
+		</form>
+	</fieldset>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/asp/index.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/asp/index.html	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/asp/index.html	(revision 5613)
@@ -0,0 +1,103 @@
+<!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>ASP integration Samples List - CKEditor</title>
+	<link type="text/css" rel="stylesheet" href="../sample.css" />
+</head>
+<body>
+	<h1>
+		CKEditor Samples List for ASP
+	</h1>
+	<h2>
+		Overview
+	</h2>
+	<p>The ckeditor.asp file provides a wrapper to ease the work of creating CKEditor instances from classic Asp.</p>
+	<p>To use it, you must first include it into your page:
+	<code>
+		&lt;!-- #INCLUDE file="../../ckeditor.asp" --&gt;
+	</code>
+	Of course, you should adjust the path to make it point to the correct location, and maybe use a full path (with virtual="" instead of file="")
+	</p>
+	<p>After that script is included, you can use it in different ways, based on the following pattern:</p>
+
+<ol>
+	<li>
+		Create an instance of the CKEditor class:
+<pre>dim editor
+set editor = New CKEditor</pre>
+	</li>
+	<li>
+		Set the path to the folder where CKEditor has been installed, by default it will use /ckeditor/
+		<pre>editor.basePath = "../../"</pre>
+	</li>
+	<li>
+	Now use one of the three main methods to create the CKEditor instances:
+	<ul>
+		<li>
+				Replace textarea with id (or name) "editor1".
+			<pre>editor.replaceInstance "editor1"</pre>
+		</li>
+		<li>
+			Replace all textareas with CKEditor.
+			<pre>editor.replaceAll empty</pre>
+		</li>
+		<li>
+			Create a textarea element and attach CKEditor to it.
+			<pre>editor.editor "editor1", initialValue</pre>
+		</li>
+	</ul>
+	</li>
+</ol>
+<p>Before step 3 you can use a number of methods and properties to adjust the behavior of this class and the CKEditor instances
+that will be created:</p>
+<ul>
+	<li>returnOutput : if set to true, the functions won't dump the code with response.write, but instead they will return it so
+	you can do anything you want</li>
+	<li>basePath: location of the CKEditor scripts</li>
+	<li>initialized: if you set it to true, it means that you have already included the CKEditor.js file into the page and it
+		doesn't have to be generated again.</li>
+	<li>textareaAttributes: You can set here a Dictionary object with the attributes that you want to output in the call to the "editor" method.</li>
+
+	<li>config: Allows to set config values for all the instances from now on.</li>
+	<li>instanceConfig: Allows to set config values just for the next instance.</li>
+
+	<li>addEventHandler: Adds an event handler for all the instances from now on.</li>
+	<li>addInstanceEventHandler: Adds an event handler just for the next instance.</li>
+	<li>addGlobalEventHandler: Adds an event handler for the global CKEDITOR object.</li>
+
+	<li>clearEventHandlers: Removes one or all the event handlers from all the instances from now on.</li>
+	<li>clearInstanceEventHandlers: Removes one or all the event handlers  from the next instance.</li>
+	<li>clearGlobalEventHandlers: Removes one or all the event handlers  from the global CKEDITOR object.</li>
+
+</ul>
+
+	<h2>
+		Basic Samples
+	</h2>
+	<ul>
+		<li><a href="replace.asp">Replace existing textareas by code</a></li>
+		<li><a href="replaceAll.asp">Replace all textareas by code</a></li>
+		<li><a href="standalone.asp">Create instances in asp</a></li>
+	</ul>
+	<h2>
+		Advanced Samples
+	</h2>
+	<ul>
+		<li><a href="advanced.asp">Advanced example</a></li>
+		<li><a href="events.asp">Listening to events</a></li>
+	</ul>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/asp/replace.asp
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/asp/replace.asp	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/asp/replace.asp	(revision 5613)
@@ -0,0 +1,72 @@
+﻿<%@  codepage="65001" language="VBScript" %>
+<% Option Explicit %>
+<!-- #INCLUDE file="../../ckeditor.asp" -->
+<%
+
+	' You must set "Enable Parent Paths" on your web site
+	' in order for the above relative include to work.
+	' Or you can use #INCLUDE VIRTUAL="/full path/ckeditor.asp"
+
+%>
+<!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>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<link href="../sample.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+	<!-- This <fieldset> holds the HTML that you will usually find in your pages. -->
+	<fieldset title="Output">
+		<legend>Output</legend>
+		<form action="sample_posteddata.asp" method="post">
+			<p>
+				<label for="editor1">
+					Editor 1:</label><br/>
+				<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>
+			</p>
+			<p>
+				<input type="submit" value="Submit"/>
+			</p>
+		</form>
+	</fieldset>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+	<%
+	' Create class instance.
+	dim editor
+	set editor = New CKEditor
+	' Path to CKEditor directory, ideally instead of relative dir, use an absolute path:
+	'   editor.basePath = "/ckeditor/"
+	' If not set, CKEditor will default to /ckeditor/
+	editor.basePath = "../../"
+	' Replace textarea with id (or name) "editor1".
+	editor.replaceInstance "editor1"
+	%>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/asp/replaceall.asp
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/asp/replaceall.asp	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/asp/replaceall.asp	(revision 5613)
@@ -0,0 +1,77 @@
+﻿<%@  codepage="65001" language="VBScript" %>
+<% Option Explicit %>
+<!-- #INCLUDE file="../../ckeditor.asp" -->
+<%
+
+	' You must set "Enable Parent Paths" on your web site
+	' in order for the above relative include to work.
+	' Or you can use #INCLUDE VIRTUAL="/full path/ckeditor.asp"
+
+%>
+<!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>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<link href="../sample.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+	<!-- This <fieldset> holds the HTML that you will usually find in your pages. -->
+	<fieldset title="Output">
+		<legend>Output</legend>
+		<form action="sample_posteddata.asp" method="post">
+			<p>
+				<label for="editor1">
+					Editor 1:</label><br/>
+				<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>
+			</p>
+			<p>
+				<label for="editor2">
+					Editor 2:</label><br/>
+				<textarea cols="80" id="editor2" name="editor2" 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 type="submit" value="Submit"/>
+			</p>
+		</form>
+	</fieldset>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+	<%
+	' Create class instance.
+	dim editor
+	set editor = New CKEditor
+	' Path to CKEditor directory, ideally instead of relative dir, use an absolute path:
+	'   editor.basePath = "/ckeditor/"
+	' If not set, CKEditor will default to /ckeditor/
+	editor.basePath = "../../"
+	' Replace all textareas with CKEditor.
+	editor.replaceAll empty
+	%>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/asp/sample_posteddata.asp
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/asp/sample_posteddata.asp	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/asp/sample_posteddata.asp	(revision 5613)
@@ -0,0 +1,46 @@
+﻿<%@  codepage="65001" language="VBScript" %>
+<% Option Explicit %>
+<!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>Sample - CKEditor</title>
+	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+	<link type="text/css" rel="stylesheet" href="../sample.css" />
+</head>
+<body>
+	<h1>
+		CKEditor - Posted Data
+	</h1>
+	<table border="1" cellspacing="0" id="outputSample">
+		<colgroup><col width="100" /></colgroup>
+		<thead>
+			<tr>
+				<th>Field&nbsp;Name</th>
+				<th>Value</th>
+			</tr>
+		</thead>
+			<%
+			Dim sForm
+			For Each sForm in Request.Form
+			%>
+			<tr>
+				<th><%=Server.HTMLEncode( sForm )%></th>
+				<td><pre><%=Server.HTMLEncode( Request.Form(sForm) )%></pre></td>
+			</tr>
+			<% Next %>
+	</table>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/asp/standalone.asp
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/asp/standalone.asp	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/asp/standalone.asp	(revision 5613)
@@ -0,0 +1,72 @@
+﻿<%@  codepage="65001" language="VBScript" %>
+<% Option Explicit %>
+<!-- #INCLUDE file="../../ckeditor.asp" -->
+<%
+
+	' You must set "Enable Parent Paths" on your web site
+	' in order for the above relative include to work.
+	' Or you can use #INCLUDE VIRTUAL="/full path/ckeditor.asp"
+
+%>
+<!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>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<link href="../sample.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+	<!-- This <fieldset> holds the HTML that you will usually find in your pages. -->
+	<fieldset title="Output">
+		<legend>Output</legend>
+		<form action="sample_posteddata.asp" method="post">
+			<p>
+				Editor 1:
+			</p>
+			<p>
+			<%
+				dim initialValue, editor
+				' The initial value to be displayed in the editor.
+				initialValue = "<p>This is some <strong>sample text</strong>.</p>"
+				' Create class instance.
+				set editor = New CKEditor
+				' Path to CKEditor directory, ideally instead of relative dir, use an absolute path:
+				'   editor.basePath = "/ckeditor/"
+				' If not set, CKEditor will default to /ckeditor/
+				editor.basePath = "../../"
+				' Create textarea element and attach CKEditor to it.
+				editor.editor "editor1", initialValue
+			%>
+				<input type="submit" value="Submit"/>
+			</p>
+		</form>
+	</fieldset>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/assets/output_xhtml.css
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/assets/output_xhtml.css	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/assets/output_xhtml.css	(revision 5613)
@@ -0,0 +1,204 @@
+/*
+ * Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.html or http://ckeditor.com/license
+ *
+ * Styles used by the XHTML 1.1 sample page (xhtml.html).
+ */
+
+/**
+ * Basic definitions for the editing area.
+ */
+body
+{
+	font-family: Arial, Verdana, sans-serif;
+	font-size: 80%;
+	color: #000000;
+	background-color: #ffffff;
+	padding: 5px;
+	margin: 0px;
+}
+
+/**
+ * Core styles.
+ */
+
+.Bold
+{
+	font-weight: bold;
+}
+
+.Italic
+{
+	font-style: italic;
+}
+
+.Underline
+{
+	text-decoration: underline;
+}
+
+.StrikeThrough
+{
+	text-decoration: line-through;
+}
+
+.Subscript
+{
+	vertical-align: sub;
+	font-size: smaller;
+}
+
+.Superscript
+{
+	vertical-align: super;
+	font-size: smaller;
+}
+
+/**
+ * Font faces.
+ */
+
+.FontComic
+{
+	font-family: 'Comic Sans MS';
+}
+
+.FontCourier
+{
+	font-family: 'Courier New';
+}
+
+.FontTimes
+{
+	font-family: 'Times New Roman';
+}
+
+/**
+ * Font sizes.
+ */
+
+.FontSmaller
+{
+	font-size: smaller;
+}
+
+.FontLarger
+{
+	font-size: larger;
+}
+
+.FontSmall
+{
+	font-size: 8pt;
+}
+
+.FontBig
+{
+	font-size: 14pt;
+}
+
+.FontDouble
+{
+	font-size: 200%;
+}
+
+/**
+ * Font colors.
+ */
+.FontColor1
+{
+	color: #ff9900;
+}
+
+.FontColor2
+{
+	color: #0066cc;
+}
+
+.FontColor3
+{
+	color: #ff0000;
+}
+
+.FontColor1BG
+{
+	background-color: #ff9900;
+}
+
+.FontColor2BG
+{
+	background-color: #0066cc;
+}
+
+.FontColor3BG
+{
+	background-color: #ff0000;
+}
+
+/**
+ * Indentation.
+ */
+
+.Indent1
+{
+	margin-left: 40px;
+}
+
+.Indent2
+{
+	margin-left: 80px;
+}
+
+.Indent3
+{
+	margin-left: 120px;
+}
+
+/**
+ * Alignment.
+ */
+
+.JustifyLeft
+{
+	text-align: left;
+}
+
+.JustifyRight
+{
+	text-align: right;
+}
+
+.JustifyCenter
+{
+	text-align: center;
+}
+
+.JustifyFull
+{
+	text-align: justify;
+}
+
+/**
+ * Other.
+ */
+
+code
+{
+	font-family: courier, monospace;
+	background-color: #eeeeee;
+	padding-left: 1px;
+	padding-right: 1px;
+	border: #c0c0c0 1px solid;
+}
+
+kbd
+{
+	padding: 0px 1px 0px 1px;
+	border-width: 1px 2px 2px 1px;
+	border-style: solid;
+}
+
+blockquote
+{
+	color: #808080;
+}
Index: /CKEditor/branches/features/adobeair/_samples/divreplace.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/divreplace.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_samples/divreplace.html	(revision 5613)
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 -->
@@ -7,4 +7,12 @@
 <head>
 	<title>Replace DIV - 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" />
 	<style id="styles" type="text/css">
 
@@ -22,6 +30,5 @@
 
 	</style>
-	<script type="text/javascript" src="sample.js"></script>
-	<script id="headscript" type="text/javascript">
+	<script type="text/javascript">
 	//<![CDATA[
 
@@ -48,5 +55,5 @@
 	element = element.parentNode;
 
-	if ( element.nodeName.toLowerCase() == 'div' 
+	if ( element.nodeName.toLowerCase() == 'div'
 		 && ( element.className.indexOf( 'editable' ) != -1 ) )
 		replaceDiv( element );
@@ -65,50 +72,69 @@
 	//]]>
 	</script>
+
 </head>
 <body>
-	<div id="html">
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+	<p>
+		Double-click on any of the following DIVs to transform them into editor instances.</p>
+	<div class="editable">
+		<h3>
+			Part 1</h3>
 		<p>
-			Double-click on any of the following DIVs to transform them into editor instances.</p>
-		<div class='editable'>
-			<h3>
-				Part 1</h3>
-			<p>
-				Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi
-				semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna
-				rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla
-				nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce
-				eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.
-			</p>
-		</div>
-		<div class='editable'>
-			<h3>
-				Part 2</h3>
-			<p>
-				Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi
-				semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna
-				rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla
-				nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce
-				eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.
-			</p>
-			<p>
-				Donec velit. Mauris massa. Vestibulum non nulla. Nam suscipit arcu nec elit. Phasellus
-				sollicitudin iaculis ante. Ut non mauris et sapien tincidunt adipiscing. Vestibulum
-				vitae leo. Suspendisse nec mi tristique nulla laoreet vulputate.
-			</p>
-		</div>
-		<div class='editable'>
-			<h3>
-				Part 3</h3>
-			<p>
-				Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi
-				semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna
-				rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla
-				nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce
-				eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.
-			</p>
-		</div>
+			Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi
+			semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna
+			rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla
+			nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce
+			eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.
+		</p>
 	</div>
-	<div id="code">
-		<pre></pre>
+	<div class="editable">
+		<h3>
+			Part 2</h3>
+		<p>
+			Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi
+			semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna
+			rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla
+			nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce
+			eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.
+		</p>
+		<p>
+			Donec velit. Mauris massa. Vestibulum non nulla. Nam suscipit arcu nec elit. Phasellus
+			sollicitudin iaculis ante. Ut non mauris et sapien tincidunt adipiscing. Vestibulum
+			vitae leo. Suspendisse nec mi tristique nulla laoreet vulputate.
+		</p>
+	</div>
+	<div class="editable">
+		<h3>
+			Part 3</h3>
+		<p>
+			Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi
+			semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna
+			rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla
+			nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce
+			eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.
+		</p>
+	</div>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
 	</div>
 </body>
Index: /CKEditor/branches/features/adobeair/_samples/enterkey.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/enterkey.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_samples/enterkey.html	(revision 5613)
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 -->
@@ -7,6 +7,13 @@
 <head>
 	<title>ENTER Key Configuration - CKEditor Sample</title>
-	<script type="text/javascript" src="sample.js"></script>
-	<script id="headscript" type="text/javascript">
+	<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[
 
@@ -33,43 +40,52 @@
 </head>
 <body>
-	<!--
-		The values in the select boxes represent the contants taht can be used
-		to configure the enter key. You can use the constants directly instead
-		of their numeric values:
-			- CKEDITOR.ENTER_P		= 1;
-			- CKEDITOR.ENTER_BR		= 2;
-			- CKEDITOR.ENTER_DIV	= 3;
-	-->
-	<div id="html">
-		<div style="float: left; margin-right: 20px">
-			When ENTER is pressed:<br />
-			<select id="xEnter" onchange="changeEnter();">
-				<option value="1" selected="selected">Create new &lt;P&gt; (recommended)</option>
-				<option value="3">Create new &lt;DIV&gt;</option>
-				<option value="2">Break the line with a &lt;BR&gt;</option>
-			</select>
-		</div>
-		<div style="float: left">
-			When SHIFT + ENTER is pressed:<br />
-			<select id="xShiftEnter" onchange="changeEnter();">
-				<option value="1">Create new &lt;P&gt;</option>
-				<option value="3">Create new &lt;DIV&gt;</option>
-				<option value="2" selected="selected">Break the line with a &lt;BR&gt; (recommended)</option>
-			</select>
-		</div>
-		<br style="clear: both" />
-
-		<form action="sample_posteddata.php" method="post">
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
 			<p>
-				<br />
-				<textarea id="editor1" name="editor1" rows="10" cols="80">This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.</textarea>
+				<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>
-			<p>
-				<input type="submit" value="Submit" />
-			</p>
-		</form>
+		</noscript>
 	</div>
-	<div id="code">
-		<pre></pre>
+	<div style="float: left; margin-right: 20px">
+		When ENTER is pressed:<br />
+		<select id="xEnter" onchange="changeEnter();">
+			<option selected="selected" value="1">Create new &lt;P&gt; (recommended)</option>
+			<option value="3">Create new &lt;DIV&gt;</option>
+			<option value="2">Break the line with a &lt;BR&gt;</option>
+		</select>
+	</div>
+	<div style="float: left">
+		When SHIFT + ENTER is pressed:<br />
+		<select id="xShiftEnter" onchange="changeEnter();">
+			<option value="1">Create new &lt;P&gt;</option>
+			<option value="3">Create new &lt;DIV&gt;</option>
+			<option selected="selected" value="2">Break the line with a &lt;BR&gt; (recommended)</option>
+		</select>
+	</div>
+	<br style="clear: both" />
+	<form action="sample_posteddata.php" method="post">
+		<p>
+			<br />
+			<textarea cols="80" id="editor1" name="editor1" rows="10">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;.</textarea>
+		</p>
+		<p>
+			<input type="submit" value="Submit" />
+		</p>
+	</form>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
 	</div>
 </body>
Index: /CKEditor/branches/features/adobeair/_samples/fullpage.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/fullpage.html	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/fullpage.html	(revision 5613)
@@ -0,0 +1,66 @@
+<!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>Full Page Editing - 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>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+			In this sample the editor is configured to edit entire HTML pages, from the &lt;html&gt;
+			tag to &lt;/html&gt;.</p>
+		<p>
+			<label for="editor1">
+				Editor 1:</label><br />
+			<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">
+			//<![CDATA[
+
+				CKEDITOR.replace( 'editor1',
+					{
+						fullPage : true
+					});
+
+			//]]>
+			</script>
+		</p>
+		<p>
+			<input type="submit" value="Submit" />
+		</p>
+	</form>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/index.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/index.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_samples/index.html	(revision 5613)
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 -->
@@ -19,4 +19,5 @@
 		<li><a href="replacebyclass.html">Replace textareas by class name</a></li>
 		<li><a href="replacebycode.html">Replace textareas by code</a></li>
+		<li><a href="fullpage.html">Full page support (editing from &lt;html&gt; to &lt;/html&gt;)</a></li>
 	</ul>
 	<h2>
@@ -34,6 +35,11 @@
 		<li><a href="divreplace.html">Replace DIV elements on the fly</a>&nbsp; </li>
 		<li><a href="ajax.html">Create and destroy editor instances for Ajax applications</a></li>
+		<li><a href="api.html">Basic usage of the API</a></li>
 		<li><a href="api_dialog.html">Using the JavaScript API to customize dialogs</a></li>
 		<li><a href="enterkey.html">Using the "Enter" key in CKEditor</a></li>
+		<li><a href="sharedspaces.html">Shared toolbars</a></li>
+		<li><a href="jqueryadapter.html">jQuery adapter example</a></li>
+		<li><a href="output_xhtml.html">Output XHTML</a></li>
+		<li><a href="output_html.html">Output HTML</a></li>
 	</ul>
 	<div id="footer">
@@ -43,5 +49,5 @@
 		</p>
 		<p id="copy">
-			Copyright &copy; 2003-2009, <a href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
 		</p>
 	</div>
Index: /CKEditor/branches/features/adobeair/_samples/jqueryadapter.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/jqueryadapter.html	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/jqueryadapter.html	(revision 5613)
@@ -0,0 +1,78 @@
+<!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>jQuery adapter - CKEditor Sample</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type" />
+	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
+	<!-- CKReleaser %REMOVE_LINE%
+	<script type="text/javascript" src="../ckeditor.js"></script>
+	<script type="text/javascript" src="../adapters/jquery.js"></script>
+	CKReleaser %REMOVE_START% -->
+	<script type="text/javascript" src="../ckeditor_source.js"></script>
+	<script type="text/javascript" src="../_source/adapters/jquery.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[
+
+$(function()
+{
+	var config = {
+		toolbar:
+		[
+			['Bold', 'Italic', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink'],
+			['UIColor']
+		]
+	};
+
+	// Initialize the editor.
+	// Callback function can be passed and executed after full instance creation.
+	$('.jquery_ckeditor').ckeditor(config);
+});
+
+	//]]>
+	</script>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+	<!-- This <fieldset> holds the HTML that you will usually find in your
+	     pages. -->
+	<form action="sample_posteddata.php" method="post">
+	<p>
+		<label for="editor1">
+			Editor 1:</label><br />
+		<textarea class="jquery_ckeditor" 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>
+	</p>
+	<p>
+		<input type="submit" value="Submit" />
+	</p>
+	</form>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/output_html.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/output_html.html	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/output_html.html	(revision 5613)
@@ -0,0 +1,263 @@
+<!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>HTML compliant output - 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>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+			This sample shows CKEditor configured to produce a legacy <strong>HTML4</strong> document. Traditional
+			HTML elements like &lt;b&gt;, &lt;i&gt;, and &lt;font&gt; are used in place of
+			&lt;strong&gt;, &lt;em&gt; and CSS styles.</p>
+		<p>
+			<label for="editor1">
+				Editor 1:</label><br />
+			<textarea cols="80" id="editor1" name="editor1" rows="10">&lt;p&gt;This is some &lt;b&gt;sample text&lt;/b&gt;. You are using &lt;a href="http://ckeditor.com/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
+			<script type="text/javascript">
+			//<![CDATA[
+
+				CKEDITOR.replace( 'editor1',
+					{
+						/*
+						 * Style sheet for the contents
+						 */
+						contentsCss : 'body {color:#000; background-color#FFF;}',
+
+						/*
+						 * Simple HTML5 doctype
+						 */
+						docType : '<!DOCTYPE HTML>',
+
+						/*
+						 * Core styles.
+						 */
+						coreStyles_bold	: { element : 'b' },
+						coreStyles_italic	: { element : 'i' },
+						coreStyles_underline	: { element : 'u'},
+						coreStyles_strike	: { element : 'strike' },
+
+						/*
+						 * Font face
+						 */
+						// Define the way font elements will be applied to the document. The "font"
+						// element will be used.
+						font_style :
+						{
+								element		: 'font',
+								attributes		: { 'face' : '#(family)' }
+						},
+
+						/*
+						 * Font sizes.
+						 */
+						fontSize_sizes : 'xx-small/1;x-small/2;small/3;medium/4;large/5;x-large/6;xx-large/7',
+						fontSize_style :
+							{
+								element		: 'font',
+								attributes	: { 'size' : '#(size)' }
+							} ,
+
+						/*
+						 * Font colors.
+						 */
+						colorButton_enableMore : true,
+
+						colorButton_foreStyle :
+							{
+								element : 'font',
+								attributes : { 'color' : '#(color)' },
+								overrides	: [ { element : 'span', attributes : { 'class' : /^FontColor(?:1|2|3)$/ } } ]
+							},
+
+						colorButton_backStyle :
+							{
+								element : 'font',
+								styles	: { 'background-color' : '#(color)' }
+							},
+
+						/*
+						 * Styles combo.
+						 */
+						stylesSet :
+								[
+									{ name : 'Computer Code', element : 'code' },
+									{ name : 'Keyboard Phrase', element : 'kbd' },
+									{ name : 'Sample Text', element : 'samp' },
+									{ name : 'Variable', element : 'var' },
+
+									{ name : 'Deleted Text', element : 'del' },
+									{ name : 'Inserted Text', element : 'ins' },
+
+									{ name : 'Cited Work', element : 'cite' },
+									{ name : 'Inline Quotation', element : 'q' }
+								],
+
+						on : { 'instanceReady' : configureHtmlOutput }
+					});
+
+/*
+ * Adjust the behavior of the dataProcessor to avoid styles
+ * and make it look like FCKeditor HTML output.
+ */
+function configureHtmlOutput( ev )
+{
+	var editor = ev.editor,
+		dataProcessor = editor.dataProcessor,
+		htmlFilter = dataProcessor && dataProcessor.htmlFilter;
+
+	// Out self closing tags the HTML4 way, like <br>.
+	dataProcessor.writer.selfClosingEnd = '>';
+
+	// Make output formatting behave similar to FCKeditor
+	var dtd = CKEDITOR.dtd;
+	for ( var e in CKEDITOR.tools.extend( {}, dtd.$nonBodyContent, dtd.$block, dtd.$listItem, dtd.$tableContent ) )
+	{
+		dataProcessor.writer.setRules( e,
+			{
+				indent : true,
+				breakBeforeOpen : true,
+				breakAfterOpen : false,
+				breakBeforeClose : !dtd[ e ][ '#' ],
+				breakAfterClose : true
+			});
+	}
+
+	// Output properties as attributes, not styles.
+	htmlFilter.addRules(
+		{
+			elements :
+			{
+				$ : function( element )
+				{
+					// Output dimensions of images as width and height
+					if ( element.name == 'img' )
+					{
+						var style = element.attributes.style;
+
+						if ( style )
+						{
+							// Get the width from the style.
+							var match = /(?:^|\s)width\s*:\s*(\d+)px/i.exec( style ),
+								width = match && match[1];
+
+							// Get the height from the style.
+							match = /(?:^|\s)height\s*:\s*(\d+)px/i.exec( style );
+							var height = match && match[1];
+
+							if ( width )
+							{
+								element.attributes.style = element.attributes.style.replace( /(?:^|\s)width\s*:\s*(\d+)px;?/i , '' );
+								element.attributes.width = width;
+							}
+
+							if ( height )
+							{
+								element.attributes.style = element.attributes.style.replace( /(?:^|\s)height\s*:\s*(\d+)px;?/i , '' );
+								element.attributes.height = height;
+							}
+						}
+					}
+
+					// Output alignment of paragraphs using align
+					if ( element.name == 'p' )
+					{
+						style = element.attributes.style;
+
+						if ( style )
+						{
+							// Get the align from the style.
+							match = /(?:^|\s)text-align\s*:\s*(\w*);/i.exec( style );
+							var align = match && match[1];
+
+							if ( align )
+							{
+								element.attributes.style = element.attributes.style.replace( /(?:^|\s)text-align\s*:\s*(\w*);?/i , '' );
+								element.attributes.align = align;
+							}
+						}
+					}
+
+					if ( !element.attributes.style )
+						delete element.attributes.style;
+
+					return element;
+				}
+			},
+
+			attributes :
+				{
+					style : function( value, element )
+					{
+						// Return #RGB for background and border colors
+						return convertRGBToHex( value );
+					}
+				}
+		} );
+}
+
+
+/**
+* Convert a CSS rgb(R, G, B) color back to #RRGGBB format.
+* @param Css style string (can include more than one color
+* @return Converted css style.
+*/
+function convertRGBToHex( 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( '' ) ;
+		 });
+}
+			//]]>
+			</script>
+		</p>
+		<p>
+			<input type="submit" value="Submit" />
+		</p>
+	</form>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/output_xhtml.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/output_xhtml.html	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/output_xhtml.html	(revision 5613)
@@ -0,0 +1,163 @@
+<!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>XHTML compliant output - 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>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+			This sample shows CKEditor configured to produce <strong>XHTML 1.1</strong> compliant
+			HTML. Deprecated elements or attributes, like the &lt;font&gt; and &lt;u&gt; elements
+			or the "style" attribute, are avoided.</p>
+		<p>
+			<label for="editor1">
+				Editor 1:</label><br />
+			<textarea cols="80" id="editor1" name="editor1" rows="10">&lt;p&gt;This is some &lt;span class="Bold"&gt;sample text&lt;/span&gt;. You are using &lt;a href="http://ckeditor.com/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
+			<script type="text/javascript">
+			//<![CDATA[
+
+				CKEDITOR.replace( 'editor1',
+					{
+						/*
+						 * Style sheet for the contents
+						 */
+						contentsCss : 'assets/output_xhtml.css',
+
+						/*
+						 * Core styles.
+						 */
+						coreStyles_bold	: { element : 'span', attributes : {'class': 'Bold'} },
+						coreStyles_italic	: { element : 'span', attributes : {'class': 'Italic'}},
+						coreStyles_underline	: { element : 'span', attributes : {'class': 'Underline'}},
+						coreStyles_strike	: { element : 'span', attributes : {'class': 'StrikeThrough'}, overrides : 'strike' },
+
+						coreStyles_subscript : { element : 'span', attributes : {'class': 'Subscript'}, overrides : 'sub' },
+						coreStyles_superscript : { element : 'span', attributes : {'class': 'Superscript'}, overrides : 'sup' },
+
+						/*
+						 * Font face
+						 */
+						// List of fonts available in the toolbar combo. Each font definition is
+						// separated by a semi-colon (;). We are using class names here, so each font
+						// is defined by {Combo Label}/{Class Name}.
+						font_names : 'Comic Sans MS/FontComic;Courier New/FontCourier;Times New Roman/FontTimes',
+
+						// Define the way font elements will be applied to the document. The "span"
+						// element will be used. When a font is selected, the font name defined in the
+						// above list is passed to this definition with the name "Font", being it
+						// injected in the "class" attribute.
+						// We must also instruct the editor to replace span elements that are used to
+						// set the font (Overrides).
+						font_style :
+						{
+								element		: 'span',
+								attributes		: { 'class' : '#(family)' },
+								overrides	: [ { element : 'span', attributes : { 'class' : /^Font(?:Comic|Courier|Times)$/ } } ]
+						},
+
+						/*
+						 * Font sizes.
+						 */
+						fontSize_sizes : 'Smaller/FontSmaller;Larger/FontLarger;8pt/FontSmall;14pt/FontBig;Double Size/FontDouble',
+						fontSize_style :
+							{
+								element		: 'span',
+								attributes	: { 'class' : '#(size)' },
+								overrides	: [ { element : 'span', attributes : { 'class' : /^Font(?:Smaller|Larger|Small|Big|Double)$/ } } ]
+							} ,
+
+						/*
+						 * Font colors.
+						 */
+						colorButton_enableMore : false,
+
+						colorButton_colors : 'FontColor1/FF9900,FontColor2/0066CC,FontColor3/F00',
+						colorButton_foreStyle :
+							{
+								element : 'span',
+								attributes : { 'class' : '#(color)' },
+								overrides	: [ { element : 'span', attributes : { 'class' : /^FontColor(?:1|2|3)$/ } } ]
+							},
+
+						colorButton_backStyle :
+							{
+								element : 'span',
+								attributes : { 'class' : '#(color)BG' },
+								overrides	: [ { element : 'span', attributes : { 'class' : /^FontColor(?:1|2|3)BG$/ } } ]
+							},
+
+						/*
+						 * Indentation.
+						 */
+						indentClasses : ['Indent1', 'Indent2', 'Indent3'],
+
+						/*
+						 * Paragraph justification.
+						 */
+						justifyClasses : [ 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyFull' ],
+
+						/*
+						 * Styles combo.
+						 */
+						stylesSet :
+								[
+									{ name : 'Strong Emphasis', element : 'strong' },
+									{ name : 'Emphasis', element : 'em' },
+
+									{ name : 'Computer Code', element : 'code' },
+									{ name : 'Keyboard Phrase', element : 'kbd' },
+									{ name : 'Sample Text', element : 'samp' },
+									{ name : 'Variable', element : 'var' },
+
+									{ name : 'Deleted Text', element : 'del' },
+									{ name : 'Inserted Text', element : 'ins' },
+
+									{ name : 'Cited Work', element : 'cite' },
+									{ name : 'Inline Quotation', element : 'q' }
+								]
+
+					});
+			//]]>
+			</script>
+		</p>
+		<p>
+			<input type="submit" value="Submit" />
+		</p>
+	</form>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/php/advanced.php
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/php/advanced.php	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/php/advanced.php	(revision 5613)
@@ -0,0 +1,93 @@
+<!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>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<link href="../sample.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+	<!-- This <fieldset> holds the HTML that you will usually find in your pages. -->
+	<fieldset title="Output">
+		<legend>Output</legend>
+		<form action="../sample_posteddata.php" method="post">
+			<p>
+				<label>Editor 1:</label><br/>
+			</p>
+<?php
+// Include CKEditor class.
+include("../../ckeditor.php");
+
+// Create class instance.
+$CKEditor = new CKEditor();
+
+// Do not print the code directly to the browser, return it instead
+$CKEditor->returnOutput = true;
+
+// Path to CKEditor directory, ideally instead of relative dir, use an absolute path:
+//   $CKEditor->basePath = '/ckeditor/'
+// If not set, CKEditor will try to detect the correct path.
+$CKEditor->basePath = '../../';
+
+// Set global configuration (will be used by all instances of CKEditor).
+$CKEditor->config['width'] = 600;
+
+// Change default textarea attributes
+$CKEditor->textareaAttributes = array("cols" => 80, "rows" => 10);
+
+// The initial value to be displayed in the editor.
+$initialValue = '<p>This is some <strong>sample text</strong>. You are using <a href="http://ckeditor.com/">CKEditor</a>.</p>';
+
+// Create first instance.
+$code = $CKEditor->editor("editor1", $initialValue);
+
+echo $code;
+?>
+			<p>
+				<label>Editor 2:</label><br/>
+			</p>
+<?php
+// Configuration that will be used only by the second editor.
+$config['toolbar'] = array(
+	array( 'Source', '-', 'Bold', 'Italic', 'Underline', 'Strike' ),
+	array( 'Image', 'Link', 'Unlink', 'Anchor' )
+);
+
+$config['skin'] = 'v2';
+
+// Create second instance.
+echo $CKEditor->editor("editor2", $initialValue, $config);
+?>
+			<p>
+				<input type="submit" value="Submit"/>
+			</p>
+		</form>
+	</fieldset>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/php/events.php
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/php/events.php	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/php/events.php	(revision 5613)
@@ -0,0 +1,130 @@
+<!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>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<link href="../sample.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+	<!-- This <fieldset> holds the HTML that you will usually find in your pages. -->
+	<fieldset title="Output">
+		<legend>Output</legend>
+		<form action="../sample_posteddata.php" method="post">
+			<p>
+				<label>Editor 1:</label><br/>
+			</p>
+<?php
+
+/**
+ * Adds global event, will hide "Target" tab in Link dialog in all instances.
+ */
+function CKEditorHideLinkTargetTab(&$CKEditor) {
+
+	$function = 'function (ev) {
+		// Take the dialog name and its definition from the event data
+		var dialogName = ev.data.name;
+		var dialogDefinition = ev.data.definition;
+
+		// Check if the definition is from the Link dialog.
+		if ( dialogName == "link" )
+			dialogDefinition.removeContents("target")
+	}';
+
+	$CKEditor->addGlobalEventHandler('dialogDefinition', $function);
+}
+
+/**
+ * Adds global event, will notify about opened dialog.
+ */
+function CKEditorNotifyAboutOpenedDialog(&$CKEditor) {
+	$function = 'function (evt) {
+		alert("Loading dialog: " + evt.data.name);
+	}';
+
+	$CKEditor->addGlobalEventHandler('dialogDefinition', $function);
+}
+
+// Include CKEditor class.
+include("../../ckeditor.php");
+
+// Create class instance.
+$CKEditor = new CKEditor();
+
+// Set configuration option for all editors.
+$CKEditor->config['width'] = 750;
+
+// Path to CKEditor directory, ideally instead of relative dir, use an absolute path:
+//   $CKEditor->basePath = '/ckeditor/'
+// If not set, CKEditor will try to detect the correct path.
+$CKEditor->basePath = '../../';
+
+// The initial value to be displayed in the editor.
+$initialValue = '<p>This is some <strong>sample text</strong>. You are using <a href="http://ckeditor.com/">CKEditor</a>.</p>';
+
+// Event that will be handled only by the first editor.
+$CKEditor->addEventHandler('instanceReady', 'function (evt) {
+	alert("Loaded editor: " + evt.editor.name);
+}');
+
+// Create first instance.
+$CKEditor->editor("editor1", $initialValue);
+
+// Clear event handlers, instances that will be created later will not have
+// the 'instanceReady' listener defined a couple of lines above.
+$CKEditor->clearEventHandlers();
+?>
+			<p>
+				<label>Editor 2:</label><br/>
+			</p>
+<?php
+// Configuration that will be used only by the second editor.
+$config['width'] = '600';
+$config['toolbar'] = 'Basic';
+
+// Add some global event handlers (for all editors).
+CKEditorHideLinkTargetTab($CKEditor);
+CKEditorNotifyAboutOpenedDialog($CKEditor);
+
+// Event that will be handled only by the second editor.
+// Instead of calling addEventHandler(), events may be passed as an argument.
+$events['instanceReady'] = 'function (evt) {
+	alert("Loaded second editor: " + evt.editor.name);
+}';
+
+// Create second instance.
+$CKEditor->editor("editor2", $initialValue, $config, $events);
+?>
+			<p>
+				<input type="submit" value="Submit"/>
+			</p>
+		</form>
+	</fieldset>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/php/replace.php
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/php/replace.php	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/php/replace.php	(revision 5613)
@@ -0,0 +1,63 @@
+<!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>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<link href="../sample.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+	<!-- This <fieldset> holds the HTML that you will usually find in your pages. -->
+	<fieldset title="Output">
+		<legend>Output</legend>
+		<form action="../sample_posteddata.php" method="post">
+			<p>
+				<label for="editor1">
+					Editor 1:</label><br/>
+				<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>
+			</p>
+			<p>
+				<input type="submit" value="Submit"/>
+			</p>
+		</form>
+	</fieldset>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+	<?php
+	// Include CKEditor class.
+	include_once "../../ckeditor.php";
+	// Create class instance.
+	$CKEditor = new CKEditor();
+	// Path to CKEditor directory, ideally instead of relative dir, use an absolute path:
+	//   $CKEditor->basePath = '/ckeditor/'
+	// If not set, CKEditor will try to detect the correct path.
+	$CKEditor->basePath = '../../';
+	// Replace textarea with id (or name) "editor1".
+	$CKEditor->replace("editor1");
+	?>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/php/replaceall.php
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/php/replaceall.php	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/php/replaceall.php	(revision 5613)
@@ -0,0 +1,68 @@
+<!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>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<link href="../sample.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+	<!-- This <fieldset> holds the HTML that you will usually find in your pages. -->
+	<fieldset title="Output">
+		<legend>Output</legend>
+		<form action="../sample_posteddata.php" method="post">
+			<p>
+				<label for="editor1">
+					Editor 1:</label><br/>
+				<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>
+			</p>
+			<p>
+				<label for="editor2">
+					Editor 2:</label><br/>
+				<textarea cols="80" id="editor2" name="editor2" 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 type="submit" value="Submit"/>
+			</p>
+		</form>
+	</fieldset>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+	<?php
+	// Include CKEditor class.
+	include("../../ckeditor.php");
+	// Create class instance.
+	$CKEditor = new CKEditor();
+	// Path to CKEditor directory, ideally instead of relative dir, use an absolute path:
+	//   $CKEditor->basePath = '/ckeditor/'
+	// If not set, CKEditor will try to detect the correct path.
+	$CKEditor->basePath = '../../';
+	// Replace all textareas with CKEditor.
+	$CKEditor->replaceAll();
+	?>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/php/standalone.php
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/php/standalone.php	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/php/standalone.php	(revision 5613)
@@ -0,0 +1,64 @@
+<!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>Sample - CKEditor</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+	<link href="../sample.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+	<!-- This <fieldset> holds the HTML that you will usually find in your pages. -->
+	<fieldset title="Output">
+		<legend>Output</legend>
+		<form action="../sample_posteddata.php" method="post">
+			<p>
+				<label for="editor1">
+					Editor 1:</label><br/>
+			</p>
+			<p>
+			<?php
+				// Include CKEditor class.
+				include_once "../../ckeditor.php";
+				// The initial value to be displayed in the editor.
+				$initialValue = '<p>This is some <strong>sample text</strong>.</p>';
+				// Create class instance.
+				$CKEditor = new CKEditor();
+				// Path to CKEditor directory, ideally instead of relative dir, use an absolute path:
+				//   $CKEditor->basePath = '/ckeditor/'
+				// If not set, CKEditor will try to detect the correct path.
+				$CKEditor->basePath = '../../';
+				// Create textarea element and attach CKEditor to it.
+				$CKEditor->editor("editor1", $initialValue);
+			?>
+				<input type="submit" value="Submit"/>
+			</p>
+		</form>
+	</fieldset>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/replacebyclass.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/replacebyclass.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_samples/replacebyclass.html	(revision 5613)
@@ -1,5 +1,5 @@
-﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 -->
@@ -7,37 +7,48 @@
 <head>
 	<title>Replace Textareas by Class Name - CKEditor Sample</title>
-	<script type="text/javascript" src="sample.js"></script>
+	<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="../_dev/adobeair/AIRIntrospector.js"></script>
+	<script type="text/javascript" src="../_dev/adobeair/AIRAliases.js"></script>
+	<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>
-	<div id="html">
-		<form action="sample_posteddata.php" method="post">
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
 			<p>
-				<label for="editor1">
-					Editor 1:</label><br />
-				<textarea id="editor1" name="editor1" class="ckeditor" rows="10" cols="80">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
+				<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>
-			<p>
-				<input type="submit" value="Submit" />
-			</p>
-		</form>
+		</noscript>
 	</div>
-	<div id="code">
-		<pre>
-&lt;form action=""&gt;
-  &lt;p&gt;
-    &lt;label for="editor1"&gt;
-      Editor 1:&lt;/label&gt;&lt;br /&gt;
-    &lt;textarea id="editor1" name="editor1" <b>class="ckeditor"</b> rows="10" cols="80"&gt;&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;&lt;/textarea&gt;
-  &lt;/p&gt;
-  &lt;p&gt;
-    &lt;label for="editor2"&gt;
-      Editor 2:&lt;/label&gt;&lt;br /&gt;
-    &lt;textarea id="editor2" name="editor2" <b>class="ckeditor"</b> rows="10" cols="80"&gt;&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;&lt;/textarea&gt;
-  &lt;/p&gt;
-  &lt;p&gt;
-    &lt;input type="submit" value="Submit" /&gt;
-  &lt;/p&gt;
-&lt;/form&gt;
-</pre>
+	<form action="sample_posteddata.php" method="post">
+		<p>
+			<label for="editor1">
+				Editor 1:</label><br />
+			<textarea class="ckeditor" 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>
+		</p>
+		<p>
+			<input type="submit" value="Submit" />
+		</p>
+	</form>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
 	</div>
 </body>
Index: /CKEditor/branches/features/adobeair/_samples/replacebycode.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/replacebycode.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_samples/replacebycode.html	(revision 5613)
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 -->
@@ -7,70 +7,77 @@
 <head>
 	<title>Replace Textarea by Code - CKEditor Sample</title>
-	<script type="text/javascript" src="sample.js"></script>
+	<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>
-	<div id="html">
-		<form action="sample_posteddata.php" method="post">
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
 			<p>
-				<label for="editor1">
-					Editor 1:</label><br />
-				<textarea id="editor1" name="editor1" rows="10" cols="80">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
-				<script type="text/javascript">
-				//<![CDATA[
+				<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><br />
+			<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.
+				// 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' );
+				// Replace the <textarea id="editor"> with an CKEditor
+				// instance, using default configurations.
+				CKEDITOR.replace( 'editor1' );
 
-				//]]>
-				</script>
-			</p>
-			<p>
-				<label for="editor2">
-					Editor 2:</label><br />
-				<textarea id="editor2" name="editor2" rows="10" cols="80">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
-				<script type="text/javascript">
-				//<![CDATA[
+			//]]>
+			</script>
+		</p>
+		<p>
+			<label for="editor2">
+				Editor 2:</label><br />
+			<textarea cols="80" id="editor2" name="editor2" 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.
+				// 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( 'editor2' );
+				// Replace the <textarea id="editor"> with an CKEditor
+				// instance, using default configurations.
+				CKEDITOR.replace( 'editor2' );
 
-				//]]>
-				</script>
-			</p>
-			<p>
-				<input type="submit" value="Submit" />
-			</p>
-		</form>
-	</div>
-	<div id="code">
-		<pre>
-&lt;form action=""&gt;
-  &lt;p&gt;
-    &lt;label for="editor1"&gt;
-      Editor 1:&lt;/label&gt;&lt;br /&gt;
-    &lt;textarea <b>name="editor1"</b> rows="10" cols="80"&gt;&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;&lt;/textarea&gt;
-    &lt;script type="text/javascript"&gt;
-    //&lt;![CDATA[
-
-      <b>CKEDITOR.replace( 'editor1' );</b>
-
-    //]]&gt;
-    &lt;/script&gt;
-  &lt;/p&gt;
-  &lt;p&gt;
-    &lt;input type="submit" value="Submit" /&gt;
-  &lt;/p&gt;
-&lt;/form&gt;
-</pre>
+			//]]>
+			</script>
+		</p>
+		<p>
+			<input type="submit" value="Submit" />
+		</p>
+	</form>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
 	</div>
 </body>
Index: /CKEditor/branches/features/adobeair/_samples/sample.css
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/sample.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_samples/sample.css	(revision 5613)
@@ -1,4 +1,4 @@
-﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: Editor/branches/features/adobeair/_samples/sample.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/sample.html	(revision 5612)
+++ 	(revision )
@@ -1,82 +1,0 @@
-﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!--
-Copyright (c) 2003-2009, 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>Sample - CKEditor</title>
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-<!-- CKReleaser %REMOVE_LINE%
-	<script type="text/javascript" src="../ckeditor.js"></script>
-CKReleaser %REMOVE_START% -->
-	<script type="text/javascript" src="../ckeditor_source.js"></script>
-	<script type="text/javascript">
-	//<![CDATA[
-
-// Loaded dependencies of sample.js.
-CKEDITOR.loader.load( 'core/ajax' );
-CKEDITOR.loader.load( 'core/env' );
-
-	//]]>
-	</script>
-<!--
-	## Uncomment this if loading the "basic" version.
-
-	<script type="text/javascript" src="../_source/core/loader.js"></script>
-	<script type="text/javascript">
-	//<![CDATA[
-
-// Loaded dependencies of sample.js.
-CKEDITOR.loader.load( 'core/ajax' );
-CKEDITOR.loader.load( 'core/env' );
-
-	//]]>
-	</script>
--->
-<!-- CKReleaser %REMOVE_END% -->
-	<script type="text/javascript" src="sample.js"></script>
-	<link type="text/css" rel="stylesheet" href="sample.css" />
-	<script id="styles" type="text/javascript">
-	//<![CDATA[
-		document.write( CKEDITOR.samples.styles );
-	//]]>
-	</script>
-	<script id="headscript" type="text/javascript">
-	//<![CDATA[
-		document.write( CKEDITOR.samples.headScript );
-	//]]>
-	</script>
-</head>
-<body>
-	<h1>
-		CKEditor Sample
-	</h1>
-	<!-- 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>
-	<!-- This <fieldset> holds the HTML that you will usually find in your
-	     pages. -->
-	<script id="html" type="text/javascript">
-	//<![CDATA[
-		document.write( CKEDITOR.samples.htmlData );
-	//]]>
-	</script>
-	<div id="footer">
-		<hr />
-		<p>
-			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
-		</p>
-		<p id="copy">
-			Copyright &copy; 2003-2009, <a href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
-		</p>
-	</div>
-</body>
-</html>
Index: /CKEditor/branches/features/adobeair/_samples/sample.js
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/sample.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_samples/sample.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -7,76 +7,7 @@
 // It is just a helper file that displays a red message about browser compatibility
 // at the top of the samples (if incompatible browser is detected).
-// %REMOVE_START%
-// In the SVN version of CKEditor, it does some more magic, for example it
-// redirects all samples to the sample.html file. It still can be ignored anyway.
-// %REMOVE_END%
-
-// Firebug has been presented some bugs with console. It must be "initialized"
-// before the page load to work.
-// FIXME: Remove the following in the future, if Firebug gets fixed.
-if ( typeof console != 'undefined' )
-	console.log();
-
-// %REMOVE_START%
-(function()
-{
-	// The sample##.html files also include this script. We don't want them to
-	// run, so we redirect to the samples.html page, passing the correct
-	// querystring parameter to load the desired page.
-
-	var sampleMatch = window.location.pathname.match( /[\/\\]([^\/\\]+).html/ );
-	if ( sampleMatch && sampleMatch[1] != 'sample' )
-		window.location = 'sample.html?sample=' + sampleMatch[1] + ( location.search.length > 1 ? '&' + location.search.substr(1) : '' );
-})();
-// %REMOVE_END%
 
 if ( window.CKEDITOR )
 {
-// %REMOVE_START%
-	CKEDITOR.samples = (function()
-	{
-		var ajax = CKEDITOR.ajax;
-
-		// Default values for the CKEDITOR.samples properties.
-		var samples =
-		{
-			htmlData : '<p>No HTML data available.</p>',
-			codeData : '<p>No code data available.</p>'
-		};
-
-		if ( /[?&]sample=[^&]+/.test( document.location.search ) )
-		{
-			var currentSample = document.location.search.match( /[?&]sample=([^&]+)/ )[1];
-			var sampleData = ajax.loadXml( CKEDITOR.getUrl( '_samples/' + currentSample + '.html' ) );
-
-			if ( sampleData )
-			{
-				var getNodeHtml = function ( id )
-				{
-					return sampleData.getInnerXml( '//*[@id="' + id + '"]' );
-				};
-
-				samples.headScript	= getNodeHtml( 'headscript' ) || '';
-				samples.styles		= getNodeHtml( 'styles' ) || '';
-				samples.htmlData	= getNodeHtml( 'html' ) || '';
-				samples.codeData	= getNodeHtml( 'code' ) || '';
-
-				if ( samples.headScript )
-					samples.headScript = '<script id="headscript" type="text/javascript">' + samples.headScript + '</script>';
-
-				if ( samples.styles )
-					samples.styles = '<style id="styles" type="text/css">' + samples.styles + '</style>';
-
-				// The '//*/*/*' XPath is the only way to make it work with
-				// xmlns="http://www.w3.org/1999/xhtml" without workarounds. It
-				// means that we must always have <html><head><title> in this
-				// precise order.
-				document.title = sampleData.getInnerXml( '//*/*/*' );
-			}
-		}
-
-		return samples;
-	})();
-// %REMOVE_END%
 	(function()
 	{
@@ -114,5 +45,6 @@
 			html += '</p><p>With non compatible browsers, you should still be able to see and edit the contents (HTML) in a plain text field.</p>';
 
-			document.getElementById( 'alerts' ).innerHTML = html;
+			var alertsEl = document.getElementById( 'alerts' );
+			alertsEl && ( alertsEl.innerHTML = html );
 		};
 
Index: /CKEditor/branches/features/adobeair/_samples/sample_posteddata.php
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/sample_posteddata.php	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_samples/sample_posteddata.php	(revision 5613)
@@ -2,5 +2,5 @@
 <?php
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -53,5 +53,5 @@
 		</p>
 		<p id="copy">
-			Copyright &copy; 2003-2009, <a href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
 		</p>
 	</div>
Index: /CKEditor/branches/features/adobeair/_samples/sharedspaces.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/sharedspaces.html	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_samples/sharedspaces.html	(revision 5613)
@@ -0,0 +1,135 @@
+<!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>Shared toolbars - 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" />
+	<style id="styles" type="text/css">
+
+		#editorsForm
+		{
+			height: 400px;
+			overflow: auto;
+			border: solid 1px #555;
+			margin: 10px 0;
+			padding: 0 10px;
+		}
+
+	</style>
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- 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>
+	<div id="topSpace">
+	</div>
+	<form action="sample_posteddata.php" id="editorsForm" method="post">
+		<p>
+			<label for="editor1">
+				Editor 1 (uses the shared toolbar and element path):</label><br />
+			<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>
+		</p>
+		<p>
+			<label for="editor2">
+				Editor 2 (uses the shared toolbar and element path):</label><br />
+			<textarea cols="80" id="editor2" name="editor2" 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>
+			<label for="editor3">
+				Editor 3 (uses the shared toolbar only):</label><br />
+			<textarea cols="80" id="editor3" name="editor3" 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>
+			<label for="editor4">
+				Editor 4 (no shared spaces):</label><br />
+			<textarea cols="80" id="editor4" name="editor4" 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 type="submit" value="Submit" />
+		</p>
+	</form>
+	<div id="bottomSpace">
+	</div>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+	<script type="text/javascript">
+	//<![CDATA[
+
+		// Create all editor instances at the end of the page, so we are sure
+		// that the "bottomSpace" div is available in the DOM (IE issue).
+
+		CKEDITOR.replace( 'editor1',
+			{
+				sharedSpaces :
+				{
+					top : 'topSpace',
+					bottom : 'bottomSpace'
+				},
+
+				// Removes the maximize plugin as it's not usable
+				// in a shared toolbar.
+				// Removes the resizer as it's not usable in a
+				// shared elements path.
+				removePlugins : 'maximize,resize'
+			} );
+
+		CKEDITOR.replace( 'editor2',
+			{
+				sharedSpaces :
+				{
+					top : 'topSpace',
+					bottom : 'bottomSpace'
+				},
+
+				// Removes the maximize plugin as it's not usable
+				// in a shared toolbar.
+				// Removes the resizer as it's not usable in a
+				// shared elements path.
+				removePlugins : 'maximize,resize'
+			} );
+
+		CKEDITOR.replace( 'editor3',
+			{
+				sharedSpaces :
+				{
+					top : 'topSpace'
+				},
+
+				// Removes the maximize plugin as it's not usable
+				// in a shared toolbar.
+				removePlugins : 'maximize'
+			} );
+
+		CKEDITOR.replace( 'editor4' );
+	//]]>
+	</script>
+</body>
+</html>
Index: /CKEditor/branches/features/adobeair/_samples/skins.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/skins.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_samples/skins.html	(revision 5613)
@@ -1,5 +1,5 @@
-﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 -->
@@ -7,55 +7,80 @@
 <head>
 	<title>Skins - CKEditor Sample</title>
-	<script type="text/javascript" src="sample.js"></script>
+	<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>
-	<div id="html">
-		<form action="sample_posteddata.php" method="post">
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
 			<p>
-				"Kama" skin:<br />
-				<textarea id="editor_kama" name="editor_kama" rows="10" cols="80">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
-				<script type="text/javascript">
-				//<![CDATA[
+				<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>
+			"Kama" skin:<br />
+			<textarea cols="80" id="editor_kama" name="editor_kama" 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[
 
-					CKEDITOR.replace( 'editor_kama',
-						{
-							skin : 'kama'
-						});
+				CKEDITOR.replace( 'editor_kama',
+					{
+						skin : 'kama'
+					});
 
-				//]]>
-				</script>
-			</p>
-			<p>
-				"Office 2003" skin:<br />
-				<textarea id="editor_office2003" name="editor_office2003" rows="10" cols="80">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
-				<script type="text/javascript">
-				//<![CDATA[
+			//]]>
+			</script>
+		</p>
+		<p>
+			"Office 2003" skin:<br />
+			<textarea cols="80" id="editor_office2003" name="editor_office2003" 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[
 
-					CKEDITOR.replace( 'editor_office2003',
-						{
-							skin : 'office2003'
-						});
+				CKEDITOR.replace( 'editor_office2003',
+					{
+						skin : 'office2003'
+					});
 
-				//]]>
-				</script>
-			</p>
-			<p>
-				"V2" skin:<br />
-				<textarea id="editor_v2" name="editor_v2" rows="10" cols="80">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
-				<script type="text/javascript">
-				//<![CDATA[
+			//]]>
+			</script>
+		</p>
+		<p>
+			"V2" skin:<br />
+			<textarea cols="80" id="editor_v2" name="editor_v2" 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[
 
-					CKEDITOR.replace( 'editor_v2',
-						{
-							skin : 'v2'
-						});
+				CKEDITOR.replace( 'editor_v2',
+					{
+						skin : 'v2'
+					});
 
-				//]]>
-				</script>
-			</p>
-		</form>
-	</div>
-	<div id="code">
-		<pre></pre>
+			//]]>
+			</script>
+		</p>
+	</form>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
 	</div>
 </body>
Index: /CKEditor/branches/features/adobeair/_samples/ui_color.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/ui_color.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_samples/ui_color.html	(revision 5613)
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 -->
@@ -7,76 +7,84 @@
 <head>
 	<title>UI Color Setting Tool - CKEditor Sample</title>
-	<script type="text/javascript" src="sample.js"></script>
+	<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>
-	<div id="html">
-		<p>Click the UI Color Picker button to test your color preferences at runtime.</p>
-		<form action="sample_posteddata.php" method="post">
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
 			<p>
-				<textarea id="editor1" name="editor1" rows="10" cols="80">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
-				<script type="text/javascript">
-				//<![CDATA[
+				<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>
+	<p>
+		Click the UI Color Picker button to test your color preferences at runtime.</p>
+	<form action="sample_posteddata.php" method="post">
+	<p>
+		<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[
 
-					// Replace the <textarea id="editor"> with an CKEditor
-					// instance, using default configurations.
-					CKEDITOR.replace( 'editor1',
-						{
-							extraPlugins : 'uicolor',
-							toolbar :
-							[
-								[ 'Bold', 'Italic', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink' ],
-								[ 'UIColor' ]
-							]
-						});
+			// Replace the <textarea id="editor"> with an CKEditor
+			// instance, using default configurations.
+			CKEDITOR.replace( 'editor1',
+				{
+					extraPlugins : 'uicolor',
+					toolbar :
+					[
+						[ 'Bold', 'Italic', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink' ],
+						[ 'UIColor' ]
+					]
+				});
 
-				//]]>
-				</script>
-			</p>
-			<p>
-				<textarea id="editor2" name="editor2" rows="10" cols="80">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
-				<script type="text/javascript">
-				//<![CDATA[
+		//]]>
+		</script>
+	</p>
+	<p>
+		<textarea cols="80" id="editor2" name="editor2" 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[
 
-					// Replace the <textarea id="editor"> with an CKEditor
-					// instance, using default configurations.
-					CKEDITOR.replace( 'editor2',
-						{
-							extraPlugins : 'uicolor',
-							uiColor: '#14B8C4',
-							toolbar :
-							[
-								[ 'Bold', 'Italic', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink' ],
-								[ 'UIColor' ]
-							]
-						} );
+			// Replace the <textarea id="editor"> with an CKEditor
+			// instance, using default configurations.
+			CKEDITOR.replace( 'editor2',
+				{
+					extraPlugins : 'uicolor',
+					uiColor: '#14B8C4',
+					toolbar :
+					[
+						[ 'Bold', 'Italic', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink' ],
+						[ 'UIColor' ]
+					]
+				} );
 
-				//]]>
-				</script>
-			</p>
-			<p>
-				<input type="submit" value="Submit" />
-			</p>
-		</form>
-	</div>
-	<div id="code">
-		<pre>
-&lt;form action=""&gt;
-  &lt;p&gt;
-    &lt;label for="editor1"&gt;
-      Editor 1:&lt;/label&gt;&lt;br /&gt;
-    &lt;textarea <b>name="editor1"</b> rows="10" cols="80"&gt;&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;&lt;/textarea&gt;
-    &lt;script type="text/javascript"&gt;
-    //&lt;![CDATA[
-
-      <b>CKEDITOR.replace( 'editor1' );</b>
-
-    //]]&gt;
-    &lt;/script&gt;
-  &lt;/p&gt;
-  &lt;p&gt;
-    &lt;input type="submit" value="Submit" /&gt;
-  &lt;/p&gt;
-&lt;/form&gt;
-</pre>
+		//]]>
+		</script>
+	</p>
+	<p>
+		<input type="submit" value="Submit" />
+	</p>
+	</form>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
 	</div>
 </body>
Index: /CKEditor/branches/features/adobeair/_samples/ui_languages.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/ui_languages.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_samples/ui_languages.html	(revision 5613)
@@ -1,5 +1,5 @@
-﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 -->
@@ -7,87 +7,101 @@
 <head>
 	<title>User Interface Globalization - CKEditor Sample</title>
-	<script type="text/javascript" src="sample.js"></script>
-	<script id="headscript" type="text/javascript">
-	//<![CDATA[
-
-	document.write( '<script type="text/javascript" src="../' +
-		'_source/' + 	// %REMOVE_LINE%
-		'lang/_languages.js"><\/script>' );
-
-	//]]>
-	</script>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type" />
+	<!-- CKReleaser %REMOVE_LINE%
+	<script type="text/javascript" src="../ckeditor.js"></script>
+	<script type="text/javascript" src="../lang/_languages.js"></script>
+	CKReleaser %REMOVE_START% -->
+	<script type="text/javascript" src="../ckeditor_source.js"></script>
+	<script type="text/javascript" src="../_source/lang/_languages.js"></script>
+	<!-- CKReleaser %REMOVE_END% -->
+	<script src="sample.js" type="text/javascript"></script>
+	<link href="sample.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-	<div id="html">
-		<form action="sample_posteddata.php" method="post">
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
 			<p>
-				<label for="editor1">
-					Available languages (<span id="count">&nbsp;</span>
-					languages!):</label><br />
-				<select id="languages" onchange="createEditor( this.value );" disabled="disabled">
-					<script type="text/javascript">
-					//<![CDATA[
+				<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>
+			Available languages (<span id="count"> </span> languages!):<br />
+			<script type="text/javascript">
+			//<![CDATA[
+				document.write( '<select disabled="disabled" id="languages" onchange="createEditor( this.value );">' );
+				// Get the language list from the _languages.js file.
+				for ( var i = 0 ; i < window.CKEDITOR_LANGS.length ; i++ )
+				{
+					document.write(
+						'<option value="' + window.CKEDITOR_LANGS[i].code + '">' +
+							window.CKEDITOR_LANGS[i].name +
+						'</option>' );
+				}
+				document.write( '</select>' );
+			//]]>
+			</script>
+			<br />
+			<span style="color: #888888">(You may see strange characters if your system doesn't
+				support the selected language)</span>
+		</p>
+		<p>
+			<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[
 
-						// Get the language list from the _languages.js file.
-						for ( var i = 0 ; i < window.CKEDITOR_LANGS.length ; i++ )
+				// Set the number of languages.
+				document.getElementById( 'count' ).innerHTML = window.CKEDITOR_LANGS.length;
+
+				var editor;
+
+				function createEditor( languageCode )
+				{
+					if ( editor )
+						editor.destroy();
+
+					// Replace the <textarea id="editor"> with an CKEditor
+					// instance, using default configurations.
+					editor = CKEDITOR.replace( 'editor1',
 						{
-							document.write(
-								'<option value="' + window.CKEDITOR_LANGS[i].code + '">' +
-									window.CKEDITOR_LANGS[i].name +
-								'</option>' );
-						}
+							language : languageCode,
 
-					//]]>
-					</script>
-				</select>
-				<br />
-				<span style="color: #888888">(You may see strange characters if your system doesn't
-					support the selected language)</span>
-			</p>
-			<p>
-				<textarea id="editor1" name="editor1" rows="10" cols="80">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://www.fckeditor.net/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
-				<script type="text/javascript">
-				//<![CDATA[
+							on :
+							{
+								instanceReady : function()
+								{
+									// Wait for the editor to be ready to set
+									// the language combo.
+									var languages = document.getElementById( 'languages' );
+									languages.value = this.langCode;
+									languages.disabled = false;
+								}
+							}
+						} );
+				}
 
-					// Set the number of languages.
-					document.getElementById( 'count' ).innerHTML = window.CKEDITOR_LANGS.length;
+				// At page startup, load the default language:
+				createEditor( '' );
 
-					var editor;
-
-					function createEditor( languageCode )
-					{
-						if ( editor )
-							editor.destroy();
-
-						// Replace the <textarea id="editor"> with an CKEditor
-						// instance, using default configurations.
-						editor = CKEDITOR.replace( 'editor1',
-							{
-								language : languageCode,
-
-								on :
-								{
-									instanceReady : function()
-									{
-										// Wait for the editor to be ready to set
-										// the language combo.
-										var languages = document.getElementById( 'languages' );
-										languages.value = this.langCode;
-										languages.disabled = false;
-									}
-								}
-							} );
-					}
-
-					// At page startup, load the default language:
-					createEditor( '' );
-
-				//]]>
-				</script>
-			</p>
-		</form>
-	</div>
-	<div id="code">
-		<pre></pre>
+			//]]>
+			</script>
+		</p>
+	</form>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
 	</div>
 </body>
Index: /CKEditor/branches/features/adobeair/_source/adapters/jquery.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/adapters/jquery.js	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_source/adapters/jquery.js	(revision 5613)
@@ -0,0 +1,297 @@
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview jQuery adapter provides easy use of basic CKEditor functions
+ *   and access to internal API. It also integrates some aspects of CKEditor with
+ *   jQuery framework.
+ *
+ * Every TEXTAREA, DIV and P elements can be converted to working editor.
+ *
+ * Plugin exposes some of editor's event to jQuery event system. All of those are namespaces inside
+ * ".ckeditor" namespace and can be binded/listened on supported textarea, div and p nodes.
+ *
+ * Available jQuery events:
+ * - instanceReady.ckeditor( editor, rootNode )
+ *   Triggered when new instance is ready.
+ * - destroy.ckeditor( editor )
+ *   Triggered when instance is destroyed.
+ * - getData.ckeditor( editor, eventData )
+ *   Triggered when getData event is fired inside editor. It can change returned data using eventData reference.
+ * - setData.ckeditor( editor )
+ *   Triggered when getData event is fired inside editor.
+ *
+ * @example
+ * <script src="jquery.js"></script>
+ * <script src="ckeditor.js"></script>
+ * <script src="adapters/jquery/adapter.js"></script>
+ */
+
+(function()
+{
+	/**
+	 * Allow CKEditor to override jQuery.fn.val(). This results in ability to use val()
+	 * function on textareas as usual and having those calls synchronized with CKEditor
+	 * Rich Text Editor component.
+	 *
+	 * This config option is global and executed during plugin load.
+	 * Can't be customized across editor instances.
+	 *
+	 * @type Boolean
+	 * @example
+	 * $( 'textarea' ).ckeditor();
+	 * // ...
+	 * $( 'textarea' ).val( 'New content' );
+	 */
+	CKEDITOR.config.jqueryOverrideVal = typeof CKEDITOR.config.jqueryOverrideVal == 'undefined'
+		? true : CKEDITOR.config.jqueryOverrideVal;
+
+	var jQuery = window.jQuery;
+
+	if ( typeof jQuery == 'undefined' )
+		return;
+
+	// jQuery object methods.
+	jQuery.extend( jQuery.fn,
+	/** @lends jQuery.fn */
+	{
+		/**
+		 * Return existing CKEditor instance for first matched element.
+		 * Allows to easily use internal API. Doesn't return jQuery object.
+		 *
+		 * Raised exception if editor doesn't exist or isn't ready yet.
+		 *
+		 * @name jQuery.ckeditorGet
+		 * @return CKEDITOR.editor
+		 * @see CKEDITOR.editor
+		 */
+		ckeditorGet: function()
+		{
+			var instance = this.eq( 0 ).data( 'ckeditorInstance' );
+			if ( !instance )
+				throw "CKEditor not yet initialized, use ckeditor() with callback.";
+			return instance;
+		},
+		/**
+		 * Triggers creation of CKEditor in all matched elements (reduced to DIV, P and TEXTAREAs).
+		 * Binds callback to instanceReady event of all instances. If editor is already created, than
+		 * callback is fired right away.
+		 *
+		 * Mixed parameter order allowed.
+		 *
+		 * @param callback Function to be run on editor instance. Passed parameters: [ textarea ].
+		 * Callback is fiered in "this" scope being ckeditor instance and having source textarea as first param.
+		 *
+		 * @param config Configuration options for new instance(s) if not already created.
+		 * See URL
+		 *
+		 * @example
+		 * $( 'textarea' ).ckeditor( function( textarea ) {
+		 *   $( textarea ).val( this.getData() )
+		 * } );
+		 *
+		 * @name jQuery.fn.ckeditor
+		 * @return jQuery.fn
+		 */
+		ckeditor: function( callback, config )
+		{
+			if ( !jQuery.isFunction( callback ))
+			{
+				var tmp = config;
+				config = callback;
+				callback = tmp;
+			}
+			config = config || {};
+
+			this.filter( 'textarea, div, p' ).each( function()
+			{
+				var $element = jQuery( this ),
+					editor = $element.data( 'ckeditorInstance' ),
+					instanceLock = $element.data( '_ckeditorInstanceLock' ),
+					element = this;
+
+				if ( editor && !instanceLock )
+				{
+					if ( callback )
+						callback.apply( editor, [ this ] );
+				}
+				else if ( !instanceLock )
+				{
+					// CREATE NEW INSTANCE
+
+					// Handle config.autoUpdateElement inside this plugin if desired.
+					if ( config.autoUpdateElement
+						|| ( typeof config.autoUpdateElement == 'undefined' && CKEDITOR.config.autoUpdateElement ) )
+					{
+						config.autoUpdateElementJquery = true;
+					}
+
+					// Always disable config.autoUpdateElement.
+					config.autoUpdateElement = false;
+					$element.data( '_ckeditorInstanceLock', true );
+
+					// Set instance reference in element's data.
+					editor = CKEDITOR.replace( element, config );
+					$element.data( 'ckeditorInstance', editor );
+
+					// Register callback.
+					editor.on( 'instanceReady', function( event )
+					{
+						var editor = event.editor;
+						setTimeout( function()
+						{
+							// Delay bit more if editor is still not ready.
+							if ( !editor.element )
+							{
+								setTimeout( arguments.callee, 100 );
+								return;
+							}
+
+							// Remove this listener.
+							event.removeListener( 'instanceReady', this.callee );
+
+							// Forward setData on dataReady.
+							editor.on( 'dataReady', function()
+							{
+								$element.trigger( 'setData' + '.ckeditor', [ editor ] );
+							});
+
+							// Forward getData.
+							editor.on( 'getData', function( event ) {
+								$element.trigger( 'getData' + '.ckeditor', [ editor, event.data ] );
+							}, 999 );
+
+							// Forward destroy event.
+							editor.on( 'destroy', function()
+							{
+								$element.trigger( 'destroy.ckeditor', [ editor ] );
+							});
+
+							// Integrate with form submit.
+							if ( editor.config.autoUpdateElementJquery && $element.is( 'textarea' ) && $element.parents( 'form' ).length )
+							{
+								var onSubmit = function()
+								{
+									$element.ckeditor( function()
+									{
+										editor.updateElement();
+									});
+								};
+
+								// Bind to submit event.
+								$element.parents( 'form' ).submit( onSubmit );
+
+								// Bind to form-pre-serialize from jQuery Forms plugin.
+								$element.parents( 'form' ).bind( 'form-pre-serialize', onSubmit );
+
+								// Unbind when editor destroyed.
+								$element.bind( 'destroy.ckeditor', function()
+								{
+									$element.parents( 'form' ).unbind( 'submit', onSubmit );
+									$element.parents( 'form' ).unbind( 'form-pre-serialize', onSubmit );
+								});
+							}
+
+							// Garbage collect on destroy.
+							editor.on( 'destroy', function()
+							{
+								$element.data( 'ckeditorInstance', null );
+							});
+
+							// Remove lock.
+							$element.data( '_ckeditorInstanceLock', null );
+
+							// Fire instanceReady event.
+							$element.trigger( 'instanceReady.ckeditor', [ editor ] );
+
+							// Run given (first) code.
+							if ( callback )
+								callback.apply( editor, [ element ] );
+						}, 0 );
+					}, null, null, 9999);
+				}
+				else
+				{
+					// Editor is already during creation process, bind our code to the event.
+					CKEDITOR.on( 'instanceReady', function( event )
+					{
+						var editor = event.editor;
+						setTimeout( function()
+						{
+							// Delay bit more if editor is still not ready.
+							if ( !editor.element )
+							{
+								setTimeout( arguments.callee, 100 );
+								return;
+							}
+
+							if ( editor.element.$ == element )
+							{
+								// Run given code.
+								if ( callback )
+									callback.apply( editor, [ element ] );
+							}
+						}, 0 );
+					}, null, null, 9999);
+				}
+			});
+			return this;
+		}
+	});
+
+	// New val() method for objects.
+	if ( CKEDITOR.config.jqueryOverrideVal )
+	{
+		jQuery.fn.val = CKEDITOR.tools.override( jQuery.fn.val, function( oldValMethod )
+		{
+			/**
+			 * CKEditor-aware val() method.
+			 *
+			 * Acts same as original jQuery val(), but for textareas which have CKEditor instances binded to them, method
+			 * returns editor's content. It also works for settings values.
+			 *
+			 * @param oldValMethod
+			 * @name jQuery.fn.val
+			 */
+			return function( newValue, forceNative )
+			{
+				var isSetter = typeof newValue != 'undefined',
+					result;
+
+				this.each( function()
+				{
+					var $this = jQuery( this ),
+						editor = $this.data( 'ckeditorInstance' );
+
+					if ( !forceNative && $this.is( 'textarea' ) && editor )
+					{
+						if ( isSetter )
+							editor.setData( newValue );
+						else
+						{
+							result = editor.getData();
+							// break;
+							return null;
+						}
+					}
+					else
+					{
+						if ( isSetter )
+							oldValMethod.call( $this, newValue );
+						else
+						{
+							result = oldValMethod.call( $this );
+							// break;
+							return null;
+						}
+					}
+
+					return true;
+				});
+				return isSetter ? this : result;
+			};
+		});
+	}
+})();
Index: /CKEditor/branches/features/adobeair/_source/core/_bootstrap.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/_bootstrap.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/_bootstrap.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -10,13 +10,24 @@
 (function()
 {
+	// Disable HC detaction in WebKit. (#5429)
+	if ( CKEDITOR.env.webkit )
+	{
+		CKEDITOR.env.hc = false;
+		return;
+	}
+
 	// Check is High Contrast is active by creating a temporary element with a
 	// background image.
 
-	var testImage = ( CKEDITOR.env.ie && CKEDITOR.env.version < 7 ) ? ( CKEDITOR.basePath + 'images/spacer.gif' ) : 'about:blank';
+	var useSpacer = CKEDITOR.env.ie && CKEDITOR.env.version < 7,
+		useBlank = CKEDITOR.env.ie && CKEDITOR.env.version == 7;
+
+	var backgroundImageUrl = useSpacer ? ( CKEDITOR.basePath + 'images/spacer.gif' ) :
+							 useBlank ? 'about:blank' : 'data:image/png;base64,';
 
 	var hcDetect = CKEDITOR.dom.element.createFromHtml(
 		'<div style="width:0px;height:0px;' +
 			'position:absolute;left:-10000px;' +
-			'background-image:url(' + testImage + ')"></div>', CKEDITOR.document );
+			'background-image:url(' + backgroundImageUrl + ')"></div>', CKEDITOR.document );
 
 	hcDetect.appendTo( CKEDITOR.document.getHead() );
@@ -32,4 +43,5 @@
 		CKEDITOR.env.hc = false;
 	}
+
 	if ( CKEDITOR.env.hc )
 		CKEDITOR.env.cssClass += ' cke_hc';
@@ -72,2 +84,8 @@
 }
 */
+
+/**
+ * Fired when a CKEDITOR core object is fully loaded and ready for interaction.
+ * @name CKEDITOR#loaded
+ * @event
+ */
Index: /CKEditor/branches/features/adobeair/_source/core/ajax.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/ajax.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/ajax.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/core/ckeditor.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/ckeditor.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/ckeditor.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -70,4 +70,14 @@
 };
 
+/**
+ * Perform global clean up to free as much memory as possible
+ * when there are no instances left
+ */
+CKEDITOR.on( 'instanceDestroyed', function ()
+	{
+		if ( CKEDITOR.tools.isEmpty( this.instances ) )
+			CKEDITOR.fire( 'reset' );
+	});
+
 // Load the bootstrap script.
 CKEDITOR.loader.load( 'core/_bootstrap' );		// @Packager.RemoveLine
@@ -95,2 +105,9 @@
  */
 CKEDITOR.TRISTATE_DISABLED = 0;
+
+/**
+ * Fired when the CKEDITOR.currentInstance object reference changes. This may
+ * happen when setting the focus on different editor instances in the page.
+ * @name CKEDITOR#currentInstance
+ * @event
+ */
Index: /CKEditor/branches/features/adobeair/_source/core/ckeditor_base.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/ckeditor_base.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/ckeditor_base.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -137,4 +137,7 @@
 				}
 
+				if ( !path )
+						throw 'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.';
+
 				return path;
 			})(),
Index: /CKEditor/branches/features/adobeair/_source/core/ckeditor_basic.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/ckeditor_basic.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/ckeditor_basic.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -81,5 +81,5 @@
 		CKEDITOR.replaceByClassEnabled = true;
 
-		var createInstance = function( elementOrIdOrName, config, creationFunction )
+		var createInstance = function( elementOrIdOrName, config, creationFunction, data )
 		{
 			if ( CKEDITOR.env.isCompatible )
@@ -89,5 +89,5 @@
 					CKEDITOR.loadFullCore();
 
-				var editor = creationFunction( elementOrIdOrName, config );
+				var editor = creationFunction( elementOrIdOrName, config, data );
 				CKEDITOR.add( editor );
 				return editor;
@@ -127,4 +127,5 @@
 		 *		editor instance. Configurations set here will override global CKEditor
 		 *		settings.
+		 * @param {String} [data] Since 3.3. Initial value for the instance.
 		 * @returns {CKEDITOR.editor} The editor instance created.
 		 * @example
@@ -133,7 +134,7 @@
 		 * <b>CKEDITOR.appendTo( 'editorSpace' )</b>;
 		 */
-		CKEDITOR.appendTo = function( elementOrId, config )
-		{
-			return createInstance( elementOrId, config, CKEDITOR.editor.appendTo );
+		CKEDITOR.appendTo = function( elementOrId, config, data )
+		{
+			return createInstance( elementOrId, config, CKEDITOR.editor.appendTo, data );
 		};
 
@@ -188,5 +189,5 @@
 					// parameter.
 
-					var classRegex = new RegExp( '(?:^| )' + arguments[0] + '(?:$| )' );
+					var classRegex = new RegExp( '(?:^|\\s)' + arguments[0] + '(?:$|\\s)' );
 
 					if ( !classRegex.test( textarea.className ) )
Index: /CKEditor/branches/features/adobeair/_source/core/command.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/command.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/command.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -13,6 +13,6 @@
 			return false;
 
-		// The editor will always have the focus when executing a command.
-		editor.focus();
+		if ( this.editorFocus )     // Give editor focus if necessary (#4355).
+			editor.focus();
 
 		return ( commandDefinition.exec.call( this, editor, data ) !== false );
@@ -23,4 +23,5 @@
 		{
 			modes : { wysiwyg : 1 },
+			editorFocus : true,
 			state : CKEDITOR.TRISTATE_OFF
 		});
Index: /CKEditor/branches/features/adobeair/_source/core/commanddefinition.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/commanddefinition.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/commanddefinition.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -71,2 +71,32 @@
  * });
  */
+
+/**
+ * Whether the command should give focus to the editor before execution.
+ * @name  CKEDITOR.commandDefinition.editorFocus
+ * @type {Boolean}
+ * @example
+ * editorInstance.addCommand( 'maximize',
+ * {
+ *     exec : function( editor )
+ *     {
+ *     },
+ *     editorFocus : false    // The command doesn't require focusing the editing document.
+ * });
+ */
+
+
+/**
+ * Whether the command state should be set to {@link CKEDITOR.TRISTATE_DISABLED} on startup.
+ * @name  CKEDITOR.commandDefinition.startDisabled
+ * @type {Boolean}
+ * @default false
+ * @example
+ * editorInstance.addCommand( 'unlink',
+ * {
+ *     exec : function( editor )
+ *     {
+ *     },
+ *     startDisabled : true    // Command is unavailable until selection is inside a link.
+ * });
+ */
Index: /CKEditor/branches/features/adobeair/_source/core/config.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/config.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/config.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -41,5 +41,5 @@
 	 * CKEDITOR.replace( 'myfiled', { customConfig : '' } );
 	 */
-	customConfig : CKEDITOR.getUrl( 'config.js' ),
+	customConfig : 'config.js',
 
 	/**
@@ -64,11 +64,12 @@
 
 	/**
-	 * The CSS file to be used to apply style to the contents. It should
+	 * The CSS file(s) to be used to apply style to the contents. It should
 	 * reflect the CSS used in the final pages where the contents are to be
 	 * used.
-	 * @type String
+	 * @type String|Array
 	 * @default '&lt;CKEditor folder&gt;/contents.css'
 	 * @example
 	 * config.contentsCss = '/css/mysitestyles.css';
+	 * config.contentsCss = ['/css/mysitestyles.css', '/css/anotherfile.css'];
 	 */
 	contentsCss : CKEDITOR.basePath + 'contents.css',
@@ -76,12 +77,26 @@
 	/**
 	 * The writting direction of the language used to write the editor
-	 * contents. Allowed values are 'ltr' for Left-To-Right language (like
-	 * English), or 'rtl' for Right-To-Left languages (like Arabic).
-	 * @default 'ltr'
+	 * contents. Allowed values are:
+	 * <ul>
+	 *     <li>'ui' - which indicate content direction will be the same with the user interface language direction;</li>
+	 *     <li>'ltr' - for Left-To-Right language (like English);</li>
+	 *     <li>'rtl' - for Right-To-Left languages (like Arabic).</li>
+	 * </ul>
+	 * @default 'ui'
 	 * @type String
 	 * @example
 	 * config.contentsLangDirection = 'rtl';
 	 */
-	contentsLangDirection : 'ltr',
+	contentsLangDirection : 'ui',
+
+	/**
+	 * Language code of  the writting language which is used to author the editor
+	 * contents.
+	 * @default Same value with editor's UI language.
+	 * @type String
+	 * @example
+	 * config.contentsLanguage = 'fr';
+	 */
+	contentsLanguage : '',
 
 	/**
@@ -89,6 +104,6 @@
 	 * automatically localize the editor to the user language, if supported,
 	 * otherwise the {@link CKEDITOR.config.defaultLanguage} language is used.
-	 * @default true
-	 * @type Boolean
+	 * @default '' (empty)
+	 * @type String
 	 * @example
 	 * // Load the German interface.
@@ -130,4 +145,16 @@
 
 	/**
+	 * Force the respect of {@link CKEDITOR.config.enterMode} as line break regardless of the context,
+	 * E.g. If {@link CKEDITOR.config.enterMode} is set to {@link CKEDITOR.ENTER_P},
+	 * press enter key inside a 'div' will create a new paragraph with 'p' instead of 'div'.
+	 * @since 3.2.1
+	 * @default false
+	 * @example
+	 * // Not recommended.
+	 * config.forceEnterMode = true;
+	 */
+	forceEnterMode : false,
+
+	/**
 	 * Just like the {@link CKEDITOR.config.enterMode} setting, it defines the behavior for the SHIFT+ENTER key.
 	 * The allowed values are the following constants, and their relative
@@ -167,8 +194,27 @@
 
 	/**
+	 * Sets the "id" attribute to be used on the body element of the editing
+	 * area.
+	 * @since 3.1
+	 * @type String
+	 * @default ''
+	 */
+	bodyId : '',
+
+	/**
+	 * Sets the "class" attribute to be used on the body element of the editing
+	 * area.
+	 * @since 3.1
+	 * @type String
+	 * @default ''
+	 */
+	bodyClass : '',
+
+	/**
 	 * Indicates whether the contents to be edited are being inputted as a full
 	 * HTML page. A full page includes the &lt;html&gt;, &lt;head&gt; and
 	 * &lt;body&gt; tags. The final output will also reflect this setting,
 	 * including the &lt;body&gt; contents only if this setting is disabled.
+	 * @since 3.1
 	 * @type Boolean
 	 * @default false
@@ -179,5 +225,6 @@
 
 	/**
-	 * The height of editing area( content ), in relative or pixel integer.
+	 * The height of editing area( content ), in relative or absolute, e.g. 30px, 5em.
+	 * Note: Percentage unit is not supported yet. e.g. 30%.
 	 * @type Number|String
 	 * @default '200'
@@ -282,5 +329,4 @@
 	 */
 	baseFloatZIndex : 10000
-
 };
 
Index: /CKEditor/branches/features/adobeair/_source/core/dataprocessor.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dataprocessor.js	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_source/core/dataprocessor.js	(revision 5613)
@@ -0,0 +1,66 @@
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the "virtual" {@link CKEDITOR.dataProcessor} class, which
+ *		defines the basic structure of data processor objects to be
+ *		set to {@link CKEDITOR.editor.dataProcessor}.
+ */
+
+/**
+ * If defined, points to the data processor which is responsible to translate
+ * and transform the editor data on input and output.
+ * Generaly it will point to an instance of {@link CKEDITOR.htmlDataProcessor},
+ * which handles HTML data. The editor may also handle other data formats by
+ * using different data processors provided by specific plugins.
+ * @name CKEDITOR.editor.dataProcessor
+ * @type CKEDITOR.dataProcessor
+ */
+
+/**
+ * Represents a data processor, which is responsible to translate and transform
+ * the editor data on input and output.
+ * This class is not really part of the API. It's here for documentation
+ * purposes, and serves as the base ("interface") for data processors
+ * implementation.
+ * @name CKEDITOR.dataProcessor
+ * @contructor
+ * @example
+ */
+
+/**
+ * Transforms input data into HTML to be loaded in the editor.
+ * While the editor is able to handle non HTML data (like BBCode), at runtime
+ * it can handle HTML data only. The role of the data processor is transforming
+ * the input data into HTML through this function.
+ * @name CKEDITOR.dataProcessor.prototype.toHtml
+ * @function
+ * @param {String} data The input data to be transformed.
+ * @param {String} [fixForBody] The tag name to be used if the data must be
+ *		fixed because it is supposed to be loaded direcly into the &lt;body&gt;
+ *		tag. This is generally not used by non-HTML data processors.
+ * @example
+ * // Tranforming BBCode data, having a custom BBCode data processor.
+ * var data = 'This is [b]an example[/b].';
+ * var html = editor.dataProcessor.toHtml( data );  // '&lt;p&gt;This is &lt;b&gt;an example&lt;/b&gt;.&lt;/p&gt;'
+ */
+
+/**
+ * Transforms HTML into data to be outputted by the editor, in the format
+ * expected by the data processor.
+ * While the editor is able to handle non HTML data (like BBCode), at runtime
+ * it can handle HTML data only. The role of the data processor is transforming
+ * the HTML data containined by the editor into a specific data format through
+ * this function.
+ * @name CKEDITOR.dataProcessor.prototype.toDataFormat
+ * @function
+ * @param {String} html The HTML to be transformed.
+ * @param {String} fixForBody The tag name to be used if the output data is
+ *		coming from &lt;body&gt; and may be eventually fixed for it. This is
+ * generally not used by non-HTML data processors.
+ * // Tranforming into BBCode data, having a custom BBCode data processor.
+ * var html = '&lt;p&gt;This is &lt;b&gt;an example&lt;/b&gt;.&lt;/p&gt;';
+ * var data = editor.dataProcessor.toDataFormat( html );  // 'This is [b]an example[/b].'
+ */
Index: /CKEditor/branches/features/adobeair/_source/core/dom.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/dom.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/core/dom/comment.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/comment.js	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/comment.js	(revision 5613)
@@ -0,0 +1,32 @@
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Defines the {@link CKEDITOR.dom.comment} class, which represents
+ *		a DOM comment node.
+ */
+
+CKEDITOR.dom.comment = CKEDITOR.tools.createClass(
+{
+	base : CKEDITOR.dom.node,
+
+	$ : function( text, ownerDocument )
+	{
+		if ( typeof text == 'string' )
+			text = ( ownerDocument ? ownerDocument.$ : document ).createComment( text );
+
+		this.base( text );
+	},
+
+	proto :
+	{
+		type : CKEDITOR.NODE_COMMENT,
+
+		getOuterHtml : function()
+		{
+			return '<!--' + this.$.nodeValue + '-->';
+		}
+	}
+});
Index: /CKEditor/branches/features/adobeair/_source/core/dom/document.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/document.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/document.js	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -26,5 +26,5 @@
 CKEDITOR.dom.document.prototype = new CKEDITOR.dom.domObject();
 
-CKEDITOR.tools.extend(CKEDITOR.dom.document.prototype,
+CKEDITOR.tools.extend( CKEDITOR.dom.document.prototype,
 	/** @lends CKEDITOR.dom.document.prototype */
 {
@@ -38,8 +38,8 @@
 	{
 		if ( this.$.createStyleSheet )
-			this.$.createStyleSheet(cssFileUrl);
-		else
-		{
-			var link = new CKEDITOR.dom.element('link');
+				this.$.createStyleSheet( cssFileUrl );
+		else
+		{
+				var link = new CKEDITOR.dom.element( 'link' );
 			link.setAttributes(
 			{
@@ -49,5 +49,20 @@
 			});
 
-			this.getHead().append(link);
+				this.getHead().append( link );
+		}
+	},
+
+	appendStyleText : function( cssStyleText )
+	{
+		if ( this.$.createStyleSheet )
+		{
+			var styleSheet = this.$.createStyleSheet( "" );
+			styleSheet.cssText = cssStyleText ;
+		}
+		else
+		{
+			var style = new CKEDITOR.dom.element( 'style', this );
+			style.append( new CKEDITOR.dom.text( cssStyleText, this ) );
+			this.getHead().append( style );
 		}
 	},
@@ -55,13 +70,13 @@
 	createElement : function( name, attribsAndStyles )
 	{
-		var element = new CKEDITOR.dom.element(name, this);
+		var element = new CKEDITOR.dom.element( name, this );
 
 		if ( attribsAndStyles )
 		{
 			if ( attribsAndStyles.attributes )
-				element.setAttributes(attribsAndStyles.attributes);
+				element.setAttributes( attribsAndStyles.attributes );
 
 			if ( attribsAndStyles.styles )
-				element.setStyles(attribsAndStyles.styles);
+				element.setStyles( attribsAndStyles.styles );
 		}
 
@@ -71,5 +86,5 @@
 	createText : function( text )
 	{
-		return new CKEDITOR.dom.text(text, this);
+			return new CKEDITOR.dom.text( text, this );
 	},
 
@@ -89,6 +104,6 @@
 	getById : function( elementId )
 	{
-		var $ = this.$.getElementById(elementId);
-		return $ ? new CKEDITOR.dom.element($) : null;
+			var $ = this.$.getElementById( elementId );
+			return $ ? new CKEDITOR.dom.element( $ ) : null;
 	},
 
@@ -97,5 +112,5 @@
 		var $ = this.$.documentElement;
 
-		for ( var i = 0; $ && i < address.length; i++ )
+			for ( var i = 0 ; $ && i < address.length ; i++ )
 		{
 			var target = address[ i ];
@@ -109,5 +124,5 @@
 			var currentIndex = -1;
 
-			for ( var j = 0; j < $.childNodes.length; j++ )
+				for (var j = 0 ; j < $.childNodes.length ; j++ )
 			{
 				var candidate = $.childNodes[ j ];
@@ -131,5 +146,5 @@
 		}
 
-		return $ ? new CKEDITOR.dom.node($) : null;
+			return $ ? new CKEDITOR.dom.node( $ ) : null;
 	},
 
@@ -138,5 +153,5 @@
 		if ( !CKEDITOR.env.ie && namespace )
 			tagName = namespace + ':' + tagName;
-		return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(tagName));
+			return new CKEDITOR.dom.nodeList( this.$.getElementsByTagName( tagName ) );
 	},
 
@@ -150,9 +165,11 @@
 	getHead : function()
 	{
-		var head = this.$.getElementsByTagName( 'head' )[ 0 ];
-		head = new CKEDITOR.dom.element( head );
-
-		return (
-			/** @ignore */
+		var head = this.$.getElementsByTagName( 'head' )[0];
+		if ( !head )
+			head = this.getDocumentElement().append( new CKEDITOR.dom.element( 'head' ), true );
+		else
+			head = new CKEDITOR.dom.element( head );
+
+		return (
 				this.getHead = function()
 				{
@@ -170,8 +187,7 @@
 	getBody : function()
 	{
-		var body = new CKEDITOR.dom.element(this.$.body);
-
-		return (
-			/** @ignore */
+			var body = new CKEDITOR.dom.element( this.$.body );
+		
+		return (
 				this.getBody = function()
 				{
@@ -180,10 +196,13 @@
 	},
 
-	getDocumentElement : function()
-	{
-		var documentElement = new CKEDITOR.dom.element(this.$.documentElement);
-
-		return (
-			/** @ignore */
+		/**
+		 * Gets the DOM document element for this document.
+		 * @returns {CKEDITOR.dom.element} The DOM document element.
+		 */
+		getDocumentElement : function()
+		{
+			var documentElement = new CKEDITOR.dom.element( this.$.documentElement );
+
+		return (
 				this.getDocumentElement = function()
 				{
@@ -192,15 +211,13 @@
 	},
 
-	/**
-	 * Gets the window object that holds this document.
-	 * @returns {CKEDITOR.dom.window} The window object.
-	 * @example
-	 */
-	getWindow : function()
-	{
-		var win = new CKEDITOR.dom.window(this.$.parentWindow || this.$.defaultView);
-
-		return (
-			/** @ignore */
+		/**
+		 * Gets the window object that holds this document.
+		 * @returns {CKEDITOR.dom.window} The window object.
+		 */
+		getWindow : function()
+		{
+			var win = new CKEDITOR.dom.window( this.$.parentWindow || this.$.defaultView );
+
+		return (
 				this.getWindow = function()
 				{
@@ -209,8 +226,8 @@
 	},
 
-	write : function( html )
+	write : function( html, mode )
 	{
 		// document.write() or document.writeln() fail silently after
-		// the page load event has been handled in Adobe AIR.
+		// the page load event in Adobe AIR.
 		// DOM manipulation could be used instead.
 		if ( CKEDITOR.env.air && this.getBody() )
@@ -262,14 +279,15 @@
 					docBody = doc.getBody();
 
-			if( bodyContent )
-			{
-				docBody.setHtml( bodyContent );
-				bodyAttrs && docBody.setAttributes( bodyAttrs );
-			}
-		}
-		else
-		{
-			this.$.open();
-			this.$.write(html);
+			bodyContent && docBody.setHtml( bodyContent );
+			bodyAttrs && docBody.setAttributes( bodyAttrs );
+			
+		}
+		else
+		{
+			this.$.open( "text/html", mode );
+			// Support for custom document.domain in IE.
+			if ( CKEDITOR.env.isCustomDomain() )
+				this.$.domain = document.domain;
+			this.$.write( html );
 			this.$.close();
 		}
Index: /CKEditor/branches/features/adobeair/_source/core/dom/documentfragment.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/documentfragment.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/documentfragment.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/core/dom/domobject.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/domobject.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/domobject.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -116,4 +116,24 @@
 				}
 			}
+		},
+
+		/**
+		 * Removes any listener set on this object.
+		 * To avoid memory leaks we must assure that there are no
+		 * references left after the object is no longer needed.
+		 */
+		removeAllListeners : function()
+		{
+			var nativeListeners = this.getCustomData( '_cke_nativeListeners' );
+			for ( var eventName in nativeListeners )
+			{
+				var listener = nativeListeners[ eventName ];
+				if ( this.$.removeEventListener )
+					this.$.removeEventListener( eventName, listener, false );
+				else if ( this.$.detachEvent )
+					this.$.detachEvent( 'on' + eventName, listener );
+
+				delete nativeListeners[ eventName ];
+			}
 		}
 	};
@@ -123,4 +143,9 @@
 {
 	var customData = {};
+
+	CKEDITOR.on( 'reset', function()
+		{
+			customData = {};
+		});
 
 	/**
@@ -182,4 +207,7 @@
 	};
 
+	/**
+	 * @name CKEDITOR.dom.domObject.prototype.removeCustomData
+	 */
 	domObjectProto.removeCustomData = function( key )
 	{
@@ -194,4 +222,23 @@
 	};
 
+	/**
+	 * Removes any data stored on this object.
+	 * To avoid memory leaks we must assure that there are no
+	 * references left after the object is no longer needed.
+	 * @name CKEDITOR.dom.domObject.prototype.clearCustomData
+	 * @function
+	 */
+	domObjectProto.clearCustomData = function()
+	{
+		// Clear all event listeners
+		this.removeAllListeners();
+
+		var expandoNumber = this.$._cke_expando;
+		expandoNumber && delete customData[ expandoNumber ];
+	};
+
+	/**
+	 * @name CKEDITOR.dom.domObject.prototype.getCustomData
+	 */
 	domObjectProto.getUniqueId = function()
 	{
Index: /CKEditor/branches/features/adobeair/_source/core/dom/element.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/element.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/element.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -244,8 +244,11 @@
 			if ( !lastChild || !lastChild.is || !lastChild.is( 'br' ) )
 			{
-				this.append(
-					CKEDITOR.env.opera ?
+				var bogus = CKEDITOR.env.opera ?
 						this.getDocument().createText('') :
-						this.getDocument().createElement( 'br' ) );
+						this.getDocument().createElement( 'br' );
+
+				CKEDITOR.env.gecko && bogus.setAttribute( 'type', '_moz' );
+
+				this.append( bogus );
 			}
 		},
@@ -257,13 +260,13 @@
 		 * @example
 		 * // Before breaking:
-		 * //     <b>This <i>is some<span /> sample</i> test text</b>
-		 * // If "element" is <span /> and "parent" is <i>:
-		 * //     <b>This <i>is some</i><span /><i> sample</i> test text</b>
+		 * //     &lt;b&gt;This &lt;i&gt;is some&lt;span /&gt; sample&lt;/i&gt; test text&lt;/b&gt;
+		 * // If "element" is &lt;span /&gt; and "parent" is &lt;i&gt;:
+		 * //     &lt;b&gt;This &lt;i&gt;is some&lt;/i&gt;&lt;span /&gt;&lt;i&gt; sample&lt;/i&gt; test text&lt;/b&gt;
 		 * element.breakParent( parent );
 		 * @example
 		 * // Before breaking:
-		 * //     <b>This <i>is some<span /> sample</i> test text</b>
-		 * // If "element" is <span /> and "parent" is <b>:
-		 * //     <b>This <i>is some</i></b><span /><b><i> sample</i> test text</b>
+		 * //     &lt;b&gt;This &lt;i&gt;is some&lt;span /&gt; sample&lt;/i&gt; test text&lt;/b&gt;
+		 * // If "element" is &lt;span /&gt; and "parent" is &lt;b&gt;:
+		 * //     &lt;b&gt;This &lt;i&gt;is some&lt;/i&gt;&lt;/b&gt;&lt;span /&gt;&lt;b&gt;&lt;i&gt; sample&lt;/i&gt; test text&lt;/b&gt;
 		 * element.breakParent( parent );
 		 */
@@ -329,5 +332,7 @@
 		getHtml : function()
 		{
-			return this.$.innerHTML;
+			var retval = this.$.innerHTML;
+			// Strip <?xml:namespace> tags in IE. (#3341).
+			return CKEDITOR.env.ie ? retval.replace( /<\?[^>]*>/g, '' ) : retval;
 		},
 
@@ -426,6 +431,14 @@
 
 						case 'checked':
-							return this.$.checked;
-							break;
+						{
+							var attr = this.$.attributes.getNamedItem( name ),
+								attrValue = attr.specified ? attr.nodeValue     // For value given by parser.
+															 : this.$.checked;  // For value created via DOM interface.
+
+							return attrValue ? 'checked' : null;
+						}
+
+						case 'hspace':
+							return this.$.hspace;
 
 						case 'style':
@@ -609,5 +622,4 @@
 
 			return (
-			/** @ignore */
 			this.getName = function()
 				{
@@ -628,4 +640,5 @@
 		/**
 		 * Gets the first child node of this element.
+		 * @param {Function} evaluator Filtering the result node.
 		 * @returns {CKEDITOR.dom.node} The first child node or null if not
 		 *		available.
@@ -635,8 +648,12 @@
 		 * alert( first.getName() );  // "b"
 		 */
-		getFirst : function()
-		{
-			var $ = this.$.firstChild;
-			return $ ? new CKEDITOR.dom.node( $ ) : null;
+		getFirst : function( evaluator )
+		{
+			var first = this.$.firstChild,
+				retval = first && new CKEDITOR.dom.node( first );
+			if ( retval && evaluator && !evaluator( retval ) )
+				retval = retval.getNext( evaluator );
+
+			return retval;
 		},
 
@@ -723,6 +740,6 @@
 				{
 					attribute = otherAttribs[ i ];
-
-					if ( ( !CKEDITOR.env.ie || ( attribute.specified && attribute.nodeName != '_cke_expando' ) ) && attribute.nodeValue != thisAttribs.getAttribute( attribute.nodeName ) )
+					if ( attribute.specified && attribute.nodeName != '_cke_expando'
+							&& attribute.nodeValue != this.getAttribute( attribute.nodeName ) )
 						return false;
 				}
@@ -740,5 +757,47 @@
 		isVisible : function()
 		{
-			return this.$.offsetWidth && ( this.$.style.visibility != 'hidden' );
+			var isVisible = !!this.$.offsetHeight && this.getComputedStyle( 'visibility' ) != 'hidden',
+				elementWindow,
+				elementWindowFrame;
+
+			// Webkit and Opera report non-zero offsetHeight despite that
+			// element is inside an invisible iframe. (#4542)
+			if ( isVisible && ( CKEDITOR.env.webkit || CKEDITOR.env.opera ) )
+			{
+				elementWindow = this.getWindow();
+
+				if ( !elementWindow.equals( CKEDITOR.document.getWindow() )
+						&& ( elementWindowFrame = elementWindow.$.frameElement ) )
+				{
+					isVisible = new CKEDITOR.dom.element( elementWindowFrame ).isVisible();
+				}
+			}
+
+			return isVisible;
+		},
+
+		/**
+		 * Whether it's an empty inline elements which has no visual impact when removed.
+		 */
+		isEmptyInlineRemoveable : function()
+		{
+			if ( !CKEDITOR.dtd.$removeEmpty[ this.getName() ] )
+				return false;
+
+			var children = this.getChildren();
+			for ( var i = 0, count = children.count(); i < count; i++ )
+			{
+				var child = children.getItem( i );
+
+				if ( child.type == CKEDITOR.NODE_ELEMENT && child.getAttribute( '_fck_bookmark' ) )
+					continue;
+
+				if ( child.type == CKEDITOR.NODE_ELEMENT && !child.isEmptyInlineRemoveable()
+					|| child.type == CKEDITOR.NODE_TEXT && CKEDITOR.tools.trim( child.getText() ) )
+				{
+					return false;
+				}
+			}
+			return true;
 		},
 
@@ -840,4 +899,54 @@
 			}
 		},
+
+		mergeSiblings : ( function()
+		{
+			function mergeElements( element, sibling, isNext )
+			{
+				if ( sibling && sibling.type == CKEDITOR.NODE_ELEMENT )
+				{
+					// Jumping over bookmark nodes and empty inline elements, e.g. <b><i></i></b>,
+					// queuing them to be moved later. (#5567)
+					var pendingNodes = [];
+
+					while ( sibling.getAttribute( '_fck_bookmark' )
+						|| sibling.isEmptyInlineRemoveable() )
+					{
+						pendingNodes.push( sibling );
+						sibling = isNext ? sibling.getNext() : sibling.getPrevious();
+						if ( !sibling || sibling.type != CKEDITOR.NODE_ELEMENT )
+							return;
+					}
+
+					if ( element.isIdentical( sibling ) )
+					{
+						// Save the last child to be checked too, to merge things like
+						// <b><i></i></b><b><i></i></b> => <b><i></i></b>
+						var innerSibling = isNext ? element.getLast() : element.getFirst();
+
+						// Move pending nodes first into the target element.
+						while( pendingNodes.length )
+							pendingNodes.shift().move( element, !isNext );
+
+						sibling.moveChildren( element, !isNext );
+						sibling.remove();
+
+						// Now check the last inner child (see two comments above).
+						if ( innerSibling && innerSibling.type == CKEDITOR.NODE_ELEMENT )
+							innerSibling.mergeSiblings();
+					}
+				}
+			}
+
+			return function()
+				{
+					// Merge empty links and anchors also. (#5567)
+					if ( !( CKEDITOR.dtd.$removeEmpty[ this.getName() ] || this.is( 'a' ) ) )
+						return;
+
+					mergeElements( this, this.getNext(), true );
+					mergeElements( this, this.getPrevious() );
+				};
+		} )(),
 
 		/**
@@ -958,6 +1067,14 @@
 		removeAttributes : function ( attributes )
 		{
-			for ( var i = 0 ; i < attributes.length ; i++ )
-				this.removeAttribute( attributes[ i ] );
+			if ( CKEDITOR.tools.isArray( attributes ) )
+			{
+				for ( var i = 0 ; i < attributes.length ; i++ )
+					this.removeAttribute( attributes[ i ] );
+			}
+			else
+			{
+				for ( var attr in attributes )
+					attributes.hasOwnProperty( attr ) && this.removeAttribute( attr );
+			}
 		},
 
@@ -972,8 +1089,7 @@
 		removeStyle : function( name )
 		{
+			this.setStyle( name, '' );
 			if ( this.$.style.removeAttribute )
 				this.$.style.removeAttribute( CKEDITOR.tools.cssStyleToDomStyle( name ) );
-			else
-				this.setStyle( name, '' );
 
 			if ( !this.$.style.cssText )
@@ -1307,14 +1423,20 @@
 				var attribute = attributes[n];
 
+				// Lowercase attribute name hard rule is broken for
+				// some attribute on IE, e.g. CHECKED.
+				var attrName = attribute.nodeName.toLowerCase(),
+					attrValue;
+
+				// We can set the type only once, so do it with the proper value, not copying it.
+				if ( attrName in skipAttributes )
+					continue;
+
+				if ( attrName == 'checked' && ( attrValue = this.getAttribute( attrName ) ) )
+					dest.setAttribute( attrName, attrValue );
 				// IE BUG: value attribute is never specified even if it exists.
-				if ( attribute.specified ||
-				  ( CKEDITOR.env.ie && attribute.nodeValue && attribute.nodeName.toLowerCase() == 'value' ) )
-				{
-					var attrName = attribute.nodeName;
-					// We can set the type only once, so do it with the proper value, not copying it.
-					if ( attrName in skipAttributes )
-						continue;
-
-					var attrValue = this.getAttribute( attrName );
+				else if ( attribute.specified ||
+				  ( CKEDITOR.env.ie && attribute.nodeValue && attrName == 'value' ) )
+				{
+					attrValue = this.getAttribute( attrName );
 					if ( attrValue === null )
 						attrValue = attribute.nodeValue;
@@ -1351,5 +1473,5 @@
 
 			// Replace the node.
-			this.$.parentNode.replaceChild( newNode.$, this.$ );
+			this.getParent() && this.$.parentNode.replaceChild( newNode.$, this.$ );
 			newNode.$._cke_expando = this.$._cke_expando;
 			this.$ = newNode.$;
Index: /CKEditor/branches/features/adobeair/_source/core/dom/elementpath.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/elementpath.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/elementpath.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -7,5 +7,5 @@
 {
 	// Elements that may be considered the "Block boundary" in an element path.
-	var pathBlockElements = { address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 };
+	var pathBlockElements = { address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,dd:1 };
 
 	// Elements that may be considered the "Block limit" in an element path.
@@ -101,4 +101,16 @@
 
 		return true;
+	},
+
+	contains : function( tagNames )
+	{
+		var elements = this.elements;
+		for ( var i = 0 ; i < elements.length ; i++ )
+		{
+			if ( elements[ i ].getName() in tagNames )
+				return elements[ i ];
+		}
+
+		return null;
 	}
 };
Index: /CKEditor/branches/features/adobeair/_source/core/dom/event.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/event.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/event.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/core/dom/node.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/node.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/node.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -26,4 +26,8 @@
 		switch ( domNode.nodeType )
 		{
+			// Safari don't consider document as element node type. (#3389)
+			case CKEDITOR.NODE_DOCUMENT :
+				return new CKEDITOR.dom.document( domNode );
+
 			case CKEDITOR.NODE_ELEMENT :
 				return new CKEDITOR.dom.element( domNode );
@@ -48,4 +52,11 @@
  */
 CKEDITOR.NODE_ELEMENT = 1;
+
+/**
+ * Document node type.
+ * @constant
+ * @example
+ */
+CKEDITOR.NODE_DOCUMENT = 9;
 
 /**
@@ -195,25 +206,28 @@
 				var currentIndex = -1;
 
-				for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
-				{
-					var candidate = parentNode.childNodes[i];
-
-					if ( normalized &&
-							candidate.nodeType == 3 &&
-							candidate.previousSibling &&
-							candidate.previousSibling.nodeType == 3 )
+				if ( parentNode )
+				{
+					for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
 					{
-						continue;
+						var candidate = parentNode.childNodes[i];
+
+						if ( normalized &&
+								candidate.nodeType == 3 &&
+								candidate.previousSibling &&
+								candidate.previousSibling.nodeType == 3 )
+						{
+							continue;
+						}
+
+						currentIndex++;
+
+						if ( candidate == node )
+							break;
 					}
 
-					currentIndex++;
-
-					if ( candidate == node )
-						break;
+					address.unshift( currentIndex );
 				}
 
-				address.unshift( currentIndex );
-
-				node = node.parentNode;
+				node = parentNode;
 			}
 
Index: /CKEditor/branches/features/adobeair/_source/core/dom/nodelist.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/nodelist.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/nodelist.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/core/dom/range.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/range.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/range.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -134,5 +134,5 @@
 			currentNode = levelStartNode.getNext();
 
-			while( currentNode )
+			while ( currentNode )
 			{
 				// Stop processing when the current node matches a node in the
@@ -181,5 +181,5 @@
 				currentNode = levelStartNode.getPrevious();
 
-				while( currentNode )
+				while ( currentNode )
 				{
 					// Stop processing when the current node matches a node in the
@@ -253,8 +253,8 @@
 
 		// Cleanup any marked node.
-		if( removeStartNode )
+		if ( removeStartNode )
 			startNode.remove();
 
-		if( removeEndNode && endNode.$.parentNode )
+		if ( removeEndNode && endNode.$.parentNode )
 			endNode.remove();
 	};
@@ -279,5 +279,5 @@
 					return false;
 				}
-			else
+			else if ( node.type == CKEDITOR.NODE_ELEMENT )
 			{
 				// If there are non-empty inline elements (e.g. <img />), then we're not
@@ -307,4 +307,13 @@
 			    || !CKEDITOR.tools.trim( node.getText() )
 			    || node.getParent().hasAttribute( '_fck_bookmark' );
+	}
+
+	var whitespaceEval = new CKEDITOR.dom.walker.whitespaces(),
+		bookmarkEval = new CKEDITOR.dom.walker.bookmark();
+
+	function nonWhitespaceOrBookmarkEval( node )
+	{
+		// Whitespaces and bookmark nodes are to be ignored.
+		return !whitespaceEval( node ) && !bookmarkEval( node );
 	}
 
@@ -734,7 +743,10 @@
 					startOffset = startContainer.getIndex() + 1;
 					startContainer = startContainer.getParent();
-					// Check if it is necessary to update the end boundary.
-					if ( !collapsed && this.startContainer.equals( this.endContainer ) )
+
+					// Check all necessity of updating the end boundary.
+					if ( this.startContainer.equals( this.endContainer ) )
 						this.setEnd( nextText, this.endOffset - this.startOffset );
+					else if ( startContainer.equals( this.endContainer ) )
+						this.endOffset += 1;
 				}
 
@@ -742,5 +754,8 @@
 
 				if ( collapsed )
+				{
 					this.collapse( true );
+					return;
+				}
 			}
 
@@ -911,5 +926,5 @@
 										siblingText = sibling.getText();
 
-										if ( !(/[^\s\ufeff]/).test( siblingText ) )	// Spaces + Zero Width No-Break Space (U+FEFF)
+										if ( (/[^\s\ufeff]/).test( siblingText ) )	// Spaces + Zero Width No-Break Space (U+FEFF)
 											sibling = null;
 										else
@@ -1070,5 +1085,5 @@
 										siblingText = sibling.getText();
 
-										if ( !(/[^\s\ufeff]/).test( siblingText ) )
+										if ( (/[^\s\ufeff]/).test( siblingText ) )
 											sibling = null;
 										else
@@ -1184,5 +1199,6 @@
 							blockBoundary,
 							!blockBoundary.is( 'br' ) &&
-							( !enlargeable || blockBoundary.contains( enlargeable ) ) ?
+							( !enlargeable && this.checkStartOfBlock()
+							  || enlargeable && blockBoundary.contains( enlargeable ) ) ?
 								CKEDITOR.POSITION_AFTER_START :
 								CKEDITOR.POSITION_AFTER_END );
@@ -1209,6 +1225,6 @@
 					this.setEndAt(
 							blockBoundary,
-							!blockBoundary.is( 'br' ) &&
-							( !enlargeable || blockBoundary.contains( enlargeable ) ) ?
+							( !enlargeable && this.checkEndOfBlock()
+							  || enlargeable && blockBoundary.contains( enlargeable ) ) ?
 								CKEDITOR.POSITION_BEFORE_END :
 								CKEDITOR.POSITION_BEFORE_START );
@@ -1217,4 +1233,98 @@
 					if ( tailBr )
 						this.setEndAfter( tailBr );
+			}
+		},
+
+		/**
+		 *  Descrease the range to make sure that boundaries
+		 *  always anchor beside text nodes or innermost element.
+		 * @param {Number} mode  ( CKEDITOR.SHRINK_ELEMENT | CKEDITOR.SHRINK_TEXT ) The shrinking mode.
+		 */
+		shrink : function( mode, selectContents )
+		{
+			// Unable to shrink a collapsed range.
+			if ( !this.collapsed )
+			{
+				mode = mode || CKEDITOR.SHRINK_TEXT;
+
+				var walkerRange = this.clone();
+
+				var startContainer = this.startContainer,
+					endContainer = this.endContainer,
+					startOffset = this.startOffset,
+					endOffset = this.endOffset,
+					collapsed = this.collapsed;
+
+				// Whether the start/end boundary is moveable.
+				var moveStart = 1,
+						moveEnd = 1;
+
+				if ( startContainer && startContainer.type == CKEDITOR.NODE_TEXT )
+				{
+					if ( !startOffset )
+						walkerRange.setStartBefore( startContainer );
+					else if ( startOffset >= startContainer.getLength( ) )
+						walkerRange.setStartAfter( startContainer );
+					else
+					{
+						// Enlarge the range properly to avoid walker making
+						// DOM changes caused by triming the text nodes later.
+						walkerRange.setStartBefore( startContainer );
+						moveStart = 0;
+					}
+				}
+
+				if ( endContainer && endContainer.type == CKEDITOR.NODE_TEXT )
+				{
+					if ( !endOffset )
+						walkerRange.setEndBefore( endContainer );
+					else if ( endOffset >= endContainer.getLength( ) )
+						walkerRange.setEndAfter( endContainer );
+					else
+					{
+						walkerRange.setEndAfter( endContainer );
+						moveEnd = 0;
+					}
+				}
+
+				var walker = new CKEDITOR.dom.walker( walkerRange );
+
+				walker.evaluator = function( node )
+				{
+					return node.type == ( mode == CKEDITOR.SHRINK_ELEMENT ?
+						CKEDITOR.NODE_ELEMENT : CKEDITOR.NODE_TEXT );
+				};
+
+				var currentElement;
+				walker.guard = function( node, movingOut )
+				{
+					// Stop when we're shrink in element mode while encountering a text node.
+					if ( mode == CKEDITOR.SHRINK_ELEMENT && node.type == CKEDITOR.NODE_TEXT )
+						return false;
+
+					// Stop when we've already walked "through" an element.
+					if ( movingOut && node.equals( currentElement ) )
+						return false;
+
+					if ( !movingOut && node.type == CKEDITOR.NODE_ELEMENT )
+						currentElement = node;
+
+					return true;
+				};
+
+				if ( moveStart )
+				{
+					var textStart = walker[ mode == CKEDITOR.SHRINK_ELEMENT ? 'lastForward' : 'next']();
+					textStart && this.setStartAt( textStart, selectContents ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_START );
+				}
+
+				if ( moveEnd )
+				{
+					walker.reset();
+					var textEnd = walker[ mode == CKEDITOR.SHRINK_ELEMENT ? 'lastBackward' : 'previous']();
+					textEnd && this.setEndAt( textEnd, selectContents ? CKEDITOR.POSITION_BEFORE_END : CKEDITOR.POSITION_AFTER_END );
+				}
+
+				return !!( moveStart || moveEnd );
 			}
 		},
@@ -1273,4 +1383,9 @@
 			// ignore it for now.
 
+			// Fixing invalid range start inside dtd empty elements.
+			if( startNode.type == CKEDITOR.NODE_ELEMENT
+				&& CKEDITOR.dtd.$empty[ startNode.getName() ] )
+				startNode = startNode.getParent(), startOffset = startNode.getIndex();
+
 			this.startContainer	= startNode;
 			this.startOffset	= startOffset;
@@ -1299,4 +1414,9 @@
 			// it for now.
 
+			// Fixing invalid range end inside dtd empty elements.
+			if( endNode.type == CKEDITOR.NODE_ELEMENT
+				&& CKEDITOR.dtd.$empty[ endNode.getName() ] )
+				endNode = endNode.getParent(), endOffset = endNode.getIndex() + 1;
+
 			this.endContainer	= endNode;
 			this.endOffset		= endOffset;
@@ -1458,16 +1578,5 @@
 				else
 				{
-					// Extract the contents of the block from the selection point to the end
-					// of its contents.
-					this.setEndAt( startBlock, CKEDITOR.POSITION_BEFORE_END );
-					var documentFragment = this.extractContents();
-
-					// Duplicate the block element after it.
-					endBlock = startBlock.clone( false );
-
-					// Place the extracted contents into the duplicated block.
-					documentFragment.appendTo( endBlock );
-					endBlock.insertAfter( startBlock );
-					this.moveToPosition( startBlock, CKEDITOR.POSITION_AFTER_END );
+					endBlock = this.splitElement( startBlock );
 
 					// In Gecko, the last child node must be a bogus <br>.
@@ -1489,4 +1598,31 @@
 
 		/**
+		 * Branch the specified element from the collapsed range position and
+		 * place the caret between the two result branches.
+		 * Note: The range must be collapsed and been enclosed by this element.
+		 * @param {CKEDITOR.dom.element} element
+		 * @return {CKEDITOR.dom.element} Root element of the new branch after the split.
+		 */
+		splitElement : function( toSplit )
+		{
+			if ( !this.collapsed )
+				return null;
+
+			// Extract the contents of the block from the selection point to the end
+			// of its contents.
+			this.setEndAt( toSplit, CKEDITOR.POSITION_BEFORE_END );
+			var documentFragment = this.extractContents();
+
+			// Duplicate the element after it.
+			var clone = toSplit.clone( false );
+
+			// Place the extracted contents into the duplicated element.
+			documentFragment.appendTo( clone );
+			clone.insertAfter( toSplit );
+			this.moveToPosition( toSplit, CKEDITOR.POSITION_AFTER_END );
+			return clone;
+		},
+
+		/**
 		 * Check whether current range is on the inner edge of the specified element.
 		 * @param {Number} checkType ( CKEDITOR.START | CKEDITOR.END ) The checking side.
@@ -1580,32 +1716,71 @@
 
 		/**
-		 * Moves the range boundaries to the first editing point inside an
+		 * Moves the range boundaries to the first/end editing point inside an
 		 * element. For example, in an element tree like
 		 * "&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt; Text&lt;/p&gt;", the start editing point is
 		 * "&lt;p&gt;&lt;b&gt;&lt;i&gt;^&lt;/i&gt;&lt;/b&gt; Text&lt;/p&gt;" (inside &lt;i&gt;).
-		 * @param {CKEDITOR.dom.element} targetElement The element into which
-		 *		look for the editing spot.
+		 * @param {CKEDITOR.dom.element} el The element into which look for the
+		 *		editing spot.
+		 * @param {Boolean} isMoveToEnd Whether move to the end editable position.
 		 */
-		moveToElementEditStart : function( targetElement )
-		{
-			var editableElement;
-
-			while ( targetElement && targetElement.type == CKEDITOR.NODE_ELEMENT )
-			{
-				if ( targetElement.isEditable() )
-					editableElement = targetElement;
-				else if ( editableElement )
-					break ;		// If we already found an editable element, stop the loop.
-
-				targetElement = targetElement.getFirst();
-			}
-
-			if ( editableElement )
-			{
-				this.moveToPosition(editableElement, CKEDITOR.POSITION_AFTER_START);
-				return true;
-			}
-			else
+		moveToElementEditablePosition : function( el, isMoveToEnd )
+		{
+			var isEditable;
+
+			// Empty elements are rejected.
+			if ( CKEDITOR.dtd.$empty[ el.getName() ] )
 				return false;
+
+			while ( el && el.type == CKEDITOR.NODE_ELEMENT )
+			{
+				isEditable = el.isEditable();
+
+				// If an editable element is found, move inside it.
+				if ( isEditable )
+					this.moveToPosition( el, isMoveToEnd ?
+					                         CKEDITOR.POSITION_BEFORE_END :
+					                         CKEDITOR.POSITION_AFTER_START );
+				// Stop immediately if we've found a non editable inline element (e.g <img>).
+				else if ( CKEDITOR.dtd.$inline[ el.getName() ] )
+				{
+					this.moveToPosition( el, isMoveToEnd ?
+					                         CKEDITOR.POSITION_AFTER_END :
+					                         CKEDITOR.POSITION_BEFORE_START );
+					return true;
+				}
+
+				// Non-editable non-inline elements are to be bypassed, getting the next one.
+				if ( CKEDITOR.dtd.$empty[ el.getName() ] )
+					el = el[ isMoveToEnd ? 'getPrevious' : 'getNext' ]( nonWhitespaceOrBookmarkEval );
+				else
+					el = el[ isMoveToEnd ? 'getLast' : 'getFirst' ]( nonWhitespaceOrBookmarkEval );
+
+				// Stop immediately if we've found a text node.
+				if ( el && el.type == CKEDITOR.NODE_TEXT )
+				{
+					this.moveToPosition( el, isMoveToEnd ?
+					                         CKEDITOR.POSITION_AFTER_END :
+					                         CKEDITOR.POSITION_BEFORE_START );
+					return true;
+				}
+			}
+
+			return isEditable;
+		},
+
+		/**
+		 *@see {CKEDITOR.dom.range.moveToElementEditablePosition}
+		 */
+		moveToElementEditStart : function( target )
+		{
+			return this.moveToElementEditablePosition( target );
+		},
+
+		/**
+		 *@see {CKEDITOR.dom.range.moveToElementEditablePosition}
+		 */
+		moveToElementEditEnd : function( target )
+		{
+			return this.moveToElementEditablePosition( target, true );
 		},
 
@@ -1615,6 +1790,13 @@
 		getEnclosedNode : function()
 		{
-			var walkerRange = this.clone(),
-				walker = new CKEDITOR.dom.walker( walkerRange ),
+			var walkerRange = this.clone();
+
+			// Optimize and analyze the range to avoid DOM destructive nature of walker. (#
+			walkerRange.optimize();
+			if ( walkerRange.startContainer.type != CKEDITOR.NODE_ELEMENT
+					|| walkerRange.endContainer.type != CKEDITOR.NODE_ELEMENT )
+				return null;
+
+			var walker = new CKEDITOR.dom.walker( walkerRange ),
 				isNotBookmarks = CKEDITOR.dom.walker.bookmark( true ),
 				isNotWhitespaces = CKEDITOR.dom.walker.whitespaces( true ),
@@ -1667,2 +1849,5 @@
 CKEDITOR.END = 2;
 CKEDITOR.STARTEND = 3;
+
+CKEDITOR.SHRINK_ELEMENT = 1;
+CKEDITOR.SHRINK_TEXT = 2;
Index: /CKEditor/branches/features/adobeair/_source/core/dom/text.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/text.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/text.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/core/dom/walker.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/walker.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/walker.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -48,5 +48,5 @@
 				return ( ( !movingOut || !limitLTR.equals( node ) )
 					&& ( !blockerLTR || !node.equals( blockerLTR ) )
-					&& ( node.type != CKEDITOR.NODE_ELEMENT || node.getName() != 'body' ) );
+					&& ( node.type != CKEDITOR.NODE_ELEMENT || !movingOut || node.getName() != 'body' ) );
 			};
 		}
@@ -63,5 +63,5 @@
 				return ( ( !movingOut || !limitRTL.equals( node ) )
 					&& ( !blockerRTL || !node.equals( blockerRTL ) )
-					&& ( node.type != CKEDITOR.NODE_ELEMENT || node.getName() != 'body' ) );
+					&& ( node.type != CKEDITOR.NODE_ELEMENT || !movingOut || node.getName() != 'body' ) );
 			};
 		}
@@ -79,5 +79,5 @@
 					return false;
 
-				return userGuard( node );
+				return userGuard( node, movingOut );
 			};
 		}
@@ -102,5 +102,5 @@
 				}
 				else
-					node = ( guard ( node ) === false ) ?
+					node = ( guard ( node, true ) === false ) ?
 						null : node.getPreviousSourceNode( true, type, guard );
 			}
@@ -116,5 +116,5 @@
 				}
 				else
-					node = ( guard ( range.startContainer ) === false ) ?
+					node = ( guard ( range.startContainer, true ) === false ) ?
 						null : range.startContainer.getNextSourceNode( true, type, guard ) ;
 			}
@@ -397,5 +397,5 @@
 
 	/**
-	 * Whether the node contains only white-spaces characters.
+	 * Whether the node is a text node containing only whitespaces characters.
 	 * @param isReject
 	 */
@@ -409,3 +409,43 @@
 		};
 	};
+
+	/**
+	 * Whether the node is invisible in wysiwyg mode.
+	 * @param isReject
+	 */
+	CKEDITOR.dom.walker.invisible = function( isReject )
+	{
+		var whitespace = CKEDITOR.dom.walker.whitespaces();
+		return function( node )
+		{
+			// Nodes that take no spaces in wysiwyg:
+			// 1. White-spaces but not including NBSP;
+			// 2. Empty inline elements, e.g. <b></b> we're checking here
+			// 'offsetHeight' instead of 'offsetWidth' for properly excluding
+			// all sorts of empty paragraph, e.g. <br />.
+			var isInvisible = whitespace( node ) || node.is && !node.$.offsetHeight;
+			return isReject ^ isInvisible;
+		};
+	};
+
+	var tailNbspRegex = /^[\t\r\n ]*(?:&nbsp;|\xa0)$/,
+		isNotWhitespaces = CKEDITOR.dom.walker.whitespaces( true ),
+		isNotBookmark = CKEDITOR.dom.walker.bookmark( false, true ),
+		fillerEvaluator = function( element )
+		{
+			return isNotBookmark( element ) && isNotWhitespaces( element );
+		};
+
+	// Check if there's a filler node at the end of an element, and return it.
+	CKEDITOR.dom.element.prototype.getBogus = function ()
+	{
+		var tail = this.getLast( fillerEvaluator );
+		if ( tail && ( !CKEDITOR.env.ie ? tail.is && tail.is( 'br' )
+				: tail.getText && tailNbspRegex.test( tail.getText() ) ) )
+		{
+			return tail;
+		}
+		return false;
+	};
+
 })();
Index: /CKEditor/branches/features/adobeair/_source/core/dom/window.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/window.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/window.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -37,5 +37,5 @@
 		{
 			// Webkit is sometimes failed to focus iframe, blur it first(#3835).
-			if( CKEDITOR.env.webkit && this.$.parent )
+			if ( CKEDITOR.env.webkit && this.$.parent )
 				this.$.parent.focus();
 			this.$.focus();
Index: /CKEditor/branches/features/adobeair/_source/core/dtd.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dtd.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/dtd.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -33,5 +33,5 @@
 CKEDITOR.dtd = (function()
 {
-    var X = CKEDITOR.tools.extend,
+	var X = CKEDITOR.tools.extend,
 
 		A = {isindex:1,fieldset:1},
@@ -40,5 +40,5 @@
 		D = X({iframe:1},C),
 		E = {hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1},
-		F = {ins:1,del:1,script:1},
+		F = {ins:1,del:1,script:1,style:1},
 		G = X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},F),
 		H = X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},G),
@@ -52,12 +52,20 @@
 		O = X({param:1},K),
 		P = X({form:1},A,D,E,I),
-		Q = {li:1};
+		Q = {li:1},
+		R = {style:1,script:1},
+		S = {base:1,link:1,meta:1,title:1},
+		T = X(S,R),
+		U = {head:1,body:1},
+		V = {html:1};
 
 	var block = {address:1,blockquote:1,center:1,dir:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,isindex:1,menu:1,noframes:1,ol:1,p:1,pre:1,table:1,ul:1};
 
-    return /** @lends CKEDITOR.dtd */ {
+	return /** @lends CKEDITOR.dtd */ {
 
 		// The "$" items have been added manually.
 
+		// List of elements living outside body.
+		$nonBodyContent: X(V,U,S),
+
 		/**
 		 * List of block elements, like "p" or "div".
@@ -67,5 +75,14 @@
 		$block : block,
 
-		$body : X({script:1}, block),
+		/**
+		 * List of block limit elements.
+		 * @type Object
+		 * @example
+		 */
+		$blockLimit : { body:1,div:1,td:1,th:1,caption:1,form:1 },
+
+		$inline : L,	// Just like span.
+
+		$body : X({script:1,style:1}, block),
 
 		$cdata : {script:1,style:1},
@@ -84,4 +101,11 @@
 		 */
 		$listItem : {dd:1,dt:1,li:1},
+
+		/**
+	     * List of list root elements.
+	     * @type Object
+	     * @example
+	     */
+	    $list: { ul:1,ol:1,dl:1},
 
 		/**
@@ -91,5 +115,5 @@
 		 * @example
 		 */
-		$nonEditable : {applet:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,script:1,textarea:1},
+		$nonEditable : {applet:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,script:1,textarea:1,param:1},
 
 		/**
@@ -114,4 +138,13 @@
 		$tableContent : {caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1},
 
+        html: U,
+        head: T,
+        style: N,
+        script: N,
+        body: P,
+        base: {},
+        link: {},
+        meta: {},
+        title: N,
         col : {},
         tr : {td:1,th:1},
@@ -138,5 +171,5 @@
         select : {optgroup:1,option:1},
         font : L,
-        ins : P,
+        ins : L,
         menu : Q,
         abbr : L,
@@ -173,5 +206,5 @@
         applet : O,
         dl : {dt:1,dd:1},
-        del : P,
+        del : L,
         isindex : {},
         fieldset : X({legend:1},K),
Index: /CKEditor/branches/features/adobeair/_source/core/editor.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/editor.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/editor.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -34,4 +34,6 @@
 			return false;
 
+		customConfig = CKEDITOR.getUrl( customConfig );
+
 		var loadedConfig = loadConfigLoaded[ customConfig ] || ( loadConfigLoaded[ customConfig ] = {} );
 
@@ -45,5 +47,5 @@
 			// If there is no other customConfig in the chain, fire the
 			// "configLoaded" event.
-			if ( editor.config.customConfig == customConfig || !loadConfig( editor ) )
+			if ( CKEDITOR.getUrl( editor.config.customConfig ) == customConfig || !loadConfig( editor ) )
 				editor.fireOnce( 'customConfigLoaded' );
 		}
@@ -114,5 +116,5 @@
 			skinName = skin[ 0 ],
 			skinPath = CKEDITOR.getUrl( skin[ 1 ] || (
-				'_source/' +	// %REMOVE_LINE%
+				'_source/' +	// @Packager.RemoveLine
 				'skins/' + skinName + '/' ) );
 
@@ -121,9 +123,11 @@
 		editor.skinClass = 'cke_skin_' + skinName;
 
+		editor.tabIndex = editor.config.tabIndex || editor.element.getAttribute( 'tabindex' ) || 0;
+
 		// Fire the "configLoaded" event.
 		editor.fireOnce( 'configLoaded' );
 
 		// Load language file.
-		loadLang( editor );
+		loadSkin( editor );
 	};
 
@@ -142,4 +146,7 @@
 				if ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 && editor.lang.dir == 'rtl' )
 					editor.lang.dir = 'ltr';
+
+				var config = editor.config;
+				config.contentsLangDirection == 'ui' && ( config.contentsLangDirection = editor.lang.dir );
 
 				loadPlugins( editor );
@@ -247,5 +254,5 @@
 						// Load the editor skin.
 						editor.fire( 'pluginsLoaded' );
-						loadSkin( editor );
+						loadTheme( editor );
 					});
 			});
@@ -256,5 +263,5 @@
 		CKEDITOR.skins.load( editor, 'editor', function()
 			{
-				loadTheme( editor );
+				loadLang( editor );
 			});
 	};
@@ -328,5 +335,5 @@
 		{
 			command = commands[ name ];
-			command[ command.modes[ mode ] ? 'enable' : 'disable' ]();
+			command[ command.startDisabled ? 'disable' : command.modes[ mode ] ? 'enable' : 'disable' ]();
 		}
 	}
@@ -437,4 +444,11 @@
 		},
 
+		/**
+		 * Add a trunk of css text to the editor which will be applied to the wysiwyg editing document.
+		 * Note: This function should be called before editor is loaded to take effect.
+		 * @param css {String} CSS text.
+		 * @example
+		 * editorInstance.addCss( 'body { background-color: grey; }' );
+		 */
 		addCss : function( css )
 		{
@@ -458,7 +472,44 @@
 				this.updateElement();
 
+			if ( this.mode )
+			{
+				// ->		currentMode.unload( holderElement );
+				this._.modes[ this.mode ].unload( this.getThemeSpace( 'contents' ) );
+			}
+
 			this.theme.destroy( this );
+
+			var toolbars,
+				index = 0,
+				j,
+				items,
+				instance;
+
+			if ( this.toolbox )
+			{
+				toolbars = this.toolbox.toolbars;
+				for ( ; index < toolbars.length ; index++ )
+				{
+					items = toolbars[ index ].items;
+					for ( j = 0 ; j < items.length ; j++ )
+					{
+						instance = items[ j ];
+						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;
+					}
+				}
+			}
+
+			if ( this.contextMenu )
+				CKEDITOR.tools.removeFunction( this.contextMenu._.functionId );
+
+			if ( this._.filebrowserFn )
+				CKEDITOR.tools.removeFunction( this._.filebrowserFn );
+
 			this.fire( 'destroy' );
 			CKEDITOR.remove( this );
+			CKEDITOR.fire( 'instanceDestroyed', null, this );
 		},
 
@@ -566,11 +617,31 @@
 
 		/**
-		 * Sets the editor data. The data must be provided in raw format.
-		 * @param {String} data HTML code to replace the curent content in the editor.
-		 * @example
-		 * CKEDITOR.instances.editor1.<b>setData( '&lt;p&gt;This is the editor data.&lt;/p&gt;' )</b>;
-		 */
-		setData : function( data )
-		{
+		 * Sets the editor data. The data must be provided in raw format (HTML).<br />
+		 * <br />
+		 * Note that this menthod is asynchronous. The "callback" parameter must
+		 * be used if interaction with the editor is needed after setting the data.
+		 * @param {String} data HTML code to replace the curent content in the
+		 *		editor.
+		 * @param {Function} callback Function to be called after the setData
+		 *		is completed.
+		 * @example
+		 * CKEDITOR.instances.editor1.<b>setData</b>( '&lt;p&gt;This is the editor data.&lt;/p&gt;' );
+		 * @example
+		 * CKEDITOR.instances.editor1.<b>setData</b>( '&lt;p&gt;Some other editor data.&lt;/p&gt;', function()
+		 *     {
+		 *         this.checkDirty();    // true
+		 *     });
+		 */
+		setData : function( data , callback )
+		{
+			if( callback )
+			{
+				this.on( 'dataReady', function( evt )
+				{
+					evt.removeListener();
+					callback.call( evt.editor );
+				} );
+			}
+
 			// Fire "setData" so data manipulation may happen.
 			var eventData = { dataValue : data };
@@ -630,8 +701,13 @@
 			if ( element && this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
 			{
+				var data = this.getData();
+
+				if ( this.config.htmlEncodeOutput )
+					data = CKEDITOR.tools.htmlEncode( data );
+
 				if ( element.is( 'textarea' ) )
-					element.setValue( this.getData() );
+					element.setValue( data );
 				else
-					element.setHtml( this.getData() );
+					element.setHtml( data );
 			}
 		}
@@ -650,2 +726,34 @@
 		}
 	});
+
+/**
+ * Whether escape HTML when editor update original input element.
+ * @name CKEDITOR.config.htmlEncodeOutput
+ * @since 3.1
+ * @type Boolean
+ * @default false
+ * @example
+ * config.htmlEncodeOutput = true;
+ */
+
+/**
+ * Fired when a CKEDITOR instance is created, but still before initializing it.
+ * To interact with a fully initialized instance, use the
+ * {@link CKEDITOR#instanceReady} event instead.
+ * @name CKEDITOR#instanceCreated
+ * @event
+ * @param {CKEDITOR.editor} editor The editor instance that has been created.
+ */
+
+/**
+ * Fired when a CKEDITOR instance is destroyed.
+ * @name CKEDITOR#instanceDestroyed
+ * @event
+ * @param {CKEDITOR.editor} editor The editor instance that has been destroyed.
+ */
+
+/**
+ * Fired when all plugins are loaded and initialized into the editor instance.
+ * @name CKEDITOR#pluginsLoaded
+ * @event
+ */
Index: /CKEditor/branches/features/adobeair/_source/core/editor_basic.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/editor_basic.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/editor_basic.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -37,8 +37,9 @@
 	 * @param {Number} [mode] The mode in which the element is linked to this
 	 *		instance.
+	 * @param {String} [data] Since 3.3. Initial value for the instance.
 	 * @augments CKEDITOR.event
 	 * @example
 	 */
-	CKEDITOR.editor = function( instanceConfig, element, mode )
+	CKEDITOR.editor = function( instanceConfig, element, mode, data )
 	{
 		this._ =
@@ -46,5 +47,6 @@
 			// Save the config to be processed later by the full core code.
 			instanceConfig : instanceConfig,
-			element : element
+			element : element,
+			data : data
 		};
 
@@ -127,19 +129,21 @@
 	 *		editor instance. Configurations set here will override global CKEditor
 	 *		settings.
+	 * @param {String} [data] Since 3.3. Initial value for the instance.
 	 * @returns {CKEDITOR.editor} The editor instance created.
 	 * @example
 	 */
-	CKEDITOR.editor.appendTo = function( elementOrId, config )
+	CKEDITOR.editor.appendTo = function( elementOrId, config, data )
 	{
-		if ( typeof elementOrId != 'object' )
+		var element = elementOrId;
+		if ( typeof element != 'object' )
 		{
-			elementOrId = document.getElementById( elementOrId );
+			element = document.getElementById( elementOrId );
 
-			if ( !elementOrId )
+			if ( !element )
 				throw '[CKEDITOR.editor.appendTo] The element with id "' + elementOrId + '" was not found.';
 		}
 
 		// Create the editor instance.
-		return new CKEDITOR.editor( config, elementOrId, CKEDITOR.ELEMENT_MODE_APPENDTO );
+		return new CKEDITOR.editor( config, element, CKEDITOR.ELEMENT_MODE_APPENDTO, data );
 	};
 
Index: /CKEditor/branches/features/adobeair/_source/core/env.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/env.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/env.js	(revision 5613)
@@ -1,4 +1,4 @@
-﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -72,7 +72,14 @@
 			quirks : ( document.compatMode == 'BackCompat' ),
 
+			mobile : ( agent.indexOf( 'mobile' ) > -1 ),
+
 			isCustomDomain : function()
 			{
-				return this.ie && document.domain != window.location.hostname;
+				var domain = document.domain,
+					hostname = window.location.hostname;
+
+				return this.ie &&
+					domain != hostname &&
+					domain != ( '[' + hostname + ']' );	// IPv6 IP support (#5434)
 			}
 		};
@@ -177,4 +184,5 @@
 		 */
 		env.isCompatible =
+			!env.mobile && (
 			( env.ie && version >= 6 ) ||
 			( env.gecko && version >= 10801 ) ||
@@ -182,5 +190,5 @@
 			( env.air && version >= 1 ) ||
 			( env.webkit && version >= 522 ) ||
-			false;
+			false );
 
 		// The CSS class to be appended on the main UI containers, making it
Index: /CKEditor/branches/features/adobeair/_source/core/event.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/event.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/event.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -78,5 +78,6 @@
 			 * @param {String} eventName The event name to which listen.
 			 * @param {Function} listenerFunction The function listening to the
-			 *		event.
+			 *		event. A single {@link CKEDITOR.eventInfo} object instanced
+			 *		is passed to this function containing all the event data.
 			 * @param {Object} [scopeObj] The object used to scope the listener
 			 *		call (the this object. If omitted, the current object is used.
Index: /CKEditor/branches/features/adobeair/_source/core/eventInfo.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/eventInfo.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/eventInfo.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/core/focusmanager.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/focusmanager.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/focusmanager.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -69,5 +69,5 @@
 			var editor = this._.editor;
 
-			editor.container.getFirst().addClass( 'cke_focus' );
+			editor.container.getChild( 1 ).addClass( 'cke_focus' );
 
 			this.hasFocus = true;
@@ -115,5 +115,5 @@
 			var editor = this._.editor;
 
-			editor.container.getFirst().removeClass( 'cke_focus' );
+			editor.container.getChild( 1 ).removeClass( 'cke_focus' );
 
 			this.hasFocus = false;
@@ -122,2 +122,16 @@
 	}
 };
+
+/**
+ * Fired when the editor instance receives the input focus.
+ * @name CKEDITOR.editor#focus
+ * @event
+ * @param {CKEDITOR.editor} editor The editor instance.
+ */
+
+/**
+ * Fired when the editor instance loses the input focus.
+ * @name CKEDITOR.editor#blur
+ * @event
+ * @param {CKEDITOR.editor} editor The editor instance.
+ */
Index: /CKEditor/branches/features/adobeair/_source/core/htmlparser.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/htmlparser.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/htmlparser.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -19,5 +19,5 @@
 (function()
 {
-	var attribsRegex	= /([\w:]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,
+	var attribsRegex	= /([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,
 		emptyAttribs	= {checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};
 
@@ -202,5 +202,5 @@
 
 				// Comment
-				if( ( tagName = parts[ 2 ] ) )
+				if ( ( tagName = parts[ 2 ] ) )
 					this.onComment( tagName );
 			}
Index: /CKEditor/branches/features/adobeair/_source/core/htmlparser/basicwriter.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/htmlparser/basicwriter.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/htmlparser/basicwriter.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -61,4 +61,8 @@
 		attribute : function( attName, attValue )
 		{
+			// Browsers don't always escape special character in attribute values. (#4683, #4719).
+			if ( typeof attValue == 'string' )
+				attValue = CKEDITOR.tools.htmlEncodeAttr( attValue );
+
 			this._.output.push( ' ', attName, '="', attValue, '"' );
 		},
@@ -118,4 +122,5 @@
 		{
 			this._.output = [];
+			this._.indent = false;
 		},
 
Index: /CKEditor/branches/features/adobeair/_source/core/htmlparser/cdata.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/htmlparser/cdata.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/htmlparser/cdata.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -20,5 +20,4 @@
 		 */
 		this.value = value;
-
 	};
 
Index: /CKEditor/branches/features/adobeair/_source/core/htmlparser/comment.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/htmlparser/comment.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/htmlparser/comment.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -45,9 +45,10 @@
 		if ( filter )
 		{
-			if ( !( comment = filter.onComment( comment ) ) )
+			if ( !( comment = filter.onComment( comment, this ) ) )
 				return;
 
 			if ( typeof comment != 'string' )
 			{
+				comment.parent = this.parent;
 				comment.writeHtml( writer, filter );
 				return;
Index: /CKEditor/branches/features/adobeair/_source/core/htmlparser/element.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/htmlparser/element.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/htmlparser/element.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -26,5 +26,5 @@
 	 * @example
 	 */
-	this.attributes = attributes;
+	this.attributes = attributes || ( attributes = {} );
 
 	/**
@@ -35,6 +35,8 @@
 	this.children = [];
 
+	var tagName = attributes._cke_real_element_type || name;
+
 	var dtd			= CKEDITOR.dtd,
-		isBlockLike	= !!( dtd.$block[ name ] || dtd.$listItem[ name ] || dtd.$tableContent[ name ] ),
+		isBlockLike	= !!( dtd.$nonBodyContent[ tagName ] || dtd.$block[ tagName ] || dtd.$listItem[ tagName ] || dtd.$tableContent[ tagName ] || dtd.$nonEditable[ tagName ] || tagName == 'br' ),
 		isEmpty		= !!dtd.$empty[ name ];
 
@@ -100,16 +102,25 @@
 			var attributes = this.attributes;
 
-			// The "_cke_replacedata" indicates that this element is replacing
-			// a data snippet, which should be outputted as is.
-			if ( attributes._cke_replacedata )
-			{
-				writer.write( attributes._cke_replacedata );
-				return;
-			}
-
 			// Ignore cke: prefixes when writing HTML.
 			var element = this,
 				writeName = element.name,
-				a, value;
+				a, newAttrName, value;
+
+			var isChildrenFiltered;
+
+			/**
+			 * Providing an option for bottom-up filtering order ( element
+			 * children to be pre-filtered before the element itself ).
+			 */
+			element.filterChildren = function()
+			{
+				if ( !isChildrenFiltered )
+				{
+					var writer = new CKEDITOR.htmlParser.basicWriter();
+					CKEDITOR.htmlParser.fragment.prototype.writeChildrenHtml.call( element, writer, filter );
+					element.children = new CKEDITOR.htmlParser.fragment.fromHtml( writer.getHtml() ).children;
+					isChildrenFiltered = 1;
+				}
+			};
 
 			if ( filter )
@@ -125,11 +136,24 @@
 						return;
 
+					element.parent = this.parent;
+
 					if ( element.name == writeName )
 						break;
 
+					// If the element has been replaced with something of a
+					// different type, then make the replacement write itself.
+					if ( element.type != CKEDITOR.NODE_ELEMENT )
+					{
+						element.writeHtml( writer, filter );
+						return;
+					}
+
 					writeName = element.name;
-					if ( !writeName )	// Send children.
+
+					// This indicate that the element has been dropped by
+					// filter but not the children.
+					if ( !writeName )
 					{
-						CKEDITOR.htmlParser.fragment.prototype.writeHtml.apply( element, arguments );
+						this.writeChildrenHtml.call( element, writer, isChildrenFiltered ? null : filter );
 						return;
 					}
@@ -144,39 +168,54 @@
 			writer.openTag( writeName, attributes );
 
-			if ( writer.sortAttributes )
-			{
-				// Copy all attributes to an array.
-				var attribsArray = [];
+			// Copy all attributes to an array.
+			var attribsArray = [];
+			// Iterate over the attributes twice since filters may alter
+			// other attributes.
+			for ( var i = 0 ; i < 2; i++ )
+			{
 				for ( a in attributes )
 				{
+					newAttrName = a;
 					value = attributes[ a ];
-
-					if ( filter && ( !( a = filter.onAttributeName( a ) ) || ( value = filter.onAttribute( element, a, value ) ) === false ) )
-						continue;
-
-					attribsArray.push( [ a, value ] );
+					if ( i == 1 )
+						attribsArray.push( [ a, value ] );
+					else if ( filter )
+					{
+						while ( true )
+						{
+							if ( !( newAttrName = filter.onAttributeName( a ) ) )
+							{
+								delete attributes[ a ];
+								break;
+							}
+							else if ( newAttrName != a )
+							{
+								delete attributes[ a ];
+								a = newAttrName;
+								continue;
+							}
+							else
+								break;
+						}
+						if ( newAttrName )
+						{
+							if ( ( value = filter.onAttribute( element, newAttrName, value ) ) === false )
+								delete attributes[ newAttrName ];
+							else
+								attributes [ newAttrName ] = value;
+						}
+					}
 				}
-
-				// Sort the attributes by name.
+			}
+			// Sort the attributes by name.
+			if ( writer.sortAttributes )
 				attribsArray.sort( sortAttribs );
 
-				// Send the attributes.
-				for ( var i = 0, len = attribsArray.length ; i < len ; i++ )
-				{
-					var attrib = attribsArray[ i ];
-					writer.attribute( attrib[0], attrib[1] );
-				}
-			}
-			else
-			{
-				for ( a in attributes )
-				{
-					value = attributes[ a ];
-
-					if ( filter && ( !( a = filter.onAttributeName( a ) ) || ( value = filter.onAttribute( element, a, value ) ) === false ) )
-						continue;
-
-					writer.attribute( a, value );
-				}
+			// Send the attributes.
+			var len = attribsArray.length;
+			for ( i = 0 ; i < len ; i++ )
+			{
+				var attrib = attribsArray[ i ];
+				writer.attribute( attrib[0], attrib[1] );
 			}
 
@@ -186,10 +225,15 @@
 			if ( !element.isEmpty )
 			{
-				// Send children.
-				CKEDITOR.htmlParser.fragment.prototype.writeHtml.apply( element, arguments );
-
+				this.writeChildrenHtml.call( element, writer, isChildrenFiltered ? null : filter );
 				// Close the element.
 				writer.closeTag( writeName );
 			}
+		},
+
+		writeChildrenHtml : function( writer, filter )
+		{
+			// Send children.
+			CKEDITOR.htmlParser.fragment.prototype.writeChildrenHtml.apply( this, arguments );
+
 		}
 	};
Index: /CKEditor/branches/features/adobeair/_source/core/htmlparser/filter.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/htmlparser/filter.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/htmlparser/filter.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -46,4 +46,7 @@
 				// Add the comment.
 				this._.comment = transformNamedItem( this._.comment, rules.comment, priority ) || this._.comment;
+
+				// Add root fragment.
+				this._.root = transformNamedItem( this._.root, rules.root, priority ) || this._.root;
 			},
 
@@ -64,8 +67,14 @@
 			},
 
-			onComment : function( commentText )
+			onComment : function( commentText, comment )
 			{
 				var textFilter = this._.comment;
-				return textFilter ? textFilter.filter( commentText ) : commentText;
+				return textFilter ? textFilter.filter( commentText, comment ) : commentText;
+			},
+
+			onFragment : function( element )
+			{
+				var rootFilter = this._.root;
+				return rootFilter ? rootFilter.filter( element ) : element;
 			},
 
@@ -75,8 +84,8 @@
 				// well as those set to the generic $ name. So, add both to an
 				// array and process them in a small loop.
-				var filters = [ this._.elements[ element.name ], this._.elements.$ ],
+				var filters = [ this._.elements[ '^' ], this._.elements[ element.name ], this._.elements.$ ],
 					filter, ret;
 
-				for ( var i = 0 ; i < 2 ; i++ )
+				for ( var i = 0 ; i < 3 ; i++ )
 				{
 					filter = filters[ i ];
@@ -89,9 +98,23 @@
 
 						if ( ret && ret != element )
-							return this.onElement( ret );
+							return this.onNode( ret );
+
+						// The non-root element has been dismissed by one of the filters.
+						if ( element.parent && !element.name )
+							break;
 					}
 				}
 
 				return element;
+			},
+
+			onNode : function( node )
+			{
+				var type = node.type;
+
+				return type == CKEDITOR.NODE_ELEMENT ? this.onElement( node ) :
+					type == CKEDITOR.NODE_TEXT ? new CKEDITOR.htmlParser.text( this.onText( node.value ) ) :
+					type == CKEDITOR.NODE_COMMENT ? new CKEDITOR.htmlParser.comment( this.onComment( node.value ) ):
+					null;
 			},
 
@@ -128,4 +151,7 @@
 	function addItemsToList( list, items, priority )
 	{
+		if ( typeof items == 'function' )
+			items = [ items ];
+
 		var i, j,
 			listLength = list.length,
@@ -142,6 +168,9 @@
 			{
 				var item = items[ j ];
-				item.pri = priority;
-				list.splice( i, 0, item );
+				if ( item )
+				{
+					item.pri = priority;
+					list.splice( i, 0, item );
+				}
 			}
 		}
@@ -199,24 +228,50 @@
 	}
 
+	// Invoke filters sequentially on the array, break the iteration
+	// when it doesn't make sense to continue anymore.
 	function callItems( currentEntry )
 	{
-		var isObject = ( typeof currentEntry == 'object' );
+		var isNode = currentEntry.type
+			|| currentEntry instanceof CKEDITOR.htmlParser.fragment;
 
 		for ( var i = 0 ; i < this.length ; i++ )
 		{
+			// Backup the node info before filtering.
+			if ( isNode )
+			{
+				var orgType = currentEntry.type,
+						orgName = currentEntry.name;
+			}
+
 			var item = this[ i ],
 				ret = item.apply( window, arguments );
 
-			if ( typeof ret != 'undefined' )
-			{
-				if ( ret === false )
-					return false;
-
-				if ( isObject && ret != currentEntry )
+			if ( ret === false )
+				return ret;
+
+			// We're filtering node (element/fragment).
+			if ( isNode )
+			{
+				// No further filtering if it's not anymore
+				// fitable for the subsequent filters.
+				if ( ret && ( ret.name != orgName
+					|| ret.type != orgType ) )
+				{
 					return ret;
-			}
-		}
-
-		return null;
+				}
+			}
+			// Filtering value (nodeName/textValue/attrValue).
+			else
+			{
+				// No further filtering if it's not
+				// any more values.
+				if ( typeof ret != 'string' )
+					return ret;
+			}
+
+			ret != undefined && ( currentEntry = ret );
+		}
+
+		return currentEntry;
 	}
 })();
Index: /CKEditor/branches/features/adobeair/_source/core/htmlparser/fragment.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/htmlparser/fragment.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/htmlparser/fragment.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -46,5 +46,6 @@
 	var nonBreakingBlocks = CKEDITOR.tools.extend(
 			{table:1,ul:1,ol:1,dl:1},
-			CKEDITOR.dtd.table, CKEDITOR.dtd.ul, CKEDITOR.dtd.ol, CKEDITOR.dtd.dl );
+			CKEDITOR.dtd.table, CKEDITOR.dtd.ul, CKEDITOR.dtd.ol, CKEDITOR.dtd.dl ),
+		listBlocks = CKEDITOR.dtd.$list, listItems = CKEDITOR.dtd.$listItem;
 
 	/**
@@ -64,4 +65,5 @@
 			fragment = new CKEDITOR.htmlParser.fragment(),
 			pendingInline = [],
+			pendingBRs = [],
 			currentNode = fragment,
 		    // Indicate we're inside a <pre> element, spaces should be touched differently.
@@ -71,4 +73,6 @@
 		function checkPending( newTagName )
 		{
+			var pendingBRsSent;
+
 			if ( pendingInline.length > 0 )
 			{
@@ -82,4 +86,10 @@
 					if ( ( !currentDtd || currentDtd[ pendingName ] ) && ( !newTagName || !pendingDtd || pendingDtd[ newTagName ] || !CKEDITOR.dtd[ newTagName ] ) )
 					{
+						if ( !pendingBRsSent )
+						{
+							sendPendingBRs();
+							pendingBRsSent = 1;
+						}
+
 						// Get a clone for the pending element.
 						pendingElement = pendingElement.clone();
@@ -97,4 +107,10 @@
 				}
 			}
+		}
+
+		function sendPendingBRs()
+		{
+			while ( pendingBRs.length )
+				currentNode.add( pendingBRs.shift() );
 		}
 
@@ -114,5 +130,7 @@
 				else
 					elementName =  element.name;
-				if ( !( elementName in CKEDITOR.dtd.$body ) )
+				if ( elementName
+						&& !( elementName in CKEDITOR.dtd.$body )
+						&& !( elementName in CKEDITOR.dtd.$nonBodyContent )  )
 				{
 					var savedCurrent = currentNode;
@@ -179,22 +197,42 @@
 			}
 
-			var currentName = currentNode.name,
-				currentDtd = ( currentName && CKEDITOR.dtd[ currentName ] ) || ( currentNode._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span );
+			if ( tagName == 'br' )
+			{
+				pendingBRs.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 ( !element.isUnknown && !currentNode.isUnknown && !currentDtd[ tagName ] )
-			{
-				// If this is the fragment node, just ignore this tag and add
-				// its children.
-				if ( !currentName )
-					return;
-
-				var reApply = false;
-
+			if ( currentDtd   // Fragment could receive any elements.
+				 && !element.isUnknown && !currentNode.isUnknown && !currentDtd[ tagName ] )
+			{
+
+				var reApply = false,
+					addPoint;   // New position to start adding nodes.
+
+				// Fixing malformed nested lists by moving it into a previous list item. (#3828)
+				if ( tagName in listBlocks
+					&& currentName in listBlocks )
+				{
+					var children = currentNode.children,
+						lastChild = children[ children.length - 1 ];
+
+					// Establish the list item if it's not existed.
+					if ( !( lastChild && lastChild.name in listItems ) )
+						addElement( ( lastChild = new CKEDITOR.htmlParser.element( 'li' ) ), currentNode );
+
+					returnPoint = currentNode, addPoint = lastChild;
+				}
 				// 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 )
+				else if ( tagName == currentName )
 				{
 					addElement( currentNode, currentNode.parent );
@@ -223,7 +261,9 @@
 				}
 
-				// In any of the above cases, we'll be adding, or trying to
-				// add it to the parent.
-				currentNode = currentNode.returnPoint || currentNode.parent;
+				if ( addPoint )
+					currentNode = addPoint;
+				// Try adding it to the return point, or the parent element.
+				else
+					currentNode = currentNode.returnPoint || currentNode.parent;
 
 				if ( reApply )
@@ -235,4 +275,5 @@
 
 			checkPending( tagName );
+			sendPendingBRs();
 
 			element.parent = currentNode;
@@ -248,20 +289,26 @@
 		parser.onTagClose = function( tagName )
 		{
-			var index = 0,
-				pendingAdd = [],
+			// 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, so
-				// it will continue after the closing tag.
+				// 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 )
-				{
-					pendingInline.unshift( candidate );
-
-					// Increase the index, so it will not get checked again in
-					// the pending list check that follows.
-					index++;
-				}
+					newPendingInline.unshift( candidate );
 
 				// This node should be added to it's parent at this point. But,
@@ -276,5 +323,5 @@
 			{
 				// Add all elements that have been found in the above loop.
-				for ( var i = 0 ; i < pendingAdd.length ; i++ )
+				for ( i = 0 ; i < pendingAdd.length ; i++ )
 				{
 					var node = pendingAdd[ i ];
@@ -284,6 +331,9 @@
 				currentNode = candidate;
 
-				if( currentNode.name == 'pre' )
+				if ( currentNode.name == 'pre' )
 					inPre = false;
+
+				if ( candidate._.isBlockLike )
+					sendPendingBRs();
 
 				addElement( candidate, candidate.parent );
@@ -293,25 +343,10 @@
 				if ( candidate == currentNode )
 					currentNode = currentNode.parent;
-			}
-			// The tag is not actually closing anything, thus we need invalidate
-			// the pending elements.(#3862)
-			else
-			{
-				pendingInline.splice( 0, index );
-				index = 0;
-			}
-
-			// Check if there is any pending tag to be closed.
-			for ( ; index < pendingInline.length ; index++ )
-			{
-				// If found, just remove it from the list.
-				if ( tagName == pendingInline[ index ].name )
-				{
-					pendingInline.splice( index, 1 );
-
-					// Decrease the index so we continue from the next one.
-					index--;
-				}
-			}
+
+				pendingInline = pendingInline.concat( newPendingInline );
+			}
+
+			if ( tagName == 'body' )
+				fixForBody = false;
 		};
 
@@ -327,8 +362,13 @@
 			}
 
+			sendPendingBRs();
 			checkPending();
 
-			if ( fixForBody && !currentNode.type )
+			if ( fixForBody
+				 && ( !currentNode.type || currentNode.name == 'body' )
+				 && CKEDITOR.tools.trim( text ) )
+			{
 				this.onTagOpen( fixForBody, {} );
+			}
 
 			// Shrinking consequential spaces into one single for all elements
@@ -353,4 +393,6 @@
 		parser.parse( fragmentHtml );
 
+		sendPendingBRs();
+
 		// Close all pending nodes.
 		while ( currentNode.type )
@@ -359,5 +401,7 @@
 				node = currentNode;
 
-			if ( fixForBody && !parent.type && !CKEDITOR.dtd.$body[ node.name ] )
+			if ( fixForBody
+				 && ( !parent.type || parent.name == 'body' )
+				 && !CKEDITOR.dtd.$body[ node.name ] )
 			{
 				currentNode = parent;
@@ -428,5 +472,23 @@
 		writeHtml : function( writer, filter )
 		{
-			for ( var i = 0, len = this.children.length ; i < len ; i++ )
+			var isChildrenFiltered;
+			this.filterChildren = function()
+			{
+				var writer = new CKEDITOR.htmlParser.basicWriter();
+				this.writeChildrenHtml.call( this, writer, filter, true );
+				var html = writer.getHtml();
+				this.children = new CKEDITOR.htmlParser.fragment.fromHtml( html ).children;
+				isChildrenFiltered = 1;
+			};
+
+			// Filtering the root fragment before anything else.
+			!this.name && filter && filter.onFragment( this );
+
+			this.writeChildrenHtml( writer, isChildrenFiltered ? null : filter );
+		},
+
+		writeChildrenHtml : function( writer, filter )
+		{
+			for ( var i = 0 ; i < this.children.length ; i++ )
 				this.children[i].writeHtml( writer, filter );
 		}
Index: /CKEditor/branches/features/adobeair/_source/core/htmlparser/text.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/htmlparser/text.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/htmlparser/text.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/core/imagecacher.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/imagecacher.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/imagecacher.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -12,4 +12,5 @@
 		var doCallback = function()
 			{
+				img.removeAllListeners();
 				loaded[ image ] = 1;
 				callback();
Index: /CKEditor/branches/features/adobeair/_source/core/lang.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/lang.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/lang.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -25,4 +25,5 @@
 			'ca'	: 1,
 			'cs'	: 1,
+			'cy'	: 1,
 			'da'	: 1,
 			'de'	: 1,
@@ -30,5 +31,5 @@
 			'en-au'	: 1,
 			'en-ca'	: 1,
-			'en-uk'	: 1,
+			'en-gb'	: 1,
 			'en'	: 1,
 			'eo'	: 1,
@@ -101,5 +102,5 @@
 			{
 				CKEDITOR.scriptLoader.load( CKEDITOR.getUrl(
-					'_source/' +	// %REMOVE_LINE%
+					'_source/' +	// @Packager.RemoveLine
 					'lang/' + languageCode + '.js' ),
 					function()
Index: /CKEditor/branches/features/adobeair/_source/core/loader.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/loader.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/loader.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -24,5 +24,5 @@
 		var scripts =
 		{
-			'core/_bootstrap'		: [ 'core/config', 'core/ckeditor', 'core/plugins', 'core/scriptloader', 'core/tools', /* The following are entries that we want to force loading at the end to avoid dependence recursion */ 'core/dom/elementpath', 'core/dom/text', 'core/dom/range' ],
+			'core/_bootstrap'		: [ 'core/config', 'core/ckeditor', 'core/plugins', 'core/scriptloader', 'core/tools', /* The following are entries that we want to force loading at the end to avoid dependence recursion */ 'core/dom/comment', 'core/dom/elementpath', 'core/dom/text', 'core/dom/range' ],
 			'core/ajax'				: [ 'core/xml' ],
 			'core/ckeditor'			: [ 'core/ckeditor_basic', 'core/dom', 'core/dtd', 'core/dom/document', 'core/dom/element', 'core/editor', 'core/event', 'core/htmlparser', 'core/htmlparser/element', 'core/htmlparser/fragment', 'core/htmlparser/filter', 'core/htmlparser/basicwriter', 'core/tools' ],
@@ -32,4 +32,5 @@
 			'core/config'			: [ 'core/ckeditor_base' ],
 			'core/dom'				: [],
+			'core/dom/comment'		: [ 'core/dom/node' ],
 			'core/dom/document'		: [ 'core/dom', 'core/dom/domobject', 'core/dom/window' ],
 			'core/dom/documentfragment'	: [ 'core/dom/element' ],
@@ -161,6 +162,6 @@
 				// We must guarantee the execution order of the scripts, so we
 				// need to load them one by one. (#4145)
-				// The followin if/else block has been taken from the scriptloader core code.
-				if ( CKEDITOR.env.ie )
+				// The following if/else block has been taken from the scriptloader core code.
+				if ( typeof(script.onreadystatechange) !== "undefined" )
 				{
 					/** @ignore */
@@ -190,5 +191,5 @@
 			/**
 			 * Loads a specific script, including its dependencies. This is not a
-			 * synchronous loading, which means that the code the be loaded will
+			 * synchronous loading, which means that the code to be loaded will
 			 * not necessarily be available after this call.
 			 * @example
@@ -217,5 +218,8 @@
 
 				// Append the <script> element to the DOM.
-				if ( document.body )
+				// If the page is fully loaded, we can't use document.write
+				// but if the script is run while the body is loading then it's safe to use it
+				// Unfortunately, Firefox <3.6 doesn't support document.readyState, so it won't get this improvement
+				if ( document.body && (!document.readyState || document.readyState == 'complete') )
 				{
 					pendingLoad.push( scriptName );
Index: /CKEditor/branches/features/adobeair/_source/core/plugindefinition.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/plugindefinition.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/plugindefinition.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/core/plugins.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/plugins.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/plugins.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -16,5 +16,5 @@
  */
 CKEDITOR.plugins = new CKEDITOR.resourceManager(
-	'_source/' +	// %REMOVE_LINE%
+	'_source/' +	// @Packager.RemoveLine
 	'plugins/', 'plugin' );
 
@@ -79,5 +79,7 @@
 CKEDITOR.plugins.setLang = function( pluginName, languageCode, languageEntries )
 {
-	var plugin = this.get( pluginName );
-	plugin.lang[ languageCode ] = languageEntries;
+	var plugin = this.get( pluginName ),
+		pluginLang = plugin.lang || ( plugin.lang = {} );
+
+	pluginLang[ languageCode ] = languageEntries;
 };
Index: /CKEditor/branches/features/adobeair/_source/core/resourcemanager.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/resourcemanager.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/resourcemanager.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -87,5 +87,6 @@
 			throw '[CKEDITOR.resourceManager.add] The resource name "' + name + '" is already registered.';
 
-		this.registered[ name ] = definition || {};
+		CKEDITOR.fire( name + CKEDITOR.tools.capitalize( this.fileName ) + 'Ready',
+				this.registered[ name ] = definition || {} );
 	},
 
@@ -127,5 +128,5 @@
 		return CKEDITOR.getUrl(
 				this.getPath( name ) +
-				( ( external && external.file ) || ( this.fileName + '.js' ) ) );
+				( ( external && ( typeof external.file == 'string' ) ) ? external.file : this.fileName + '.js' ) );
 	},
 
@@ -136,5 +137,6 @@
 	 * @param {String} path The path of the folder containing the resource.
 	 * @param {String} [fileName] The resource file name. If not provided, the
-	 *		default name is used.
+	 *		default name is used; If provided with a empty string, will implicitly indicates that {@param path}
+	 * 		is already the full path.
 	 * @example
 	 * // Loads a plugin from '/myplugin/samples/plugin.js'.
@@ -143,4 +145,7 @@
 	 * // Loads a plugin from '/myplugin/samples/my_plugin.js'.
 	 * CKEDITOR.plugins.addExternal( 'sample', '/myplugins/sample/', 'my_plugin.js' );
+	 * @example
+	 * // Loads a plugin from '/myplugin/samples/my_plugin.js'.
+	 * CKEDITOR.plugins.addExternal( 'sample', '/myplugins/sample/my_plugin.js', '' );
 	 */
 	addExternal : function( names, path, fileName )
Index: /CKEditor/branches/features/adobeair/_source/core/scriptloader.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/scriptloader.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/scriptloader.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -52,5 +52,5 @@
 		 *     });
 		 */
-		load : function( scriptUrl, callback, scope, noCheck )
+		load : function( scriptUrl, callback, scope, noCheck, showBusy )
 		{
 			var isString = ( typeof scriptUrl == 'string' );
@@ -88,5 +88,8 @@
 
 				if ( --scriptCount <= 0 )
+				{
+					showBusy && CKEDITOR.document.getDocumentElement().removeStyle( 'cursor' );
 					doCallback( success );
+				}
 			};
 
@@ -168,4 +171,5 @@
 			};
 
+			showBusy && CKEDITOR.document.getDocumentElement().setStyle( 'cursor', 'wait' );
 			for ( var i = 0 ; i < scriptCount ; i++ )
 			{
Index: /CKEditor/branches/features/adobeair/_source/core/skins.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/skins.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/skins.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -21,9 +21,18 @@
 	var paths = {};
 
-	var loadedPart = function( skinName, part, callback )
+	var loadPart = function( editor, skinName, part, callback )
 	{
 		// Get the skin definition.
 		var skinDefinition = loaded[ skinName ];
 
+		if ( !editor.skin )
+		{
+			editor.skin = skinDefinition;
+
+			// Trigger init function if any.
+			if ( skinDefinition.init )
+				skinDefinition.init( editor );
+		}
+
 		var appendSkinPath = function( fileNames )
 		{
@@ -33,4 +42,16 @@
 			}
 		};
+
+		function fixCSSTextRelativePath( cssStyleText, baseUrl )
+		{
+			return cssStyleText.replace( /url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,
+					function( match, opener, path, closer )
+					{
+						if ( /^\/|^\w?:/.test( path ) )
+							return match;
+						else
+							return 'url(' + baseUrl + opener +  path + closer + ')';
+					} );
+		}
 
 		// Check if we need to preload images from it.
@@ -44,5 +65,5 @@
 					{
 						preloaded[ skinName ] = 1;
-						loadedPart( skinName, part, callback );
+						loadPart( editor, skinName, part, callback );
 					} );
 				return;
@@ -97,8 +118,21 @@
 			if ( !cssIsLoaded )
 			{
-				appendSkinPath( part.css );
-
-				for ( var c = 0 ; c < part.css.length ; c++ )
-					CKEDITOR.document.appendStyleSheet( part.css[ c ] );
+				var cssPart = part.css;
+
+				if ( CKEDITOR.tools.isArray( cssPart ) )
+				{
+					appendSkinPath( cssPart );
+					for ( var c = 0 ; c < cssPart.length ; c++ )
+						CKEDITOR.document.appendStyleSheet( cssPart[ c ] );
+				}
+				else
+				{
+					cssPart = fixCSSTextRelativePath(
+								cssPart, CKEDITOR.getUrl( paths[ skinName ] ) );
+					// Processing Inline CSS part.
+					CKEDITOR.document.appendStyleText( cssPart );
+				}
+
+				part.css = cssPart;
 
 				cssIsLoaded = 1;
@@ -136,5 +170,5 @@
 				|| ( paths[ skinName ] =
 						CKEDITOR.getUrl(
-							'_source/' +	// %REMOVE_LINE%
+							'_source/' +	// @Packager.RemoveLine
 							'skins/' + skinName + '/' ) );
 		},
@@ -157,27 +191,11 @@
 
 			if ( loaded[ skinName ] )
-			{
-				loadedPart( skinName, skinPart, callback );
-
-				// Get the skin definition.
-				var skinDefinition = loaded[ skinName ];
-
-				// Trigger init function if any.
-				if ( skinDefinition.init )
-					skinDefinition.init( editor );
-			}
+				loadPart( editor, skinName, skinPart, callback );
 			else
 			{
 				paths[ skinName ] = skinPath;
-				CKEDITOR.scriptLoader.load( skinPath + 'skin.js', function()
+				CKEDITOR.scriptLoader.load( CKEDITOR.getUrl( skinPath + 'skin.js' ), function()
 						{
-							loadedPart( skinName, skinPart, callback );
-
-							// Get the skin definition.
-							var skinDefinition = loaded[ skinName ];
-
-							// Trigger init function if any.
-							if ( skinDefinition.init )
-								skinDefinition.init( editor );
+							 loadPart( editor, skinName, skinPart, callback );
 						});
 			}
Index: /CKEditor/branches/features/adobeair/_source/core/themes.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/themes.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/themes.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -16,4 +16,4 @@
  */
 CKEDITOR.themes = new CKEDITOR.resourceManager(
-	'_source/'+		// %REMOVE_LINE%
+	'_source/'+		// @Packager.RemoveLine
 	'themes/', 'theme' );
Index: /CKEditor/branches/features/adobeair/_source/core/tools.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/tools.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/tools.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -12,4 +12,9 @@
 {
 	var functions = [];
+
+	CKEDITOR.on( 'reset', function()
+		{
+			functions = [];
+		});
 
 	/**
@@ -20,4 +25,20 @@
 	CKEDITOR.tools =
 	{
+		/**
+		 * Compare the elements of two arrays.
+		 * @param {Array} arrayA An array to be compared.
+		 * @param {Array} arrayB The other array to be compared.
+		 * @returns {Boolean} "true" is the arrays have the same lenght and
+		 *		their elements match.
+		 * @example
+		 * var a = [ 1, 'a', 3 ];
+		 * var b = [ 1, 3, 'a' ];
+		 * var c = [ 1, 'a', 3 ];
+		 * var d = [ 1, 'a', 3, 4 ];
+		 *
+		 * alert( CKEDITOR.tools.arrayCompare( a, b ) );  // false
+		 * alert( CKEDITOR.tools.arrayCompare( a, c ) );  // true
+		 * alert( CKEDITOR.tools.arrayCompare( a, d ) );  // false
+		 */
 		arrayCompare : function( arrayA, arrayB )
 		{
@@ -81,5 +102,6 @@
 				|| ( obj instanceof Number )
 				|| ( obj instanceof Boolean )
-				|| ( obj instanceof Date ) )
+				|| ( obj instanceof Date )
+				|| ( obj instanceof RegExp) )
 			{
 				return obj;
@@ -96,4 +118,13 @@
 
 			return clone;
+		},
+
+		/**
+		 * Turn the first letter of string to upper-case.
+		 * @param {String} str
+		 */
+		capitalize: function( str )
+		{
+			return str.charAt( 0 ).toUpperCase() + str.substring( 1 ).toLowerCase();
 		},
 
@@ -190,4 +221,13 @@
 		},
 
+		isEmpty : function ( object )
+		{
+			for ( var i in object )
+			{
+				if ( object.hasOwnProperty( i ) )
+					return false;
+			}
+			return true;
+		},
 		/**
 		 * Transforms a CSS property name to its relative DOM style name.
@@ -205,5 +245,5 @@
 				: ( typeof test.styleFloat != 'undefined' ) ? 'styleFloat'
 				: 'float';
-			
+
 			return function( cssName )
 			{
@@ -221,4 +261,25 @@
 
 		/**
+		 * Build the HTML snippet of a set of &lt;style>/&lt;link>.
+		 * @param css {String|Array} Each of which are url (absolute) of a CSS file or
+		 * a trunk of style text.
+		 */
+		buildStyleHtml : function ( css )
+		{
+			css = [].concat( css );
+			var item, retval = [];
+			for ( var i = 0; i < css.length; i++ )
+			{
+				item = css[ i ];
+				// Is CSS style text ?
+				if ( /@import|[{}]/.test(item) )
+					retval.push('<style>' + item + '</style>');
+				else
+					retval.push('<link type="text/css" rel=stylesheet href="' + item + '">');
+			}
+			return retval.join( '' );
+		},
+
+		/**
 		 * Replace special HTML characters in a string with their relative HTML
 		 * entity values.
@@ -265,4 +326,30 @@
 
 			return this.htmlEncode( text );
+		},
+
+		/**
+		 * Replace special HTML characters in HTMLElement's attribute with their relative HTML entity values.
+		 * @param {String} The attribute's value to be encoded.
+		 * @returns {String} The encode value.
+		 * @example
+		 * element.setAttribute( 'title', '<a " b >' );
+		 * alert( CKEDITOR.tools.htmlEncodeAttr( element.getAttribute( 'title' ) );  // "&gt;a &quot; b &lt;"
+		 */
+		htmlEncodeAttr : function( text )
+		{
+			return text.replace( /"/g, '&quot;' ).replace( /</g, '&lt;' ).replace( />/, '&gt;' );
+		},
+
+		/**
+		 * Replace characters can't be represented through CSS Selectors string
+		 * by CSS Escape Notation where the character escape sequence consists
+		 * of a backslash character (\) followed by the orginal characters.
+		 * Ref: http://www.w3.org/TR/css3-selectors/#grammar
+		 * @param cssSelectText
+		 * @return the escaped selector text.
+		 */
+		escapeCssSelector : function( cssSelectText )
+		{
+			return cssSelectText.replace( /[\s#:.,$*^\[\]()~=+>]/g, '\\$&' );
 		},
 
@@ -440,4 +527,22 @@
 				},
 
+		/**
+		 * Creates a function that will always execute in the context of a
+		 * specified object.
+		 * @param {Function} func The function to be executed.
+		 * @param {Object} obj The object to which bind the execution context.
+		 * @returns {Function} The function that can be used to execute the
+		 *		"func" function in the context of "obj".
+		 * @example
+		 * var obj = { text : 'My Object' };
+		 *
+		 * function alertText()
+		 * {
+		 *     alert( this.text );
+		 * }
+		 *
+		 * var newFunc = <b>CKEDITOR.tools.bind( alertText, obj )</b>;
+		 * newFunc();  // Alerts "My Object".
+		 */
 		bind : function( func, obj )
 		{
@@ -451,9 +556,9 @@
 		 * <li> Static fields </li>
 		 * <li> Private fields </li>
-		 * <li> Public(prototype) fields </li>
+		 * <li> Public (prototype) fields </li>
 		 * <li> Chainable base class constructor </li>
 		 * </ul>
-		 *
-		 * @param {Object} definiton (Optional)The class definiton object.
+		 * @param {Object} definition The class definition object.
+		 * @returns {Function} A class-like JavaScript function.
 		 */
 		createClass : function( definition )
@@ -508,4 +613,20 @@
 		},
 
+		/**
+		 * Creates a function reference that can be called later using
+		 * CKEDITOR.tools.callFunction. This approach is specially useful to
+		 * make DOM attribute function calls to JavaScript defined functions.
+		 * @param {Function} fn The function to be executed on call.
+		 * @param {Object} [scope] The object to have the context on "fn" execution.
+		 * @returns {Number} A unique reference to be used in conjuction with
+		 *		CKEDITOR.tools.callFunction.
+		 * @example
+		 * var ref = <b>CKEDITOR.tools.addFunction</b>(
+		 *     function()
+		 *     {
+		 *         alert( 'Hello!');
+		 *     });
+		 * CKEDITOR.tools.callFunction( ref );  // Hello!
+		 */
 		addFunction : function( fn, scope )
 		{
@@ -516,8 +637,34 @@
 		},
 
-		callFunction : function( index )
-		{
-			var fn = functions[ index ];
-			return fn.apply( window, Array.prototype.slice.call( arguments, 1 ) );
+		/**
+		 * Removes the function reference created with {@see CKEDITOR.tools.addFunction}.
+		 * @param {Number} ref The function reference created with
+		 *		CKEDITOR.tools.addFunction.
+		 */
+		removeFunction : function( ref )
+		{
+			functions[ ref ] = null;
+		},
+
+		/**
+		 * Executes a function based on the reference created with
+		 * CKEDITOR.tools.addFunction.
+		 * @param {Number} ref The function reference created with
+		 *		CKEDITOR.tools.addFunction.
+		 * @param {[Any,[Any,...]} params Any number of parameters to be passed
+		 *		to the executed function.
+		 * @returns {Any} The return value of the function.
+		 * @example
+		 * var ref = CKEDITOR.tools.addFunction(
+		 *     function()
+		 *     {
+		 *         alert( 'Hello!');
+		 *     });
+		 * <b>CKEDITOR.tools.callFunction( ref )</b>;  // Hello!
+		 */
+		callFunction : function( ref )
+		{
+			var fn = functions[ ref ];
+			return fn && fn.apply( window, Array.prototype.slice.call( arguments, 1 ) );
 		},
 
@@ -534,4 +681,32 @@
 		{
 			return new Array( times + 1 ).join( str );
+		},
+
+		tryThese : function()
+		{
+			var returnValue;
+			for ( var i = 0, length = arguments.length; i < length; i++ )
+			{
+				var lambda = arguments[i];
+				try
+				{
+					returnValue = lambda();
+					break;
+				}
+				catch (e) {}
+			}
+			return returnValue;
+		},
+
+		/**
+		 * Generate a combined key from a series of params.
+		 * @param {String} subKey One or more string used as sub keys.
+		 * @example
+		 * var key = CKEDITOR.tools.genKey( 'key1', 'key2', 'key3' );
+		 * alert( key );		// "key1-key2-key3".
+		 */
+		genKey : function()
+		{
+			return Array.prototype.slice.call( arguments ).join( '-' );
 		}
 	};
Index: /CKEditor/branches/features/adobeair/_source/core/ui.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/ui.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/ui.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/core/xml.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/xml.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/core/xml.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -120,5 +120,5 @@
 				{
 					var node;
-					while( ( node = result.iterateNext() ) )
+					while ( ( node = result.iterateNext() ) )
 						nodes.push( node );
 				}
Index: /CKEditor/branches/features/adobeair/_source/lang/_languages.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/_languages.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/_languages.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -15,4 +15,5 @@
 		ca		: 'Catalan',
 		cs		: 'Czech',
+		cy		: 'Welsh',
 		da		: 'Danish',
 		de		: 'German',
@@ -21,5 +22,5 @@
 		'en-au'	: 'English (Australia)',
 		'en-ca'	: 'English (Canadian)',
-		'en-uk'	: 'English (United Kingdom)',
+		'en-gb'	: 'English (United Kingdom)',
 		eo		: 'Esperanto',
 		es		: 'Spanish',
Index: /CKEditor/branches/features/adobeair/_source/lang/_translationstatus.txt
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/_translationstatus.txt	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/_translationstatus.txt	(revision 5613)
@@ -1,59 +1,60 @@
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 
-af.js      Found: 312 Missing: 130
-ar.js      Found: 329 Missing: 113
-bg.js      Found: 305 Missing: 137
-bn.js      Found: 307 Missing: 135
-bs.js      Found: 210 Missing: 232
-ca.js      Found: 435 Missing: 7
-cs.js      Found: 327 Missing: 115
-da.js      Found: 326 Missing: 116
-de.js      Found: 435 Missing: 7
-el.js      Found: 311 Missing: 131
-en-au.js   Found: 395 Missing: 47
-en-ca.js   Found: 395 Missing: 47
-en-uk.js   Found: 395 Missing: 47
-eo.js      Found: 282 Missing: 160
-es.js      Found: 435 Missing: 7
-et.js      Found: 326 Missing: 116
-eu.js      Found: 435 Missing: 7
-fa.js      Found: 327 Missing: 115
-fi.js      Found: 325 Missing: 117
-fo.js      Found: 326 Missing: 116
-fr-ca.js   Found: 327 Missing: 115
-fr.js      Found: 434 Missing: 8
-gl.js      Found: 308 Missing: 134
-gu.js      Found: 326 Missing: 116
-he.js      Found: 332 Missing: 110
-hi.js      Found: 327 Missing: 115
-hr.js      Found: 435 Missing: 7
-hu.js      Found: 326 Missing: 116
-is.js      Found: 332 Missing: 110
-it.js      Found: 434 Missing: 8
-ja.js      Found: 434 Missing: 8
-km.js      Found: 299 Missing: 143
-ko.js      Found: 318 Missing: 124
-lt.js      Found: 331 Missing: 111
-lv.js      Found: 308 Missing: 134
-mn.js      Found: 326 Missing: 116
-ms.js      Found: 287 Missing: 155
-nb.js      Found: 325 Missing: 117
-nl.js      Found: 327 Missing: 115
-no.js      Found: 325 Missing: 117
-pl.js      Found: 435 Missing: 7
-pt-br.js   Found: 434 Missing: 8
-pt.js      Found: 307 Missing: 135
-ro.js      Found: 326 Missing: 116
-ru.js      Found: 332 Missing: 110
-sk.js      Found: 327 Missing: 115
-sl.js      Found: 325 Missing: 117
-sr-latn.js Found: 301 Missing: 141
-sr.js      Found: 301 Missing: 141
-sv.js      Found: 324 Missing: 118
-th.js      Found: 312 Missing: 130
-tr.js      Found: 332 Missing: 110
-uk.js      Found: 435 Missing: 7
-vi.js      Found: 435 Missing: 7
-zh-cn.js   Found: 435 Missing: 7
-zh.js      Found: 435 Missing: 7
+af.js      Found: 287 Missing: 237
+ar.js      Found: 451 Missing: 73
+bg.js      Found: 280 Missing: 244
+bn.js      Found: 281 Missing: 243
+bs.js      Found: 187 Missing: 337
+ca.js      Found: 490 Missing: 34
+cs.js      Found: 411 Missing: 113
+cy.js      Found: 452 Missing: 72
+da.js      Found: 404 Missing: 120
+de.js      Found: 444 Missing: 80
+el.js      Found: 286 Missing: 238
+en-au.js   Found: 369 Missing: 155
+en-ca.js   Found: 369 Missing: 155
+en-gb.js   Found: 370 Missing: 154
+eo.js      Found: 259 Missing: 265
+es.js      Found: 524 Missing: 0
+et.js      Found: 301 Missing: 223
+eu.js      Found: 403 Missing: 121
+fa.js      Found: 302 Missing: 222
+fi.js      Found: 518 Missing: 6
+fo.js      Found: 420 Missing: 104
+fr-ca.js   Found: 301 Missing: 223
+fr.js      Found: 403 Missing: 121
+gl.js      Found: 283 Missing: 241
+gu.js      Found: 300 Missing: 224
+he.js      Found: 523 Missing: 1
+hi.js      Found: 302 Missing: 222
+hr.js      Found: 404 Missing: 120
+hu.js      Found: 445 Missing: 79
+is.js      Found: 307 Missing: 217
+it.js      Found: 404 Missing: 120
+ja.js      Found: 413 Missing: 111
+km.js      Found: 275 Missing: 249
+ko.js      Found: 293 Missing: 231
+lt.js      Found: 306 Missing: 218
+lv.js      Found: 283 Missing: 241
+mn.js      Found: 300 Missing: 224
+ms.js      Found: 265 Missing: 259
+nb.js      Found: 470 Missing: 54
+nl.js      Found: 494 Missing: 30
+no.js      Found: 470 Missing: 54
+pl.js      Found: 411 Missing: 113
+pt-br.js   Found: 402 Missing: 122
+pt.js      Found: 282 Missing: 242
+ro.js      Found: 301 Missing: 223
+ru.js      Found: 467 Missing: 57
+sk.js      Found: 302 Missing: 222
+sl.js      Found: 410 Missing: 114
+sr-latn.js Found: 276 Missing: 248
+sr.js      Found: 275 Missing: 249
+sv.js      Found: 299 Missing: 225
+th.js      Found: 287 Missing: 237
+tr.js      Found: 494 Missing: 30
+uk.js      Found: 404 Missing: 120
+vi.js      Found: 481 Missing: 43
+zh-cn.js   Found: 404 Missing: 120
+zh.js      Found: 404 Missing: 120
Index: /CKEditor/branches/features/adobeair/_source/lang/af.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/af.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/af.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Form',
 		checkbox		: 'HakBox',
-		radio		: 'PuntBox',
+		radio			: 'PuntBox',
 		textField		: 'Byvoegbare karakter strook',
 		textarea		: 'Byvoegbare karakter area',
 		hiddenField		: 'Blinde strook',
 		button			: 'Knop',
-		select	: 'Opklapbare keuse strook',
+		select			: 'Opklapbare keuse strook',
 		imageButton		: 'Beeld knop',
 		notSet			: '<geen instelling>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Kanseleer',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'Ingewikkeld',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Spesiaale Karakter byvoeg',
-		title		: 'Kies spesiale karakter'
+		title		: 'Kies spesiale karakter',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Skakel byvoeg/verander',
+		other 		: '<ander>',
 		menu		: 'Verander skakel',
 		title		: 'Skakel',
@@ -117,14 +136,9 @@
 		advanced	: 'Ingewikkeld',
 		type		: 'Skakel soort',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Skakel na plekhouers in text',
 		toEmail		: 'E-Mail',
-		target		: 'Mikpunt',
-		targetNotSet	: '<geen instelling>',
-		targetFrame	: '<raam>',
-		targetPopup	: '<popup venster>',
-		targetNew	: 'Nuwe Venster (_blank)',
-		targetTop	: 'Boonste Venster (_top)',
-		targetSelf	: 'Selfde Venster (_self)',
-		targetParent	: 'Vorige Venster (_parent)',
+		targetFrame		: '<raam>',
+		targetPopup		: '<popup venster>',
 		targetFrameName	: 'Mikpunt Venster Naam',
 		targetPopupName	: 'Popup Venster Naam',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Status Balk',
-		popupLocationBar	: 'Adres Balk',
+		popupLocationBar: 'Adres Balk',
 		popupToolbar	: 'Gereedskap Balk',
 		popupMenuBar	: 'Menu Balk',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Taal rigting',
-		langDirNotSet	: '<geen instelling>',
 		langDirLTR		: 'Links na regs (LTR)',
 		langDirRTL		: 'Regs na links (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Kant groote',
 		align		: 'Parideering',
-		alignNotSet	: '<geen instelling>',
 		alignLeft	: 'Links',
 		alignCenter	: 'Middel',
@@ -211,4 +246,5 @@
 		widthPx		: 'pixels',
 		widthPc		: 'percent',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Hoogde',
 		cellSpace	: 'Cell spasieering',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Aksie',
 		method		: 'Metode',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Mikpunt',
-		targetNotSet	: '<geen instelling>',
-		targetNew	: 'Nuwe Venster (_blank)',
-		targetTop	: 'Boonste Venster (_top)',
-		targetSelf	: 'Selfde Venster (_self)',
-		targetParent	: 'Vorige Venster (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Beeld knop eienskappe',
 		menu		: 'Beeld eienskappe',
-		infoTab	: 'Beeld informasie',
+		infoTab		: 'Beeld informasie',
 		btnUpload	: 'Stuur dit na die Server',
-		url		: 'URL',
-		upload	: 'Uplaai',
-		alt		: 'Alternatiewe beskrywing',
+		upload		: 'Uplaai',
+		alt			: 'Alternatiewe beskrywing',
 		width		: 'Weidte',
-		height	: 'Hoogde',
+		height		: 'Hoogde',
 		lockRatio	: 'Behou preporsie',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Herstel groote',
-		border	: 'Kant',
-		hSpace	: 'HSpasie',
-		vSpace	: 'VSpasie',
+		border		: 'Kant',
+		hSpace		: 'HSpasie',
+		vSpace		: 'VSpasie',
 		align		: 'Paradeer',
 		alignLeft	: 'Links',
-		alignAbsBottom: 'Abs Onder',
-		alignAbsMiddle: 'Abs Middel',
-		alignBaseline	: 'Baseline',
-		alignBottom	: 'Onder',
-		alignMiddle	: 'Middel',
 		alignRight	: 'Regs',
-		alignTextTop	: 'Text Bo',
-		alignTop	: 'Bo',
-		preview	: 'Voorskou',
 		alertUrl	: 'Voeg asseblief Beeld URL in.',
-		linkTab	: 'Skakel',
+		linkTab		: 'Skakel',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Flash eienskappe',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Flash eienskappe',
-		chkPlay		: 'Automaties Speel',
-		chkLoop		: 'Herhaling',
-		chkMenu		: 'Laat Flash Menu toe',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Scale',
+		title			: 'Flash eienskappe',
+		chkPlay			: 'Automaties Speel',
+		chkLoop			: 'Herhaling',
+		chkMenu			: 'Laat Flash Menu toe',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Scale',
 		scaleAll		: 'Wys alles',
 		scaleNoBorder	: 'Geen kante',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Paradeer',
-		alignLeft	: 'Links',
-		alignAbsBottom: 'Abs Onder',
-		alignAbsMiddle: 'Abs Middel',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Paradeer',
+		alignLeft		: 'Links',
+		alignAbsBottom	: 'Abs Onder',
+		alignAbsMiddle	: 'Abs Middel',
 		alignBaseline	: 'Baseline',
-		alignBottom	: 'Onder',
-		alignMiddle	: 'Middel',
-		alignRight	: 'Regs',
+		alignBottom		: 'Onder',
+		alignMiddle		: 'Middel',
+		alignRight		: 'Regs',
 		alignTextTop	: 'Text Bo',
-		alignTop	: 'Bo',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Agtergrond kleur',
-		width	: 'Weidte',
-		height	: 'Hoogde',
-		hSpace	: 'HSpasie',
-		vSpace	: 'VSpasie',
-		validateSrc : 'Voeg asseblief die URL in',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Bo',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Agtergrond kleur',
+		width			: 'Weidte',
+		height			: 'Hoogde',
+		hSpace			: 'HSpasie',
+		vSpace			: 'VSpasie',
+		validateSrc		: 'Voeg asseblief die URL in',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'Smiley',
-		title	: 'Voeg Smiley by'
+		title	: 'Voeg Smiley by',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Genommerde lys',
-	bulletedlist : 'Gepunkte lys',
-	indent : 'Paradeering verleng',
-	outdent : 'Paradeering verkort',
+	numberedlist	: 'Genommerde lys',
+	bulletedlist	: 'Gepunkte lys',
+	indent			: 'Paradeering verleng',
+	outdent			: 'Paradeering verkort',
 
 	justify :
 	{
-		left : 'Links rig',
-		center : 'Rig Middel',
-		right : 'Regs rig',
-		block : 'Blok paradeer'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: 'Links rig',
+		center	: 'Rig Middel',
+		right	: 'Regs rig',
+		block	: 'Blok paradeer'
+	},
+
+	blockquote : 'Block Quote', // MISSING
 
 	clipboard :
 	{
 		title		: 'Byvoeg',
-		cutError	: 'U browser se sekuriteit instelling behinder die uitsny aksie. Gebruik asseblief die sleutel kombenasie(Ctrl+X).',
-		copyError	: 'U browser se sekuriteit instelling behinder die kopieerings aksie. Gebruik asseblief die sleutel kombenasie(Ctrl+C).',
-		pasteMsg	: 'Voeg asseblief die inhoud in die gegewe box by met sleutel kombenasie(<STRONG>Ctrl+V</STRONG>) en druk <STRONG>OK</STRONG>.',
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+		cutError	: 'U browser se sekuriteit instelling behinder die uitsny aksie. Gebruik asseblief die sleutel kombenasie(Ctrl/Cmd+X).',
+		copyError	: 'U browser se sekuriteit instelling behinder die kopieerings aksie. Gebruik asseblief die sleutel kombenasie(Ctrl/Cmd+C).',
+		pasteMsg	: 'Voeg asseblief die inhoud in die gegewe box by met sleutel kombenasie(<STRONG>Ctrl/Cmd+V</STRONG>) en druk <STRONG>OK</STRONG>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Van Word af byvoeg',
-		title : 'Van Word af byvoeg',
-		advice : 'Voeg asseblief die inhoud in die gegewe box by met sleutel kombenasie(<STRONG>Ctrl+V</STRONG>) en druk <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignoreer karakter soort defenisies',
-		removeStyle : 'Verweider Styl defenisies'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Van Word af byvoeg',
+		title			: 'Van Word af byvoeg',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Voeg slegs karakters by',
-		title : 'Voeg slegs karakters by'
+		button	: 'Voeg slegs karakters by',
+		title	: 'Voeg slegs karakters by'
 	},
 
 	templates :
 	{
-		button : 'Templates',
-		title : 'Inhoud Templates',
-		insertOption: 'Vervang bestaande inhoud',
-		selectPromptMsg: 'Kies die template om te gebruik in die editor<br>(Inhoud word vervang!):',
-		emptyListMsg : '(Geen templates gedefinieerd)'
+		button			: 'Templates',
+		title			: 'Inhoud Templates',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Vervang bestaande inhoud',
+		selectPromptMsg	: 'Kies die template om te gebruik in die editor<br>(Inhoud word vervang!):',
+		emptyListMsg	: '(Geen templates gedefinieerd)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Styl',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Styl',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Karakter formaat',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Karakter formaat',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normaal',
-		tag_pre : 'Geformateerd',
-		tag_address : 'Adres',
-		tag_h1 : 'Opskrif 1',
-		tag_h2 : 'Opskrif 2',
-		tag_h3 : 'Opskrif 3',
-		tag_h4 : 'Opskrif 4',
-		tag_h5 : 'Opskrif 5',
-		tag_h6 : 'Opskrif 6',
-		tag_div : 'Normaal (DIV)'
-	},
+		label		: 'Karakter formaat',
+		panelTitle	: 'Karakter formaat',
+
+		tag_p		: 'Normaal',
+		tag_pre		: 'Geformateerd',
+		tag_address	: 'Adres',
+		tag_h1		: 'Opskrif 1',
+		tag_h2		: 'Opskrif 2',
+		tag_h3		: 'Opskrif 3',
+		tag_h4		: 'Opskrif 4',
+		tag_h5		: 'Opskrif 5',
+		tag_h6		: 'Opskrif 6',
+		tag_div		: 'Normaal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Karakters',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Karakters',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Karakters',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Karakters'
 	},
 
 	fontSize :
 	{
-		label : 'Karakter grote',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Karakter grote',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Karakter grote',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Karakter grote'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Karakter kleur',
-		bgColorTitle : 'Agtergrond kleur',
-		auto : 'Automaties',
-		more : 'Meer Kleure...'
+		textColorTitle	: 'Karakter kleur',
+		bgColorTitle	: 'Agtergrond kleur',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automaties',
+		more			: 'Meer Kleure...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/ar.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/ar.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/ar.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,8 +32,12 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
-	source			: 'شفرة المصدر',
+	source			: 'المصدر',
 	newPage			: 'صفحة جديدة',
 	save			: 'حفظ',
@@ -51,5 +55,5 @@
 	subscript		: 'منخفض',
 	superscript		: 'مرتفع',
-	horizontalrule	: 'إدراج خط فاصل',
+	horizontalrule	: 'خط فاصل',
 	pagebreak		: 'إدخال صفحة جديدة',
 	unlink			: 'إزالة رابط',
@@ -60,19 +64,19 @@
 	common :
 	{
-		browseServer	: 'تصفح الخادم',
-		url				: 'موقع الصورة',
+		browseServer	: 'تصفح',
+		url				: 'الرابط',
 		protocol		: 'البروتوكول',
 		upload			: 'رفع',
-		uploadSubmit	: 'أرسلها للخادم',
+		uploadSubmit	: 'أرسل',
 		image			: 'صورة',
 		flash			: 'فلاش',
 		form			: 'نموذج',
 		checkbox		: 'خانة إختيار',
-		radio		: 'زر خيار',
+		radio			: 'زر اختيار',
 		textField		: 'مربع نص',
-		textarea		: 'ناحية نص',
+		textarea		: 'مساحة نصية',
 		hiddenField		: 'إدراج حقل خفي',
 		button			: 'زر ضغط',
-		select	: 'قائمة منسدلة',
+		select			: 'اختار',
 		imageButton		: 'زر صورة',
 		notSet			: '<بدون تحديد>',
@@ -83,18 +87,31 @@
 		langDirRtl		: 'اليمين لليسار (RTL)',
 		langCode		: 'رمز اللغة',
-		longDescr		: 'عنوان الوصف المفصّل',
+		longDescr		: 'الوصف التفصيلى',
 		cssClass		: 'فئات التنسيق',
-		advisoryTitle	: 'تلميح الشاشة',
+		advisoryTitle	: 'عنوان التقرير',
 		cssStyle		: 'نمط',
 		ok				: 'موافق',
 		cancel			: 'إلغاء الأمر',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'عام',
 		advancedTab		: 'متقدم',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
-		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
-		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		validateNumberFailed : 'لايوجد نتيجة',
+		confirmNewPage	: 'ستفقد أي متغييرات اذا لم تقم بحفظها اولا. هل أنت متأكد أنك تريد صفحة جديدة؟',
+		confirmCancel	: 'بعض الخيارات قد تغيرت. هل أنت متأكد من إغلاق مربع النص؟',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
-		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+		unavailable		: '%1<span class="cke_accessibility">, غير متاح</span>'
+	},
+
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
 	},
 
@@ -102,6 +119,7 @@
 	specialChar		:
 	{
-		toolbar		: 'إدراج  رموز..ِ',
-		title		: 'إدراج رمز'
+		toolbar		: 'إدراج  خاص.ِ',
+		title		: 'اختر الخواص',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -109,28 +127,24 @@
 	link :
 	{
-		toolbar		: 'إدراج/تحرير رابط',
+		toolbar		: 'رابط',
+		other 		: '<أخرى>',
 		menu		: 'تحرير رابط',
 		title		: 'إرتباط تشعبي',
 		info		: 'معلومات الرابط',
-		target		: 'الهدف',
+		target		: 'هدف الرابط',
 		upload		: 'رفع',
 		advanced	: 'متقدم',
 		type		: 'نوع الربط',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'مكان في هذا المستند',
 		toEmail		: 'بريد إلكتروني',
-		target		: 'الهدف',
-		targetNotSet	: '<بدون تحديد>',
-		targetFrame	: '<إطار>',
-		targetPopup	: '<نافذة منبثقة>',
-		targetNew	: 'إطار جديد (_blank)',
-		targetTop	: 'صفحة كاملة (_top)',
-		targetSelf	: 'نفس الإطار (_self)',
-		targetParent	: 'الإطار الأصل (_parent)',
-		targetFrameName	: 'اسم الإطار الهدف',
-		targetPopupName	: 'تسمية النافذة المنبثقة',
+		targetFrame		: '<إطار>',
+		targetPopup		: '<نافذة منبثقة>',
+		targetFrameName	: 'اسم الإطار المستهدف',
+		targetPopupName	: 'اسم النافذة المنبثقة',
 		popupFeatures	: 'خصائص النافذة المنبثقة',
-		popupResizable	: 'Resizable', // MISSING
-		popupStatusBar	: 'شريط الحالة السفلي',
-		popupLocationBar	: 'شريط العنوان',
+		popupResizable	: 'قابلة التشكيل',
+		popupStatusBar	: 'شريط الحالة',
+		popupLocationBar: 'شريط العنوان',
 		popupToolbar	: 'شريط الأدوات',
 		popupMenuBar	: 'القوائم الرئيسية',
@@ -142,27 +156,26 @@
 		popupHeight		: 'الإرتفاع',
 		popupTop		: 'التمركز للأعلى',
-		id				: 'Id', // MISSING
+		id				: 'هوية',
 		langDir			: 'إتجاه النص',
-		langDirNotSet	: '<بدون تحديد>',
 		langDirLTR		: 'اليسار لليمين (LTR)',
 		langDirRTL		: 'اليمين لليسار (RTL)',
 		acccessKey		: 'مفاتيح الإختصار',
 		name			: 'الاسم',
-		langCode		: 'إتجاه النص',
+		langCode		: 'كود النص',
 		tabIndex		: 'الترتيب',
-		advisoryTitle	: 'تلميح الشاشة',
-		advisoryContentType	: 'نوع التلميح',
+		advisoryTitle	: 'عنوان التقرير',
+		advisoryContentType	: 'نوع التقرير',
 		cssClasses		: 'فئات التنسيق',
 		charset			: 'ترميز المادة المطلوبة',
 		styles			: 'نمط',
 		selectAnchor	: 'اختر علامة مرجعية',
-		anchorName		: 'حسب اسم العلامة',
-		anchorId		: 'حسب تعريف العنصر',
-		emailAddress	: 'عنوان بريد إلكتروني',
+		anchorName		: 'حسب الاسم',
+		anchorId		: 'حسب رقم العنصر',
+		emailAddress	: 'عنوان البريد إلكتروني',
 		emailSubject	: 'موضوع الرسالة',
 		emailBody		: 'محتوى الرسالة',
-		noAnchors		: '(لا يوجد علامات مرجعية في هذا المستند)',
-		noUrl			: 'فضلاً أدخل عنوان الموقع الذي يشير إليه الرابط',
-		noEmail			: 'فضلاً أدخل عنوان البريد الإلكتروني'
+		noAnchors		: '(لا توجد علامات مرجعية في هذا المستند)',
+		noUrl			: 'من فضلك أدخل عنوان الموقع الذي يشير إليه الرابط',
+		noEmail			: 'من فضلك أدخل عنوان البريد الإلكتروني'
 	},
 
@@ -170,6 +183,6 @@
 	anchor :
 	{
-		toolbar		: 'إدراج/تحرير إشارة مرجعية',
-		menu		: 'خصائص الإشارة المرجعية',
+		toolbar		: 'إشارة مرجعية',
+		menu		: 'تحرير الإشارة المرجعية',
 		title		: 'خصائص الإشارة المرجعية',
 		name		: 'اسم الإشارة المرجعية',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -183,12 +219,12 @@
 		find				: 'بحث',
 		replace				: 'إستبدال',
-		findWhat			: 'البحث عن:',
+		findWhat			: 'البحث بـ:',
 		replaceWith			: 'إستبدال بـ:',
 		notFoundMsg			: 'لم يتم العثور على النص المحدد.',
 		matchCase			: 'مطابقة حالة الأحرف',
-		matchWord			: 'الكلمة بالكامل فقط',
-		matchCyclic			: 'Match cyclic', // MISSING
+		matchWord			: 'مطابقة بالكامل',
+		matchCyclic			: 'مطابقة دورية',
 		replaceAll			: 'إستبدال الكل',
-		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+		replaceSuccessMsg	: 'تم استبدال 1% من الحالات '
 	},
 
@@ -197,12 +233,11 @@
 	{
 		toolbar		: 'جدول',
-		title		: 'إدراج جدول',
-		menu		: 'إدراج جدول',
+		title		: 'خصائص الجدول',
+		menu		: 'خصائص الجدول',
 		deleteTable	: 'حذف الجدول',
 		rows		: 'صفوف',
 		columns		: 'أعمدة',
-		border		: 'سمك الحدود',
+		border		: 'الحدود',
 		align		: 'المحاذاة',
-		alignNotSet	: '<بدون تحديد>',
 		alignLeft	: 'يسار',
 		alignCenter	: 'وسط',
@@ -211,4 +246,5 @@
 		widthPx		: 'بكسل',
 		widthPc		: 'بالمئة',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'الإرتفاع',
 		cellSpace	: 'تباعد الخلايا',
@@ -216,16 +252,16 @@
 		caption		: 'الوصف',
 		summary		: 'الخلاصة',
-		headers		: 'Headers', // MISSING
-		headersNone		: 'None', // MISSING
-		headersColumn	: 'First column', // MISSING
-		headersRow		: 'First Row', // MISSING
-		headersBoth		: 'Both', // MISSING
-		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
-		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
-		invalidBorder	: 'Border size must be a number.', // MISSING
-		invalidWidth	: 'Table width must be a number.', // MISSING
-		invalidHeight	: 'Table height must be a number.', // MISSING
-		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
-		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+		headers		: 'العناوين',
+		headersNone		: 'بدون',
+		headersColumn	: 'العمود الأول',
+		headersRow		: 'الصف الأول',
+		headersBoth		: 'كلاهما',
+		invalidRows		: 'عدد الصفوف يجب أن يكون عدداً أكبر من صفر.',
+		invalidCols		: 'عدد الأعمدة يجب أن يكون عدداً أكبر من صفر.',
+		invalidBorder	: 'حجم الحد يجب أن يكون عدداً.',
+		invalidWidth	: 'عرض الجدول يجب أن يكون عدداً.',
+		invalidHeight	: 'ارتفاع الجدول يجب أن يكون عدداً.',
+		invalidCellSpacing	: 'المسافة بين الخلايا يجب أن تكون عدداً.',
+		invalidCellPadding	: 'المسافة البادئة يجب أن تكون عدداً',
 
 		cell :
@@ -234,5 +270,5 @@
 			insertBefore	: 'إدراج خلية قبل',
 			insertAfter		: 'إدراج خلية بعد',
-			deleteCell		: 'حذف خلايا',
+			deleteCell		: 'حذف خلية',
 			merge			: 'دمج خلايا',
 			mergeRight		: 'دمج لليمين',
@@ -241,25 +277,25 @@
 			splitVertical	: 'تقسيم الخلية عمودياً',
 			title			: 'خصائص الخلية',
-			cellType		: 'Cell Type', // MISSING
-			rowSpan			: 'Rows Span', // MISSING
-			colSpan			: 'Columns Span', // MISSING
-			wordWrap		: 'Word Wrap', // MISSING
-			hAlign			: 'Horizontal Alignment', // MISSING
-			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
-			alignBaseline	: 'Baseline', // MISSING
-			bgColor			: 'Background Color', // MISSING
-			borderColor		: 'Border Color', // MISSING
-			data			: 'Data', // MISSING
-			header			: 'Header', // MISSING
-			yes				: 'Yes', // MISSING
-			no				: 'No', // MISSING
-			invalidWidth	: 'Cell width must be a number.', // MISSING
-			invalidHeight	: 'Cell height must be a number.', // MISSING
-			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
-			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			cellType		: 'نوع الخلية',
+			rowSpan			: 'امتداد الصفوف',
+			colSpan			: 'امتداد الأعمدة',
+			wordWrap		: 'التفاف النص',
+			hAlign			: 'محاذاة أفقية',
+			vAlign			: 'محاذاة رأسية',
+			alignTop		: 'أعلى',
+			alignMiddle		: 'وسط',
+			alignBottom		: 'أسفل',
+			alignBaseline	: 'خط القاعدة',
+			bgColor			: 'لون الخلفية',
+			borderColor		: 'لون الحدود',
+			data			: 'بيانات',
+			header			: 'عنوان',
+			yes				: 'نعم',
+			no				: 'لا',
+			invalidWidth	: 'عرض الخلية يجب أن يكون عدداً.',
+			invalidHeight	: 'ارتفاع الخلية يجب أن يكون عدداً.',
+			invalidRowSpan	: 'امتداد الصفوف يجب أن يكون عدداً صحيحاً.',
+			invalidColSpan	: 'امتداد الأعمدة يجب أن يكون عدداً صحيحاً.',
+			chooseColor		: 'اختر'
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'اسم الملف',
 		method		: 'الأسلوب',
-		encoding	: 'Encoding', // MISSING
-		target		: 'الهدف',
-		targetNotSet	: '<بدون تحديد>',
-		targetNew	: 'إطار جديد (_blank)',
-		targetTop	: 'صفحة كاملة (_top)',
-		targetSelf	: 'نفس الإطار (_self)',
-		targetParent	: 'الإطار الأصل (_parent)'
+		encoding	: 'تشفير'
 	},
 
@@ -320,6 +350,6 @@
 	select :
 	{
-		title		: 'خصائص القائمة المنسدلة',
-		selectInfo	: 'معلومات',
+		title		: 'خصائص اختيار الحقل',
+		selectInfo	: 'اختار معلومات',
 		opAvail		: 'الخيارات المتاحة',
 		value		: 'القيمة',
@@ -331,6 +361,6 @@
 		btnAdd		: 'إضافة',
 		btnModify	: 'تعديل',
-		btnUp		: 'تحريك لأعلى',
-		btnDown		: 'تحريك لأسفل',
+		btnUp		: 'أعلى',
+		btnDown		: 'أسفل',
 		btnSetValue : 'إجعلها محددة',
 		btnDelete	: 'إزالة'
@@ -340,5 +370,5 @@
 	textarea :
 	{
-		title		: 'خصائص ناحية النص',
+		title		: 'خصائص مساحة النص',
 		cols		: 'الأعمدة',
 		rows		: 'الصفوف'
@@ -351,6 +381,6 @@
 		name		: 'الاسم',
 		value		: 'القيمة',
-		charWidth	: 'العرض بالأحرف',
-		maxChars	: 'عدد الحروف الأقصى',
+		charWidth	: 'عرض السمات',
+		maxChars	: 'اقصى عدد للسمات',
 		type		: 'نوع المحتوى',
 		typeText	: 'نص',
@@ -361,5 +391,5 @@
 	hidden :
 	{
-		title	: 'خصائص الحقل الخفي',
+		title	: 'خصائص الحقل المخفي',
 		name	: 'الاسم',
 		value	: 'القيمة'
@@ -372,32 +402,29 @@
 		titleButton	: 'خصائص زر الصورة',
 		menu		: 'خصائص الصورة',
-		infoTab	: 'معلومات الصورة',
+		infoTab		: 'معلومات الصورة',
 		btnUpload	: 'أرسلها للخادم',
-		url		: 'موقع الصورة',
-		upload	: 'رفع',
-		alt		: 'الوصف',
+		upload		: 'رفع',
+		alt			: 'عنوان الصورة',
 		width		: 'العرض',
-		height	: 'الإرتفاع',
+		height		: 'الإرتفاع',
 		lockRatio	: 'تناسق الحجم',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'إستعادة الحجم الأصلي',
-		border	: 'سمك الحدود',
-		hSpace	: 'تباعد أفقي',
-		vSpace	: 'تباعد عمودي',
+		border		: 'سمك الحدود',
+		hSpace		: 'تباعد أفقي',
+		vSpace		: 'تباعد عمودي',
 		align		: 'محاذاة',
 		alignLeft	: 'يسار',
-		alignAbsBottom: 'أسفل النص',
-		alignAbsMiddle: 'وسط السطر',
-		alignBaseline	: 'على السطر',
-		alignBottom	: 'أسفل',
-		alignMiddle	: 'وسط',
 		alignRight	: 'يمين',
-		alignTextTop	: 'أعلى النص',
-		alignTop	: 'أعلى',
-		preview	: 'معاينة',
 		alertUrl	: 'فضلاً أكتب الموقع الذي توجد عليه هذه الصورة.',
-		linkTab	: 'الرابط',
-		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
-		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		linkTab		: 'الرابط',
+		button2Img	: 'هل تريد تحويل زر الصورة المختار إلى صورة بسيطة؟',
+		img2Button	: 'هل تريد تحويل الصورة المختارة إلى زر صورة؟',
+		urlMissing	: 'عنوان مصدر الصورة مفقود',
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -405,51 +432,51 @@
 	flash :
 	{
-		properties		: 'خصائص فيلم الفلاش',
-		propertiesTab	: 'Properties', // MISSING
-		title		: 'خصائص فيلم الفلاش',
-		chkPlay		: 'تشغيل تلقائي',
-		chkLoop		: 'تكرار',
-		chkMenu		: 'تمكين قائمة فيلم الفلاش',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'الحجم',
+		properties		: 'خصائص الفلاش',
+		propertiesTab	: 'الخصائص',
+		title			: 'خصائص فيلم الفلاش',
+		chkPlay			: 'تشغيل تلقائي',
+		chkLoop			: 'تكرار',
+		chkMenu			: 'تمكين قائمة فيلم الفلاش',
+		chkFull			: 'ملء الشاشة',
+ 		scale			: 'الحجم',
 		scaleAll		: 'إظهار الكل',
 		scaleNoBorder	: 'بلا حدود',
 		scaleFit		: 'ضبط تام',
-		access			: 'Script Access', // MISSING
-		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'محاذاة',
-		alignLeft	: 'يسار',
-		alignAbsBottom: 'أسفل النص',
-		alignAbsMiddle: 'وسط السطر',
+		access			: 'دخول النص البرمجي',
+		accessAlways	: 'دائماً',
+		accessSameDomain: 'نفس النطاق',
+		accessNever		: 'مطلقاً',
+		align			: 'محاذاة',
+		alignLeft		: 'يسار',
+		alignAbsBottom	: 'أسفل النص',
+		alignAbsMiddle	: 'وسط السطر',
 		alignBaseline	: 'على السطر',
-		alignBottom	: 'أسفل',
-		alignMiddle	: 'وسط',
-		alignRight	: 'يمين',
+		alignBottom		: 'أسفل',
+		alignMiddle		: 'وسط',
+		alignRight		: 'يمين',
 		alignTextTop	: 'أعلى النص',
-		alignTop	: 'أعلى',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'لون الخلفية',
-		width	: 'العرض',
-		height	: 'الإرتفاع',
-		hSpace	: 'تباعد أفقي',
-		vSpace	: 'تباعد عمودي',
-		validateSrc : 'فضلاً أدخل عنوان الموقع الذي يشير إليه الرابط',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'أعلى',
+		quality			: 'جودة',
+		qualityBest		: 'أفضل',
+		qualityHigh		: 'عالية',
+		qualityAutoHigh	: 'عالية تلقائياً',
+		qualityMedium	: 'متوسطة',
+		qualityAutoLow	: 'منخفضة تلقائياً',
+		qualityLow		: 'منخفضة',
+		windowModeWindow: 'نافذة',
+		windowModeOpaque: 'غير شفاف',
+		windowModeTransparent : 'شفاف',
+		windowMode		: 'وضع النافذة',
+		flashvars		: 'متغيرات الفلاش',
+		bgcolor			: 'لون الخلفية',
+		width			: 'العرض',
+		height			: 'الإرتفاع',
+		hSpace			: 'تباعد أفقي',
+		vSpace			: 'تباعد عمودي',
+		validateSrc		: 'فضلاً أدخل عنوان الموقع الذي يشير إليه الرابط',
+		validateWidth	: 'العرض يجب أن يكون عدداً.',
+		validateHeight	: 'الارتفاع يجب أن يكون عدداً.',
+		validateHSpace	: 'HSpace يجب أن يكون عدداً.',
+		validateVSpace	: 'VSpace يجب أن يكون عدداً.'
 	},
 
@@ -458,7 +485,7 @@
 	{
 		toolbar			: 'تدقيق إملائي',
-		title			: 'Spell Check', // MISSING
-		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
-		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		title			: 'التدقيق الإملائي',
+		notAvailable	: 'عفواً، ولكن هذه الخدمة غير متاحة الان',
+		errorLoading	: 'خطأ في تحميل تطبيق خدمة الاستضافة: %s.',
 		notInDic		: 'ليست في القاموس',
 		changeTo		: 'التغيير إلى',
@@ -469,9 +496,9 @@
 		btnUndo			: 'تراجع',
 		noSuggestions	: '- لا توجد إقتراحات -',
-		progress		: 'جاري التدقيق إملائياً',
-		noMispell		: 'تم إكمال التدقيق الإملائي: لم يتم العثور على أي أخطاء إملائية',
-		noChanges		: 'تم إكمال التدقيق الإملائي: لم يتم تغيير أي كلمة',
-		oneChange		: 'تم إكمال التدقيق الإملائي: تم تغيير كلمة واحدة فقط',
-		manyChanges		: 'تم إكمال التدقيق الإملائي: تم تغيير %1 كلماتكلمة',
+		progress		: 'جاري التدقيق الاملائى',
+		noMispell		: 'تم التدقيق الإملائي: لم يتم العثور على أي أخطاء إملائية',
+		noChanges		: 'تم التدقيق الإملائي: لم يتم تغيير أي كلمة',
+		oneChange		: 'تم التدقيق الإملائي: تم تغيير كلمة واحدة فقط',
+		manyChanges		: 'تم إكمال التدقيق الإملائي: تم تغيير %1 من كلمات',
 		ieSpellDownload	: 'المدقق الإملائي (الإنجليزي) غير مثبّت. هل تود تحميله الآن؟'
 	},
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'ابتسامات',
-		title	: 'إدراج إبتسامات '
+		title	: 'إدراج ابتسامات',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
-	},
-
-	numberedlist : 'تعداد رقمي',
-	bulletedlist : 'تعداد نقطي',
-	indent : 'زيادة المسافة البادئة',
-	outdent : 'إنقاص المسافة البادئة',
+		eleLabel : 'Elements path', // MISSING
+		eleTitle : 'عنصر 1%'
+	},
+
+	numberedlist	: 'ادخال/حذف تعداد رقمي',
+	bulletedlist	: 'ادخال/حذف تعداد نقطي',
+	indent			: 'زيادة المسافة البادئة',
+	outdent			: 'إنقاص المسافة البادئة',
 
 	justify :
 	{
-		left : 'محاذاة إلى اليسار',
-		center : 'توسيط',
-		right : 'محاذاة إلى اليمين',
-		block : 'ضبط'
+		left	: 'محاذاة إلى اليسار',
+		center	: 'توسيط',
+		right	: 'محاذاة إلى اليمين',
+		block	: 'ضبط'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'لصق',
-		cutError	: 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+X).',
-		copyError	: 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع النسخ التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+C).',
-		pasteMsg	: 'الصق داخل الصندوق بإستخدام زرّي (<STRONG>Ctrl+V</STRONG>) في لوحة المفاتيح، ثم اضغط زر  <STRONG>موافق</STRONG>.',
-		securityMsg	: 'نظراً لإعدادات الأمان الخاصة بمتصفحك، لن يتمكن هذا المحرر من الوصول لمحتوى حافظتك، لذا وجب عليك لصق المحتوى مرة أخرى في هذه النافذة.'
+		cutError	: 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+X).',
+		copyError	: 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع النسخ التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+C).',
+		pasteMsg	: 'الصق داخل الصندوق بإستخدام زرائر (<STRONG>Ctrl/Cmd+V</STRONG>) في لوحة المفاتيح، ثم اضغط زر  <STRONG>موافق</STRONG>.',
+		securityMsg	: 'نظراً لإعدادات الأمان الخاصة بمتصفحك، لن يتمكن هذا المحرر من الوصول لمحتوى حافظتك، لذلك يجب عليك لصق المحتوى مرة أخرى في هذه النافذة.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'لصق من وورد',
-		title : 'لصق من وورد',
-		advice : 'الصق داخل الصندوق بإستخدام زرّي (<STRONG>Ctrl+V</STRONG>) في لوحة المفاتيح، ثم اضغط زر  <STRONG>موافق</STRONG>.',
-		ignoreFontFace : 'تجاهل تعريفات أسماء الخطوط',
-		removeStyle : 'إزالة تعريفات الأنماط'
+		confirmCleanup	: 'يبدو أن النص المراد لصقه منسوخ من برنامج وورد. هل تود تنظيفه قبل الشروع في عملية اللصق؟',
+		toolbar			: 'لصق من وورد',
+		title			: 'لصق من وورد',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'لصق كنص بسيط',
-		title : 'لصق كنص بسيط'
+		button	: 'لصق كنص بسيط',
+		title	: 'لصق كنص بسيط'
 	},
 
 	templates :
 	{
-		button : 'القوالب',
-		title : 'قوالب المحتوى',
-		insertOption: 'استبدال المحتوى',
-		selectPromptMsg: 'اختر القالب الذي تود وضعه في المحرر <br>(سيتم فقدان المحتوى الحالي):',
-		emptyListMsg : '(لم يتم تعريف أي قالب)'
+		button			: 'القوالب',
+		title			: 'قوالب المحتوى',
+		options : 'Template Options', // MISSING
+		insertOption	: 'استبدال المحتوى',
+		selectPromptMsg	: 'اختر القالب الذي تود وضعه في المحرر',
+		emptyListMsg	: '(لم يتم تعريف أي قالب)'
 	},
 
@@ -540,146 +570,178 @@
 	stylesCombo :
 	{
-		label : 'نمط',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'أنماط',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'أنماط الفقرة',
+		panelTitle2	: 'أنماط مضمنة',
+		panelTitle3	: 'أنماط الكائن'
 	},
 
 	format :
 	{
-		label : 'تنسيق',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'تنسيق',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		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 : 'Normal (DIV)' // MISSING
-	},
+		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				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'خط',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'خط',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'خط',
+		voiceLabel	: 'حجم الخط',
+		panelTitle	: 'حجم الخط'
 	},
 
 	fontSize :
 	{
-		label : 'حجم الخط',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'حجم الخط',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'حجم الخط',
+		voiceLabel	: 'حجم الخط',
+		panelTitle	: 'حجم الخط'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'لون النص',
-		bgColorTitle : 'لون الخلفية',
-		auto : 'تلقائي',
-		more : 'ألوان إضافية...'
+		textColorTitle	: 'لون النص',
+		bgColorTitle	: 'لون الخلفية',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'تلقائي',
+		more			: 'ألوان إضافية...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'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' : 'سماوي',
+		'F0F8FF' : 'لبني',
+		'E6E6FA' : 'أرجواني',
+		'FFF' : 'أبيض'
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'تدقيق إملائي أثناء الكتابة',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'تفعيل SCAYT',
+		disable			: 'تعطيل SCAYT',
+		about			: 'عن SCAYT',
+		toggle			: 'تثبيت SCAYT',
+		options			: 'خيارات',
+		langs			: 'لغات',
+		moreSuggestions	: 'المزيد من المقترحات',
+		ignore			: 'تجاهل',
+		ignoreAll		: 'تجاهل الكل',
+		addWord			: 'إضافة كلمة',
+		emptyDic		: 'اسم القاموس يجب ألا يكون فارغاً.',
+
+		optionsTab		: 'خيارات',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'لغات',
+
+		dictionariesTab	: 'قواميس',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'عن'
 	},
 
 	about :
 	{
-		title : 'حول CKEditor',
-		dlgTitle : 'حول rotidEKC',
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
-	},
-
-	maximize : 'Maximize', // MISSING
-	minimize : 'Minimize', // MISSING
+		title		: 'عن CKEditor',
+		dlgTitle	: 'عن CKEditor',
+		moreInfo	: 'للحصول على معلومات الترخيص ، يرجى زيارة موقعنا على شبكة الانترنت:',
+		copy		: 'حقوق النشر &copy; $1. جميع الحقوق محفوظة.'
+	},
+
+	maximize : 'تكبير',
+	minimize : 'تصغير',
 
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
-	},
-
-	resize : 'Drag to resize', // MISSING
+		anchor	: 'إرساء',
+		flash	: 'رسم متحرك بالفلاش',
+		div		: 'فاصل صفحة',
+		unknown	: 'كائن غير معروف'
+	},
+
+	resize : 'اسحب لتغيير الحجم',
 
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'اختر لون',
+		options	:	'Color Options', // MISSING
+		highlight	: 'إلقاء الضوء',
+		selected	: 'مُختار',
+		clear		: 'مسح'
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/bg.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/bg.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/bg.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Формуляр',
 		checkbox		: 'Поле за отметка',
-		radio		: 'Поле за опция',
+		radio			: 'Поле за опция',
 		textField		: 'Текстово поле',
 		textarea		: 'Текстова област',
 		hiddenField		: 'Скрито поле',
 		button			: 'Бутон',
-		select	: 'Падащо меню с опции',
+		select			: 'Падащо меню с опции',
 		imageButton		: 'Бутон-изображение',
 		notSet			: '<не е настроен>',
@@ -89,9 +93,17 @@
 		ok				: 'ОК',
 		cancel			: 'Отказ',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'Подробности...',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Вмъкни специален символ',
-		title		: 'Изберете специален символ'
+		title		: 'Изберете специален символ',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Добави/Редактирай връзка',
+		other 		: '<друг>',
 		menu		: 'Редактирай връзка',
 		title		: 'Връзка',
@@ -117,14 +136,9 @@
 		advanced	: 'Подробности...',
 		type		: 'Вид на връзката',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Котва в текущата страница',
 		toEmail		: 'Е-поща',
-		target		: 'Цел',
-		targetNotSet	: '<не е настроен>',
-		targetFrame	: '<рамка>',
-		targetPopup	: '<дъщерен прозорец>',
-		targetNew	: 'Нов прозорец (_blank)',
-		targetTop	: 'Целия прозорец (_top)',
-		targetSelf	: 'Активния прозорец (_self)',
-		targetParent	: 'Родителски прозорец (_parent)',
+		targetFrame		: '<рамка>',
+		targetPopup		: '<дъщерен прозорец>',
 		targetFrameName	: 'Име на целевия прозорец',
 		targetPopupName	: 'Име на дъщерния прозорец',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Поле за статус',
-		popupLocationBar	: 'Поле за адрес',
+		popupLocationBar: 'Поле за адрес',
 		popupToolbar	: 'Панел с бутони',
 		popupMenuBar	: 'Меню',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'посока на речта',
-		langDirNotSet	: '<не е настроен>',
 		langDirLTR		: 'От ляво на дясно',
 		langDirRTL		: 'От дясно на ляво',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Размер на рамката',
 		align		: 'Подравняване',
-		alignNotSet	: '<Не е избрано>',
 		alignLeft	: 'Ляво',
 		alignCenter	: 'Център',
@@ -211,4 +246,5 @@
 		widthPx		: 'пиксели',
 		widthPc		: 'проценти',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Височина',
 		cellSpace	: 'Разстояние между клетките',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Действие',
 		method		: 'Метод',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Цел',
-		targetNotSet	: '<не е настроен>',
-		targetNew	: 'Нов прозорец (_blank)',
-		targetTop	: 'Целия прозорец (_top)',
-		targetSelf	: 'Активния прозорец (_self)',
-		targetParent	: 'Родителски прозорец (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Параметри на бутона-изображение',
 		menu		: 'Параметри на изображението',
-		infoTab	: 'Информация за изображението',
+		infoTab		: 'Информация за изображението',
 		btnUpload	: 'Прати към сървъра',
-		url		: 'Пълен път (URL)',
-		upload	: 'Качи',
-		alt		: 'Алтернативен текст',
+		upload		: 'Качи',
+		alt			: 'Алтернативен текст',
 		width		: 'Ширина',
-		height	: 'Височина',
+		height		: 'Височина',
 		lockRatio	: 'Запази пропорцията',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Възстанови размера',
-		border	: 'Рамка',
-		hSpace	: 'Хоризонтален отстъп',
-		vSpace	: 'Вертикален отстъп',
+		border		: 'Рамка',
+		hSpace		: 'Хоризонтален отстъп',
+		vSpace		: 'Вертикален отстъп',
 		align		: 'Подравняване',
 		alignLeft	: 'Ляво',
-		alignAbsBottom: 'Най-долу',
-		alignAbsMiddle: 'Точно по средата',
-		alignBaseline	: 'По базовата линия',
-		alignBottom	: 'Долу',
-		alignMiddle	: 'По средата',
 		alignRight	: 'Дясно',
-		alignTextTop	: 'Върху текста',
-		alignTop	: 'Отгоре',
-		preview	: 'Изглед',
 		alertUrl	: 'Моля, въведете пълния път до изображението',
-		linkTab	: 'Връзка',
+		linkTab		: 'Връзка',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Параметри на Flash обекта',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Параметри на Flash обекта',
-		chkPlay		: 'Автоматично стартиране',
-		chkLoop		: 'Ново стартиране след завършването',
-		chkMenu		: 'Разрешено Flash меню',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Оразмеряване',
+		title			: 'Параметри на Flash обекта',
+		chkPlay			: 'Автоматично стартиране',
+		chkLoop			: 'Ново стартиране след завършването',
+		chkMenu			: 'Разрешено Flash меню',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Оразмеряване',
 		scaleAll		: 'Покажи целия обект',
 		scaleNoBorder	: 'Без рамка',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Подравняване',
-		alignLeft	: 'Ляво',
-		alignAbsBottom: 'Най-долу',
-		alignAbsMiddle: 'Точно по средата',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Подравняване',
+		alignLeft		: 'Ляво',
+		alignAbsBottom	: 'Най-долу',
+		alignAbsMiddle	: 'Точно по средата',
 		alignBaseline	: 'По базовата линия',
-		alignBottom	: 'Долу',
-		alignMiddle	: 'По средата',
-		alignRight	: 'Дясно',
+		alignBottom		: 'Долу',
+		alignMiddle		: 'По средата',
+		alignRight		: 'Дясно',
 		alignTextTop	: 'Върху текста',
-		alignTop	: 'Отгоре',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Цвят на фона',
-		width	: 'Ширина',
-		height	: 'Височина',
-		hSpace	: 'Хоризонтален отстъп',
-		vSpace	: 'Вертикален отстъп',
-		validateSrc : 'Моля, напишете пълния път (URL)',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Отгоре',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Цвят на фона',
+		width			: 'Ширина',
+		height			: 'Височина',
+		hSpace			: 'Хоризонтален отстъп',
+		vSpace			: 'Вертикален отстъп',
+		validateSrc		: 'Моля, напишете пълния път (URL)',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'Усмивка',
-		title	: 'Добави усмивка'
+		title	: 'Добави усмивка',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Нумериран списък',
-	bulletedlist : 'Ненумериран списък',
-	indent : 'Увеличи отстъпа',
-	outdent : 'Намали отстъпа',
+	numberedlist	: 'Нумериран списък',
+	bulletedlist	: 'Ненумериран списък',
+	indent			: 'Увеличи отстъпа',
+	outdent			: 'Намали отстъпа',
 
 	justify :
 	{
-		left : 'Подравняване в ляво',
-		center : 'Подравнявне в средата',
-		right : 'Подравняване в дясно',
-		block : 'Двустранно подравняване'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: 'Подравняване в ляво',
+		center	: 'Подравнявне в средата',
+		right	: 'Подравняване в дясно',
+		block	: 'Двустранно подравняване'
+	},
+
+	blockquote : 'Block Quote', // MISSING
 
 	clipboard :
 	{
 		title		: 'Вмъкни',
-		cutError	: 'Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни изрязването. За целта използвайте клавиатурата (Ctrl+X).',
-		copyError	: 'Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни запаметяването. За целта използвайте клавиатурата (Ctrl+C).',
-		pasteMsg	: 'Вмъкнете тук съдъжанието с клавиатуарата (<STRONG>Ctrl+V</STRONG>) и натиснете <STRONG>OK</STRONG>.',
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+		cutError	: 'Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни изрязването. За целта използвайте клавиатурата (Ctrl/Cmd+X).',
+		copyError	: 'Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни запаметяването. За целта използвайте клавиатурата (Ctrl/Cmd+C).',
+		pasteMsg	: 'Вмъкнете тук съдъжанието с клавиатуарата (<STRONG>Ctrl/Cmd+V</STRONG>) и натиснете <STRONG>OK</STRONG>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Вмъкни от MS Word',
-		title : 'Вмъкни от MS Word',
-		advice : 'Вмъкнете тук съдъжанието с клавиатуарата (<STRONG>Ctrl+V</STRONG>) и натиснете <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Игнорирай шрифтовите дефиниции',
-		removeStyle : 'Изтрий стиловите дефиниции'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Вмъкни от MS Word',
+		title			: 'Вмъкни от MS Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Вмъкни като чист текст',
-		title : 'Вмъкни като чист текст'
+		button	: 'Вмъкни като чист текст',
+		title	: 'Вмъкни като чист текст'
 	},
 
 	templates :
 	{
-		button : 'Шаблони',
-		title : 'Шаблони',
-		insertOption: 'Replace actual contents', // MISSING
-		selectPromptMsg: 'Изберете шаблон <br>(текущото съдържание на редактора ще бъде загубено):',
-		emptyListMsg : '(Няма дефинирани шаблони)'
+		button			: 'Шаблони',
+		title			: 'Шаблони',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Replace actual contents', // MISSING
+		selectPromptMsg	: 'Изберете шаблон <br>(текущото съдържание на редактора ще бъде загубено):',
+		emptyListMsg	: '(Няма дефинирани шаблони)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Стил',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Стил',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Формат',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Формат',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		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)'
-	},
+		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				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Шрифт',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Шрифт',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Шрифт',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Шрифт'
 	},
 
 	fontSize :
 	{
-		label : 'Размер',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Размер',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Размер',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Размер'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Цвят на текста',
-		bgColorTitle : 'Цвят на фона',
-		auto : 'По подразбиране',
-		more : 'Други цветове...'
+		textColorTitle	: 'Цвят на текста',
+		bgColorTitle	: 'Цвят на фона',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'По подразбиране',
+		more			: 'Други цветове...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/bn.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/bn.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/bn.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'ফর্ম',
 		checkbox		: 'চেক বাক্স',
-		radio		: 'রেডিও বাটন',
+		radio			: 'রেডিও বাটন',
 		textField		: 'টেক্সট ফীল্ড',
 		textarea		: 'টেক্সট এরিয়া',
 		hiddenField		: 'গুপ্ত ফীল্ড',
 		button			: 'বাটন',
-		select	: 'বাছাই ফীল্ড',
+		select			: 'বাছাই ফীল্ড',
 		imageButton		: 'ছবির বাটন',
 		notSet			: '<সেট নেই>',
@@ -89,9 +93,17 @@
 		ok				: 'ওকে',
 		cancel			: 'বাতিল',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'এডভান্সড',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'বিশেষ অক্ষর যুক্ত কর',
-		title		: 'বিশেষ ক্যারেক্টার বাছাই কর'
+		title		: 'বিশেষ ক্যারেক্টার বাছাই কর',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'লিংক যুক্ত কর',
+		other 		: '<other>', // MISSING
 		menu		: 'লিংক সম্পাদন',
 		title		: 'লিংক',
@@ -117,14 +136,9 @@
 		advanced	: 'এডভান্সড',
 		type		: 'লিংক প্রকার',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'এই পেজে নোঙর কর',
 		toEmail		: 'ইমেইল',
-		target		: 'টার্গেট',
-		targetNotSet	: '<সেট নেই>',
-		targetFrame	: '<ফ্রেম>',
-		targetPopup	: '<পপআপ উইন্ডো>',
-		targetNew	: 'নতুন উইন্ডো (_blank)',
-		targetTop	: 'শীর্ষ উইন্ডো (_top)',
-		targetSelf	: 'এই উইন্ডো (_self)',
-		targetParent	: 'মূল উইন্ডো (_parent)',
+		targetFrame		: '<ফ্রেম>',
+		targetPopup		: '<পপআপ উইন্ডো>',
 		targetFrameName	: 'টার্গেট ফ্রেমের নাম',
 		targetPopupName	: 'পপআপ উইন্ডোর নাম',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'স্ট্যাটাস বার',
-		popupLocationBar	: 'লোকেশন বার',
+		popupLocationBar: 'লোকেশন বার',
 		popupToolbar	: 'টুল বার',
 		popupMenuBar	: 'মেন্যু বার',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'ভাষা লেখার দিক',
-		langDirNotSet	: '<সেট নেই>',
 		langDirLTR		: 'বাম থেকে ডান (LTR)',
 		langDirRTL		: 'ডান থেকে বাম (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'বর্ডার সাইজ',
 		align		: 'এলাইনমেন্ট',
-		alignNotSet	: '<সেট নেই>',
 		alignLeft	: 'বামে',
 		alignCenter	: 'মাঝখানে',
@@ -211,4 +246,5 @@
 		widthPx		: 'পিক্সেল',
 		widthPc		: 'শতকরা',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'দৈর্ঘ্য',
 		cellSpace	: 'সেল স্পেস',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'একশ্যন',
 		method		: 'পদ্ধতি',
-		encoding	: 'Encoding', // MISSING
-		target		: 'টার্গেট',
-		targetNotSet	: '<সেট নেই>',
-		targetNew	: 'নতুন উইন্ডো (_blank)',
-		targetTop	: 'শীর্ষ উইন্ডো (_top)',
-		targetSelf	: 'এই উইন্ডো (_self)',
-		targetParent	: 'মূল উইন্ডো (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'ছবি বাটন প্রোপার্টি',
 		menu		: 'ছবির প্রোপার্টি',
-		infoTab	: 'ছবির তথ্য',
+		infoTab		: 'ছবির তথ্য',
 		btnUpload	: 'ইহাকে সার্ভারে প্রেরন কর',
-		url		: 'URL',
-		upload	: 'আপলোড',
-		alt		: 'বিকল্প টেক্সট',
+		upload		: 'আপলোড',
+		alt			: 'বিকল্প টেক্সট',
 		width		: 'প্রস্থ',
-		height	: 'দৈর্ঘ্য',
+		height		: 'দৈর্ঘ্য',
 		lockRatio	: 'অনুপাত লক কর',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'সাইজ পূর্বাবস্থায় ফিরিয়ে দাও',
-		border	: 'বর্ডার',
-		hSpace	: 'হরাইজন্টাল স্পেস',
-		vSpace	: 'ভার্টিকেল স্পেস',
+		border		: 'বর্ডার',
+		hSpace		: 'হরাইজন্টাল স্পেস',
+		vSpace		: 'ভার্টিকেল স্পেস',
 		align		: 'এলাইন',
 		alignLeft	: 'বামে',
-		alignAbsBottom: 'Abs নীচে',
-		alignAbsMiddle: 'Abs উপর',
-		alignBaseline	: 'মূল রেখা',
-		alignBottom	: 'নীচে',
-		alignMiddle	: 'মধ্য',
 		alignRight	: 'ডানে',
-		alignTextTop	: 'টেক্সট উপর',
-		alignTop	: 'উপর',
-		preview	: 'প্রীভিউ',
 		alertUrl	: 'অনুগ্রহক করে ছবির URL টাইপ করুন',
-		linkTab	: 'লিংক',
+		linkTab		: 'লিংক',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'ফ্লাশ প্রোপার্টি',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'ফ্ল্যাশ প্রোপার্টি',
-		chkPlay		: 'অটো প্লে',
-		chkLoop		: 'লূপ',
-		chkMenu		: 'ফ্ল্যাশ মেনু এনাবল কর',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'স্কেল',
+		title			: 'ফ্ল্যাশ প্রোপার্টি',
+		chkPlay			: 'অটো প্লে',
+		chkLoop			: 'লূপ',
+		chkMenu			: 'ফ্ল্যাশ মেনু এনাবল কর',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'স্কেল',
 		scaleAll		: 'সব দেখাও',
 		scaleNoBorder	: 'কোনো বর্ডার নেই',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'এলাইন',
-		alignLeft	: 'বামে',
-		alignAbsBottom: 'Abs নীচে',
-		alignAbsMiddle: 'Abs উপর',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'এলাইন',
+		alignLeft		: 'বামে',
+		alignAbsBottom	: 'Abs নীচে',
+		alignAbsMiddle	: 'Abs উপর',
 		alignBaseline	: 'মূল রেখা',
-		alignBottom	: 'নীচে',
-		alignMiddle	: 'মধ্য',
-		alignRight	: 'ডানে',
+		alignBottom		: 'নীচে',
+		alignMiddle		: 'মধ্য',
+		alignRight		: 'ডানে',
 		alignTextTop	: 'টেক্সট উপর',
-		alignTop	: 'উপর',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'বেকগ্রাউন্ড রং',
-		width	: 'প্রস্থ',
-		height	: 'দৈর্ঘ্য',
-		hSpace	: 'হরাইজন্টাল স্পেস',
-		vSpace	: 'ভার্টিকেল স্পেস',
-		validateSrc : 'অনুগ্রহ করে URL লিংক টাইপ করুন',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'উপর',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'বেকগ্রাউন্ড রং',
+		width			: 'প্রস্থ',
+		height			: 'দৈর্ঘ্য',
+		hSpace			: 'হরাইজন্টাল স্পেস',
+		vSpace			: 'ভার্টিকেল স্পেস',
+		validateSrc		: 'অনুগ্রহ করে URL লিংক টাইপ করুন',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'স্মাইলী',
-		title	: 'স্মাইলী যুক্ত কর'
+		title	: 'স্মাইলী যুক্ত কর',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'সাংখ্যিক লিস্টের লেবেল',
-	bulletedlist : 'বুলেট লিস্ট লেবেল',
-	indent : 'ইনডেন্ট বাড়াও',
-	outdent : 'ইনডেন্ট কমাও',
+	numberedlist	: 'সাংখ্যিক লিস্টের লেবেল',
+	bulletedlist	: 'বুলেট লিস্ট লেবেল',
+	indent			: 'ইনডেন্ট বাড়াও',
+	outdent			: 'ইনডেন্ট কমাও',
 
 	justify :
 	{
-		left : 'বা দিকে ঘেঁষা',
-		center : 'মাঝ বরাবর ঘেষা',
-		right : 'ডান দিকে ঘেঁষা',
-		block : 'ব্লক জাস্টিফাই'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: 'বা দিকে ঘেঁষা',
+		center	: 'মাঝ বরাবর ঘেষা',
+		right	: 'ডান দিকে ঘেঁষা',
+		block	: 'ব্লক জাস্টিফাই'
+	},
+
+	blockquote : 'Block Quote', // MISSING
 
 	clipboard :
 	{
 		title		: 'পেস্ট',
-		cutError	: 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কাট করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl+X)।',
-		copyError	: 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কপি করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl+C)।',
-		pasteMsg	: 'অনুগ্রহ করে নীচের বাক্সে কিবোর্ড ব্যবহার করে (<STRONG>Ctrl+V</STRONG>) পেস্ট করুন এবং <STRONG>OK</STRONG> চাপ দিন',
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+		cutError	: 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কাট করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+X)।',
+		copyError	: 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কপি করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+C)।',
+		pasteMsg	: 'অনুগ্রহ করে নীচের বাক্সে কিবোর্ড ব্যবহার করে (<STRONG>Ctrl/Cmd+V</STRONG>) পেস্ট করুন এবং <STRONG>OK</STRONG> চাপ দিন',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'পেস্ট (শব্দ)',
-		title : 'পেস্ট (শব্দ)',
-		advice : 'অনুগ্রহ করে নীচের বাক্সে কিবোর্ড ব্যবহার করে (<STRONG>Ctrl+V</STRONG>) পেস্ট করুন এবং <STRONG>OK</STRONG> চাপ দিন',
-		ignoreFontFace : 'ফন্ট ফেস ডেফিনেশন ইগনোর করুন',
-		removeStyle : 'স্টাইল ডেফিনেশন সরিয়ে দিন'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'পেস্ট (শব্দ)',
+		title			: 'পেস্ট (শব্দ)',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'সাদা টেক্সট হিসেবে পেস্ট কর',
-		title : 'সাদা টেক্সট হিসেবে পেস্ট কর'
+		button	: 'সাদা টেক্সট হিসেবে পেস্ট কর',
+		title	: 'সাদা টেক্সট হিসেবে পেস্ট কর'
 	},
 
 	templates :
 	{
-		button : 'টেমপ্লেট',
-		title : 'কনটেন্ট টেমপ্লেট',
-		insertOption: 'Replace actual contents', // MISSING
-		selectPromptMsg: 'অনুগ্রহ করে এডিটরে ওপেন করার জন্য টেমপ্লেট বাছাই করুন<br>(আসল কনটেন্ট হারিয়ে যাবে):',
-		emptyListMsg : '(কোন টেমপ্লেট ডিফাইন করা নেই)'
+		button			: 'টেমপ্লেট',
+		title			: 'কনটেন্ট টেমপ্লেট',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Replace actual contents', // MISSING
+		selectPromptMsg	: 'অনুগ্রহ করে এডিটরে ওপেন করার জন্য টেমপ্লেট বাছাই করুন<br>(আসল কনটেন্ট হারিয়ে যাবে):',
+		emptyListMsg	: '(কোন টেমপ্লেট ডিফাইন করা নেই)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'স্টাইল',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'স্টাইল',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'ফন্ট ফরমেট',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'ফন্ট ফরমেট',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'সাধারণ',
-		tag_pre : 'ফর্মেটেড',
-		tag_address : 'ঠিকানা',
-		tag_h1 : 'শীর্ষক ১',
-		tag_h2 : 'শীর্ষক ২',
-		tag_h3 : 'শীর্ষক ৩',
-		tag_h4 : 'শীর্ষক ৪',
-		tag_h5 : 'শীর্ষক ৫',
-		tag_h6 : 'শীর্ষক ৬',
-		tag_div : 'শীর্ষক (DIV)'
-	},
+		label		: 'ফন্ট ফরমেট',
+		panelTitle	: 'ফন্ট ফরমেট',
+
+		tag_p		: 'সাধারণ',
+		tag_pre		: 'ফর্মেটেড',
+		tag_address	: 'ঠিকানা',
+		tag_h1		: 'শীর্ষক ১',
+		tag_h2		: 'শীর্ষক ২',
+		tag_h3		: 'শীর্ষক ৩',
+		tag_h4		: 'শীর্ষক ৪',
+		tag_h5		: 'শীর্ষক ৫',
+		tag_h6		: 'শীর্ষক ৬',
+		tag_div		: 'শীর্ষক (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'ফন্ট',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'ফন্ট',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'ফন্ট',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'ফন্ট'
 	},
 
 	fontSize :
 	{
-		label : 'সাইজ',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'সাইজ',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'সাইজ',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'সাইজ'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'টেক্স্ট রং',
-		bgColorTitle : 'বেকগ্রাউন্ড রং',
-		auto : 'অটোমেটিক',
-		more : 'আরও রং...'
+		textColorTitle	: 'টেক্স্ট রং',
+		bgColorTitle	: 'বেকগ্রাউন্ড রং',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'অটোমেটিক',
+		more			: 'আরও রং...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/bs.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/bs.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/bs.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Form', // MISSING
 		checkbox		: 'Checkbox', // MISSING
-		radio		: 'Radio Button', // MISSING
+		radio			: 'Radio Button', // MISSING
 		textField		: 'Text Field', // MISSING
 		textarea		: 'Textarea', // MISSING
 		hiddenField		: 'Hidden Field', // MISSING
 		button			: 'Button', // MISSING
-		select	: 'Selection Field', // MISSING
+		select			: 'Selection Field', // MISSING
 		imageButton		: 'Image Button', // MISSING
 		notSet			: '<nije podešeno>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Odustani',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'Naprednije',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Ubaci specijalni karater',
-		title		: 'Izaberi specijalni karakter'
+		title		: 'Izaberi specijalni karakter',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Ubaci/Izmjeni link',
+		other 		: '<other>', // MISSING
 		menu		: 'Izmjeni link',
 		title		: 'Link',
@@ -117,14 +136,9 @@
 		advanced	: 'Naprednije',
 		type		: 'Tip linka',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Sidro na ovoj stranici',
 		toEmail		: 'E-Mail',
-		target		: 'Prozor',
-		targetNotSet	: '<nije podešeno>',
-		targetFrame	: '<frejm>',
-		targetPopup	: '<popup prozor>',
-		targetNew	: 'Novi prozor (_blank)',
-		targetTop	: 'Najgornji prozor (_top)',
-		targetSelf	: 'Isti prozor (_self)',
-		targetParent	: 'Glavni prozor (_parent)',
+		targetFrame		: '<frejm>',
+		targetPopup		: '<popup prozor>',
 		targetFrameName	: 'Target Frame Name', // MISSING
 		targetPopupName	: 'Naziv popup prozora',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Statusna traka',
-		popupLocationBar	: 'Traka za lokaciju',
+		popupLocationBar: 'Traka za lokaciju',
 		popupToolbar	: 'Traka sa alatima',
 		popupMenuBar	: 'Izborna traka',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Smjer pisanja',
-		langDirNotSet	: '<nije podešeno>',
 		langDirLTR		: 'S lijeva na desno (LTR)',
 		langDirRTL		: 'S desna na lijevo (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Okvir',
 		align		: 'Poravnanje',
-		alignNotSet	: '<Nije podešeno>',
 		alignLeft	: 'Lijevo',
 		alignCenter	: 'Centar',
@@ -211,4 +246,5 @@
 		widthPx		: 'piksela',
 		widthPc		: 'posto',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Visina',
 		cellSpace	: 'Razmak æelija',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Action', // MISSING
 		method		: 'Method', // MISSING
-		encoding	: 'Encoding', // MISSING
-		target		: 'Prozor',
-		targetNotSet	: '<nije podešeno>',
-		targetNew	: 'Novi prozor (_blank)',
-		targetTop	: 'Najgornji prozor (_top)',
-		targetSelf	: 'Isti prozor (_self)',
-		targetParent	: 'Glavni prozor (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Image Button Properties', // MISSING
 		menu		: 'Svojstva slike',
-		infoTab	: 'Info slike',
+		infoTab		: 'Info slike',
 		btnUpload	: 'Šalji na server',
-		url		: 'URL',
-		upload	: 'Šalji',
-		alt		: 'Tekst na slici',
+		upload		: 'Šalji',
+		alt			: 'Tekst na slici',
 		width		: 'Širina',
-		height	: 'Visina',
+		height		: 'Visina',
 		lockRatio	: 'Zakljuèaj odnos',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Resetuj dimenzije',
-		border	: 'Okvir',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
+		border		: 'Okvir',
+		hSpace		: 'HSpace',
+		vSpace		: 'VSpace',
 		align		: 'Poravnanje',
 		alignLeft	: 'Lijevo',
-		alignAbsBottom: 'Abs dole',
-		alignAbsMiddle: 'Abs sredina',
-		alignBaseline	: 'Bazno',
-		alignBottom	: 'Dno',
-		alignMiddle	: 'Sredina',
 		alignRight	: 'Desno',
-		alignTextTop	: 'Vrh teksta',
-		alignTop	: 'Vrh',
-		preview	: 'Prikaz',
 		alertUrl	: 'Molimo ukucajte URL od slike.',
-		linkTab	: 'Link', // MISSING
+		linkTab		: 'Link', // MISSING
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Flash Properties', // MISSING
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Flash Properties', // MISSING
-		chkPlay		: 'Auto Play', // MISSING
-		chkLoop		: 'Loop', // MISSING
-		chkMenu		: 'Enable Flash Menu', // MISSING
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Scale', // MISSING
+		title			: 'Flash Properties', // MISSING
+		chkPlay			: 'Auto Play', // MISSING
+		chkLoop			: 'Loop', // MISSING
+		chkMenu			: 'Enable Flash Menu', // MISSING
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Scale', // MISSING
 		scaleAll		: 'Show all', // MISSING
 		scaleNoBorder	: 'No Border', // MISSING
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Poravnanje',
-		alignLeft	: 'Lijevo',
-		alignAbsBottom: 'Abs dole',
-		alignAbsMiddle: 'Abs sredina',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Poravnanje',
+		alignLeft		: 'Lijevo',
+		alignAbsBottom	: 'Abs dole',
+		alignAbsMiddle	: 'Abs sredina',
 		alignBaseline	: 'Bazno',
-		alignBottom	: 'Dno',
-		alignMiddle	: 'Sredina',
-		alignRight	: 'Desno',
+		alignBottom		: 'Dno',
+		alignMiddle		: 'Sredina',
+		alignRight		: 'Desno',
 		alignTextTop	: 'Vrh teksta',
-		alignTop	: 'Vrh',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Boja pozadine',
-		width	: 'Širina',
-		height	: 'Visina',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
-		validateSrc : 'Molimo ukucajte URL link',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Vrh',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Boja pozadine',
+		width			: 'Širina',
+		height			: 'Visina',
+		hSpace			: 'HSpace',
+		vSpace			: 'VSpace',
+		validateSrc		: 'Molimo ukucajte URL link',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'Smješko',
-		title	: 'Ubaci smješka'
+		title	: 'Ubaci smješka',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Numerisana lista',
-	bulletedlist : 'Lista',
-	indent : 'Poveæaj uvod',
-	outdent : 'Smanji uvod',
+	numberedlist	: 'Numerisana lista',
+	bulletedlist	: 'Lista',
+	indent			: 'Poveæaj uvod',
+	outdent			: 'Smanji uvod',
 
 	justify :
 	{
-		left : 'Lijevo poravnanje',
-		center : 'Centralno poravnanje',
-		right : 'Desno poravnanje',
-		block : 'Puno poravnanje'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: 'Lijevo poravnanje',
+		center	: 'Centralno poravnanje',
+		right	: 'Desno poravnanje',
+		block	: 'Puno poravnanje'
+	},
+
+	blockquote : 'Block Quote', // MISSING
 
 	clipboard :
 	{
 		title		: 'Zalijepi',
-		cutError	: 'Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl+X).',
-		copyError	: 'Sigurnosne postavke Vašeg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl+C).',
-		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK', // MISSING
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+		cutError	: 'Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+X).',
+		copyError	: 'Sigurnosne postavke Vašeg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+C).',
+		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK', // MISSING
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Zalijepi iz Word-a',
-		title : 'Zalijepi iz Word-a',
-		advice : 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.', // MISSING
-		ignoreFontFace : 'Ignore Font Face definitions', // MISSING
-		removeStyle : 'Remove Styles definitions' // MISSING
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Zalijepi iz Word-a',
+		title			: 'Zalijepi iz Word-a',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Zalijepi kao obièan tekst',
-		title : 'Zalijepi kao obièan tekst'
+		button	: 'Zalijepi kao obièan tekst',
+		title	: 'Zalijepi kao obièan tekst'
 	},
 
 	templates :
 	{
-		button : 'Templates', // MISSING
-		title : 'Content Templates', // MISSING
-		insertOption: 'Replace actual contents', // MISSING
-		selectPromptMsg: 'Please select the template to open in the editor', // MISSING
-		emptyListMsg : '(No templates defined)' // MISSING
+		button			: 'Templates', // MISSING
+		title			: 'Content Templates', // MISSING
+		options : 'Template Options', // MISSING
+		insertOption	: 'Replace actual contents', // MISSING
+		selectPromptMsg	: 'Please select the template to open in the editor', // MISSING
+		emptyListMsg	: '(No templates defined)' // MISSING
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Stil',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Stil',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Format',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Format',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatted',
-		tag_address : 'Address',
-		tag_h1 : 'Heading 1',
-		tag_h2 : 'Heading 2',
-		tag_h3 : 'Heading 3',
-		tag_h4 : 'Heading 4',
-		tag_h5 : 'Heading 5',
-		tag_h6 : 'Heading 6',
-		tag_div : 'Normal (DIV)' // MISSING
-	},
+		label		: 'Format',
+		panelTitle	: 'Format',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatted',
+		tag_address	: 'Address',
+		tag_h1		: 'Heading 1',
+		tag_h2		: 'Heading 2',
+		tag_h3		: 'Heading 3',
+		tag_h4		: 'Heading 4',
+		tag_h5		: 'Heading 5',
+		tag_h6		: 'Heading 6',
+		tag_div		: 'Normal (DIV)' // MISSING
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Font',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Font',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Font',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Font'
 	},
 
 	fontSize :
 	{
-		label : 'Velièina',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Velièina',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Velièina',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Velièina'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Boja teksta',
-		bgColorTitle : 'Boja pozadine',
-		auto : 'Automatska',
-		more : 'Više boja...'
+		textColorTitle	: 'Boja teksta',
+		bgColorTitle	: 'Boja pozadine',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatska',
+		more			: 'Više boja...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/ca.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/ca.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/ca.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,9 +32,13 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Editor de text enriquit, %1',
+	editorTitle : 'Editor de text enriquit, %1, prem ALT 0 per obtenir ajuda.',
+
+	// ARIA descriptions.
+	toolbar	: 'Barra d\'eines',
+	editor	: 'Editor de text enriquit',
 
 	// Toolbar buttons without dialogs.
 	source			: 'Codi font',
-	newPage			: 'Nova Pàgina',
+	newPage			: 'Nova pàgina',
 	save			: 'Desa',
 	preview			: 'Visualització prèvia',
@@ -69,10 +73,10 @@
 		form			: 'Formulari',
 		checkbox		: 'Casella de verificació',
-		radio		: 'Botó d\'opció',
+		radio			: 'Botó d\'opció',
 		textField		: 'Camp de text',
 		textarea		: 'Àrea de text',
 		hiddenField		: 'Camp ocult',
 		button			: 'Botó',
-		select	: 'Camp de selecció',
+		select			: 'Camp de selecció',
 		imageButton		: 'Botó d\'imatge',
 		notSet			: '<no definit>',
@@ -89,9 +93,17 @@
 		ok				: 'D\'acord',
 		cancel			: 'Cancel·la',
+		close			: 'Tanca',
+		preview			: 'Previsualitza',
 		generalTab		: 'General',
 		advancedTab		: 'Avançat',
-		validateNumberFailed	: 'Aquest valor no és un número.',
+		validateNumberFailed : 'Aquest valor no és un número.',
 		confirmNewPage	: 'Els canvis en aquest contingut que no es desin es perdran. Esteu segur que voleu carregar una pàgina nova?',
 		confirmCancel	: 'Algunes opcions s\'han canviat. Esteu segur que voleu tancar la finestra de diàleg?',
+		options			: 'Opcions',
+		target			: 'Destí',
+		targetNew		: 'Nova finestra (_blank)',
+		targetTop		: 'Finestra major (_top)',
+		targetSelf		: 'Mateixa finestra (_self)',
+		targetParent	: 'Finestra pare (_parent)',
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Insereix caràcter especial',
-		title		: 'Selecciona el caràcter especial'
+		title		: 'Selecciona el caràcter especial',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Insereix/Edita enllaç',
+		other 		: '<altre>',
 		menu		: 'Edita l\'enllaç',
 		title		: 'Enllaç',
@@ -117,14 +136,9 @@
 		advanced	: 'Avançat',
 		type		: 'Tipus d\'enllaç',
+		toUrl		: 'URL',
 		toAnchor	: 'Àncora en aquesta pàgina',
 		toEmail		: 'Correu electrònic',
-		target		: 'Destí',
-		targetNotSet	: '<no definit>',
-		targetFrame	: '<marc>',
-		targetPopup	: '<finestra emergent>',
-		targetNew	: 'Nova finestra (_blank)',
-		targetTop	: 'Finestra Major (_top)',
-		targetSelf	: 'Mateixa finestra (_self)',
-		targetParent	: 'Finestra pare (_parent)',
+		targetFrame		: '<marc>',
+		targetPopup		: '<finestra emergent>',
 		targetFrameName	: 'Nom del marc de destí',
 		targetPopupName	: 'Nom finestra popup',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Redimensionable',
 		popupStatusBar	: 'Barra d\'estat',
-		popupLocationBar	: 'Barra d\'adreça',
+		popupLocationBar: 'Barra d\'adreça',
 		popupToolbar	: 'Barra d\'eines',
 		popupMenuBar	: 'Barra de menú',
@@ -144,5 +158,4 @@
 		id				: 'Id',
 		langDir			: 'Direcció de l\'idioma',
-		langDirNotSet	: '<no definit>',
 		langDirLTR		: 'D\'esquerra a dreta (LTR)',
 		langDirRTL		: 'De dreta a esquerra (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Mida vora',
 		align		: 'Alineació',
-		alignNotSet	: '<No Definit>',
 		alignLeft	: 'Esquerra',
 		alignCenter	: 'Centre',
@@ -211,4 +246,5 @@
 		widthPx		: 'píxels',
 		widthPc		: 'percentatge',
+		widthUnit	: 'unitat d\'amplada',
 		height		: 'Alçada',
 		cellSpace	: 'Espaiat de cel·les',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'L\'expansió de files ha de ser un nombre enter.',
 			invalidColSpan	: 'L\'expansió de columnes ha de ser un nombre enter.',
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Trieu'
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Acció',
 		method		: 'Mètode',
-		encoding	: 'Codificació',
-		target		: 'Destí',
-		targetNotSet	: '<no definit>',
-		targetNew	: 'Nova finestra (_blank)',
-		targetTop	: 'Finestra Major (_top)',
-		targetSelf	: 'Mateixa finestra (_self)',
-		targetParent	: 'Finestra pare (_parent)'
+		encoding	: 'Codificació'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Propietats del botó d\'imatge',
 		menu		: 'Propietats de la imatge',
-		infoTab	: 'Informació de la imatge',
+		infoTab		: 'Informació de la imatge',
 		btnUpload	: 'Envia-la al servidor',
-		url		: 'URL',
-		upload	: 'Puja',
-		alt		: 'Text alternatiu',
+		upload		: 'Puja',
+		alt			: 'Text alternatiu',
 		width		: 'Amplada',
-		height	: 'Alçada',
+		height		: 'Alçada',
 		lockRatio	: 'Bloqueja les proporcions',
+		unlockRatio	: 'Desbloqueja el ràtio',
 		resetSize	: 'Restaura la mida',
-		border	: 'Vora',
-		hSpace	: 'Espaiat horit.',
-		vSpace	: 'Espaiat vert.',
+		border		: 'Vora',
+		hSpace		: 'Espaiat horit.',
+		vSpace		: 'Espaiat vert.',
 		align		: 'Alineació',
 		alignLeft	: 'Ajusta a l\'esquerra',
-		alignAbsBottom: 'Abs Bottom',
-		alignAbsMiddle: 'Abs Middle',
-		alignBaseline	: 'Baseline',
-		alignBottom	: 'Bottom',
-		alignMiddle	: 'Middle',
 		alignRight	: 'Ajusta a la dreta',
-		alignTextTop	: 'Text Top',
-		alignTop	: 'Top',
-		preview	: 'Vista prèvia',
 		alertUrl	: 'Si us plau, escriviu la URL de la imatge',
-		linkTab	: 'Enllaç',
+		linkTab		: 'Enllaç',
 		button2Img	: 'Voleu transformar el botó d\'imatge seleccionat en una simple imatge?',
 		img2Button	: 'Voleu transformar la imatge seleccionada en un botó d\'imatge?',
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Falta la URL de la imatge.',
+		validateWidth	: 'L\'amplada ha de ser un nombre enter.',
+		validateHeight	: 'L\'alçada ha de ser un nombre enter.',
+		validateBorder	: 'La vora ha de ser un nombre enter.',
+		validateHSpace	: 'HSpace ha de ser un nombre enter.',
+		validateVSpace	: 'VSpace ha de ser un nombre enter.'
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Propietats del Flash',
 		propertiesTab	: 'Propietats',
-		title		: 'Propietats del Flash',
-		chkPlay		: 'Reprodució automàtica',
-		chkLoop		: 'Bucle',
-		chkMenu		: 'Habilita menú Flash',
-		chkFull		: 'Permetre la pantalla completa',
- 		scale		: 'Escala',
+		title			: 'Propietats del Flash',
+		chkPlay			: 'Reprodució automàtica',
+		chkLoop			: 'Bucle',
+		chkMenu			: 'Habilita menú Flash',
+		chkFull			: 'Permetre la pantalla completa',
+ 		scale			: 'Escala',
 		scaleAll		: 'Mostra-ho tot',
 		scaleNoBorder	: 'Sense vores',
@@ -418,38 +445,38 @@
 		access			: 'Accés a scripts',
 		accessAlways	: 'Sempre',
-		accessSameDomain	: 'El mateix domini',
-		accessNever	: 'Mai',
-		align		: 'Alineació',
-		alignLeft	: 'Ajusta a l\'esquerra',
-		alignAbsBottom: 'Abs Bottom',
-		alignAbsMiddle: 'Abs Middle',
+		accessSameDomain: 'El mateix domini',
+		accessNever		: 'Mai',
+		align			: 'Alineació',
+		alignLeft		: 'Ajusta a l\'esquerra',
+		alignAbsBottom	: 'Abs Bottom',
+		alignAbsMiddle	: 'Abs Middle',
 		alignBaseline	: 'Baseline',
-		alignBottom	: 'Bottom',
-		alignMiddle	: 'Middle',
-		alignRight	: 'Ajusta a la dreta',
+		alignBottom		: 'Bottom',
+		alignMiddle		: 'Middle',
+		alignRight		: 'Ajusta a la dreta',
 		alignTextTop	: 'Text Top',
-		alignTop	: 'Top',
-		quality		: 'Qualitat',
-		qualityBest		 : 'La millor',
-		qualityHigh		 : 'Alta',
-		qualityAutoHigh	 : 'Alta automàtica',
-		qualityMedium	 : 'Mitjana',
-		qualityAutoLow	 : 'Baixa automàtica',
-		qualityLow		 : 'Baixa',
-		windowModeWindow	 : 'Finestra',
-		windowModeOpaque	 : 'Opaca',
-		windowModeTransparent	 : 'Transparent',
-		windowMode	: 'Mode de la finestra',
-		flashvars	: 'Variables de Flash',
-		bgcolor	: 'Color de Fons',
-		width	: 'Amplada',
-		height	: 'Alçada',
-		hSpace	: 'Espaiat horit.',
-		vSpace	: 'Espaiat vert.',
-		validateSrc : 'Si us plau, escrigui l\'enllaç URL',
-		validateWidth : 'L\'amplada ha de ser un nombre.',
-		validateHeight : 'L\'alçada ha de ser un nombre.',
-		validateHSpace : 'L\'espaiat horitzonatal ha de ser un nombre.',
-		validateVSpace : 'L\'espaiat vertical ha de ser un nombre.'
+		alignTop		: 'Top',
+		quality			: 'Qualitat',
+		qualityBest		: 'La millor',
+		qualityHigh		: 'Alta',
+		qualityAutoHigh	: 'Alta automàtica',
+		qualityMedium	: 'Mitjana',
+		qualityAutoLow	: 'Baixa automàtica',
+		qualityLow		: 'Baixa',
+		windowModeWindow: 'Finestra',
+		windowModeOpaque: 'Opaca',
+		windowModeTransparent : 'Transparent',
+		windowMode		: 'Mode de la finestra',
+		flashvars		: 'Variables de Flash',
+		bgcolor			: 'Color de Fons',
+		width			: 'Amplada',
+		height			: 'Alçada',
+		hSpace			: 'Espaiat horit.',
+		vSpace			: 'Espaiat vert.',
+		validateSrc		: 'Si us plau, escrigui l\'enllaç URL',
+		validateWidth	: 'L\'amplada ha de ser un nombre.',
+		validateHeight	: 'L\'alçada ha de ser un nombre.',
+		validateHSpace	: 'L\'espaiat horitzonatal ha de ser un nombre.',
+		validateVSpace	: 'L\'espaiat vertical ha de ser un nombre.'
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Icona',
-		title	: 'Insereix una icona'
+		title	: 'Insereix una icona',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path',
 		eleTitle : '%1 element'
 	},
 
-	numberedlist : 'Llista numerada',
-	bulletedlist : 'Llista de pics',
-	indent : 'Augmenta el sagnat',
-	outdent : 'Redueix el sagnat',
+	numberedlist	: 'Llista numerada',
+	bulletedlist	: 'Llista de pics',
+	indent			: 'Augmenta el sagnat',
+	outdent			: 'Redueix el sagnat',
 
 	justify :
 	{
-		left : 'Alinia a l\'esquerra',
-		center : 'Centrat',
-		right : 'Alinia a la dreta',
-		block : 'Justificat'
+		left	: 'Alinia a l\'esquerra',
+		center	: 'Centrat',
+		right	: 'Alinia a la dreta',
+		block	: 'Justificat'
 	},
 
@@ -509,29 +538,30 @@
 		copyError	: 'La seguretat del vostre navegador no permet executar automàticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl+C).',
 		pasteMsg	: 'Si us plau, enganxeu dins del següent camp utilitzant el teclat (<STRONG>Ctrl+V</STRONG>) i premeu <STRONG>OK</STRONG>.',
-		securityMsg	: 'A causa de la configuració de seguretat del vostre navegador, l\'editor no pot accedir al porta-retalls directament. Enganxeu-ho un altre cop en aquesta finestra.'
+		securityMsg	: 'A causa de la configuració de seguretat del vostre navegador, l\'editor no pot accedir al porta-retalls directament. Enganxeu-ho un altre cop en aquesta finestra.',
+		pasteArea	: 'Àrea d\'enganxat'
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Enganxa des del Word',
-		title : 'Enganxa des del Word',
-		advice : 'Si us plau, enganxeu dins del següent camp utilitzant el teclat (<STRONG>Ctrl+V</STRONG>) i premeu <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignora definicions de font',
-		removeStyle : 'Elimina definicions d\'estil'
+		confirmCleanup	: 'El text que voleu enganxar sembla provenir de Word. Voleu netejar aquest text abans que sigui enganxat?',
+		toolbar			: 'Enganxa des del Word',
+		title			: 'Enganxa des del Word',
+		error			: 'No ha estat possible netejar les dades enganxades degut a un error intern'
 	},
 
 	pasteText :
 	{
-		button : 'Enganxa com a text no formatat',
-		title : 'Enganxa com a text no formatat'
+		button	: 'Enganxa com a text no formatat',
+		title	: 'Enganxa com a text no formatat'
 	},
 
 	templates :
 	{
-		button : 'Plantilles',
-		title : 'Contingut plantilles',
-		insertOption: 'Reemplaça el contingut actual',
-		selectPromptMsg: 'Si us plau, seleccioneu la plantilla per obrir a l\'editor<br>(el contingut actual no serà enregistrat):',
-		emptyListMsg : '(No hi ha plantilles definides)'
+		button			: 'Plantilles',
+		title			: 'Contingut plantilles',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Reemplaça el contingut actual',
+		selectPromptMsg	: 'Si us plau, seleccioneu la plantilla per obrir a l\'editor<br>(el contingut actual no serà enregistrat):',
+		emptyListMsg	: '(No hi ha plantilles definides)'
 	},
 
@@ -540,136 +570,164 @@
 	stylesCombo :
 	{
-		label : 'Estil',
-		voiceLabel : 'Estils',
-		panelVoiceLabel : 'Seleccioneu un estil',
-		panelTitle1 : 'Estils de bloc',
-		panelTitle2 : 'Estils incrustats',
-		panelTitle3 : 'Estils d\'objecte'
+		label		: 'Estil',
+		panelTitle	: 'Estils de format',
+		panelTitle1	: 'Estils de bloc',
+		panelTitle2	: 'Estils incrustats',
+		panelTitle3	: 'Estils d\'objecte'
 	},
 
 	format :
 	{
-		label : 'Format',
-		voiceLabel : 'Format',
-		panelTitle : 'Format',
-		panelVoiceLabel : 'Seleccioneu un format de paràgraf',
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatejat',
-		tag_address : 'Adreça',
-		tag_h1 : 'Encapçalament 1',
-		tag_h2 : 'Encapçalament 2',
-		tag_h3 : 'Encapçalament 3',
-		tag_h4 : 'Encapçalament 4',
-		tag_h5 : 'Encapçalament 5',
-		tag_h6 : 'Encapçalament 6',
-		tag_div : 'Normal (DIV)'
-	},
+		label		: 'Format',
+		panelTitle	: 'Format',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatejat',
+		tag_address	: 'Adreça',
+		tag_h1		: 'Encapçalament 1',
+		tag_h2		: 'Encapçalament 2',
+		tag_h3		: 'Encapçalament 3',
+		tag_h4		: 'Encapçalament 4',
+		tag_h5		: 'Encapçalament 5',
+		tag_h6		: 'Encapçalament 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Crea un contenidor Div',
+		toolbar				: 'Crea un contenidor Div',
+		cssClassInputLabel	: 'Classes de la fulla d\'estils',
+		styleSelectLabel	: 'Estil',
+		IdInputLabel		: 'Id',
+		languageCodeInputLabel	: ' Codi d\'idioma',
+		inlineStyleInputLabel	: 'Estil en línia',
+		advisoryTitleInputLabel	: 'Títol de guia',
+		langDirLabel		: 'Direcció de l\'idioma',
+		langDirLTRLabel		: 'D\'esquerra a dreta (LTR)',
+		langDirRTLLabel		: 'De dreta a esquerra (RTL)',
+		edit				: 'Edita Div',
+		remove				: 'Elimina Div'
+  	},
 
 	font :
 	{
-		label : 'Tipus de lletra',
-		voiceLabel : 'Tipus de lletra',
-		panelTitle : 'Tipus de lletra',
-		panelVoiceLabel : 'Seleccioneu un tipus de lletra'
+		label		: 'Tipus de lletra',
+		voiceLabel	: 'Tipus de lletra',
+		panelTitle	: 'Tipus de lletra'
 	},
 
 	fontSize :
 	{
-		label : 'Mida',
-		voiceLabel : 'Mida de la lletra',
-		panelTitle : 'Mida',
-		panelVoiceLabel : 'Seleccioneu una mida de lletra'
+		label		: 'Mida',
+		voiceLabel	: 'Mida de la lletra',
+		panelTitle	: 'Mida'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Color de Text',
-		bgColorTitle : 'Color de Fons',
-		auto : 'Automàtic',
-		more : 'Més colors...'
+		textColorTitle	: 'Color de Text',
+		bgColorTitle	: 'Color de Fons',
+		panelTitle		: 'Colors',
+		auto			: 'Automàtic',
+		more			: 'Més colors...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Negre',
+		'800000' : 'Granat',
+		'8B4513' : 'Marró sella',
+		'2F4F4F' : 'Gris pissarra fosca',
+		'008080' : 'Blau xarxet',
+		'000080' : 'Blau marí',
+		'4B0082' : 'Indi',
+		'696969' : 'Gris intens',
+		'B22222' : 'Maó',
+		'A52A2A' : 'Marró (web)',
+		'DAA520' : 'Solidago',
+		'006400' : 'Verd fosc',
+		'40E0D0' : 'Turquesa',
+		'0000CD' : 'Atzur',
+		'800080' : 'Lila',
+		'808080' : 'Gris',
+		'F00' : 'Vermell',
+		'FF8C00' : 'Taronja fosc',
+		'FFD700' : 'Or',
+		'008000' : 'Verd',
+		'0FF' : 'Cian',
+		'00F' : 'Blau',
+		'EE82EE' : 'Lavanda rosat',
+		'A9A9A9' : 'Gris clar',
+		'FFA07A' : 'Salmó clar',
+		'FFA500' : 'Taronja',
+		'FFFF00' : 'Groc',
+		'00FF00' : 'Verd llima',
+		'AFEEEE' : 'Blau pàlid',
+		'ADD8E6' : 'Blau clar',
+		'DDA0DD' : 'Pruna',
+		'D3D3D3' : 'Gris clar',
+		'FFF0F5' : 'Lavanda rosat',
+		'FAEBD7' : 'Blanc antic',
+		'FFFFE0' : 'Groc clar',
+		'F0FFF0' : 'Verd pàlid',
+		'F0FFFF' : 'Blau cel pàlid',
+		'F0F8FF' : 'Cian pàlid',
+		'E6E6FA' : 'Lavanda',
+		'FFF' : 'Blanc'
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type',
-		enable : 'Habilitat l\'SCAYT',
-		disable : 'Deshabilita SCAYT',
-		about : 'Quant a l\'SCAYT',
-		toggle : 'Commuta l\'SCAYT',
-		options : 'Opcions',
-		langs : 'Idiomes',
-		moreSuggestions : 'Més suggerències',
-		ignore : 'Ignora',
-		ignoreAll : 'Ignora\'ls tots',
-		addWord : 'Afegeix una paraula',
-		emptyDic : 'El nom del diccionari no hauria d\'estar buit.',
-		optionsTab : 'Opcions',
-		languagesTab : 'Idiomes',
-		dictionariesTab : 'Diccionaris',
-		aboutTab : 'Quant a'
+		title			: 'Spell Check As You Type',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Habilitat l\'SCAYT',
+		disable			: 'Deshabilita SCAYT',
+		about			: 'Quant a l\'SCAYT',
+		toggle			: 'Commuta l\'SCAYT',
+		options			: 'Opcions',
+		langs			: 'Idiomes',
+		moreSuggestions	: 'Més suggerències',
+		ignore			: 'Ignora',
+		ignoreAll		: 'Ignora\'ls tots',
+		addWord			: 'Afegeix una paraula',
+		emptyDic		: 'El nom del diccionari no hauria d\'estar buit.',
+
+		optionsTab		: 'Opcions',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Idiomes',
+
+		dictionariesTab	: 'Diccionaris',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'Quant a'
 	},
 
 	about :
 	{
-		title : 'Quan al CKEditor',
-		dlgTitle : 'Quan al CKEditor',
-		moreInfo : 'Per informació sobre llicències visiteu el web:',
-		copy : 'Copyright &copy; $1. All rights reserved.'
-	},
-
-	maximize : 'Maximiza',
-	minimize : 'Minimize', // MISSING
+		title		: 'Quan al CKEditor',
+		dlgTitle	: 'Quan al CKEditor',
+		moreInfo	: 'Per informació sobre llicències visiteu el web:',
+		copy		: 'Copyright &copy; $1. All rights reserved.'
+	},
+
+	maximize : 'Maximitza',
+	minimize : 'Minimitza',
 
 	fakeobjects :
 	{
-		anchor : 'Àncora',
-		flash : 'Animació Flash',
-		div : 'Salt de pàgina',
-		unknown : 'Objecte desconegut'
+		anchor	: 'Àncora',
+		flash	: 'Animació Flash',
+		div		: 'Salt de pàgina',
+		unknown	: 'Objecte desconegut'
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Selecciona el color',
+		options	:	'Color Options', // MISSING
+		highlight	: 'Destacat',
+		selected	: 'Seleccionat',
+		clear		: 'Neteja'
+	},
+
+	toolbarCollapse	: 'Redueix la barra d\'eines',
+	toolbarExpand	: 'Amplia la barra d\'eines'
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/cs.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/cs.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/cs.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Formulář',
 		checkbox		: 'Zaškrtávací políčko',
-		radio		: 'Přepínač',
+		radio			: 'Přepínač',
 		textField		: 'Textové pole',
 		textarea		: 'Textová oblast',
 		hiddenField		: 'Skryté pole',
 		button			: 'Tlačítko',
-		select	: 'Seznam',
+		select			: 'Seznam',
 		imageButton		: 'Obrázkové tlačítko',
 		notSet			: '<nenastaveno>',
@@ -89,12 +93,25 @@
 		ok				: 'OK',
 		cancel			: 'Storno',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'Obecné',
 		advancedTab		: 'Rozšířené',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
-		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
-		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		validateNumberFailed : 'Zadaná hodnota není číselná.',
+		confirmNewPage	: 'Jakékoliv neuložené změny obsahu budou ztraceny. Skutečně chete otevrít novou stránku?',
+		confirmCancel	: 'Některá z nastavení byla změněna. Skutečně chete zavřít dialogové okno?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
-		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+		unavailable		: '%1<span class="cke_accessibility">, nedostupné</span>'
+	},
+
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
 	},
 
@@ -103,5 +120,6 @@
 	{
 		toolbar		: 'Vložit speciální znaky',
-		title		: 'Výběr speciálního znaku'
+		title		: 'Výběr speciálního znaku',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Vložit/změnit odkaz',
+		other 		: '<jiný>',
 		menu		: 'Změnit odkaz',
 		title		: 'Odkaz',
@@ -117,20 +136,15 @@
 		advanced	: 'Rozšířené',
 		type		: 'Typ odkazu',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Kotva v této stránce',
 		toEmail		: 'E-Mail',
-		target		: 'Cíl',
-		targetNotSet	: '<nenastaveno>',
-		targetFrame	: '<rámec>',
-		targetPopup	: '<vyskakovací okno>',
-		targetNew	: 'Nové okno (_blank)',
-		targetTop	: 'Hlavní okno (_top)',
-		targetSelf	: 'Stejné okno (_self)',
-		targetParent	: 'Rodičovské okno (_parent)',
+		targetFrame		: '<rámec>',
+		targetPopup		: '<vyskakovací okno>',
 		targetFrameName	: 'Název cílového rámu',
 		targetPopupName	: 'Název vyskakovacího okna',
 		popupFeatures	: 'Vlastnosti vyskakovacího okna',
-		popupResizable	: 'Resizable', // MISSING
+		popupResizable	: 'Umožňující měnit velikost',
 		popupStatusBar	: 'Stavový řádek',
-		popupLocationBar	: 'Panel umístění',
+		popupLocationBar: 'Panel umístění',
 		popupToolbar	: 'Panel nástrojů',
 		popupMenuBar	: 'Panel nabídky',
@@ -142,7 +156,6 @@
 		popupHeight		: 'Výška',
 		popupTop		: 'Horní okraj',
-		id				: 'Id', // MISSING
+		id				: 'Id',
 		langDir			: 'Orientace jazyka',
-		langDirNotSet	: '<nenastaveno>',
 		langDirLTR		: 'Zleva do prava (LTR)',
 		langDirRTL		: 'Zprava do leva (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -188,7 +224,7 @@
 		matchCase			: 'Rozlišovat velikost písma',
 		matchWord			: 'Pouze celá slova',
-		matchCyclic			: 'Match cyclic', // MISSING
+		matchCyclic			: 'Procházet opakovaně',
 		replaceAll			: 'Nahradit vše',
-		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+		replaceSuccessMsg	: '%1 nahrazení.'
 	},
 
@@ -204,5 +240,4 @@
 		border		: 'Ohraničení',
 		align		: 'Zarovnání',
-		alignNotSet	: '<nenastaveno>',
 		alignLeft	: 'Vlevo',
 		alignCenter	: 'Na střed',
@@ -211,21 +246,22 @@
 		widthPx		: 'bodů',
 		widthPc		: 'procent',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Výška',
 		cellSpace	: 'Vzdálenost buněk',
-		cellPad		: 'Odsazení obsahu',
+		cellPad		: 'Odsazení obsahu v buňce',
 		caption		: 'Popis',
 		summary		: 'Souhrn',
-		headers		: 'Headers', // MISSING
-		headersNone		: 'None', // MISSING
-		headersColumn	: 'First column', // MISSING
-		headersRow		: 'First Row', // MISSING
-		headersBoth		: 'Both', // MISSING
-		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
-		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
-		invalidBorder	: 'Border size must be a number.', // MISSING
-		invalidWidth	: 'Table width must be a number.', // MISSING
-		invalidHeight	: 'Table height must be a number.', // MISSING
-		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
-		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+		headers		: 'Záhlaví',
+		headersNone		: 'Žádné',
+		headersColumn	: 'První sloupec',
+		headersRow		: 'První řádek',
+		headersBoth		: 'Obojí',
+		invalidRows		: 'Počet řádků musí být číslo větší než 0.',
+		invalidCols		: 'Počet sloupců musí být číslo větší než 0.',
+		invalidBorder	: 'Zdaná velikost okraje musí být číselná.',
+		invalidWidth	: 'Zadaná šířka tabulky musí být číselná.',
+		invalidHeight	: 'zadaná výška tabulky musí být číselná.',
+		invalidCellSpacing	: 'Zadaná vzdálenost buněk musí být číselná.',
+		invalidCellPadding	: 'Zadané odsazení obsahu v buňce musí být číselné.',
 
 		cell :
@@ -240,26 +276,26 @@
 			splitHorizontal	: 'Rozdělit buňky vodorovně',
 			splitVertical	: 'Rozdělit buňky svisle',
-			title			: 'Cell Properties', // MISSING
-			cellType		: 'Cell Type', // MISSING
-			rowSpan			: 'Rows Span', // MISSING
-			colSpan			: 'Columns Span', // MISSING
-			wordWrap		: 'Word Wrap', // MISSING
-			hAlign			: 'Horizontal Alignment', // MISSING
-			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
-			alignBaseline	: 'Baseline', // MISSING
-			bgColor			: 'Background Color', // MISSING
-			borderColor		: 'Border Color', // MISSING
-			data			: 'Data', // MISSING
-			header			: 'Header', // MISSING
-			yes				: 'Yes', // MISSING
-			no				: 'No', // MISSING
-			invalidWidth	: 'Cell width must be a number.', // MISSING
-			invalidHeight	: 'Cell height must be a number.', // MISSING
-			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
-			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			title			: 'Vlastnosti buňky',
+			cellType		: 'Typ buňky',
+			rowSpan			: 'Spojit řádky',
+			colSpan			: 'Spojit sloupce',
+			wordWrap		: 'Zalamování',
+			hAlign			: 'Vodorovné zarovnání',
+			vAlign			: 'Svislé zarovnání',
+			alignTop		: 'Nahoru',
+			alignMiddle		: 'Doprostřed',
+			alignBottom		: 'Dolů',
+			alignBaseline	: 'Na účaří',
+			bgColor			: 'Barva pozadí',
+			borderColor		: 'Barva okraje',
+			data			: 'Data',
+			header			: 'Hlavička',
+			yes				: 'Ano',
+			no				: 'Ne',
+			invalidWidth	: 'Zadaná šířka buňky musí být číslená.',
+			invalidHeight	: 'Zadaná výška buňky musí být číslená.',
+			invalidRowSpan	: 'Zadaný počet sloučených řádků musí být celé číslo.',
+			invalidColSpan	: 'Zadaný počet sloučených sloupců musí být celé číslo.',
+			chooseColor		: 'Výběr'
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Akce',
 		method		: 'Metoda',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Cíl',
-		targetNotSet	: '<nenastaveno>',
-		targetNew	: 'Nové okno (_blank)',
-		targetTop	: 'Hlavní okno (_top)',
-		targetSelf	: 'Stejné okno (_self)',
-		targetParent	: 'Rodičovské okno (_parent)'
+		encoding	: 'Kódování'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Vlastností obrázkového tlačítka',
 		menu		: 'Vlastnosti obrázku',
-		infoTab	: 'Informace o obrázku',
+		infoTab		: 'Informace o obrázku',
 		btnUpload	: 'Odeslat na server',
-		url		: 'URL',
-		upload	: 'Odeslat',
-		alt		: 'Alternativní text',
+		upload		: 'Odeslat',
+		alt			: 'Alternativní text',
 		width		: 'Šířka',
-		height	: 'Výška',
+		height		: 'Výška',
 		lockRatio	: 'Zámek',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Původní velikost',
-		border	: 'Okraje',
-		hSpace	: 'H-mezera',
-		vSpace	: 'V-mezera',
+		border		: 'Okraje',
+		hSpace		: 'H-mezera',
+		vSpace		: 'V-mezera',
 		align		: 'Zarovnání',
 		alignLeft	: 'Vlevo',
-		alignAbsBottom: 'Zcela dolů',
-		alignAbsMiddle: 'Doprostřed',
-		alignBaseline	: 'Na účaří',
-		alignBottom	: 'Dolů',
-		alignMiddle	: 'Na střed',
 		alignRight	: 'Vpravo',
-		alignTextTop	: 'Na horní okraj textu',
-		alignTop	: 'Nahoru',
-		preview	: 'Náhled',
 		alertUrl	: 'Zadejte prosím URL obrázku',
-		linkTab	: 'Odkaz',
-		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
-		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		linkTab		: 'Odkaz',
+		button2Img	: 'Skutečně chcete převést zvolené obrázkové tlačítko na obyčejný obrázek?',
+		img2Button	: 'Skutečně chcete převést zvolený obrázek na obrázkové tlačítko?',
+		urlMissing	: 'Zadané URL zdroje obrázku nebylo nalezeno.',
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -406,50 +433,50 @@
 	{
 		properties		: 'Vlastnosti Flashe',
-		propertiesTab	: 'Properties', // MISSING
-		title		: 'Vlastnosti Flashe',
-		chkPlay		: 'Automatické spuštění',
-		chkLoop		: 'Opakování',
-		chkMenu		: 'Nabídka Flash',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Zobrazit',
+		propertiesTab	: 'Vlastnosti',
+		title			: 'Vlastnosti Flashe',
+		chkPlay			: 'Automatické spuštění',
+		chkLoop			: 'Opakování',
+		chkMenu			: 'Nabídka Flash',
+		chkFull			: 'Povolit celoobrazovkový režim',
+ 		scale			: 'Zobrazit',
 		scaleAll		: 'Zobrazit vše',
 		scaleNoBorder	: 'Bez okraje',
 		scaleFit		: 'Přizpůsobit',
-		access			: 'Script Access', // MISSING
-		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Zarovnání',
-		alignLeft	: 'Vlevo',
-		alignAbsBottom: 'Zcela dolů',
-		alignAbsMiddle: 'Doprostřed',
+		access			: 'Přístup ke skriptu',
+		accessAlways	: 'Vždy',
+		accessSameDomain: 'Ve stejné doméně',
+		accessNever		: 'Nikdy',
+		align			: 'Zarovnání',
+		alignLeft		: 'Vlevo',
+		alignAbsBottom	: 'Zcela dolů',
+		alignAbsMiddle	: 'Doprostřed',
 		alignBaseline	: 'Na účaří',
-		alignBottom	: 'Dolů',
-		alignMiddle	: 'Na střed',
-		alignRight	: 'Vpravo',
+		alignBottom		: 'Dolů',
+		alignMiddle		: 'Na střed',
+		alignRight		: 'Vpravo',
 		alignTextTop	: 'Na horní okraj textu',
-		alignTop	: 'Nahoru',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Barva pozadí',
-		width	: 'Šířka',
-		height	: 'Výška',
-		hSpace	: 'H-mezera',
-		vSpace	: 'V-mezera',
-		validateSrc : 'Zadejte prosím URL odkazu',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Nahoru',
+		quality			: 'Kvalita',
+		qualityBest		: 'Nejlepší',
+		qualityHigh		: 'Vysoká',
+		qualityAutoHigh	: 'Vysoká - auto',
+		qualityMedium	: 'Střední',
+		qualityAutoLow	: 'Nízká - auto',
+		qualityLow		: 'Nejnižší',
+		windowModeWindow: 'Okno',
+		windowModeOpaque: 'Neprůhledné',
+		windowModeTransparent : 'Průhledné',
+		windowMode		: 'Režim okna',
+		flashvars		: 'Proměnné pro Flash',
+		bgcolor			: 'Barva pozadí',
+		width			: 'Šířka',
+		height			: 'Výška',
+		hSpace			: 'H-mezera',
+		vSpace			: 'V-mezera',
+		validateSrc		: 'Zadejte prosím URL odkazu',
+		validateWidth	: 'Zadaná šířka musí být číslo.',
+		validateHeight	: 'Zadaná výška musí být číslo.',
+		validateHSpace	: 'Zadaná H-mezera musí být číslo.',
+		validateVSpace	: 'Zadaná V-mezera musí být číslo.'
 	},
 
@@ -458,7 +485,7 @@
 	{
 		toolbar			: 'Zkontrolovat pravopis',
-		title			: 'Spell Check', // MISSING
-		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
-		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		title			: 'Kontrola pravopisu',
+		notAvailable	: 'Omlouváme se, ale služba nyní není dostupná.',
+		errorLoading	: 'Chyba nahrávání služby aplikace z: %s.',
 		notInDic		: 'Není ve slovníku',
 		changeTo		: 'Změnit na',
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Smajlíky',
-		title	: 'Vkládání smajlíků'
+		title	: 'Vkládání smajlíků',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
-	},
-
-	numberedlist : 'Číslování',
-	bulletedlist : 'Odrážky',
-	indent : 'Zvětšit odsazení',
-	outdent : 'Zmenšit odsazení',
+		eleLabel : 'Elements path', // MISSING
+		eleTitle : '%1 objekt'
+	},
+
+	numberedlist	: 'Číslování',
+	bulletedlist	: 'Odrážky',
+	indent			: 'Zvětšit odsazení',
+	outdent			: 'Zmenšit odsazení',
 
 	justify :
 	{
-		left : 'Zarovnat vlevo',
-		center : 'Zarovnat na střed',
-		right : 'Zarovnat vpravo',
-		block : 'Zarovnat do bloku'
+		left	: 'Zarovnat vlevo',
+		center	: 'Zarovnat na střed',
+		right	: 'Zarovnat vpravo',
+		block	: 'Zarovnat do bloku'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Vložit',
-		cutError	: 'Bezpečnostní nastavení Vašeho prohlížeče nedovolují editoru spustit funkci pro vyjmutí zvoleného textu do schránky. Prosím vyjměte zvolený text do schránky pomocí klávesnice (Ctrl+X).',
-		copyError	: 'Bezpečnostní nastavení Vašeho prohlížeče nedovolují editoru spustit funkci pro kopírování zvoleného textu do schránky. Prosím zkopírujte zvolený text do schránky pomocí klávesnice (Ctrl+C).',
-		pasteMsg	: 'Do následujícího pole vložte požadovaný obsah pomocí klávesnice (<STRONG>Ctrl+V</STRONG>) a stiskněte <STRONG>OK</STRONG>.',
-		securityMsg	: 'Z důvodů nastavení bezpečnosti Vašeho prohlížeče nemůže editor přistupovat přímo do schránky. Obsah schránky prosím vložte znovu do tohoto okna.'
+		cutError	: 'Bezpečnostní nastavení Vašeho prohlížeče nedovolují editoru spustit funkci pro vyjmutí zvoleného textu do schránky. Prosím vyjměte zvolený text do schránky pomocí klávesnice (Ctrl/Cmd+X).',
+		copyError	: 'Bezpečnostní nastavení Vašeho prohlížeče nedovolují editoru spustit funkci pro kopírování zvoleného textu do schránky. Prosím zkopírujte zvolený text do schránky pomocí klávesnice (Ctrl/Cmd+C).',
+		pasteMsg	: 'Do následujícího pole vložte požadovaný obsah pomocí klávesnice (<STRONG>Ctrl/Cmd+V</STRONG>) a stiskněte <STRONG>OK</STRONG>.',
+		securityMsg	: 'Z důvodů nastavení bezpečnosti Vašeho prohlížeče nemůže editor přistupovat přímo do schránky. Obsah schránky prosím vložte znovu do tohoto okna.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Vložit z Wordu',
-		title : 'Vložit z Wordu',
-		advice : 'Do následujícího pole vložte požadovaný obsah pomocí klávesnice (<STRONG>Ctrl+V</STRONG>) a stiskněte <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignorovat písmo',
-		removeStyle : 'Odstranit styly'
+		confirmCleanup	: 'Jak je vidět, vkládaný text je kopírován z Wordu. Chcete jej před vložením vyčistit?',
+		toolbar			: 'Vložit z Wordu',
+		title			: 'Vložit z Wordu',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Vložit jako čistý text',
-		title : 'Vložit jako čistý text'
+		button	: 'Vložit jako čistý text',
+		title	: 'Vložit jako čistý text'
 	},
 
 	templates :
 	{
-		button : 'Šablony',
-		title : 'Šablony obsahu',
-		insertOption: 'Nahradit aktuální obsah',
-		selectPromptMsg: 'Prosím zvolte šablonu pro otevření v editoru<br>(aktuální obsah editoru bude ztracen):',
-		emptyListMsg : '(Není definována žádná šablona)'
+		button			: 'Šablony',
+		title			: 'Šablony obsahu',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Nahradit aktuální obsah',
+		selectPromptMsg	: 'Prosím zvolte šablonu pro otevření v editoru<br>(aktuální obsah editoru bude ztracen):',
+		emptyListMsg	: '(Není definována žádná šablona)'
 	},
 
@@ -540,146 +570,178 @@
 	stylesCombo :
 	{
-		label : 'Styl',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Styl',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Blokové styly',
+		panelTitle2	: 'Řádkové styly',
+		panelTitle3	: 'Objektové styly'
 	},
 
 	format :
 	{
-		label : 'Formát',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Formát',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normální',
-		tag_pre : 'Naformátováno',
-		tag_address : 'Adresa',
-		tag_h1 : 'Nadpis 1',
-		tag_h2 : 'Nadpis 2',
-		tag_h3 : 'Nadpis 3',
-		tag_h4 : 'Nadpis 4',
-		tag_h5 : 'Nadpis 5',
-		tag_h6 : 'Nadpis 6',
-		tag_div : 'Normální (DIV)'
-	},
+		label		: 'Formát',
+		panelTitle	: 'Formát',
+
+		tag_p		: 'Normální',
+		tag_pre		: 'Naformátováno',
+		tag_address	: 'Adresa',
+		tag_h1		: 'Nadpis 1',
+		tag_h2		: 'Nadpis 2',
+		tag_h3		: 'Nadpis 3',
+		tag_h4		: 'Nadpis 4',
+		tag_h5		: 'Nadpis 5',
+		tag_h6		: 'Nadpis 6',
+		tag_div		: 'Normální (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Písmo',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Písmo',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Písmo',
+		voiceLabel	: 'Písmo',
+		panelTitle	: 'Písmo'
 	},
 
 	fontSize :
 	{
-		label : 'Velikost',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Velikost',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Velikost',
+		voiceLabel	: 'Velikost písma',
+		panelTitle	: 'Velikost'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Barva textu',
-		bgColorTitle : 'Barva pozadí',
-		auto : 'Automaticky',
-		more : 'Více barev...'
+		textColorTitle	: 'Barva textu',
+		bgColorTitle	: 'Barva pozadí',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automaticky',
+		more			: 'Více barev...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Kontrola pravopisu během psaní (SCAYT)',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Zapnout SCAYT',
+		disable			: 'Vypnout SCAYT',
+		about			: 'O aplikaci SCAYT',
+		toggle			: 'Vypínač SCAYT',
+		options			: 'Nastavení',
+		langs			: 'Jazyky',
+		moreSuggestions	: 'Více návrhů',
+		ignore			: 'Přeskočit',
+		ignoreAll		: 'Přeskočit vše',
+		addWord			: 'Přidat slovo',
+		emptyDic		: 'Název slovníku nesmí být prázdný.',
+
+		optionsTab		: 'Nastavení',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Jazyky',
+
+		dictionariesTab	: 'Slovníky',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'O aplikaci'
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
-	},
-
-	maximize : 'Maximize', // MISSING
-	minimize : 'Minimize', // MISSING
+		title		: 'O aplikaci CKEditor',
+		dlgTitle	: 'O aplikaci CKEditor',
+		moreInfo	: 'Pro informace o lincenci navštivte naši webovou stránku:',
+		copy		: 'Copyright &copy; $1. All rights reserved.'
+	},
+
+	maximize : 'Maximalizovat',
+	minimize : 'Minimalizovat',
 
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
-	},
-
-	resize : 'Drag to resize', // MISSING
+		anchor	: 'Záložka',
+		flash	: 'Flash animace',
+		div		: 'Zalomení stránky',
+		unknown	: 'Neznámý objekt'
+	},
+
+	resize : 'Uchopit pro změnu velikosti',
 
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Výběr barvy',
+		options	:	'Color Options', // MISSING
+		highlight	: 'Zvýraznit',
+		selected	: 'Vybráno',
+		clear		: 'Vyčistit'
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/cy.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/cy.js	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_source/lang/cy.js	(revision 5613)
@@ -0,0 +1,747 @@
+﻿/*
+Copyright (c) 2003-2010, 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
+ * Welsh language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['cy'] =
+{
+	/**
+	 * 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 : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Tarddle',
+	newPage			: 'Tudalen newydd',
+	save			: 'Cadw',
+	preview			: 'Rhagolwg',
+	cut				: 'Torri',
+	copy			: 'Copïo',
+	paste			: 'Gludo',
+	print			: 'Argraffu',
+	underline		: 'Tanlinellu',
+	bold			: 'Bras',
+	italic			: 'Italig',
+	selectAll		: 'Dewis Popeth',
+	removeFormat	: 'Tynnu Fformat',
+	strike			: 'Llinell Trwyddo',
+	subscript		: 'Is-sgript',
+	superscript		: 'Uwchsgript',
+	horizontalrule	: 'Mewnosod Llinell Lorweddol',
+	pagebreak		: 'Mewnosod Toriad Tudalen i Argraffu',
+	unlink			: 'Datgysylltu',
+	undo			: 'Dadwneud',
+	redo			: 'Ailadrodd',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Pori\'r Gweinydd',
+		url				: 'URL',
+		protocol		: 'Protocol',
+		upload			: 'Lanlwytho',
+		uploadSubmit	: 'Anfon i\'r Gweinydd',
+		image			: 'Delwedd',
+		flash			: 'Flash',
+		form			: 'Ffurflen',
+		checkbox		: 'Blwch ticio',
+		radio			: 'Botwm Radio',
+		textField		: 'Maes Testun',
+		textarea		: 'Ardal Testun',
+		hiddenField		: 'Maes Cudd',
+		button			: 'Botwm',
+		select			: 'Maes Dewis',
+		imageButton		: 'Botwm Delwedd',
+		notSet			: '<heb osod>',
+		id				: 'Id',
+		name			: 'Name',
+		langDir			: 'Cyfeiriad Iaith',
+		langDirLtr		: 'Chwith i\'r Dde (LTR)',
+		langDirRtl		: 'Dde i\'r Chwith (RTL)',
+		langCode		: 'Cod Iaith',
+		longDescr		: 'URL Disgrifiad Hir',
+		cssClass		: 'Dosbarth Dalen Arddull',
+		advisoryTitle	: 'Teitl Cynghorol',
+		cssStyle		: 'Arddull',
+		ok				: 'Iawn',
+		cancel			: 'Diddymu',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
+		generalTab		: 'Cyffredinol',
+		advancedTab		: 'Uwch',
+		validateNumberFailed : 'Nid yw\'r gwerth hwn yn rhif.',
+		confirmNewPage	: 'Byddwch yn colli unrhyw newidiadau i\'r cynnwys sydd heb eu cadw. A ydych am barhau i lwytho tudalen newydd?',
+		confirmCancel	: 'Mae rhai o\'r opsiynau wedi\'u newid. A ydych wir am gau\'r deialog?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, ddim ar gael</span>'
+	},
+
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Mewnosod Nodau Arbennig',
+		title		: 'Dewis Nod Arbennig',
+		options : 'Special Character Options' // MISSING
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Dolen',
+		other 		: '<eraill>',
+		menu		: 'Golygu Dolen',
+		title		: 'Dolen',
+		info		: 'Gwyb ar y Ddolen',
+		target		: 'Targed',
+		upload		: 'Lanlwytho',
+		advanced	: 'Uwch',
+		type		: 'Math y Ddolen',
+		toUrl		: 'URL', // MISSING
+		toAnchor	: 'Dolen at angor yn y testun',
+		toEmail		: 'E-bost',
+		targetFrame		: '<ffrâm>',
+		targetPopup		: '<ffenestr bop>',
+		targetFrameName	: 'Enw Ffrâm y Targed',
+		targetPopupName	: 'Enw Ffenestr Bop',
+		popupFeatures	: 'Nodweddion Ffenestr Bop',
+		popupResizable	: 'Ailfeintiol',
+		popupStatusBar	: 'Bar Statws',
+		popupLocationBar: 'Bar Safle',
+		popupToolbar	: 'Bar Offer',
+		popupMenuBar	: 'Dewislen',
+		popupFullScreen	: 'Sgrin Llawn (IE)',
+		popupScrollBars	: 'Barrau Sgrolio',
+		popupDependent	: 'Dibynnol (Netscape)',
+		popupWidth		: 'Lled',
+		popupLeft		: 'Safle Chwith',
+		popupHeight		: 'Uchder',
+		popupTop		: 'Safle Top',
+		id				: 'Id',
+		langDir			: 'Cyfeiriad Iaith',
+		langDirLTR		: 'Chwith i\'r Dde (LTR)',
+		langDirRTL		: 'Dde i\'r Chwith (RTL)',
+		acccessKey		: 'Allwedd Mynediad',
+		name			: 'Enw',
+		langCode		: 'Cod Iaith',
+		tabIndex		: 'Indecs Tab',
+		advisoryTitle	: 'Teitl Cynghorol',
+		advisoryContentType	: 'Math y Cynnwys Cynghorol',
+		cssClasses		: 'Dosbarthiadau Dalen Arddull',
+		charset			: 'Set nodau\'r Adnodd Cysylltiedig',
+		styles			: 'Arddull',
+		selectAnchor	: 'Dewiswch Angor',
+		anchorName		: 'Gan Enw\'r Angor',
+		anchorId		: 'Gan Id yr Elfen',
+		emailAddress	: 'Cyfeiriad E-Bost',
+		emailSubject	: 'Testun y Message Subject',
+		emailBody		: 'Pwnc y Neges',
+		noAnchors		: '(Dim angorau ar gael yn y ddogfen)',
+		noUrl			: 'Teipiwch URL y ddolen',
+		noEmail			: 'Teipiwch gyfeiriad yr e-bost'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Angor',
+		menu		: 'Golygwch yr Angor',
+		title		: 'Priodweddau\'r Angor',
+		name		: 'Enw\'r Angor',
+		errorName	: 'Teipiwch enw\'r angor'
+	},
+
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Chwilio ac Amnewid',
+		find				: 'Chwilio',
+		replace				: 'Amnewid',
+		findWhat			: 'Chwilio\'r term:',
+		replaceWith			: 'Amnewid gyda:',
+		notFoundMsg			: 'Nid oedd y testun wedi\'i ddarganfod.',
+		matchCase			: 'Cyfateb i\'r cas',
+		matchWord			: 'Cyfateb gair cyfan',
+		matchCyclic			: 'Cyfateb cylchol',
+		replaceAll			: 'Amnewid pob un',
+		replaceSuccessMsg	: 'Amnewidiwyd %1 achlysur.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Tabl',
+		title		: 'Nodweddion Tabl',
+		menu		: 'Nodweddion Tabl',
+		deleteTable	: 'Dileu Tabl',
+		rows		: 'Rhesi',
+		columns		: 'Colofnau',
+		border		: 'Maint yr Ymyl',
+		align		: 'Aliniad',
+		alignLeft	: 'Chwith',
+		alignCenter	: 'Canol',
+		alignRight	: 'Dde',
+		width		: 'Lled',
+		widthPx		: 'picsel',
+		widthPc		: 'y cant',
+		widthUnit	: 'width unit', // MISSING
+		height		: 'Uchder',
+		cellSpace	: 'Bylchu\'r gell',
+		cellPad		: 'Padio\'r gell',
+		caption		: 'Pennawd',
+		summary		: 'Crynodeb',
+		headers		: 'Penynnau',
+		headersNone		: 'Dim',
+		headersColumn	: 'Colofn gyntaf',
+		headersRow		: 'Rhes gyntaf',
+		headersBoth		: 'Y Ddau',
+		invalidRows		: 'Mae\'n rhaid cael o leiaf un rhes.',
+		invalidCols		: 'Mae\'n rhaid cael o leiaf un golofn.',
+		invalidBorder	: 'Mae\'n rhaid i faint yr ymyl fod yn rhif.',
+		invalidWidth	: 'Mae\'n rhaid i led y tabl fod yn rhif.',
+		invalidHeight	: 'Mae\'n rhaid i uchder y tabl fod yn rhif.',
+		invalidCellSpacing	: 'Mae\'n rhaid i fylchiad y gell fod yn rhif.',
+		invalidCellPadding	: 'Mae\'n rhaid i badiad y gell fod yn rhif.',
+
+		cell :
+		{
+			menu			: 'Cell',
+			insertBefore	: 'Mewnosod Cell Cyn',
+			insertAfter		: 'Mewnosod Cell Ar Ôl',
+			deleteCell		: 'Dileu Celloedd',
+			merge			: 'Cyfuno Celloedd',
+			mergeRight		: 'Cyfuno i\'r Dde',
+			mergeDown		: 'Cyfuno i Lawr',
+			splitHorizontal	: 'Hollti\'r Gell yn Lorweddol',
+			splitVertical	: 'Hollti\'r Gell yn Fertigol',
+			title			: 'Priodweddau\'r Gell',
+			cellType		: 'Math y Gell',
+			rowSpan			: 'Rhychwant Rhesi',
+			colSpan			: 'Rhychwant Colofnau',
+			wordWrap		: 'Lapio Geiriau',
+			hAlign			: 'Aliniad Llorweddol',
+			vAlign			: 'Aliniad Fertigol',
+			alignTop		: 'Top',
+			alignMiddle		: 'Canol',
+			alignBottom		: 'Gwaelod',
+			alignBaseline	: 'Baslinell',
+			bgColor			: 'Lliw Cefndir',
+			borderColor		: 'Lliw Ymyl',
+			data			: 'Data',
+			header			: 'Pennyn',
+			yes				: 'Ie',
+			no				: 'Na',
+			invalidWidth	: 'Mae\'n rhaid i led y gell fod yn rhif.',
+			invalidHeight	: 'Mae\'n rhaid i uchder y gell fod yn rhif.',
+			invalidRowSpan	: 'Mae\'n rhaid i rychwant y rhesi fod yn gyfanrif.',
+			invalidColSpan	: 'Mae\'n rhaid i rychwant y colofnau fod yn gyfanrif.',
+			chooseColor		: 'Choose'
+		},
+
+		row :
+		{
+			menu			: 'Rhes',
+			insertBefore	: 'Mewnosod Rhes Cyn',
+			insertAfter		: 'Mewnosod Rhes Ar Ôl',
+			deleteRow		: 'Dileu Rhesi'
+		},
+
+		column :
+		{
+			menu			: 'Colofn',
+			insertBefore	: 'Mewnosod Colofn Cyn',
+			insertAfter		: 'Mewnosod Colofn Ar Ôl',
+			deleteColumn	: 'Dileu Colofnau'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Priodweddau Botymau',
+		text		: 'Testun (Gwerth)',
+		type		: 'Math',
+		typeBtn		: 'Botwm',
+		typeSbm		: 'Gyrru',
+		typeRst		: 'Ailosod'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Priodweddau Blwch Ticio',
+		radioTitle	: 'Priodweddau Botwm Radio',
+		value		: 'Gwerth',
+		selected	: 'Dewiswyd'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Priodweddau Ffurflen',
+		menu		: 'Priodweddau Ffurflen',
+		action		: 'Gweithred',
+		method		: 'Dull',
+		encoding	: 'Amgodio'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Priodweddau Maes Dewis',
+		selectInfo	: 'Gwyb Dewis',
+		opAvail		: 'Opsiynau ar Gael',
+		value		: 'Gwerth',
+		size		: 'Maint',
+		lines		: 'llinellau',
+		chkMulti	: 'Caniatàu aml-ddewisiadau',
+		opText		: 'Testun',
+		opValue		: 'Gwerth',
+		btnAdd		: 'Ychwanegu',
+		btnModify	: 'Newid',
+		btnUp		: 'Lan',
+		btnDown		: 'Lawr',
+		btnSetValue : 'Gosod fel gwerth a ddewiswyd',
+		btnDelete	: 'Dileu'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Priodweddau Ardal Testun',
+		cols		: 'Colofnau',
+		rows		: 'Rhesi'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Priodweddau Maes Testun',
+		name		: 'Enw',
+		value		: 'Gwerth',
+		charWidth	: 'Lled Nod',
+		maxChars	: 'Uchafswm y Nodau',
+		type		: 'Math',
+		typeText	: 'Testun',
+		typePass	: 'Cyfrinair'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Priodweddau Maes Cudd',
+		name	: 'Enw',
+		value	: 'Gwerth'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Priodweddau Delwedd',
+		titleButton	: 'Priodweddau Botwm Delwedd',
+		menu		: 'Priodweddau Delwedd',
+		infoTab		: 'Gwyb Delwedd',
+		btnUpload	: 'Anfon i\'r Gweinydd',
+		upload		: 'lanlwytho',
+		alt			: 'Testun Amgen',
+		width		: 'Lled',
+		height		: 'Uchder',
+		lockRatio	: 'Cloi Cymhareb',
+		unlockRatio	: 'Unlock Ratio', // MISSING
+		resetSize	: 'Ailosod Maint',
+		border		: 'Ymyl',
+		hSpace		: 'BwlchLl',
+		vSpace		: 'BwlchF',
+		align		: 'Alinio',
+		alignLeft	: 'Chwith',
+		alignRight	: 'Dde',
+		alertUrl	: 'Rhowch URL y ddelwedd',
+		linkTab		: 'Dolen',
+		button2Img	: 'Ydych am drawsffurfio\'r botwm ddelwedd hwn ar ddelwedd syml?',
+		img2Button	: 'Ydych am drawsffurfio\'r ddelwedd hon ar fotwm delwedd?',
+		urlMissing	: 'URL tarddle\'r ddelwedd ar goll.',
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Priodweddau Flash',
+		propertiesTab	: 'Priodweddau',
+		title			: 'Priodweddau Flash',
+		chkPlay			: 'AwtoChwarae',
+		chkLoop			: 'Lwpio',
+		chkMenu			: 'Galluogi Dewislen Flash',
+		chkFull			: 'Caniatàu Sgrin Llawn',
+ 		scale			: 'Graddfa',
+		scaleAll		: 'Dangos pob',
+		scaleNoBorder	: 'Dim Ymyl',
+		scaleFit		: 'Ffit Union',
+		access			: 'Mynediad Sgript',
+		accessAlways	: 'Pob amser',
+		accessSameDomain: 'R\'un parth',
+		accessNever		: 'Byth',
+		align			: 'Alinio',
+		alignLeft		: 'Chwith',
+		alignAbsBottom	: 'Gwaelod Abs',
+		alignAbsMiddle	: 'Canol Abs',
+		alignBaseline	: 'Baslinell',
+		alignBottom		: 'Gwaelod',
+		alignMiddle		: 'Canol',
+		alignRight		: 'Dde',
+		alignTextTop	: 'Testun Top',
+		alignTop		: 'Top',
+		quality			: 'Ansawdd',
+		qualityBest		: 'Gorau',
+		qualityHigh		: 'Uchel',
+		qualityAutoHigh	: 'Uchel Awto',
+		qualityMedium	: 'Canolig',
+		qualityAutoLow	: 'Isel Awto',
+		qualityLow		: 'Isel',
+		windowModeWindow: 'Ffenestr',
+		windowModeOpaque: 'Afloyw',
+		windowModeTransparent : 'Tryloyw',
+		windowMode		: 'Modd ffenestr',
+		flashvars		: 'Newidynnau ar gyfer Flash',
+		bgcolor			: 'Lliw cefndir',
+		width			: 'Lled',
+		height			: 'Uchder',
+		hSpace			: 'BwlchLl',
+		vSpace			: 'BwlchF',
+		validateSrc		: 'Ni all yr URL fod yn wag.',
+		validateWidth	: 'Rhaid i\'r Lled fod yn rhif.',
+		validateHeight	: 'Rhaid i\'r Uchder fod yn rhif.',
+		validateHSpace	: 'Rhaid i\'r BwlchLl fod yn rhif.',
+		validateVSpace	: 'Rhaid i\'r BwlchF fod yn rhif.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Gwirio Sillafu',
+		title			: 'Gwirio Sillafu',
+		notAvailable	: 'Nid yw\'r gwasanaeth hwn ar gael yn bresennol.',
+		errorLoading	: 'Error loading application service host: %s.',
+		notInDic		: 'Nid i\'w gael yn y geiriadur',
+		changeTo		: 'Newid i',
+		btnIgnore		: 'Anwybyddu Un',
+		btnIgnoreAll	: 'Anwybyddu Pob',
+		btnReplace		: 'Amnewid Un',
+		btnReplaceAll	: 'Amnewid Pob',
+		btnUndo			: 'Dadwneud',
+		noSuggestions	: '- Dim awgrymiadau -',
+		progress		: 'Gwirio sillafu yn ar y gweill...',
+		noMispell		: 'Gwirio sillafu wedi gorffen: Dim camsillaf.',
+		noChanges		: 'Gwirio sillafu wedi gorffen: Dim newidiadau',
+		oneChange		: 'Gwirio sillafu wedi gorffen: Newidiwyd 1 gair',
+		manyChanges		: 'Gwirio sillafu wedi gorffen: Newidiwyd %1 gair',
+		ieSpellDownload	: 'Gwirydd sillafu heb ei arsefydlu. A ydych am ei lawrlwytho nawr?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Gwenoglun',
+		title	: 'Mewnosod Gwenoglun',
+		options : 'Smiley Options' // MISSING
+	},
+
+	elementsPath :
+	{
+		eleLabel : 'Elements path', // MISSING
+		eleTitle : 'Elfen %1'
+	},
+
+	numberedlist	: 'Mewnosod/Tynnu Rhestr Rhifol',
+	bulletedlist	: 'Mewnosod/Tynnu Rhestr Bwled',
+	indent			: 'Cynyddu\'r Mewnoliad',
+	outdent			: 'Lleihau\'r Mewnoliad',
+
+	justify :
+	{
+		left	: 'Alinio i\'r Chwith',
+		center	: 'Alinio i\'r Canol',
+		right	: 'Alinio i\'r Dde',
+		block	: 'Aliniad Bloc'
+	},
+
+	blockquote : 'Dyfyniad bloc',
+
+	clipboard :
+	{
+		title		: 'Gludo',
+		cutError	: 'Nid yw gosodiadau diogelwch eich porwr yn caniatàu\'r golygydd i gynnal \'gweithredoedd torri\' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+X).',
+		copyError	: 'Nid yw gosodiadau diogelwch eich porwr yn caniatàu\'r golygydd i gynnal \'gweithredoedd copïo\' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+C).',
+		pasteMsg	: 'Gludwch i mewn i\'r blwch canlynol gan ddefnyddio\'r bysellfwrdd (<strong>Ctrl/Cmd+V</strong>) a phwyso <strong>Iawn</strong>.',
+		securityMsg	: 'Oherwydd gosodiadau diogelwch eich porwr, nid yw\'r porwr yn gallu ennill mynediad i\'r data ar y clipfwrdd yn uniongyrchol. Mae angen i chi ei ludo eto i\'r ffenestr hon.',
+		pasteArea	: 'Paste Area' // MISSING
+	},
+
+	pastefromword :
+	{
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Gludo o Word',
+		title			: 'Gludo o Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
+	},
+
+	pasteText :
+	{
+		button	: 'Gludo fel testun plaen',
+		title	: 'Gludo fel Testun Plaen'
+	},
+
+	templates :
+	{
+		button			: 'Templedi',
+		title			: 'Templedi Cynnwys',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Amnewid y cynnwys go iawn',
+		selectPromptMsg	: 'Dewiswch dempled i\'w agor yn y golygydd',
+		emptyListMsg	: '(Dim templedi wedi\'u diffinio)'
+	},
+
+	showBlocks : 'Dangos Blociau',
+
+	stylesCombo :
+	{
+		label		: 'Arddulliau',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Arddulliau Bloc',
+		panelTitle2	: 'Arddulliau Mewnol',
+		panelTitle3	: 'Arddulliau Gwrthrych'
+	},
+
+	format :
+	{
+		label		: 'Fformat',
+		panelTitle	: 'Fformat Paragraff',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Wedi\'i Fformatio',
+		tag_address	: 'Cyfeiriad',
+		tag_h1		: 'Pennawd 1',
+		tag_h2		: 'Pennawd 2',
+		tag_h3		: 'Pennawd 3',
+		tag_h4		: 'Pennawd 4',
+		tag_h5		: 'Pennawd 5',
+		tag_h6		: 'Pennawd 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
+
+	font :
+	{
+		label		: 'Ffont',
+		voiceLabel	: 'Ffont',
+		panelTitle	: 'Enw\'r Ffont'
+	},
+
+	fontSize :
+	{
+		label		: 'Maint',
+		voiceLabel	: 'Maint y Ffont',
+		panelTitle	: 'Maint y Ffont'
+	},
+
+	colorButton :
+	{
+		textColorTitle	: 'Lliw Testun',
+		bgColorTitle	: 'Lliw Cefndir',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Awtomatig',
+		more			: 'Mwy o Liwiau...'
+	},
+
+	colors :
+	{
+		'000' : 'Du',
+		'800000' : 'Marwn',
+		'8B4513' : 'Brown Cyfrwy',
+		'2F4F4F' : 'Llechen Tywyll',
+		'008080' : 'Corhwyad',
+		'000080' : 'Nefi',
+		'4B0082' : 'Indigo',
+		'696969' : 'Llwyd Pwl',
+		'B22222' : 'Bric Tân',
+		'A52A2A' : 'Brown',
+		'DAA520' : 'Rhoden Aur',
+		'006400' : 'Gwyrdd Tywyll',
+		'40E0D0' : 'Gwyrddlas',
+		'0000CD' : 'Glas Canolig',
+		'800080' : 'Porffor',
+		'808080' : 'Llwyd',
+		'F00' : 'Coch',
+		'FF8C00' : 'Oren Tywyll',
+		'FFD700' : 'Aur',
+		'008000' : 'Gwyrdd',
+		'0FF' : 'Cyan',
+		'00F' : 'Glas',
+		'EE82EE' : 'Fioled',
+		'A9A9A9' : 'Llwyd Tywyll',
+		'FFA07A' : 'Samwn Golau',
+		'FFA500' : 'Oren',
+		'FFFF00' : 'Melyn',
+		'00FF00' : 'Leim',
+		'AFEEEE' : 'Gwyrddlas Golau',
+		'ADD8E6' : 'Glas Golau',
+		'DDA0DD' : 'Eirinen',
+		'D3D3D3' : 'Llwyd Golau',
+		'FFF0F5' : 'Gwrid Lafant',
+		'FAEBD7' : 'Gwyn Hynafol',
+		'FFFFE0' : 'Melyn Golau',
+		'F0FFF0' : 'Melwn Gwyrdd Golau',
+		'F0FFFF' : 'Aswr',
+		'F0F8FF' : 'Glas Alys',
+		'E6E6FA' : 'Lafant',
+		'FFF' : 'Gwyn'
+	},
+
+	scayt :
+	{
+		title			: 'Gwirio\'r Sillafu Wrth Deipio',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Galluogi SCAYT',
+		disable			: 'Analluogi SCAYT',
+		about			: 'Ynghylch SCAYT',
+		toggle			: 'Togl SCAYT',
+		options			: 'Opsiynau',
+		langs			: 'Ieithoedd',
+		moreSuggestions	: 'Awgrymiadau pellach',
+		ignore			: 'Anwybyddu',
+		ignoreAll		: 'Anwybyddu pob',
+		addWord			: 'Ychwanegu Gair',
+		emptyDic		: 'Ni ddylai enw\'r geiriadur fod yn wag.',
+
+		optionsTab		: 'Opsiynau',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Ieithoedd',
+
+		dictionariesTab	: 'Geiriaduron',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'Ynghylch'
+	},
+
+	about :
+	{
+		title		: 'Ynghylch CKEditor',
+		dlgTitle	: 'Ynghylch CKEditor',
+		moreInfo	: 'Am wybodaeth ynghylch trwyddedau, ewch i\'n gwefan:',
+		copy		: 'Hawlfraint &copy; $1. Cedwir pob hawl.'
+	},
+
+	maximize : 'Mwyhau',
+	minimize : 'Lleihau',
+
+	fakeobjects :
+	{
+		anchor	: 'Angor',
+		flash	: 'Animeiddiant Flash',
+		div		: 'Toriad Tudalen',
+		unknown	: 'Gwrthrych Anhysbys'
+	},
+
+	resize : 'Llusgo i ailfeintio',
+
+	colordialog :
+	{
+		title		: 'Dewis lliw',
+		options	:	'Color Options', // MISSING
+		highlight	: 'Uwcholeuo',
+		selected	: 'Dewiswyd',
+		clear		: 'Clirio'
+	},
+
+	toolbarCollapse	: 'Cyfangu\'r Bar Offer',
+	toolbarExpand	: 'Ehangu\'r Bar Offer'
+};
Index: /CKEditor/branches/features/adobeair/_source/lang/da.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/da.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/da.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -40,5 +44,5 @@
 	preview			: 'Vis eksempel',
 	cut				: 'Klip',
-	copy			: 'Kopier',
+	copy			: 'Kopiér',
 	paste			: 'Indsæt',
 	print			: 'Udskriv',
@@ -48,12 +52,12 @@
 	selectAll		: 'Vælg alt',
 	removeFormat	: 'Fjern formatering',
-	strike			: 'Overstreget',
+	strike			: 'Gennemstreget',
 	subscript		: 'Sænket skrift',
 	superscript		: 'Hævet skrift',
-	horizontalrule	: 'Indsæt vandret linie',
+	horizontalrule	: 'Indsæt vandret streg',
 	pagebreak		: 'Indsæt sideskift',
 	unlink			: 'Fjern hyperlink',
 	undo			: 'Fortryd',
-	redo			: 'Annuller fortryd',
+	redo			: 'Annullér fortryd',
 
 	// Common messages and labels.
@@ -66,13 +70,13 @@
 		uploadSubmit	: 'Upload',
 		image			: 'Indsæt billede',
-		flash			: 'Flash',
+		flash			: 'Indsæt Flash',
 		form			: 'Indsæt formular',
 		checkbox		: 'Indsæt afkrydsningsfelt',
-		radio		: 'Indsæt alternativknap',
+		radio			: 'Indsæt alternativknap',
 		textField		: 'Indsæt tekstfelt',
 		textarea		: 'Indsæt tekstboks',
 		hiddenField		: 'Indsæt skjult felt',
 		button			: 'Indsæt knap',
-		select	: 'Indsæt liste',
+		select			: 'Indsæt liste',
 		imageButton		: 'Indsæt billedknap',
 		notSet			: '<intet valgt>',
@@ -84,17 +88,30 @@
 		langCode		: 'Sprogkode',
 		longDescr		: 'Udvidet beskrivelse',
-		cssClass		: 'Typografiark',
+		cssClass		: 'Typografiark (CSS)',
 		advisoryTitle	: 'Titel',
-		cssStyle		: 'Typografi',
+		cssStyle		: 'Typografi (CSS)',
 		ok				: 'OK',
-		cancel			: 'Annuller',
+		cancel			: 'Annullér',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'Generelt',
 		advancedTab		: 'Avanceret',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
-		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
-		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		validateNumberFailed : 'Værdien er ikke et tal.',
+		confirmNewPage	: 'Alt indhold, der ikke er blevet gemt, vil gå tabt. Er du sikker på, at du vil indlæse en ny side?',
+		confirmCancel	: 'Nogle af indstillingerne er blevet ændret. Er du sikker på, at du vil lukke vinduet?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
-		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+		unavailable		: '%1<span class="cke_accessibility">, ikke tilgængelig</span>'
+	},
+
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
 	},
 
@@ -103,5 +120,6 @@
 	{
 		toolbar		: 'Indsæt symbol',
-		title		: 'Vælg symbol'
+		title		: 'Vælg symbol',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -109,6 +127,7 @@
 	link :
 	{
-		toolbar		: 'Indsæt/rediger hyperlink',
-		menu		: 'Rediger hyperlink',
+		toolbar		: 'Indsæt/redigér hyperlink',
+		other 		: '<anden>',
+		menu		: 'Redigér hyperlink',
 		title		: 'Egenskaber for hyperlink',
 		info		: 'Generelt',
@@ -116,25 +135,20 @@
 		upload		: 'Upload',
 		advanced	: 'Avanceret',
-		type		: 'Hyperlink type',
+		type		: 'Type',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Bogmærke på denne side',
 		toEmail		: 'E-mail',
-		target		: 'Mål',
-		targetNotSet	: '<intet valgt>',
-		targetFrame	: '<ramme>',
-		targetPopup	: '<popup vindue>',
-		targetNew	: 'Nyt vindue (_blank)',
-		targetTop	: 'Hele vinduet (_top)',
-		targetSelf	: 'Samme vindue (_self)',
-		targetParent	: 'Overordnet ramme (_parent)',
+		targetFrame		: '<ramme>',
+		targetPopup		: '<popup vindue>',
 		targetFrameName	: 'Destinationsvinduets navn',
-		targetPopupName	: 'Pop-up vinduets navn',
-		popupFeatures	: 'Egenskaber for pop-up',
-		popupResizable	: 'Resizable', // MISSING
+		targetPopupName	: 'Popup vinduets navn',
+		popupFeatures	: 'Egenskaber for popup',
+		popupResizable	: 'Justérbar',
 		popupStatusBar	: 'Statuslinje',
-		popupLocationBar	: 'Adresselinje',
+		popupLocationBar: 'Adresselinje',
 		popupToolbar	: 'Værktøjslinje',
 		popupMenuBar	: 'Menulinje',
 		popupFullScreen	: 'Fuld skærm (IE)',
-		popupScrollBars	: 'Scrollbars',
+		popupScrollBars	: 'Scrollbar',
 		popupDependent	: 'Koblet/dependent (Netscape)',
 		popupWidth		: 'Bredde',
@@ -142,7 +156,6 @@
 		popupHeight		: 'Højde',
 		popupTop		: 'Position fra toppen',
-		id				: 'Id', // MISSING
+		id				: 'Id',
 		langDir			: 'Tekstretning',
-		langDirNotSet	: '<intet valgt>',
 		langDirLTR		: 'Fra venstre mod højre (LTR)',
 		langDirRTL		: 'Fra højre mod venstre (RTL)',
@@ -159,10 +172,10 @@
 		anchorName		: 'Efter anker navn',
 		anchorId		: 'Efter element Id',
-		emailAddress	: 'E-mailadresse',
+		emailAddress	: 'E-mail adresse',
 		emailSubject	: 'Emne',
-		emailBody		: 'Brødtekst',
-		noAnchors		: '(Ingen bogmærker dokumentet)',
+		emailBody		: 'Besked',
+		noAnchors		: '(Ingen bogmærker i dokumentet)',
 		noUrl			: 'Indtast hyperlink URL!',
-		noEmail			: 'Indtast e-mailaddresse!'
+		noEmail			: 'Indtast e-mail adresse!'
 	},
 
@@ -170,9 +183,32 @@
 	anchor :
 	{
-		toolbar		: 'Indsæt/rediger bogmærke',
+		toolbar		: 'Indsæt/redigér bogmærke',
 		menu		: 'Egenskaber for bogmærke',
 		title		: 'Egenskaber for bogmærke',
 		name		: 'Bogmærke navn',
-		errorName	: 'Indtast bogmærke navn!'
+		errorName	: 'Indtast bogmærke navn'
+	},
+
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
 	},
 
@@ -185,10 +221,10 @@
 		findWhat			: 'Søg efter:',
 		replaceWith			: 'Erstat med:',
-		notFoundMsg			: 'Søgeteksten blev ikke fundet!',
+		notFoundMsg			: 'Søgeteksten blev ikke fundet',
 		matchCase			: 'Forskel på store og små bogstaver',
 		matchWord			: 'Kun hele ord',
-		matchCyclic			: 'Match cyclic', // MISSING
+		matchCyclic			: 'Match cyklisk',
 		replaceAll			: 'Erstat alle',
-		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+		replaceSuccessMsg	: '%1 forekomst(er) erstattet.'
 	},
 
@@ -196,5 +232,5 @@
 	table :
 	{
-		toolbar		: 'Table',
+		toolbar		: 'Tabel',
 		title		: 'Egenskaber for tabel',
 		menu		: 'Egenskaber for tabel',
@@ -204,5 +240,4 @@
 		border		: 'Rammebredde',
 		align		: 'Justering',
-		alignNotSet	: '<intet valgt>',
 		alignLeft	: 'Venstrestillet',
 		alignCenter	: 'Centreret',
@@ -211,21 +246,22 @@
 		widthPx		: 'pixels',
 		widthPc		: 'procent',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Højde',
 		cellSpace	: 'Celleafstand',
 		cellPad		: 'Cellemargen',
 		caption		: 'Titel',
-		summary		: 'Resume',
-		headers		: 'Headers', // MISSING
-		headersNone		: 'None', // MISSING
-		headersColumn	: 'First column', // MISSING
-		headersRow		: 'First Row', // MISSING
-		headersBoth		: 'Both', // MISSING
-		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
-		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
-		invalidBorder	: 'Border size must be a number.', // MISSING
-		invalidWidth	: 'Table width must be a number.', // MISSING
-		invalidHeight	: 'Table height must be a number.', // MISSING
-		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
-		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+		summary		: 'Resumé',
+		headers		: 'Header',
+		headersNone		: 'Ingen',
+		headersColumn	: 'Første kolonne',
+		headersRow		: 'Første række',
+		headersBoth		: 'Begge',
+		invalidRows		: 'Antallet af rækker skal være større end 0.',
+		invalidCols		: 'Antallet af kolonner skal være større end 0.',
+		invalidBorder	: 'Rammetykkelse skal være et tal.',
+		invalidWidth	: 'Tabelbredde skal være et tal.',
+		invalidHeight	: 'Tabelhøjde skal være et tal.',
+		invalidCellSpacing	: 'Celleafstand skal være et tal.',
+		invalidCellPadding	: 'Cellemargen skal være et tal.',
 
 		cell :
@@ -240,26 +276,26 @@
 			splitHorizontal	: 'Del celle vandret',
 			splitVertical	: 'Del celle lodret',
-			title			: 'Cell Properties', // MISSING
-			cellType		: 'Cell Type', // MISSING
-			rowSpan			: 'Rows Span', // MISSING
-			colSpan			: 'Columns Span', // MISSING
-			wordWrap		: 'Word Wrap', // MISSING
-			hAlign			: 'Horizontal Alignment', // MISSING
-			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
-			alignBaseline	: 'Baseline', // MISSING
-			bgColor			: 'Background Color', // MISSING
-			borderColor		: 'Border Color', // MISSING
-			data			: 'Data', // MISSING
-			header			: 'Header', // MISSING
-			yes				: 'Yes', // MISSING
-			no				: 'No', // MISSING
-			invalidWidth	: 'Cell width must be a number.', // MISSING
-			invalidHeight	: 'Cell height must be a number.', // MISSING
-			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
-			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			title			: 'Celleegenskaber',
+			cellType		: 'Celletype',
+			rowSpan			: 'Række span (rows span)',
+			colSpan			: 'Kolonne span (columns span)',
+			wordWrap		: 'Tekstombrydning',
+			hAlign			: 'Vandret justering',
+			vAlign			: 'Lodret justering',
+			alignTop		: 'Top',
+			alignMiddle		: 'Midt',
+			alignBottom		: 'Bund',
+			alignBaseline	: 'Grundlinje',
+			bgColor			: 'Baggrundsfarve',
+			borderColor		: 'Rammefarve',
+			data			: 'Data',
+			header			: 'Header',
+			yes				: 'Ja',
+			no				: 'Nej',
+			invalidWidth	: 'Cellebredde skal være et tal.',
+			invalidHeight	: 'Cellehøjde skal være et tal.',
+			invalidRowSpan	: 'Række span skal være et heltal.',
+			invalidColSpan	: 'Kolonne span skal være et heltal.',
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -307,12 +343,6 @@
 		menu		: 'Egenskaber for formular',
 		action		: 'Handling',
-		method		: 'Metod',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Mål',
-		targetNotSet	: '<intet valgt>',
-		targetNew	: 'Nyt vindue (_blank)',
-		targetTop	: 'Hele vinduet (_top)',
-		targetSelf	: 'Samme vindue (_self)',
-		targetParent	: 'Overordnet ramme (_parent)'
+		method		: 'Metode',
+		encoding	: 'Kodning (encoding)'
 	},
 
@@ -325,10 +355,10 @@
 		value		: 'Værdi',
 		size		: 'Størrelse',
-		lines		: 'linier',
+		lines		: 'Linjer',
 		chkMulti	: 'Tillad flere valg',
 		opText		: 'Tekst',
 		opValue		: 'Værdi',
 		btnAdd		: 'Tilføj',
-		btnModify	: 'Rediger',
+		btnModify	: 'Redigér',
 		btnUp		: 'Op',
 		btnDown		: 'Ned',
@@ -352,5 +382,5 @@
 		value		: 'Værdi',
 		charWidth	: 'Bredde (tegn)',
-		maxChars	: 'Max antal tegn',
+		maxChars	: 'Max. antal tegn',
 		type		: 'Type',
 		typeText	: 'Tekst',
@@ -372,32 +402,29 @@
 		titleButton	: 'Egenskaber for billedknap',
 		menu		: 'Egenskaber for billede',
-		infoTab	: 'Generelt',
+		infoTab		: 'Generelt',
 		btnUpload	: 'Upload',
-		url		: 'URL',
-		upload	: 'Upload',
-		alt		: 'Alternativ tekst',
+		upload		: 'Upload',
+		alt			: 'Alternativ tekst',
 		width		: 'Bredde',
-		height	: 'Højde',
+		height		: 'Højde',
 		lockRatio	: 'Lås størrelsesforhold',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Nulstil størrelse',
-		border	: 'Ramme',
-		hSpace	: 'HMargen',
-		vSpace	: 'VMargen',
+		border		: 'Ramme',
+		hSpace		: 'Vandret margen',
+		vSpace		: 'Lodret margen',
 		align		: 'Justering',
 		alignLeft	: 'Venstre',
-		alignAbsBottom: 'Absolut nederst',
-		alignAbsMiddle: 'Absolut centreret',
-		alignBaseline	: 'Grundlinje',
-		alignBottom	: 'Nederst',
-		alignMiddle	: 'Centreret',
 		alignRight	: 'Højre',
-		alignTextTop	: 'Toppen af teksten',
-		alignTop	: 'Øverst',
-		preview	: 'Vis eksempel',
 		alertUrl	: 'Indtast stien til billedet',
-		linkTab	: 'Hyperlink',
-		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
-		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		linkTab		: 'Hyperlink',
+		button2Img	: 'Vil du lave billedknappen om til et almindeligt billede?',
+		img2Button	: 'Vil du lave billedet om til en billedknap?',
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -406,50 +433,50 @@
 	{
 		properties		: 'Egenskaber for Flash',
-		propertiesTab	: 'Properties', // MISSING
-		title		: 'Egenskaber for Flash',
-		chkPlay		: 'Automatisk afspilning',
-		chkLoop		: 'Gentagelse',
-		chkMenu		: 'Vis Flash menu',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Skalér',
+		propertiesTab	: 'Egenskaber',
+		title			: 'Egenskaber for Flash',
+		chkPlay			: 'Automatisk afspilning',
+		chkLoop			: 'Gentagelse',
+		chkMenu			: 'Vis Flash menu',
+		chkFull			: 'Tillad fuldskærm',
+ 		scale			: 'Skalér',
 		scaleAll		: 'Vis alt',
 		scaleNoBorder	: 'Ingen ramme',
 		scaleFit		: 'Tilpas størrelse',
-		access			: 'Script Access', // MISSING
-		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Justering',
-		alignLeft	: 'Venstre',
-		alignAbsBottom: 'Absolut nederst',
-		alignAbsMiddle: 'Absolut centreret',
+		access			: 'Script adgang',
+		accessAlways	: 'Altid',
+		accessSameDomain: 'Samme domæne',
+		accessNever		: 'Aldrig',
+		align			: 'Justering',
+		alignLeft		: 'Venstre',
+		alignAbsBottom	: 'Absolut nederst',
+		alignAbsMiddle	: 'Absolut centreret',
 		alignBaseline	: 'Grundlinje',
-		alignBottom	: 'Nederst',
-		alignMiddle	: 'Centreret',
-		alignRight	: 'Højre',
+		alignBottom		: 'Nederst',
+		alignMiddle		: 'Centreret',
+		alignRight		: 'Højre',
 		alignTextTop	: 'Toppen af teksten',
-		alignTop	: 'Øverst',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Baggrundsfarve',
-		width	: 'Bredde',
-		height	: 'Højde',
-		hSpace	: 'HMargen',
-		vSpace	: 'VMargen',
-		validateSrc : 'Indtast hyperlink URL!',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Øverst',
+		quality			: 'Kvalitet',
+		qualityBest		: 'Bedste',
+		qualityHigh		: 'Høj',
+		qualityAutoHigh	: 'Auto høj',
+		qualityMedium	: 'Medium',
+		qualityAutoLow	: 'Auto lav',
+		qualityLow		: 'Lav',
+		windowModeWindow: 'Vindue',
+		windowModeOpaque: 'Gennemsigtig (opaque)',
+		windowModeTransparent : 'Transparent',
+		windowMode		: 'Vinduestilstand',
+		flashvars		: 'Variabler for Flash',
+		bgcolor			: 'Baggrundsfarve',
+		width			: 'Bredde',
+		height			: 'Højde',
+		hSpace			: 'Vandret margen',
+		vSpace			: 'Lodret margen',
+		validateSrc		: 'Indtast hyperlink URL!',
+		validateWidth	: 'Bredde skal være et tal.',
+		validateHeight	: 'Højde skal være et tal.',
+		validateHSpace	: 'Vandret margen skal være et tal.',
+		validateVSpace	: 'Lodret margen skal være et tal.'
 	},
 
@@ -458,21 +485,21 @@
 	{
 		toolbar			: 'Stavekontrol',
-		title			: 'Spell Check', // MISSING
-		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
-		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		title			: 'Stavekontrol',
+		notAvailable	: 'Stavekontrol er desværre ikke tilgængelig.',
+		errorLoading	: 'Fejl ved indlæsning af host: %s.',
 		notInDic		: 'Ikke i ordbogen',
 		changeTo		: 'Forslag',
-		btnIgnore		: 'Ignorer',
-		btnIgnoreAll	: 'Ignorer alle',
+		btnIgnore		: 'Ignorér',
+		btnIgnoreAll	: 'Ignorér alle',
 		btnReplace		: 'Erstat',
 		btnReplaceAll	: 'Erstat alle',
 		btnUndo			: 'Tilbage',
-		noSuggestions	: '- ingen forslag -',
-		progress		: 'Stavekontrolen arbejder...',
+		noSuggestions	: '(ingen forslag)',
+		progress		: 'Stavekontrollen arbejder...',
 		noMispell		: 'Stavekontrol færdig: Ingen fejl fundet',
 		noChanges		: 'Stavekontrol færdig: Ingen ord ændret',
 		oneChange		: 'Stavekontrol færdig: Et ord ændret',
 		manyChanges		: 'Stavekontrol færdig: %1 ord ændret',
-		ieSpellDownload	: 'Stavekontrol ikke installeret.<br>Vil du hente den nu?'
+		ieSpellDownload	: 'Stavekontrol ikke installeret. Vil du installere den nu?'
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Smiley',
-		title	: 'Vælg smiley'
+		title	: 'Vælg smiley',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
-	},
-
-	numberedlist : 'Talopstilling',
-	bulletedlist : 'Punktopstilling',
-	indent : 'Forøg indrykning',
-	outdent : 'Formindsk indrykning',
+		eleLabel : 'Elements path', // MISSING
+		eleTitle : '%1 element'
+	},
+
+	numberedlist	: 'Talopstilling',
+	bulletedlist	: 'Punktopstilling',
+	indent			: 'Forøg indrykning',
+	outdent			: 'Formindsk indrykning',
 
 	justify :
 	{
-		left : 'Venstrestillet',
-		center : 'Centreret',
-		right : 'Højrestillet',
-		block : 'Lige margener'
+		left	: 'Venstrestillet',
+		center	: 'Centreret',
+		right	: 'Højrestillet',
+		block	: 'Lige margener'
 	},
 
@@ -506,180 +535,213 @@
 	{
 		title		: 'Indsæt',
-		cutError	: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at klippe tekst automatisk!<br>Brug i stedet tastaturet til at klippe teksten (Ctrl+X).',
-		copyError	: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at kopiere tekst automatisk!<br>Brug i stedet tastaturet til at kopiere teksten (Ctrl+C).',
-		pasteMsg	: 'Indsæt i feltet herunder (<STRONG>Ctrl+V</STRONG>) og klik <STRONG>OK</STRONG>.',
-		securityMsg	: 'På grund af browserens sikkerhedsindstillinger kan editoren ikke tilgå udklipsholderen direkte. Du skal indsætte udklipsholderens indhold i dette vindue igen.'
+		cutError	: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Brug i stedet tastaturet til at klippe teksten (Ctrl/Cmd+X).',
+		copyError	: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Brug i stedet tastaturet til at kopiere teksten (Ctrl/Cmd+C).',
+		pasteMsg	: 'Indsæt i feltet herunder (<STRONG>Ctrl/Cmd+V</STRONG>) og klik på <STRONG>OK</STRONG>.',
+		securityMsg	: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Du skal indsætte udklipsholderens indhold i dette vindue igen.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Indsæt fra Word',
-		title : 'Indsæt fra Word',
-		advice : 'Indsæt i feltet herunder (<STRONG>Ctrl+V</STRONG>) og klik <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignorer font definitioner',
-		removeStyle : 'Ignorer typografi'
+		confirmCleanup	: 'Den tekst du forsøger at indsætte ser ud til at komme fra Word. Vil du rense teksten før den indsættes?',
+		toolbar			: 'Indsæt fra Word',
+		title			: 'Indsæt fra Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Indsæt som ikke-formateret tekst',
-		title : 'Indsæt som ikke-formateret tekst'
+		button	: 'Indsæt som ikke-formateret tekst',
+		title	: 'Indsæt som ikke-formateret tekst'
 	},
 
 	templates :
 	{
-		button : 'Skabeloner',
-		title : 'Indholdsskabeloner',
-		insertOption: 'Erstat det faktiske indhold',
-		selectPromptMsg: 'Vælg den skabelon, som skal åbnes i editoren.<br>(Nuværende indhold vil blive overskrevet!):',
-		emptyListMsg : '(Der er ikke defineret nogen skabelon!)'
-	},
-
-	showBlocks : 'Show Blocks', // MISSING
+		button			: 'Skabeloner',
+		title			: 'Indholdsskabeloner',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Erstat det faktiske indhold',
+		selectPromptMsg	: 'Vælg den skabelon, som skal åbnes i editoren (nuværende indhold vil blive overskrevet):',
+		emptyListMsg	: '(Der er ikke defineret nogen skabelon)'
+	},
+
+	showBlocks : 'Vis afsnitsmærker',
 
 	stylesCombo :
 	{
-		label : 'Typografi',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Typografi',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block typografi',
+		panelTitle2	: 'Inline typografi',
+		panelTitle3	: 'Object typografi'
 	},
 
 	format :
 	{
-		label : 'Formatering',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Formatering',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Formateret',
-		tag_address : 'Adresse',
-		tag_h1 : 'Overskrift 1',
-		tag_h2 : 'Overskrift 2',
-		tag_h3 : 'Overskrift 3',
-		tag_h4 : 'Overskrift 4',
-		tag_h5 : 'Overskrift 5',
-		tag_h6 : 'Overskrift 6',
-		tag_div : 'Normal (DIV)'
-	},
+		label		: 'Formatering',
+		panelTitle	: 'Formatering',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formateret',
+		tag_address	: 'Adresse',
+		tag_h1		: 'Overskrift 1',
+		tag_h2		: 'Overskrift 2',
+		tag_h3		: 'Overskrift 3',
+		tag_h4		: 'Overskrift 4',
+		tag_h5		: 'Overskrift 5',
+		tag_h6		: 'Overskrift 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Skrifttype',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Skrifttype',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Skrifttype',
+		voiceLabel	: 'Skrifttype',
+		panelTitle	: 'Skrifttype'
 	},
 
 	fontSize :
 	{
-		label : 'Skriftstørrelse',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Skriftstørrelse',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Skriftstørrelse',
+		voiceLabel	: 'Skriftstørrelse',
+		panelTitle	: 'Skriftstørrelse'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Tekstfarve',
-		bgColorTitle : 'Baggrundsfarve',
-		auto : 'Automatisk',
-		more : 'Flere farver...'
+		textColorTitle	: 'Tekstfarve',
+		bgColorTitle	: 'Baggrundsfarve',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatisk',
+		more			: 'Flere farver...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Stavekontrol mens du skriver',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Aktivér SCAYT',
+		disable			: 'Deaktivér SCAYT',
+		about			: 'Om SCAYT',
+		toggle			: 'Skift/toggle SCAYT',
+		options			: 'Indstillinger',
+		langs			: 'Sprog',
+		moreSuggestions	: 'Flere forslag',
+		ignore			: 'Ignorér',
+		ignoreAll		: 'Ignorér alle',
+		addWord			: 'Tilføj ord',
+		emptyDic		: 'Ordbogsnavn må ikke være tom.',
+
+		optionsTab		: 'Indstillinger',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Sprog',
+
+		dictionariesTab	: 'Ordbøger',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'Om'
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
-	},
-
-	maximize : 'Maximize', // MISSING
+		title		: 'Om CKEditor',
+		dlgTitle	: 'Om CKEditor',
+		moreInfo	: 'For informationer omkring licens, se venligst vores hjemmeside (på engelsk):',
+		copy		: 'Copyright &copy; $1. Alle rettigheder forbeholdes.'
+	},
+
+	maximize : 'Maximér',
 	minimize : 'Minimize', // MISSING
 
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
-	},
-
-	resize : 'Drag to resize', // MISSING
+		anchor	: 'Anker',
+		flash	: 'Flashanimation',
+		div		: 'Sideskift',
+		unknown	: 'Ukendt objekt'
+	},
+
+	resize : 'Træk for at skalere',
 
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/de.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/de.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/de.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1',
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Formular',
 		checkbox		: 'Checkbox',
-		radio		: 'Radiobutton',
+		radio			: 'Radiobutton',
 		textField		: 'Textfeld einzeilig',
 		textarea		: 'Textfeld mehrzeilig',
 		hiddenField		: 'verstecktes Feld',
 		button			: 'Klickbutton',
-		select	: 'Auswahlfeld',
+		select			: 'Auswahlfeld',
 		imageButton		: 'Bildbutton',
 		notSet			: '<nichts>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Abbrechen',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'Allgemein',
 		advancedTab		: 'Erweitert',
-		validateNumberFailed	: 'Dieser Wert ist keine Nummer.',
+		validateNumberFailed : 'Dieser Wert ist keine Nummer.',
 		confirmNewPage	: 'Alle nicht gespeicherten Änderungen gehen verlohren. Sind sie sicher die neue Seite zu laden?',
 		confirmCancel	: 'Einige Optionen wurden geändert. Wollen Sie den Dialog dennoch schließen?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Sonderzeichen einfügen/editieren',
-		title		: 'Sonderzeichen auswählen'
+		title		: 'Sonderzeichen auswählen',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Link einfügen/editieren',
+		other 		: '<andere>',
 		menu		: 'Link editieren',
 		title		: 'Link',
@@ -117,14 +136,9 @@
 		advanced	: 'Erweitert',
 		type		: 'Link-Typ',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Anker in dieser Seite',
 		toEmail		: 'E-Mail',
-		target		: 'Zielseite',
-		targetNotSet	: '<nichts>',
-		targetFrame	: '<Frame>',
-		targetPopup	: '<Pop-up Fenster>',
-		targetNew	: 'Neues Fenster (_blank)',
-		targetTop	: 'Oberstes Fenster (_top)',
-		targetSelf	: 'Gleiches Fenster (_self)',
-		targetParent	: 'Oberes Fenster (_parent)',
+		targetFrame		: '<Frame>',
+		targetPopup		: '<Pop-up Fenster>',
 		targetFrameName	: 'Ziel-Fenster-Name',
 		targetPopupName	: 'Pop-up Fenster-Name',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Größe änderbar',
 		popupStatusBar	: 'Statusleiste',
-		popupLocationBar	: 'Adress-Leiste',
+		popupLocationBar: 'Adress-Leiste',
 		popupToolbar	: 'Werkzeugleiste',
 		popupMenuBar	: 'Menü-Leiste',
@@ -144,5 +158,4 @@
 		id				: 'Id',
 		langDir			: 'Schreibrichtung',
-		langDirNotSet	: '<nichts>',
 		langDirLTR		: 'Links nach Rechts (LTR)',
 		langDirRTL		: 'Rechts nach Links (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Rahmen',
 		align		: 'Ausrichtung',
-		alignNotSet	: '<keine>',
 		alignLeft	: 'Links',
 		alignCenter	: 'Zentriert',
@@ -211,4 +246,5 @@
 		widthPx		: 'Pixel',
 		widthPc		: '%',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Höhe',
 		cellSpace	: 'Zellenabstand außen',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: '"Anzahl Zeilen verbinden" muss eine Ganzzahl sein.',
 			invalidColSpan	: '"Anzahl Spalten verbinden" muss eine Ganzzahl sein.',
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Action',
 		method		: 'Method',
-		encoding	: 'Zeichenkodierung',
-		target		: 'Zielseite',
-		targetNotSet	: '<keins>',
-		targetNew	: 'Neues Fenster (_blank)',
-		targetTop	: 'Oberstes Fenster (_top)',
-		targetSelf	: 'Gleiches Fenster (_self)',
-		targetParent	: 'Oberes Fenster (_parent)'
+		encoding	: 'Zeichenkodierung'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Bildbutton-Eigenschaften',
 		menu		: 'Bild-Eigenschaften',
-		infoTab	: 'Bild-Info',
+		infoTab		: 'Bild-Info',
 		btnUpload	: 'Zum Server senden',
-		url		: 'URL',
-		upload	: 'Hochladen',
-		alt		: 'Alternativer Text',
+		upload		: 'Hochladen',
+		alt			: 'Alternativer Text',
 		width		: 'Breite',
-		height	: 'Höhe',
+		height		: 'Höhe',
 		lockRatio	: 'Größenverhältnis beibehalten',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Größe zurücksetzen',
-		border	: 'Rahmen',
-		hSpace	: 'Horizontal-Abstand',
-		vSpace	: 'Vertikal-Abstand',
+		border		: 'Rahmen',
+		hSpace		: 'Horizontal-Abstand',
+		vSpace		: 'Vertikal-Abstand',
 		align		: 'Ausrichtung',
 		alignLeft	: 'Links',
-		alignAbsBottom: 'Abs Unten',
-		alignAbsMiddle: 'Abs Mitte',
-		alignBaseline	: 'Baseline',
-		alignBottom	: 'Unten',
-		alignMiddle	: 'Mitte',
 		alignRight	: 'Rechts',
-		alignTextTop	: 'Text Oben',
-		alignTop	: 'Oben',
-		preview	: 'Vorschau',
 		alertUrl	: 'Bitte geben Sie die Bild-URL an',
-		linkTab	: 'Link',
+		linkTab		: 'Link',
 		button2Img	: 'Möchten Sie den gewählten Bild-Button in ein einfaches Bild umwandeln?',
 		img2Button	: 'Möchten Sie das gewählten Bild in einen Bild-Button umwandeln?',
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Flash-Eigenschaften',
 		propertiesTab	: 'Eigenschaften',
-		title		: 'Flash-Eigenschaften',
-		chkPlay		: 'autom. Abspielen',
-		chkLoop		: 'Endlosschleife',
-		chkMenu		: 'Flash-Menü aktivieren',
-		chkFull		: 'Vollbildmodus erlauben',
- 		scale		: 'Skalierung',
+		title			: 'Flash-Eigenschaften',
+		chkPlay			: 'autom. Abspielen',
+		chkLoop			: 'Endlosschleife',
+		chkMenu			: 'Flash-Menü aktivieren',
+		chkFull			: 'Vollbildmodus erlauben',
+ 		scale			: 'Skalierung',
 		scaleAll		: 'Alles anzeigen',
 		scaleNoBorder	: 'ohne Rand',
@@ -418,38 +445,38 @@
 		access			: 'Skript Zugang',
 		accessAlways	: 'Immer',
-		accessSameDomain	: 'Gleiche Domain',
-		accessNever	: 'Nie',
-		align		: 'Ausrichtung',
-		alignLeft	: 'Links',
-		alignAbsBottom: 'Abs Unten',
-		alignAbsMiddle: 'Abs Mitte',
+		accessSameDomain: 'Gleiche Domain',
+		accessNever		: 'Nie',
+		align			: 'Ausrichtung',
+		alignLeft		: 'Links',
+		alignAbsBottom	: 'Abs Unten',
+		alignAbsMiddle	: 'Abs Mitte',
 		alignBaseline	: 'Baseline',
-		alignBottom	: 'Unten',
-		alignMiddle	: 'Mitte',
-		alignRight	: 'Rechts',
+		alignBottom		: 'Unten',
+		alignMiddle		: 'Mitte',
+		alignRight		: 'Rechts',
 		alignTextTop	: 'Text Oben',
-		alignTop	: 'Oben',
-		quality		: 'Qualität',
-		qualityBest		 : 'Beste',
-		qualityHigh		 : 'Hoch',
-		qualityAutoHigh	 : 'Auto Hoch',
-		qualityMedium	 : 'Medium',
-		qualityAutoLow	 : 'Auto Niedrig',
-		qualityLow		 : 'Niedrig',
-		windowModeWindow	 : 'Fenster',
-		windowModeOpaque	 : 'Deckend',
-		windowModeTransparent	 : 'Transparent',
-		windowMode	: 'Fenster Modus',
-		flashvars	: 'Variablen für Flash',
-		bgcolor	: 'Hintergrundfarbe',
-		width	: 'Breite',
-		height	: 'Höhe',
-		hSpace	: 'Horizontal-Abstand',
-		vSpace	: 'Vertikal-Abstand',
-		validateSrc : 'Bitte geben Sie die Link-URL an',
-		validateWidth : 'Breite muss eine Zahl sein.',
-		validateHeight : 'Höhe muss eine Zahl sein.',
-		validateHSpace : 'HSpace muss eine Zahl sein.',
-		validateVSpace : 'VSpace muss eine Zahl sein.'
+		alignTop		: 'Oben',
+		quality			: 'Qualität',
+		qualityBest		: 'Beste',
+		qualityHigh		: 'Hoch',
+		qualityAutoHigh	: 'Auto Hoch',
+		qualityMedium	: 'Medium',
+		qualityAutoLow	: 'Auto Niedrig',
+		qualityLow		: 'Niedrig',
+		windowModeWindow: 'Fenster',
+		windowModeOpaque: 'Deckend',
+		windowModeTransparent : 'Transparent',
+		windowMode		: 'Fenster Modus',
+		flashvars		: 'Variablen für Flash',
+		bgcolor			: 'Hintergrundfarbe',
+		width			: 'Breite',
+		height			: 'Höhe',
+		hSpace			: 'Horizontal-Abstand',
+		vSpace			: 'Vertikal-Abstand',
+		validateSrc		: 'Bitte geben Sie die Link-URL an',
+		validateWidth	: 'Breite muss eine Zahl sein.',
+		validateHeight	: 'Höhe muss eine Zahl sein.',
+		validateHSpace	: 'HSpace muss eine Zahl sein.',
+		validateVSpace	: 'VSpace muss eine Zahl sein.'
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Smiley',
-		title	: 'Smiley auswählen'
+		title	: 'Smiley auswählen',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 Element'
 	},
 
-	numberedlist : 'Nummerierte Liste',
-	bulletedlist : 'Liste',
-	indent : 'Einzug erhöhen',
-	outdent : 'Einzug verringern',
+	numberedlist	: 'Nummerierte Liste',
+	bulletedlist	: 'Liste',
+	indent			: 'Einzug erhöhen',
+	outdent			: 'Einzug verringern',
 
 	justify :
 	{
-		left : 'Linksbündig',
-		center : 'Zentriert',
-		right : 'Rechtsbündig',
-		block : 'Blocksatz'
+		left	: 'Linksbündig',
+		center	: 'Zentriert',
+		right	: 'Rechtsbündig',
+		block	: 'Blocksatz'
 	},
 
@@ -509,29 +538,30 @@
 		copyError	: 'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).',
 		pasteMsg	: 'Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit <STRONG>Strg+V</STRONG>) ein und bestätigen Sie mit <STRONG>OK</STRONG>.',
-		securityMsg	: 'Aufgrund von Sicherheitsbeschränkungen Ihres Browsers kann der Editor nicht direkt auf die Zwischenablage zugreifen. Bitte fügen Sie den Inhalt erneut in diesem Fenster ein.'
+		securityMsg	: 'Aufgrund von Sicherheitsbeschränkungen Ihres Browsers kann der Editor nicht direkt auf die Zwischenablage zugreifen. Bitte fügen Sie den Inhalt erneut in diesem Fenster ein.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'aus MS-Word einfügen',
-		title : 'aus MS-Word einfügen',
-		advice : 'Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit <STRONG>Strg+V</STRONG>) ein und bestätigen Sie mit <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignoriere Schriftart-Definitionen',
-		removeStyle : 'Entferne Style-Definitionen'
+		confirmCleanup	: 'Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?',
+		toolbar			: 'aus MS-Word einfügen',
+		title			: 'aus MS-Word einfügen',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Als Text einfügen',
-		title : 'Als Text einfügen'
+		button	: 'Als Text einfügen',
+		title	: 'Als Text einfügen'
 	},
 
 	templates :
 	{
-		button : 'Vorlagen',
-		title : 'Vorlagen',
-		insertOption: 'Aktuellen Inhalt ersetzen',
-		selectPromptMsg: 'Klicken Sie auf eine Vorlage, um sie im Editor zu öffnen (der aktuelle Inhalt wird dabei gelöscht!):',
-		emptyListMsg : '(keine Vorlagen definiert)'
+		button			: 'Vorlagen',
+		title			: 'Vorlagen',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Aktuellen Inhalt ersetzen',
+		selectPromptMsg	: 'Klicken Sie auf eine Vorlage, um sie im Editor zu öffnen (der aktuelle Inhalt wird dabei gelöscht!):',
+		emptyListMsg	: '(keine Vorlagen definiert)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Stil',
-		voiceLabel : 'Stilarten',
-		panelVoiceLabel : 'Stilart auswahl',
-		panelTitle1 : 'Block Stilart',
-		panelTitle2 : 'Inline Stilart',
-		panelTitle3 : 'Objekt Stilart'
+		label		: 'Stil',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Stilart',
+		panelTitle2	: 'Inline Stilart',
+		panelTitle3	: 'Objekt Stilart'
 	},
 
 	format :
 	{
-		label : 'Format',
-		voiceLabel : 'Format',
-		panelTitle : 'Format',
-		panelVoiceLabel : 'Wählen Sie einen Absatzformat',
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatiert',
-		tag_address : 'Addresse',
-		tag_h1 : 'Überschrift 1',
-		tag_h2 : 'Überschrift 2',
-		tag_h3 : 'Überschrift 3',
-		tag_h4 : 'Überschrift 4',
-		tag_h5 : 'Überschrift 5',
-		tag_h6 : 'Überschrift 6',
-		tag_div : 'Normal (DIV)'
-	},
+		label		: 'Format',
+		panelTitle	: 'Format',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatiert',
+		tag_address	: 'Addresse',
+		tag_h1		: 'Überschrift 1',
+		tag_h2		: 'Überschrift 2',
+		tag_h3		: 'Überschrift 3',
+		tag_h4		: 'Überschrift 4',
+		tag_h5		: 'Überschrift 5',
+		tag_h6		: 'Überschrift 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Schriftart',
-		voiceLabel : 'Schriftart',
-		panelTitle : 'Schriftart',
-		panelVoiceLabel : 'Wählen Sie eine Schriftart'
+		label		: 'Schriftart',
+		voiceLabel	: 'Schriftart',
+		panelTitle	: 'Schriftart'
 	},
 
 	fontSize :
 	{
-		label : 'Größe',
-		voiceLabel : 'Schrifgröße',
-		panelTitle : 'Größe',
-		panelVoiceLabel : 'Wählen Sie eine Schriftgröße'
+		label		: 'Größe',
+		voiceLabel	: 'Schrifgröße',
+		panelTitle	: 'Größe'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Textfarbe',
-		bgColorTitle : 'Hintergrundfarbe',
-		auto : 'Automatisch',
-		more : 'Weitere Farben...'
+		textColorTitle	: 'Textfarbe',
+		bgColorTitle	: 'Hintergrundfarbe',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatisch',
+		more			: 'Weitere Farben...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
+		'000' : 'Schwarz',
+		'800000' : 'Kastanienbraun',
+		'8B4513' : 'Braun',
+		'2F4F4F' : 'Dunkles Schiefergrau',
+		'008080' : 'Blaugrün',
 		'000080' : 'Navy',
 		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
+		'696969' : 'Dunkelgrau',
+		'B22222' : 'Ziegelrot',
+		'A52A2A' : 'Braun',
+		'DAA520' : 'Goldgelb',
+		'006400' : 'Dunkelgrün',
+		'40E0D0' : 'Türkis',
+		'0000CD' : 'Medium Blau',
+		'800080' : 'Lila',
+		'808080' : 'Grau',
+		'F00' : 'Rot',
+		'FF8C00' : 'Dunkelorange',
 		'FFD700' : 'Gold',
-		'008000' : 'Green',
+		'008000' : 'Grün',
 		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
+		'00F' : 'Blau',
+		'EE82EE' : 'Hellviolett',
+		'A9A9A9' : 'Dunkelgrau',
+		'FFA07A' : 'Helles Lachsrosa',
 		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
+		'FFFF00' : 'Gelb',
 		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'AFEEEE' : 'Blaß-Türkis',
+		'ADD8E6' : 'Hellblau',
+		'DDA0DD' : 'Pflaumenblau',
+		'D3D3D3' : 'Hellgrau',
+		'FFF0F5' : 'Lavendel',
+		'FAEBD7' : 'Antik Weiß',
+		'FFFFE0' : 'Hellgelb',
+		'F0FFF0' : 'Honigtau',
+		'F0FFFF' : 'Azurblau',
+		'F0F8FF' : 'Alice Blau',
+		'E6E6FA' : 'Lavendel',
+		'FFF' : 'Weiß'
 	},
 
 	scayt :
 	{
-		title : 'Rechtschreibprüfung während der Texteingabe',
-		enable : 'SCAYT einschalten',
-		disable : 'SCAYT ausschalten',
-		about : 'Über SCAYT',
-		toggle : 'SCAYT umschalten',
-		options : 'Optionen',
-		langs : 'Sprachen',
-		moreSuggestions : 'Mehr Vorschläge',
-		ignore : 'Ignorieren',
-		ignoreAll : 'Alle ignorieren',
-		addWord : 'Wort hinzufügen',
-		emptyDic : 'Wörterbuchname sollte leer sein.',
-		optionsTab : 'Optionen',
-		languagesTab : 'Sprachen',
-		dictionariesTab : 'Wörterbücher',
-		aboutTab : 'Über'
+		title			: 'Rechtschreibprüfung während der Texteingabe',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'SCAYT einschalten',
+		disable			: 'SCAYT ausschalten',
+		about			: 'Über SCAYT',
+		toggle			: 'SCAYT umschalten',
+		options			: 'Optionen',
+		langs			: 'Sprachen',
+		moreSuggestions	: 'Mehr Vorschläge',
+		ignore			: 'Ignorieren',
+		ignoreAll		: 'Alle ignorieren',
+		addWord			: 'Wort hinzufügen',
+		emptyDic		: 'Wörterbuchname sollte leer sein.',
+
+		optionsTab		: 'Optionen',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Sprachen',
+
+		dictionariesTab	: 'Wörterbücher',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'Über'
 	},
 
 	about :
 	{
-		title : 'Über CKEditor',
-		dlgTitle : 'Über CKEditor',
-		moreInfo : 'Für Informationen Liztenzbestimmungen besuchen sie bitte unsere Webseite:',
-		copy : 'Copyright &copy; $1. Alle Rechte vorbehalten.'
+		title		: 'Über CKEditor',
+		dlgTitle	: 'Über CKEditor',
+		moreInfo	: 'Für Informationen Liztenzbestimmungen besuchen sie bitte unsere Webseite:',
+		copy		: 'Copyright &copy; $1. Alle Rechte vorbehalten.'
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anker',
-		flash : 'Flash Animation',
-		div : 'Seitenumbruch',
-		unknown : 'Unbekanntes Objekt'
+		anchor	: 'Anker',
+		flash	: 'Flash Animation',
+		div		: 'Seitenumbruch',
+		unknown	: 'Unbekanntes Objekt'
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/el.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/el.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/el.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Φόρμα',
 		checkbox		: 'Κουτί επιλογής',
-		radio		: 'Κουμπί Radio',
+		radio			: 'Κουμπί Radio',
 		textField		: 'Πεδίο κειμένου',
 		textarea		: 'Περιοχή κειμένου',
 		hiddenField		: 'Κρυφό πεδίο',
 		button			: 'Κουμπί',
-		select	: 'Πεδίο επιλογής',
+		select			: 'Πεδίο επιλογής',
 		imageButton		: 'Κουμπί εικόνας',
 		notSet			: '<χωρίς>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Ακύρωση',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'Για προχωρημένους',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Εισαγωγή Ειδικού Συμβόλου',
-		title		: 'Επιλέξτε ένα Ειδικό Σύμβολο'
+		title		: 'Επιλέξτε ένα Ειδικό Σύμβολο',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Εισαγωγή/Μεταβολή Συνδέσμου (Link)',
+		other 		: '<άλλος>',
 		menu		: 'Μεταβολή Συνδέσμου (Link)',
 		title		: 'Σύνδεσμος (Link)',
@@ -117,14 +136,9 @@
 		advanced	: 'Για προχωρημένους',
 		type		: 'Τύπος συνδέσμου (Link)',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Άγκυρα σε αυτή τη σελίδα',
 		toEmail		: 'E-Mail',
-		target		: 'Παράθυρο Στόχος (Target)',
-		targetNotSet	: '<χωρίς>',
-		targetFrame	: '<πλαίσιο>',
-		targetPopup	: '<παράθυρο popup>',
-		targetNew	: 'Νέο Παράθυρο (_blank)',
-		targetTop	: 'Ανώτατο Παράθυρο (_top)',
-		targetSelf	: 'Ίδιο Παράθυρο (_self)',
-		targetParent	: 'Γονικό Παράθυρο (_parent)',
+		targetFrame		: '<πλαίσιο>',
+		targetPopup		: '<παράθυρο popup>',
 		targetFrameName	: 'Όνομα πλαισίου στόχου',
 		targetPopupName	: 'Όνομα Popup Window',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Μπάρα Status',
-		popupLocationBar	: 'Μπάρα Τοποθεσίας',
+		popupLocationBar: 'Μπάρα Τοποθεσίας',
 		popupToolbar	: 'Μπάρα Εργαλείων',
 		popupMenuBar	: 'Μπάρα Menu',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Κατεύθυνση κειμένου',
-		langDirNotSet	: '<χωρίς>',
 		langDirLTR		: 'Αριστερά προς Δεξιά (LTR)',
 		langDirRTL		: 'Δεξιά προς Αριστερά (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Μέγεθος Περιθωρίου',
 		align		: 'Στοίχιση',
-		alignNotSet	: '<χωρίς>',
 		alignLeft	: 'Αριστερά',
 		alignCenter	: 'Κέντρο',
@@ -211,4 +246,5 @@
 		widthPx		: 'pixels',
 		widthPc		: '%',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Ύψος',
 		cellSpace	: 'Απόσταση κελιών',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Δράση',
 		method		: 'Μάθοδος',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Παράθυρο Στόχος (Target)',
-		targetNotSet	: '<χωρίς>',
-		targetNew	: 'Νέο Παράθυρο (_blank)',
-		targetTop	: 'Ανώτατο Παράθυρο (_top)',
-		targetSelf	: 'Ίδιο Παράθυρο (_self)',
-		targetParent	: 'Γονικό Παράθυρο (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Ιδιότητες κουμπιού εικόνας',
 		menu		: 'Ιδιότητες Εικόνας',
-		infoTab	: 'Πληροφορίες Εικόνας',
+		infoTab		: 'Πληροφορίες Εικόνας',
 		btnUpload	: 'Αποστολή στον Διακομιστή',
-		url		: 'URL',
-		upload	: 'Αποστολή',
-		alt		: 'Εναλλακτικό Κείμενο (ALT)',
+		upload		: 'Αποστολή',
+		alt			: 'Εναλλακτικό Κείμενο (ALT)',
 		width		: 'Πλάτος',
-		height	: 'Ύψος',
+		height		: 'Ύψος',
 		lockRatio	: 'Κλείδωμα Αναλογίας',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Επαναφορά Αρχικού Μεγέθους',
-		border	: 'Περιθώριο',
-		hSpace	: 'Οριζόντιος Χώρος (HSpace)',
-		vSpace	: 'Κάθετος Χώρος (VSpace)',
+		border		: 'Περιθώριο',
+		hSpace		: 'Οριζόντιος Χώρος (HSpace)',
+		vSpace		: 'Κάθετος Χώρος (VSpace)',
 		align		: 'Ευθυγράμμιση (Align)',
 		alignLeft	: 'Αριστερά',
-		alignAbsBottom: 'Απόλυτα Κάτω (Abs Bottom)',
-		alignAbsMiddle: 'Απόλυτα στη Μέση (Abs Middle)',
-		alignBaseline	: 'Γραμμή Βάσης (Baseline)',
-		alignBottom	: 'Κάτω (Bottom)',
-		alignMiddle	: 'Μέση (Middle)',
 		alignRight	: 'Δεξιά (Right)',
-		alignTextTop	: 'Κορυφή Κειμένου (Text Top)',
-		alignTop	: 'Πάνω (Top)',
-		preview	: 'Προεπισκόπιση',
 		alertUrl	: 'Εισάγετε την τοποθεσία (URL) της εικόνας',
-		linkTab	: 'Σύνδεσμος',
+		linkTab		: 'Σύνδεσμος',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Ιδιότητες Flash',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Ιδιότητες flash',
-		chkPlay		: 'Αυτόματη έναρξη',
-		chkLoop		: 'Επανάληψη',
-		chkMenu		: 'Ενεργοποίηση Flash Menu',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Κλίμακα',
+		title			: 'Ιδιότητες flash',
+		chkPlay			: 'Αυτόματη έναρξη',
+		chkLoop			: 'Επανάληψη',
+		chkMenu			: 'Ενεργοποίηση Flash Menu',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Κλίμακα',
 		scaleAll		: 'Εμφάνιση όλων',
 		scaleNoBorder	: 'Χωρίς όρια',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Ευθυγράμμιση (Align)',
-		alignLeft	: 'Αριστερά',
-		alignAbsBottom: 'Απόλυτα Κάτω (Abs Bottom)',
-		alignAbsMiddle: 'Απόλυτα στη Μέση (Abs Middle)',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Ευθυγράμμιση (Align)',
+		alignLeft		: 'Αριστερά',
+		alignAbsBottom	: 'Απόλυτα Κάτω (Abs Bottom)',
+		alignAbsMiddle	: 'Απόλυτα στη Μέση (Abs Middle)',
 		alignBaseline	: 'Γραμμή Βάσης (Baseline)',
-		alignBottom	: 'Κάτω (Bottom)',
-		alignMiddle	: 'Μέση (Middle)',
-		alignRight	: 'Δεξιά (Right)',
+		alignBottom		: 'Κάτω (Bottom)',
+		alignMiddle		: 'Μέση (Middle)',
+		alignRight		: 'Δεξιά (Right)',
 		alignTextTop	: 'Κορυφή Κειμένου (Text Top)',
-		alignTop	: 'Πάνω (Top)',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Χρώμα Υποβάθρου',
-		width	: 'Πλάτος',
-		height	: 'Ύψος',
-		hSpace	: 'Οριζόντιος Χώρος (HSpace)',
-		vSpace	: 'Κάθετος Χώρος (VSpace)',
-		validateSrc : 'Εισάγετε την τοποθεσία (URL) του υπερσυνδέσμου (Link)',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Πάνω (Top)',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Χρώμα Υποβάθρου',
+		width			: 'Πλάτος',
+		height			: 'Ύψος',
+		hSpace			: 'Οριζόντιος Χώρος (HSpace)',
+		vSpace			: 'Κάθετος Χώρος (VSpace)',
+		validateSrc		: 'Εισάγετε την τοποθεσία (URL) του υπερσυνδέσμου (Link)',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'Smiley',
-		title	: 'Επιλέξτε ένα Smiley'
+		title	: 'Επιλέξτε ένα Smiley',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Λίστα με Αριθμούς',
-	bulletedlist : 'Λίστα με Bullets',
-	indent : 'Αύξηση Εσοχής',
-	outdent : 'Μείωση Εσοχής',
+	numberedlist	: 'Λίστα με Αριθμούς',
+	bulletedlist	: 'Λίστα με Bullets',
+	indent			: 'Αύξηση Εσοχής',
+	outdent			: 'Μείωση Εσοχής',
 
 	justify :
 	{
-		left : 'Στοίχιση Αριστερά',
-		center : 'Στοίχιση στο Κέντρο',
-		right : 'Στοίχιση Δεξιά',
-		block : 'Πλήρης Στοίχιση (Block)'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: 'Στοίχιση Αριστερά',
+		center	: 'Στοίχιση στο Κέντρο',
+		right	: 'Στοίχιση Δεξιά',
+		block	: 'Πλήρης Στοίχιση (Block)'
+	},
+
+	blockquote : 'Block Quote', // MISSING
 
 	clipboard :
 	{
 		title		: 'Επικόλληση',
-		cutError	: 'Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl+X).',
-		copyError	: 'Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αντιγραφής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl+C).',
-		pasteMsg	: 'Παρακαλώ επικολήστε στο ακόλουθο κουτί χρησιμοποιόντας το πληκτρολόγιο (<STRONG>Ctrl+V</STRONG>) και πατήστε <STRONG>OK</STRONG>.',
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+		cutError	: 'Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+X).',
+		copyError	: 'Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αντιγραφής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+C).',
+		pasteMsg	: 'Παρακαλώ επικολήστε στο ακόλουθο κουτί χρησιμοποιόντας το πληκτρολόγιο (<STRONG>Ctrl/Cmd+V</STRONG>) και πατήστε <STRONG>OK</STRONG>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Επικόλληση από το Word',
-		title : 'Επικόλληση από το Word',
-		advice : 'Παρακαλώ επικολήστε στο ακόλουθο κουτί χρησιμοποιόντας το πληκτρολόγιο (<STRONG>Ctrl+V</STRONG>) και πατήστε <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Αγνόηση προδιαγραφών γραμματοσειράς',
-		removeStyle : 'Αφαίρεση προδιαγραφών στύλ'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Επικόλληση από το Word',
+		title			: 'Επικόλληση από το Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Επικόλληση ως Απλό Κείμενο',
-		title : 'Επικόλληση ως Απλό Κείμενο'
+		button	: 'Επικόλληση ως Απλό Κείμενο',
+		title	: 'Επικόλληση ως Απλό Κείμενο'
 	},
 
 	templates :
 	{
-		button : 'Πρότυπα',
-		title : 'Πρότυπα περιεχομένου',
-		insertOption: 'Αντικατάσταση υπάρχοντων περιεχομένων',
-		selectPromptMsg: 'Παρακαλώ επιλέξτε πρότυπο για εισαγωγή στο πρόγραμμα<br>(τα υπάρχοντα περιεχόμενα θα χαθούν):',
-		emptyListMsg : '(Δεν έχουν καθοριστεί πρότυπα)'
+		button			: 'Πρότυπα',
+		title			: 'Πρότυπα περιεχομένου',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Αντικατάσταση υπάρχοντων περιεχομένων',
+		selectPromptMsg	: 'Παρακαλώ επιλέξτε πρότυπο για εισαγωγή στο πρόγραμμα<br>(τα υπάρχοντα περιεχόμενα θα χαθούν):',
+		emptyListMsg	: '(Δεν έχουν καθοριστεί πρότυπα)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Στυλ',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Στυλ',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Μορφή Γραμματοσειράς',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Μορφή Γραμματοσειράς',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		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 : 'Normal (DIV)' // MISSING
-	},
+		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		: 'Normal (DIV)' // MISSING
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Γραμματοσειρά',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Γραμματοσειρά',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Γραμματοσειρά',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Γραμματοσειρά'
 	},
 
 	fontSize :
 	{
-		label : 'Μέγεθος',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Μέγεθος',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Μέγεθος',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Μέγεθος'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Χρώμα Γραμμάτων',
-		bgColorTitle : 'Χρώμα Υποβάθρου',
-		auto : 'Αυτόματο',
-		more : 'Περισσότερα χρώματα...'
+		textColorTitle	: 'Χρώμα Γραμμάτων',
+		bgColorTitle	: 'Χρώμα Υποβάθρου',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Αυτόματο',
+		more			: 'Περισσότερα χρώματα...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/en-au.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/en-au.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/en-au.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1',
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Form',
 		checkbox		: 'Checkbox',
-		radio		: 'Radio Button',
+		radio			: 'Radio Button',
 		textField		: 'Text Field',
 		textarea		: 'Textarea',
 		hiddenField		: 'Hidden Field',
 		button			: 'Button',
-		select	: 'Selection Field',
+		select			: 'Selection Field',
 		imageButton		: 'Image Button',
 		notSet			: '<not set>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Cancel',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General',
 		advancedTab		: 'Advanced',
-		validateNumberFailed	: 'This value is not a number.',
+		validateNumberFailed : 'This value is not a number.',
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Insert Special Character',
-		title		: 'Select Special Character'
+		title		: 'Select Special Character',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Link',
+		other 		: '<other>',
 		menu		: 'Edit Link',
 		title		: 'Link',
@@ -117,14 +136,9 @@
 		advanced	: 'Advanced',
 		type		: 'Link Type',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Link to anchor in the text',
 		toEmail		: 'E-mail',
-		target		: 'Target',
-		targetNotSet	: '<not set>',
-		targetFrame	: '<frame>',
-		targetPopup	: '<popup window>',
-		targetNew	: 'New Window (_blank)',
-		targetTop	: 'Topmost Window (_top)',
-		targetSelf	: 'Same Window (_self)',
-		targetParent	: 'Parent Window (_parent)',
+		targetFrame		: '<frame>',
+		targetPopup		: '<popup window>',
 		targetFrameName	: 'Target Frame Name',
 		targetPopupName	: 'Popup Window Name',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable',
 		popupStatusBar	: 'Status Bar',
-		popupLocationBar	: 'Location Bar',
+		popupLocationBar: 'Location Bar',
 		popupToolbar	: 'Toolbar',
 		popupMenuBar	: 'Menu Bar',
@@ -144,5 +158,4 @@
 		id				: 'Id',
 		langDir			: 'Language Direction',
-		langDirNotSet	: '<not set>',
 		langDirLTR		: 'Left to Right (LTR)',
 		langDirRTL		: 'Right to Left (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Border size',
 		align		: 'Alignment',
-		alignNotSet	: '<Not set>',
 		alignLeft	: 'Left',
 		alignCenter	: 'Centre',
@@ -211,4 +246,5 @@
 		widthPx		: 'pixels',
 		widthPc		: 'percent',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Height',
 		cellSpace	: 'Cell spacing',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.',
 			invalidColSpan	: 'Columns span must be a whole number.',
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Action',
 		method		: 'Method',
-		encoding	: 'Encoding',
-		target		: 'Target',
-		targetNotSet	: '<not set>',
-		targetNew	: 'New Window (_blank)',
-		targetTop	: 'Topmost Window (_top)',
-		targetSelf	: 'Same Window (_self)',
-		targetParent	: 'Parent Window (_parent)'
+		encoding	: 'Encoding'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Image Button Properties',
 		menu		: 'Image Properties',
-		infoTab	: 'Image Info',
+		infoTab		: 'Image Info',
 		btnUpload	: 'Send it to the Server',
-		url		: 'URL',
-		upload	: 'Upload',
-		alt		: 'Alternative Text',
+		upload		: 'Upload',
+		alt			: 'Alternative Text',
 		width		: 'Width',
-		height	: 'Height',
+		height		: 'Height',
 		lockRatio	: 'Lock Ratio',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Reset Size',
-		border	: 'Border',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
+		border		: 'Border',
+		hSpace		: 'HSpace',
+		vSpace		: 'VSpace',
 		align		: 'Align',
 		alignLeft	: 'Left',
-		alignAbsBottom: 'Abs Bottom',
-		alignAbsMiddle: 'Abs Middle',
-		alignBaseline	: 'Baseline',
-		alignBottom	: 'Bottom',
-		alignMiddle	: 'Middle',
 		alignRight	: 'Right',
-		alignTextTop	: 'Text Top',
-		alignTop	: 'Top',
-		preview	: 'Preview',
 		alertUrl	: 'Please type the image URL',
-		linkTab	: 'Link',
+		linkTab		: 'Link',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?',
 		img2Button	: 'Do you want to transform the selected image on a image button?',
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Flash Properties',
 		propertiesTab	: 'Properties',
-		title		: 'Flash Properties',
-		chkPlay		: 'Auto Play',
-		chkLoop		: 'Loop',
-		chkMenu		: 'Enable Flash Menu',
-		chkFull		: 'Allow Fullscreen',
- 		scale		: 'Scale',
+		title			: 'Flash Properties',
+		chkPlay			: 'Auto Play',
+		chkLoop			: 'Loop',
+		chkMenu			: 'Enable Flash Menu',
+		chkFull			: 'Allow Fullscreen',
+ 		scale			: 'Scale',
 		scaleAll		: 'Show all',
 		scaleNoBorder	: 'No Border',
@@ -418,38 +445,38 @@
 		access			: 'Script Access',
 		accessAlways	: 'Always',
-		accessSameDomain	: 'Same domain',
-		accessNever	: 'Never',
-		align		: 'Align',
-		alignLeft	: 'Left',
-		alignAbsBottom: 'Abs Bottom',
-		alignAbsMiddle: 'Abs Middle',
+		accessSameDomain: 'Same domain',
+		accessNever		: 'Never',
+		align			: 'Align',
+		alignLeft		: 'Left',
+		alignAbsBottom	: 'Abs Bottom',
+		alignAbsMiddle	: 'Abs Middle',
 		alignBaseline	: 'Baseline',
-		alignBottom	: 'Bottom',
-		alignMiddle	: 'Middle',
-		alignRight	: 'Right',
+		alignBottom		: 'Bottom',
+		alignMiddle		: 'Middle',
+		alignRight		: 'Right',
 		alignTextTop	: 'Text Top',
-		alignTop	: 'Top',
-		quality		: 'Quality',
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode',
-		flashvars	: 'Variables for Flash',
-		bgcolor	: 'Background colour',
-		width	: 'Width',
-		height	: 'Height',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
-		validateSrc : 'URL must not be empty.',
-		validateWidth : 'Width must be a number.',
-		validateHeight : 'Height must be a number.',
-		validateHSpace : 'HSpace must be a number.',
-		validateVSpace : 'VSpace must be a number.'
+		alignTop		: 'Top',
+		quality			: 'Quality',
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode',
+		flashvars		: 'Variables for Flash',
+		bgcolor			: 'Background colour',
+		width			: 'Width',
+		height			: 'Height',
+		hSpace			: 'HSpace',
+		vSpace			: 'VSpace',
+		validateSrc		: 'URL must not be empty.',
+		validateWidth	: 'Width must be a number.',
+		validateHeight	: 'Height must be a number.',
+		validateHSpace	: 'HSpace must be a number.',
+		validateVSpace	: 'VSpace must be a number.'
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'Smiley',
-		title	: 'Insert a Smiley'
+		title	: 'Insert a Smiley',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element'
 	},
 
-	numberedlist : 'Insert/Remove Numbered List',
-	bulletedlist : 'Insert/Remove Bulleted List',
-	indent : 'Increase Indent',
-	outdent : 'Decrease Indent',
+	numberedlist	: 'Insert/Remove Numbered List',
+	bulletedlist	: 'Insert/Remove Bulleted List',
+	indent			: 'Increase Indent',
+	outdent			: 'Decrease Indent',
 
 	justify :
 	{
-		left : 'Left Justify',
-		center : 'Centre Justify',
-		right : 'Right Justify',
-		block : 'Block Justify'
-	},
-
-	blockquote : 'Blockquote',
+		left	: 'Left Justify',
+		center	: 'Centre Justify',
+		right	: 'Right Justify',
+		block	: 'Block Justify'
+	},
+
+	blockquote : 'Block Quote',
 
 	clipboard :
 	{
 		title		: 'Paste',
-		cutError	: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).',
-		copyError	: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).',
-		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK',
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'
+		cutError	: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).',
+		copyError	: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).',
+		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Paste from Word',
-		title : 'Paste from Word',
-		advice : 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.',
-		ignoreFontFace : 'Ignore Font Face definitions',
-		removeStyle : 'Remove Styles definitions'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Paste from Word',
+		title			: 'Paste from Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Paste as plain text',
-		title : 'Paste as Plain Text'
+		button	: 'Paste as plain text',
+		title	: 'Paste as Plain Text'
 	},
 
 	templates :
 	{
-		button : 'Templates',
-		title : 'Content Templates',
-		insertOption: 'Replace actual contents',
-		selectPromptMsg: 'Please select the template to open in the editor',
-		emptyListMsg : '(No templates defined)'
+		button			: 'Templates',
+		title			: 'Content Templates',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Replace actual contents',
+		selectPromptMsg	: 'Please select the template to open in the editor',
+		emptyListMsg	: '(No templates defined)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Styles',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles',
-		panelTitle2 : 'Inline Styles',
-		panelTitle3 : 'Object Styles'
+		label		: 'Styles',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles',
+		panelTitle2	: 'Inline Styles',
+		panelTitle3	: 'Object Styles'
 	},
 
 	format :
 	{
-		label : 'Format',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Paragraph Format',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatted',
-		tag_address : 'Address',
-		tag_h1 : 'Heading 1',
-		tag_h2 : 'Heading 2',
-		tag_h3 : 'Heading 3',
-		tag_h4 : 'Heading 4',
-		tag_h5 : 'Heading 5',
-		tag_h6 : 'Heading 6',
-		tag_div : 'Normal (DIV)'
-	},
+		label		: 'Format',
+		panelTitle	: 'Paragraph Format',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatted',
+		tag_address	: 'Address',
+		tag_h1		: 'Heading 1',
+		tag_h2		: 'Heading 2',
+		tag_h3		: 'Heading 3',
+		tag_h4		: 'Heading 4',
+		tag_h5		: 'Heading 5',
+		tag_h6		: 'Heading 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Font',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Font Name',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Font',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Font Name'
 	},
 
 	fontSize :
 	{
-		label : 'Size',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Font Size',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Size',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Font Size'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Text Colour',
-		bgColorTitle : 'Background Colour',
-		auto : 'Automatic',
-		more : 'More Colours...'
+		textColorTitle	: 'Text Colour',
+		bgColorTitle	: 'Background Colour',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatic',
+		more			: 'More Colours...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor',
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:',
-		copy : 'Copyright &copy; $1. All rights reserved.'
+		title		: 'About CKEditor',
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:',
+		copy		: 'Copyright &copy; $1. All rights reserved.'
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/en-ca.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/en-ca.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/en-ca.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -6,5 +6,5 @@
 /**
  * @fileOverview Defines the {@link CKEDITOR.lang} object, for the
- * English (Australia) language.
+ * English (Canadian) language.
  */
 
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1',
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Form',
 		checkbox		: 'Checkbox',
-		radio		: 'Radio Button',
+		radio			: 'Radio Button',
 		textField		: 'Text Field',
 		textarea		: 'Textarea',
 		hiddenField		: 'Hidden Field',
 		button			: 'Button',
-		select	: 'Selection Field',
+		select			: 'Selection Field',
 		imageButton		: 'Image Button',
 		notSet			: '<not set>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Cancel',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General',
 		advancedTab		: 'Advanced',
-		validateNumberFailed	: 'This value is not a number.',
+		validateNumberFailed : 'This value is not a number.',
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Insert Special Character',
-		title		: 'Select Special Character'
+		title		: 'Select Special Character',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Link',
+		other 		: '<other>',
 		menu		: 'Edit Link',
 		title		: 'Link',
@@ -117,14 +136,9 @@
 		advanced	: 'Advanced',
 		type		: 'Link Type',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Link to anchor in the text',
 		toEmail		: 'E-mail',
-		target		: 'Target',
-		targetNotSet	: '<not set>',
-		targetFrame	: '<frame>',
-		targetPopup	: '<popup window>',
-		targetNew	: 'New Window (_blank)',
-		targetTop	: 'Topmost Window (_top)',
-		targetSelf	: 'Same Window (_self)',
-		targetParent	: 'Parent Window (_parent)',
+		targetFrame		: '<frame>',
+		targetPopup		: '<popup window>',
 		targetFrameName	: 'Target Frame Name',
 		targetPopupName	: 'Popup Window Name',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable',
 		popupStatusBar	: 'Status Bar',
-		popupLocationBar	: 'Location Bar',
+		popupLocationBar: 'Location Bar',
 		popupToolbar	: 'Toolbar',
 		popupMenuBar	: 'Menu Bar',
@@ -144,5 +158,4 @@
 		id				: 'Id',
 		langDir			: 'Language Direction',
-		langDirNotSet	: '<not set>',
 		langDirLTR		: 'Left to Right (LTR)',
 		langDirRTL		: 'Right to Left (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Border size',
 		align		: 'Alignment',
-		alignNotSet	: '<Not set>',
 		alignLeft	: 'Left',
 		alignCenter	: 'Centre',
@@ -211,4 +246,5 @@
 		widthPx		: 'pixels',
 		widthPc		: 'percent',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Height',
 		cellSpace	: 'Cell spacing',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.',
 			invalidColSpan	: 'Columns span must be a whole number.',
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Action',
 		method		: 'Method',
-		encoding	: 'Encoding',
-		target		: 'Target',
-		targetNotSet	: '<not set>',
-		targetNew	: 'New Window (_blank)',
-		targetTop	: 'Topmost Window (_top)',
-		targetSelf	: 'Same Window (_self)',
-		targetParent	: 'Parent Window (_parent)'
+		encoding	: 'Encoding'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Image Button Properties',
 		menu		: 'Image Properties',
-		infoTab	: 'Image Info',
+		infoTab		: 'Image Info',
 		btnUpload	: 'Send it to the Server',
-		url		: 'URL',
-		upload	: 'Upload',
-		alt		: 'Alternative Text',
+		upload		: 'Upload',
+		alt			: 'Alternative Text',
 		width		: 'Width',
-		height	: 'Height',
+		height		: 'Height',
 		lockRatio	: 'Lock Ratio',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Reset Size',
-		border	: 'Border',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
+		border		: 'Border',
+		hSpace		: 'HSpace',
+		vSpace		: 'VSpace',
 		align		: 'Align',
 		alignLeft	: 'Left',
-		alignAbsBottom: 'Abs Bottom',
-		alignAbsMiddle: 'Abs Middle',
-		alignBaseline	: 'Baseline',
-		alignBottom	: 'Bottom',
-		alignMiddle	: 'Middle',
 		alignRight	: 'Right',
-		alignTextTop	: 'Text Top',
-		alignTop	: 'Top',
-		preview	: 'Preview',
 		alertUrl	: 'Please type the image URL',
-		linkTab	: 'Link',
+		linkTab		: 'Link',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?',
 		img2Button	: 'Do you want to transform the selected image on a image button?',
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Flash Properties',
 		propertiesTab	: 'Properties',
-		title		: 'Flash Properties',
-		chkPlay		: 'Auto Play',
-		chkLoop		: 'Loop',
-		chkMenu		: 'Enable Flash Menu',
-		chkFull		: 'Allow Fullscreen',
- 		scale		: 'Scale',
+		title			: 'Flash Properties',
+		chkPlay			: 'Auto Play',
+		chkLoop			: 'Loop',
+		chkMenu			: 'Enable Flash Menu',
+		chkFull			: 'Allow Fullscreen',
+ 		scale			: 'Scale',
 		scaleAll		: 'Show all',
 		scaleNoBorder	: 'No Border',
@@ -418,38 +445,38 @@
 		access			: 'Script Access',
 		accessAlways	: 'Always',
-		accessSameDomain	: 'Same domain',
-		accessNever	: 'Never',
-		align		: 'Align',
-		alignLeft	: 'Left',
-		alignAbsBottom: 'Abs Bottom',
-		alignAbsMiddle: 'Abs Middle',
+		accessSameDomain: 'Same domain',
+		accessNever		: 'Never',
+		align			: 'Align',
+		alignLeft		: 'Left',
+		alignAbsBottom	: 'Abs Bottom',
+		alignAbsMiddle	: 'Abs Middle',
 		alignBaseline	: 'Baseline',
-		alignBottom	: 'Bottom',
-		alignMiddle	: 'Middle',
-		alignRight	: 'Right',
+		alignBottom		: 'Bottom',
+		alignMiddle		: 'Middle',
+		alignRight		: 'Right',
 		alignTextTop	: 'Text Top',
-		alignTop	: 'Top',
-		quality		: 'Quality',
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode',
-		flashvars	: 'Variables for Flash',
-		bgcolor	: 'Background colour',
-		width	: 'Width',
-		height	: 'Height',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
-		validateSrc : 'URL must not be empty.',
-		validateWidth : 'Width must be a number.',
-		validateHeight : 'Height must be a number.',
-		validateHSpace : 'HSpace must be a number.',
-		validateVSpace : 'VSpace must be a number.'
+		alignTop		: 'Top',
+		quality			: 'Quality',
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode',
+		flashvars		: 'Variables for Flash',
+		bgcolor			: 'Background colour',
+		width			: 'Width',
+		height			: 'Height',
+		hSpace			: 'HSpace',
+		vSpace			: 'VSpace',
+		validateSrc		: 'URL must not be empty.',
+		validateWidth	: 'Width must be a number.',
+		validateHeight	: 'Height must be a number.',
+		validateHSpace	: 'HSpace must be a number.',
+		validateVSpace	: 'VSpace must be a number.'
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'Smiley',
-		title	: 'Insert a Smiley'
+		title	: 'Insert a Smiley',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element'
 	},
 
-	numberedlist : 'Insert/Remove Numbered List',
-	bulletedlist : 'Insert/Remove Bulleted List',
-	indent : 'Increase Indent',
-	outdent : 'Decrease Indent',
+	numberedlist	: 'Insert/Remove Numbered List',
+	bulletedlist	: 'Insert/Remove Bulleted List',
+	indent			: 'Increase Indent',
+	outdent			: 'Decrease Indent',
 
 	justify :
 	{
-		left : 'Left Justify',
-		center : 'Centre Justify',
-		right : 'Right Justify',
-		block : 'Block Justify'
-	},
-
-	blockquote : 'Blockquote',
+		left	: 'Left Justify',
+		center	: 'Centre Justify',
+		right	: 'Right Justify',
+		block	: 'Block Justify'
+	},
+
+	blockquote : 'Block Quote',
 
 	clipboard :
 	{
 		title		: 'Paste',
-		cutError	: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).',
-		copyError	: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).',
-		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK',
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'
+		cutError	: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).',
+		copyError	: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).',
+		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Paste from Word',
-		title : 'Paste from Word',
-		advice : 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.',
-		ignoreFontFace : 'Ignore Font Face definitions',
-		removeStyle : 'Remove Styles definitions'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Paste from Word',
+		title			: 'Paste from Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Paste as plain text',
-		title : 'Paste as Plain Text'
+		button	: 'Paste as plain text',
+		title	: 'Paste as Plain Text'
 	},
 
 	templates :
 	{
-		button : 'Templates',
-		title : 'Content Templates',
-		insertOption: 'Replace actual contents',
-		selectPromptMsg: 'Please select the template to open in the editor',
-		emptyListMsg : '(No templates defined)'
+		button			: 'Templates',
+		title			: 'Content Templates',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Replace actual contents',
+		selectPromptMsg	: 'Please select the template to open in the editor',
+		emptyListMsg	: '(No templates defined)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Styles',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles',
-		panelTitle2 : 'Inline Styles',
-		panelTitle3 : 'Object Styles'
+		label		: 'Styles',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles',
+		panelTitle2	: 'Inline Styles',
+		panelTitle3	: 'Object Styles'
 	},
 
 	format :
 	{
-		label : 'Format',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Paragraph Format',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatted',
-		tag_address : 'Address',
-		tag_h1 : 'Heading 1',
-		tag_h2 : 'Heading 2',
-		tag_h3 : 'Heading 3',
-		tag_h4 : 'Heading 4',
-		tag_h5 : 'Heading 5',
-		tag_h6 : 'Heading 6',
-		tag_div : 'Normal (DIV)'
-	},
+		label		: 'Format',
+		panelTitle	: 'Paragraph Format',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatted',
+		tag_address	: 'Address',
+		tag_h1		: 'Heading 1',
+		tag_h2		: 'Heading 2',
+		tag_h3		: 'Heading 3',
+		tag_h4		: 'Heading 4',
+		tag_h5		: 'Heading 5',
+		tag_h6		: 'Heading 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Font',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Font Name',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Font',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Font Name'
 	},
 
 	fontSize :
 	{
-		label : 'Size',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Font Size',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Size',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Font Size'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Text Colour',
-		bgColorTitle : 'Background Colour',
-		auto : 'Automatic',
-		more : 'More Colours...'
+		textColorTitle	: 'Text Colour',
+		bgColorTitle	: 'Background Colour',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatic',
+		more			: 'More Colours...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor',
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:',
-		copy : 'Copyright &copy; $1. All rights reserved.'
+		title		: 'About CKEditor',
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:',
+		copy		: 'Copyright &copy; $1. All rights reserved.'
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/en-gb.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/en-gb.js	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_source/lang/en-gb.js	(revision 5613)
@@ -0,0 +1,747 @@
+﻿/*
+Copyright (c) 2003-2010, 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
+ * English (United Kingdom) language.
+ */
+
+/**#@+
+   @type String
+   @example
+*/
+
+/**
+ * Constains the dictionary of language entries.
+ * @namespace
+ */
+CKEDITOR.lang['en-gb'] =
+{
+	/**
+	 * 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 : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
+
+	// Toolbar buttons without dialogs.
+	source			: 'Source',
+	newPage			: 'New Page',
+	save			: 'Save',
+	preview			: 'Preview',
+	cut				: 'Cut',
+	copy			: 'Copy',
+	paste			: 'Paste',
+	print			: 'Print',
+	underline		: 'Underline',
+	bold			: 'Bold',
+	italic			: 'Italic',
+	selectAll		: 'Select All',
+	removeFormat	: 'Remove Format',
+	strike			: 'Strike Through',
+	subscript		: 'Subscript',
+	superscript		: 'Superscript',
+	horizontalrule	: 'Insert Horizontal Line',
+	pagebreak		: 'Insert Page Break for Printing',
+	unlink			: 'Unlink',
+	undo			: 'Undo',
+	redo			: 'Redo',
+
+	// Common messages and labels.
+	common :
+	{
+		browseServer	: 'Browse Server',
+		url				: 'URL',
+		protocol		: 'Protocol',
+		upload			: 'Upload',
+		uploadSubmit	: 'Send it to the Server',
+		image			: 'Image',
+		flash			: 'Flash',
+		form			: 'Form',
+		checkbox		: 'Checkbox',
+		radio			: 'Radio Button',
+		textField		: 'Text Field',
+		textarea		: 'Textarea',
+		hiddenField		: 'Hidden Field',
+		button			: 'Button',
+		select			: 'Selection Field',
+		imageButton		: 'Image Button',
+		notSet			: '<not set>',
+		id				: 'Id',
+		name			: 'Name',
+		langDir			: 'Language Direction',
+		langDirLtr		: 'Left to Right (LTR)',
+		langDirRtl		: 'Right to Left (RTL)',
+		langCode		: 'Language Code',
+		longDescr		: 'Long Description URL',
+		cssClass		: 'Stylesheet Classes',
+		advisoryTitle	: 'Advisory Title',
+		cssStyle		: 'Style',
+		ok				: 'OK',
+		cancel			: 'Cancel',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
+		generalTab		: 'General',
+		advancedTab		: 'Advanced',
+		validateNumberFailed : 'This value is not a number.',
+		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',
+		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
+
+		// Put the voice-only part of the label in the span.
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+	},
+
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
+	// Special char dialog.
+	specialChar		:
+	{
+		toolbar		: 'Insert Special Character',
+		title		: 'Select Special Character',
+		options : 'Special Character Options' // MISSING
+	},
+
+	// Link dialog.
+	link :
+	{
+		toolbar		: 'Link',
+		other 		: '<other>',
+		menu		: 'Edit Link',
+		title		: 'Link',
+		info		: 'Link Info',
+		target		: 'Target',
+		upload		: 'Upload',
+		advanced	: 'Advanced',
+		type		: 'Link Type',
+		toUrl		: 'URL', // MISSING
+		toAnchor	: 'Link to anchor in the text',
+		toEmail		: 'E-mail',
+		targetFrame		: '<frame>',
+		targetPopup		: '<popup window>',
+		targetFrameName	: 'Target Frame Name',
+		targetPopupName	: 'Popup Window Name',
+		popupFeatures	: 'Popup Window Features',
+		popupResizable	: 'Resizable',
+		popupStatusBar	: 'Status Bar',
+		popupLocationBar: 'Location Bar',
+		popupToolbar	: 'Toolbar',
+		popupMenuBar	: 'Menu Bar',
+		popupFullScreen	: 'Full Screen (IE)',
+		popupScrollBars	: 'Scroll Bars',
+		popupDependent	: 'Dependent (Netscape)',
+		popupWidth		: 'Width',
+		popupLeft		: 'Left Position',
+		popupHeight		: 'Height',
+		popupTop		: 'Top Position',
+		id				: 'Id',
+		langDir			: 'Language Direction',
+		langDirLTR		: 'Left to Right (LTR)',
+		langDirRTL		: 'Right to Left (RTL)',
+		acccessKey		: 'Access Key',
+		name			: 'Name',
+		langCode		: 'Language Code',
+		tabIndex		: 'Tab Index',
+		advisoryTitle	: 'Advisory Title',
+		advisoryContentType	: 'Advisory Content Type',
+		cssClasses		: 'Stylesheet Classes',
+		charset			: 'Linked Resource Charset',
+		styles			: 'Style',
+		selectAnchor	: 'Select an Anchor',
+		anchorName		: 'By Anchor Name',
+		anchorId		: 'By Element Id',
+		emailAddress	: 'E-Mail Address',
+		emailSubject	: 'Message Subject',
+		emailBody		: 'Message Body',
+		noAnchors		: '(No anchors available in the document)',
+		noUrl			: 'Please type the link URL',
+		noEmail			: 'Please type the e-mail address'
+	},
+
+	// Anchor dialog
+	anchor :
+	{
+		toolbar		: 'Anchor',
+		menu		: 'Edit Anchor',
+		title		: 'Anchor Properties',
+		name		: 'Anchor Name',
+		errorName	: 'Please type the anchor name'
+	},
+
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
+	// Find And Replace Dialog
+	findAndReplace :
+	{
+		title				: 'Find and Replace',
+		find				: 'Find',
+		replace				: 'Replace',
+		findWhat			: 'Find what:',
+		replaceWith			: 'Replace with:',
+		notFoundMsg			: 'The specified text was not found.',
+		matchCase			: 'Match case',
+		matchWord			: 'Match whole word',
+		matchCyclic			: 'Match cyclic',
+		replaceAll			: 'Replace All',
+		replaceSuccessMsg	: '%1 occurrence(s) replaced.'
+	},
+
+	// Table Dialog
+	table :
+	{
+		toolbar		: 'Table',
+		title		: 'Table Properties',
+		menu		: 'Table Properties',
+		deleteTable	: 'Delete Table',
+		rows		: 'Rows',
+		columns		: 'Columns',
+		border		: 'Border size',
+		align		: 'Alignment',
+		alignLeft	: 'Left',
+		alignCenter	: 'Centre',
+		alignRight	: 'Right',
+		width		: 'Width',
+		widthPx		: 'pixels',
+		widthPc		: 'percent',
+		widthUnit	: 'width unit', // MISSING
+		height		: 'Height',
+		cellSpace	: 'Cell spacing',
+		cellPad		: 'Cell padding',
+		caption		: 'Caption',
+		summary		: 'Summary',
+		headers		: 'Headers',
+		headersNone		: 'None',
+		headersColumn	: 'First column',
+		headersRow		: 'First Row',
+		headersBoth		: 'Both',
+		invalidRows		: 'Number of rows must be a number greater than 0.',
+		invalidCols		: 'Number of columns must be a number greater than 0.',
+		invalidBorder	: 'Border size must be a number.',
+		invalidWidth	: 'Table width must be a number.',
+		invalidHeight	: 'Table height must be a number.',
+		invalidCellSpacing	: 'Cell spacing must be a number.',
+		invalidCellPadding	: 'Cell padding must be a number.',
+
+		cell :
+		{
+			menu			: 'Cell',
+			insertBefore	: 'Insert Cell Before',
+			insertAfter		: 'Insert Cell After',
+			deleteCell		: 'Delete Cells',
+			merge			: 'Merge Cells',
+			mergeRight		: 'Merge Right',
+			mergeDown		: 'Merge Down',
+			splitHorizontal	: 'Split Cell Horizontally',
+			splitVertical	: 'Split Cell Vertically',
+			title			: 'Cell Properties',
+			cellType		: 'Cell Type',
+			rowSpan			: 'Rows Span',
+			colSpan			: 'Columns Span',
+			wordWrap		: 'Word Wrap',
+			hAlign			: 'Horizontal Alignment',
+			vAlign			: 'Vertical Alignment',
+			alignTop		: 'Top',
+			alignMiddle		: 'Middle',
+			alignBottom		: 'Bottom',
+			alignBaseline	: 'Baseline',
+			bgColor			: 'Background Color',
+			borderColor		: 'Border Color',
+			data			: 'Data',
+			header			: 'Header',
+			yes				: 'Yes',
+			no				: 'No',
+			invalidWidth	: 'Cell width must be a number.',
+			invalidHeight	: 'Cell height must be a number.',
+			invalidRowSpan	: 'Rows span must be a whole number.',
+			invalidColSpan	: 'Columns span must be a whole number.',
+			chooseColor		: 'Choose' // MISSING
+		},
+
+		row :
+		{
+			menu			: 'Row',
+			insertBefore	: 'Insert Row Before',
+			insertAfter		: 'Insert Row After',
+			deleteRow		: 'Delete Rows'
+		},
+
+		column :
+		{
+			menu			: 'Column',
+			insertBefore	: 'Insert Column Before',
+			insertAfter		: 'Insert Column After',
+			deleteColumn	: 'Delete Columns'
+		}
+	},
+
+	// Button Dialog.
+	button :
+	{
+		title		: 'Button Properties',
+		text		: 'Text (Value)',
+		type		: 'Type',
+		typeBtn		: 'Button',
+		typeSbm		: 'Submit',
+		typeRst		: 'Reset'
+	},
+
+	// Checkbox and Radio Button Dialogs.
+	checkboxAndRadio :
+	{
+		checkboxTitle : 'Checkbox Properties',
+		radioTitle	: 'Radio Button Properties',
+		value		: 'Value',
+		selected	: 'Selected'
+	},
+
+	// Form Dialog.
+	form :
+	{
+		title		: 'Form Properties',
+		menu		: 'Form Properties',
+		action		: 'Action',
+		method		: 'Method',
+		encoding	: 'Encoding'
+	},
+
+	// Select Field Dialog.
+	select :
+	{
+		title		: 'Selection Field Properties',
+		selectInfo	: 'Select Info',
+		opAvail		: 'Available Options',
+		value		: 'Value',
+		size		: 'Size',
+		lines		: 'lines',
+		chkMulti	: 'Allow multiple selections',
+		opText		: 'Text',
+		opValue		: 'Value',
+		btnAdd		: 'Add',
+		btnModify	: 'Modify',
+		btnUp		: 'Up',
+		btnDown		: 'Down',
+		btnSetValue : 'Set as selected value',
+		btnDelete	: 'Delete'
+	},
+
+	// Textarea Dialog.
+	textarea :
+	{
+		title		: 'Textarea Properties',
+		cols		: 'Columns',
+		rows		: 'Rows'
+	},
+
+	// Text Field Dialog.
+	textfield :
+	{
+		title		: 'Text Field Properties',
+		name		: 'Name',
+		value		: 'Value',
+		charWidth	: 'Character Width',
+		maxChars	: 'Maximum Characters',
+		type		: 'Type',
+		typeText	: 'Text',
+		typePass	: 'Password'
+	},
+
+	// Hidden Field Dialog.
+	hidden :
+	{
+		title	: 'Hidden Field Properties',
+		name	: 'Name',
+		value	: 'Value'
+	},
+
+	// Image Dialog.
+	image :
+	{
+		title		: 'Image Properties',
+		titleButton	: 'Image Button Properties',
+		menu		: 'Image Properties',
+		infoTab		: 'Image Info',
+		btnUpload	: 'Send it to the Server',
+		upload		: 'Upload',
+		alt			: 'Alternative Text',
+		width		: 'Width',
+		height		: 'Height',
+		lockRatio	: 'Lock Ratio',
+		unlockRatio	: 'Unlock Ratio', // MISSING
+		resetSize	: 'Reset Size',
+		border		: 'Border',
+		hSpace		: 'HSpace',
+		vSpace		: 'VSpace',
+		align		: 'Align',
+		alignLeft	: 'Left',
+		alignRight	: 'Right',
+		alertUrl	: 'Please type the image URL',
+		linkTab		: 'Link',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?',
+		img2Button	: 'Do you want to transform the selected image on a image button?',
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
+	},
+
+	// Flash Dialog
+	flash :
+	{
+		properties		: 'Flash Properties',
+		propertiesTab	: 'Properties',
+		title			: 'Flash Properties',
+		chkPlay			: 'Auto Play',
+		chkLoop			: 'Loop',
+		chkMenu			: 'Enable Flash Menu',
+		chkFull			: 'Allow Fullscreen',
+ 		scale			: 'Scale',
+		scaleAll		: 'Show all',
+		scaleNoBorder	: 'No Border',
+		scaleFit		: 'Exact Fit',
+		access			: 'Script Access',
+		accessAlways	: 'Always',
+		accessSameDomain: 'Same domain',
+		accessNever		: 'Never',
+		align			: 'Align',
+		alignLeft		: 'Left',
+		alignAbsBottom	: 'Abs Bottom',
+		alignAbsMiddle	: 'Abs Middle',
+		alignBaseline	: 'Baseline',
+		alignBottom		: 'Bottom',
+		alignMiddle		: 'Middle',
+		alignRight		: 'Right',
+		alignTextTop	: 'Text Top',
+		alignTop		: 'Top',
+		quality			: 'Quality',
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode',
+		flashvars		: 'Variables for Flash',
+		bgcolor			: 'Background colour',
+		width			: 'Width',
+		height			: 'Height',
+		hSpace			: 'HSpace',
+		vSpace			: 'VSpace',
+		validateSrc		: 'URL must not be empty.',
+		validateWidth	: 'Width must be a number.',
+		validateHeight	: 'Height must be a number.',
+		validateHSpace	: 'HSpace must be a number.',
+		validateVSpace	: 'VSpace must be a number.'
+	},
+
+	// Speller Pages Dialog
+	spellCheck :
+	{
+		toolbar			: 'Check Spelling',
+		title			: 'Spell Check',
+		notAvailable	: 'Sorry, but service is unavailable now.',
+		errorLoading	: 'Error loading application service host: %s.',
+		notInDic		: 'Not in dictionary',
+		changeTo		: 'Change to',
+		btnIgnore		: 'Ignore',
+		btnIgnoreAll	: 'Ignore All',
+		btnReplace		: 'Replace',
+		btnReplaceAll	: 'Replace All',
+		btnUndo			: 'Undo',
+		noSuggestions	: '- No suggestions -',
+		progress		: 'Spell check in progress...',
+		noMispell		: 'Spell check complete: No misspellings found',
+		noChanges		: 'Spell check complete: No words changed',
+		oneChange		: 'Spell check complete: One word changed',
+		manyChanges		: 'Spell check complete: %1 words changed',
+		ieSpellDownload	: 'Spell checker not installed. Do you want to download it now?'
+	},
+
+	smiley :
+	{
+		toolbar	: 'Smiley',
+		title	: 'Insert a Smiley',
+		options : 'Smiley Options' // MISSING
+	},
+
+	elementsPath :
+	{
+		eleLabel : 'Elements path', // MISSING
+		eleTitle : '%1 element'
+	},
+
+	numberedlist	: 'Insert/Remove Numbered List',
+	bulletedlist	: 'Insert/Remove Bulleted List',
+	indent			: 'Increase Indent',
+	outdent			: 'Decrease Indent',
+
+	justify :
+	{
+		left	: 'Left Justify',
+		center	: 'Centre Justify',
+		right	: 'Right Justify',
+		block	: 'Block Justify'
+	},
+
+	blockquote : 'Block Quote',
+
+	clipboard :
+	{
+		title		: 'Paste',
+		cutError	: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).',
+		copyError	: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).',
+		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',
+		pasteArea	: 'Paste Area'
+	},
+
+	pastefromword :
+	{
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Paste from Word',
+		title			: 'Paste from Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
+	},
+
+	pasteText :
+	{
+		button	: 'Paste as plain text',
+		title	: 'Paste as Plain Text'
+	},
+
+	templates :
+	{
+		button			: 'Templates',
+		title			: 'Content Templates',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Replace actual contents',
+		selectPromptMsg	: 'Please select the template to open in the editor',
+		emptyListMsg	: '(No templates defined)'
+	},
+
+	showBlocks : 'Show Blocks',
+
+	stylesCombo :
+	{
+		label		: 'Styles',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles',
+		panelTitle2	: 'Inline Styles',
+		panelTitle3	: 'Object Styles'
+	},
+
+	format :
+	{
+		label		: 'Format',
+		panelTitle	: 'Paragraph Format',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatted',
+		tag_address	: 'Address',
+		tag_h1		: 'Heading 1',
+		tag_h2		: 'Heading 2',
+		tag_h3		: 'Heading 3',
+		tag_h4		: 'Heading 4',
+		tag_h5		: 'Heading 5',
+		tag_h6		: 'Heading 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
+
+	font :
+	{
+		label		: 'Font',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Font Name'
+	},
+
+	fontSize :
+	{
+		label		: 'Size',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Font Size'
+	},
+
+	colorButton :
+	{
+		textColorTitle	: 'Text Colour',
+		bgColorTitle	: 'Background Colour',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatic',
+		more			: 'More Colours...'
+	},
+
+	colors :
+	{
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
+	},
+
+	scayt :
+	{
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
+	},
+
+	about :
+	{
+		title		: 'About CKEditor',
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:',
+		copy		: 'Copyright &copy; $1. All rights reserved.'
+	},
+
+	maximize : 'Maximize',
+	minimize : 'Minimize', // MISSING
+
+	fakeobjects :
+	{
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
+	},
+
+	resize : 'Drag to resize', // MISSING
+
+	colordialog :
+	{
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
+};
Index: Editor/branches/features/adobeair/_source/lang/en-uk.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/en-uk.js	(revision 5612)
+++ 	(revision )
@@ -1,685 +1,0 @@
-﻿/*
-Copyright (c) 2003-2009, 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
- * English (Australia) language.
- */
-
-/**#@+
-   @type String
-   @example
-*/
-
-/**
- * Constains the dictionary of language entries.
- * @namespace
- */
-CKEDITOR.lang['en-uk'] =
-{
-	/**
-	 * 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		: 'Rich text editor, %1',
-
-	// Toolbar buttons without dialogs.
-	source			: 'Source',
-	newPage			: 'New Page',
-	save			: 'Save',
-	preview			: 'Preview',
-	cut				: 'Cut',
-	copy			: 'Copy',
-	paste			: 'Paste',
-	print			: 'Print',
-	underline		: 'Underline',
-	bold			: 'Bold',
-	italic			: 'Italic',
-	selectAll		: 'Select All',
-	removeFormat	: 'Remove Format',
-	strike			: 'Strike Through',
-	subscript		: 'Subscript',
-	superscript		: 'Superscript',
-	horizontalrule	: 'Insert Horizontal Line',
-	pagebreak		: 'Insert Page Break for Printing',
-	unlink			: 'Unlink',
-	undo			: 'Undo',
-	redo			: 'Redo',
-
-	// Common messages and labels.
-	common :
-	{
-		browseServer	: 'Browse Server',
-		url				: 'URL',
-		protocol		: 'Protocol',
-		upload			: 'Upload',
-		uploadSubmit	: 'Send it to the Server',
-		image			: 'Image',
-		flash			: 'Flash',
-		form			: 'Form',
-		checkbox		: 'Checkbox',
-		radio		: 'Radio Button',
-		textField		: 'Text Field',
-		textarea		: 'Textarea',
-		hiddenField		: 'Hidden Field',
-		button			: 'Button',
-		select	: 'Selection Field',
-		imageButton		: 'Image Button',
-		notSet			: '<not set>',
-		id				: 'Id',
-		name			: 'Name',
-		langDir			: 'Language Direction',
-		langDirLtr		: 'Left to Right (LTR)',
-		langDirRtl		: 'Right to Left (RTL)',
-		langCode		: 'Language Code',
-		longDescr		: 'Long Description URL',
-		cssClass		: 'Stylesheet Classes',
-		advisoryTitle	: 'Advisory Title',
-		cssStyle		: 'Style',
-		ok				: 'OK',
-		cancel			: 'Cancel',
-		generalTab		: 'General',
-		advancedTab		: 'Advanced',
-		validateNumberFailed	: 'This value is not a number.',
-		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',
-		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?',
-
-		// Put the voice-only part of the label in the span.
-		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
-	},
-
-	// Special char dialog.
-	specialChar		:
-	{
-		toolbar		: 'Insert Special Character',
-		title		: 'Select Special Character'
-	},
-
-	// Link dialog.
-	link :
-	{
-		toolbar		: 'Link',
-		menu		: 'Edit Link',
-		title		: 'Link',
-		info		: 'Link Info',
-		target		: 'Target',
-		upload		: 'Upload',
-		advanced	: 'Advanced',
-		type		: 'Link Type',
-		toAnchor	: 'Link to anchor in the text',
-		toEmail		: 'E-mail',
-		target		: 'Target',
-		targetNotSet	: '<not set>',
-		targetFrame	: '<frame>',
-		targetPopup	: '<popup window>',
-		targetNew	: 'New Window (_blank)',
-		targetTop	: 'Topmost Window (_top)',
-		targetSelf	: 'Same Window (_self)',
-		targetParent	: 'Parent Window (_parent)',
-		targetFrameName	: 'Target Frame Name',
-		targetPopupName	: 'Popup Window Name',
-		popupFeatures	: 'Popup Window Features',
-		popupResizable	: 'Resizable',
-		popupStatusBar	: 'Status Bar',
-		popupLocationBar	: 'Location Bar',
-		popupToolbar	: 'Toolbar',
-		popupMenuBar	: 'Menu Bar',
-		popupFullScreen	: 'Full Screen (IE)',
-		popupScrollBars	: 'Scroll Bars',
-		popupDependent	: 'Dependent (Netscape)',
-		popupWidth		: 'Width',
-		popupLeft		: 'Left Position',
-		popupHeight		: 'Height',
-		popupTop		: 'Top Position',
-		id				: 'Id',
-		langDir			: 'Language Direction',
-		langDirNotSet	: '<not set>',
-		langDirLTR		: 'Left to Right (LTR)',
-		langDirRTL		: 'Right to Left (RTL)',
-		acccessKey		: 'Access Key',
-		name			: 'Name',
-		langCode		: 'Language Code',
-		tabIndex		: 'Tab Index',
-		advisoryTitle	: 'Advisory Title',
-		advisoryContentType	: 'Advisory Content Type',
-		cssClasses		: 'Stylesheet Classes',
-		charset			: 'Linked Resource Charset',
-		styles			: 'Style',
-		selectAnchor	: 'Select an Anchor',
-		anchorName		: 'By Anchor Name',
-		anchorId		: 'By Element Id',
-		emailAddress	: 'E-Mail Address',
-		emailSubject	: 'Message Subject',
-		emailBody		: 'Message Body',
-		noAnchors		: '(No anchors available in the document)',
-		noUrl			: 'Please type the link URL',
-		noEmail			: 'Please type the e-mail address'
-	},
-
-	// Anchor dialog
-	anchor :
-	{
-		toolbar		: 'Anchor',
-		menu		: 'Edit Anchor',
-		title		: 'Anchor Properties',
-		name		: 'Anchor Name',
-		errorName	: 'Please type the anchor name'
-	},
-
-	// Find And Replace Dialog
-	findAndReplace :
-	{
-		title				: 'Find and Replace',
-		find				: 'Find',
-		replace				: 'Replace',
-		findWhat			: 'Find what:',
-		replaceWith			: 'Replace with:',
-		notFoundMsg			: 'The specified text was not found.',
-		matchCase			: 'Match case',
-		matchWord			: 'Match whole word',
-		matchCyclic			: 'Match cyclic',
-		replaceAll			: 'Replace All',
-		replaceSuccessMsg	: '%1 occurrence(s) replaced.'
-	},
-
-	// Table Dialog
-	table :
-	{
-		toolbar		: 'Table',
-		title		: 'Table Properties',
-		menu		: 'Table Properties',
-		deleteTable	: 'Delete Table',
-		rows		: 'Rows',
-		columns		: 'Columns',
-		border		: 'Border size',
-		align		: 'Alignment',
-		alignNotSet	: '<Not set>',
-		alignLeft	: 'Left',
-		alignCenter	: 'Centre',
-		alignRight	: 'Right',
-		width		: 'Width',
-		widthPx		: 'pixels',
-		widthPc		: 'percent',
-		height		: 'Height',
-		cellSpace	: 'Cell spacing',
-		cellPad		: 'Cell padding',
-		caption		: 'Caption',
-		summary		: 'Summary',
-		headers		: 'Headers',
-		headersNone		: 'None',
-		headersColumn	: 'First column',
-		headersRow		: 'First Row',
-		headersBoth		: 'Both',
-		invalidRows		: 'Number of rows must be a number greater than 0.',
-		invalidCols		: 'Number of columns must be a number greater than 0.',
-		invalidBorder	: 'Border size must be a number.',
-		invalidWidth	: 'Table width must be a number.',
-		invalidHeight	: 'Table height must be a number.',
-		invalidCellSpacing	: 'Cell spacing must be a number.',
-		invalidCellPadding	: 'Cell padding must be a number.',
-
-		cell :
-		{
-			menu			: 'Cell',
-			insertBefore	: 'Insert Cell Before',
-			insertAfter		: 'Insert Cell After',
-			deleteCell		: 'Delete Cells',
-			merge			: 'Merge Cells',
-			mergeRight		: 'Merge Right',
-			mergeDown		: 'Merge Down',
-			splitHorizontal	: 'Split Cell Horizontally',
-			splitVertical	: 'Split Cell Vertically',
-			title			: 'Cell Properties',
-			cellType		: 'Cell Type',
-			rowSpan			: 'Rows Span',
-			colSpan			: 'Columns Span',
-			wordWrap		: 'Word Wrap',
-			hAlign			: 'Horizontal Alignment',
-			vAlign			: 'Vertical Alignment',
-			alignTop		: 'Top',
-			alignMiddle		: 'Middle',
-			alignBottom		: 'Bottom',
-			alignBaseline	: 'Baseline',
-			bgColor			: 'Background Color',
-			borderColor		: 'Border Color',
-			data			: 'Data',
-			header			: 'Header',
-			yes				: 'Yes',
-			no				: 'No',
-			invalidWidth	: 'Cell width must be a number.',
-			invalidHeight	: 'Cell height must be a number.',
-			invalidRowSpan	: 'Rows span must be a whole number.',
-			invalidColSpan	: 'Columns span must be a whole number.',
-			chooseColor : 'Choose' // MISSING
-		},
-
-		row :
-		{
-			menu			: 'Row',
-			insertBefore	: 'Insert Row Before',
-			insertAfter		: 'Insert Row After',
-			deleteRow		: 'Delete Rows'
-		},
-
-		column :
-		{
-			menu			: 'Column',
-			insertBefore	: 'Insert Column Before',
-			insertAfter		: 'Insert Column After',
-			deleteColumn	: 'Delete Columns'
-		}
-	},
-
-	// Button Dialog.
-	button :
-	{
-		title		: 'Button Properties',
-		text		: 'Text (Value)',
-		type		: 'Type',
-		typeBtn		: 'Button',
-		typeSbm		: 'Submit',
-		typeRst		: 'Reset'
-	},
-
-	// Checkbox and Radio Button Dialogs.
-	checkboxAndRadio :
-	{
-		checkboxTitle : 'Checkbox Properties',
-		radioTitle	: 'Radio Button Properties',
-		value		: 'Value',
-		selected	: 'Selected'
-	},
-
-	// Form Dialog.
-	form :
-	{
-		title		: 'Form Properties',
-		menu		: 'Form Properties',
-		action		: 'Action',
-		method		: 'Method',
-		encoding	: 'Encoding',
-		target		: 'Target',
-		targetNotSet	: '<not set>',
-		targetNew	: 'New Window (_blank)',
-		targetTop	: 'Topmost Window (_top)',
-		targetSelf	: 'Same Window (_self)',
-		targetParent	: 'Parent Window (_parent)'
-	},
-
-	// Select Field Dialog.
-	select :
-	{
-		title		: 'Selection Field Properties',
-		selectInfo	: 'Select Info',
-		opAvail		: 'Available Options',
-		value		: 'Value',
-		size		: 'Size',
-		lines		: 'lines',
-		chkMulti	: 'Allow multiple selections',
-		opText		: 'Text',
-		opValue		: 'Value',
-		btnAdd		: 'Add',
-		btnModify	: 'Modify',
-		btnUp		: 'Up',
-		btnDown		: 'Down',
-		btnSetValue : 'Set as selected value',
-		btnDelete	: 'Delete'
-	},
-
-	// Textarea Dialog.
-	textarea :
-	{
-		title		: 'Textarea Properties',
-		cols		: 'Columns',
-		rows		: 'Rows'
-	},
-
-	// Text Field Dialog.
-	textfield :
-	{
-		title		: 'Text Field Properties',
-		name		: 'Name',
-		value		: 'Value',
-		charWidth	: 'Character Width',
-		maxChars	: 'Maximum Characters',
-		type		: 'Type',
-		typeText	: 'Text',
-		typePass	: 'Password'
-	},
-
-	// Hidden Field Dialog.
-	hidden :
-	{
-		title	: 'Hidden Field Properties',
-		name	: 'Name',
-		value	: 'Value'
-	},
-
-	// Image Dialog.
-	image :
-	{
-		title		: 'Image Properties',
-		titleButton	: 'Image Button Properties',
-		menu		: 'Image Properties',
-		infoTab	: 'Image Info',
-		btnUpload	: 'Send it to the Server',
-		url		: 'URL',
-		upload	: 'Upload',
-		alt		: 'Alternative Text',
-		width		: 'Width',
-		height	: 'Height',
-		lockRatio	: 'Lock Ratio',
-		resetSize	: 'Reset Size',
-		border	: 'Border',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
-		align		: 'Align',
-		alignLeft	: 'Left',
-		alignAbsBottom: 'Abs Bottom',
-		alignAbsMiddle: 'Abs Middle',
-		alignBaseline	: 'Baseline',
-		alignBottom	: 'Bottom',
-		alignMiddle	: 'Middle',
-		alignRight	: 'Right',
-		alignTextTop	: 'Text Top',
-		alignTop	: 'Top',
-		preview	: 'Preview',
-		alertUrl	: 'Please type the image URL',
-		linkTab	: 'Link',
-		button2Img	: 'Do you want to transform the selected image button on a simple image?',
-		img2Button	: 'Do you want to transform the selected image on a image button?',
-		urlMissing : 'Image source URL is missing.' // MISSING
-	},
-
-	// Flash Dialog
-	flash :
-	{
-		properties		: 'Flash Properties',
-		propertiesTab	: 'Properties',
-		title		: 'Flash Properties',
-		chkPlay		: 'Auto Play',
-		chkLoop		: 'Loop',
-		chkMenu		: 'Enable Flash Menu',
-		chkFull		: 'Allow Fullscreen',
- 		scale		: 'Scale',
-		scaleAll		: 'Show all',
-		scaleNoBorder	: 'No Border',
-		scaleFit		: 'Exact Fit',
-		access			: 'Script Access',
-		accessAlways	: 'Always',
-		accessSameDomain	: 'Same domain',
-		accessNever	: 'Never',
-		align		: 'Align',
-		alignLeft	: 'Left',
-		alignAbsBottom: 'Abs Bottom',
-		alignAbsMiddle: 'Abs Middle',
-		alignBaseline	: 'Baseline',
-		alignBottom	: 'Bottom',
-		alignMiddle	: 'Middle',
-		alignRight	: 'Right',
-		alignTextTop	: 'Text Top',
-		alignTop	: 'Top',
-		quality		: 'Quality',
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode',
-		flashvars	: 'Variables for Flash',
-		bgcolor	: 'Background colour',
-		width	: 'Width',
-		height	: 'Height',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
-		validateSrc : 'URL must not be empty.',
-		validateWidth : 'Width must be a number.',
-		validateHeight : 'Height must be a number.',
-		validateHSpace : 'HSpace must be a number.',
-		validateVSpace : 'VSpace must be a number.'
-	},
-
-	// Speller Pages Dialog
-	spellCheck :
-	{
-		toolbar			: 'Check Spelling',
-		title			: 'Spell Check',
-		notAvailable	: 'Sorry, but service is unavailable now.',
-		errorLoading	: 'Error loading application service host: %s.',
-		notInDic		: 'Not in dictionary',
-		changeTo		: 'Change to',
-		btnIgnore		: 'Ignore',
-		btnIgnoreAll	: 'Ignore All',
-		btnReplace		: 'Replace',
-		btnReplaceAll	: 'Replace All',
-		btnUndo			: 'Undo',
-		noSuggestions	: '- No suggestions -',
-		progress		: 'Spell check in progress...',
-		noMispell		: 'Spell check complete: No misspellings found',
-		noChanges		: 'Spell check complete: No words changed',
-		oneChange		: 'Spell check complete: One word changed',
-		manyChanges		: 'Spell check complete: %1 words changed',
-		ieSpellDownload	: 'Spell checker not installed. Do you want to download it now?'
-	},
-
-	smiley :
-	{
-		toolbar	: 'Smiley',
-		title	: 'Insert a Smiley'
-	},
-
-	elementsPath :
-	{
-		eleTitle : '%1 element'
-	},
-
-	numberedlist : 'Insert/Remove Numbered List',
-	bulletedlist : 'Insert/Remove Bulleted List',
-	indent : 'Increase Indent',
-	outdent : 'Decrease Indent',
-
-	justify :
-	{
-		left : 'Left Justify',
-		center : 'Centre Justify',
-		right : 'Right Justify',
-		block : 'Block Justify'
-	},
-
-	blockquote : 'Blockquote',
-
-	clipboard :
-	{
-		title		: 'Paste',
-		cutError	: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).',
-		copyError	: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).',
-		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK',
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'
-	},
-
-	pastefromword :
-	{
-		toolbar : 'Paste from Word',
-		title : 'Paste from Word',
-		advice : 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.',
-		ignoreFontFace : 'Ignore Font Face definitions',
-		removeStyle : 'Remove Styles definitions'
-	},
-
-	pasteText :
-	{
-		button : 'Paste as plain text',
-		title : 'Paste as Plain Text'
-	},
-
-	templates :
-	{
-		button : 'Templates',
-		title : 'Content Templates',
-		insertOption: 'Replace actual contents',
-		selectPromptMsg: 'Please select the template to open in the editor',
-		emptyListMsg : '(No templates defined)'
-	},
-
-	showBlocks : 'Show Blocks',
-
-	stylesCombo :
-	{
-		label : 'Styles',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles',
-		panelTitle2 : 'Inline Styles',
-		panelTitle3 : 'Object Styles'
-	},
-
-	format :
-	{
-		label : 'Format',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Paragraph Format',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatted',
-		tag_address : 'Address',
-		tag_h1 : 'Heading 1',
-		tag_h2 : 'Heading 2',
-		tag_h3 : 'Heading 3',
-		tag_h4 : 'Heading 4',
-		tag_h5 : 'Heading 5',
-		tag_h6 : 'Heading 6',
-		tag_div : 'Normal (DIV)'
-	},
-
-	font :
-	{
-		label : 'Font',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Font Name',
-		panelVoiceLabel : 'Select a font' // MISSING
-	},
-
-	fontSize :
-	{
-		label : 'Size',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Font Size',
-		panelVoiceLabel : 'Select a font size' // MISSING
-	},
-
-	colorButton :
-	{
-		textColorTitle : 'Text Colour',
-		bgColorTitle : 'Background Colour',
-		auto : 'Automatic',
-		more : 'More Colours...'
-	},
-
-	colors :
-	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
-	},
-
-	scayt :
-	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
-	},
-
-	about :
-	{
-		title : 'About CKEditor',
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:',
-		copy : 'Copyright &copy; $1. All rights reserved.'
-	},
-
-	maximize : 'Maximize',
-	minimize : 'Minimize', // MISSING
-
-	fakeobjects :
-	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
-	},
-
-	resize : 'Drag to resize', // MISSING
-
-	colordialog :
-	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
-};
Index: /CKEditor/branches/features/adobeair/_source/lang/en.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/en.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/en.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1',
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.',
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar',
+	editor	: 'Rich Text Editor',
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Form',
 		checkbox		: 'Checkbox',
-		radio		: 'Radio Button',
+		radio			: 'Radio Button',
 		textField		: 'Text Field',
 		textarea		: 'Textarea',
 		hiddenField		: 'Hidden Field',
 		button			: 'Button',
-		select	: 'Selection Field',
+		select			: 'Selection Field',
 		imageButton		: 'Image Button',
 		notSet			: '<not set>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Cancel',
+		close			: 'Close',
+		preview			: 'Preview',
 		generalTab		: 'General',
 		advancedTab		: 'Advanced',
-		validateNumberFailed	: 'This value is not a number.',
+		validateNumberFailed : 'This value is not a number.',
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?',
+		options			: 'Options',
+		target			: 'Target',
+		targetNew		: 'New Window (_blank)',
+		targetTop		: 'Topmost Window (_top)',
+		targetSelf		: 'Same Window (_self)',
+		targetParent	: 'Parent Window (_parent)',
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options'
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Insert Special Character',
-		title		: 'Select Special Character'
+		title		: 'Select Special Character',
+		options : 'Special Character Options'
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Link',
+		other 		: '<other>',
 		menu		: 'Edit Link',
 		title		: 'Link',
@@ -117,14 +136,9 @@
 		advanced	: 'Advanced',
 		type		: 'Link Type',
+		toUrl		: 'URL',
 		toAnchor	: 'Link to anchor in the text',
 		toEmail		: 'E-mail',
-		target		: 'Target',
-		targetNotSet	: '<not set>',
-		targetFrame	: '<frame>',
-		targetPopup	: '<popup window>',
-		targetNew	: 'New Window (_blank)',
-		targetTop	: 'Topmost Window (_top)',
-		targetSelf	: 'Same Window (_self)',
-		targetParent	: 'Parent Window (_parent)',
+		targetFrame		: '<frame>',
+		targetPopup		: '<popup window>',
 		targetFrameName	: 'Target Frame Name',
 		targetPopupName	: 'Popup Window Name',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable',
 		popupStatusBar	: 'Status Bar',
-		popupLocationBar	: 'Location Bar',
+		popupLocationBar: 'Location Bar',
 		popupToolbar	: 'Toolbar',
 		popupMenuBar	: 'Menu Bar',
@@ -144,5 +158,4 @@
 		id				: 'Id',
 		langDir			: 'Language Direction',
-		langDirNotSet	: '<not set>',
 		langDirLTR		: 'Left to Right (LTR)',
 		langDirRTL		: 'Right to Left (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties',
+		bulletedTitle		: 'Bulleted List Properties',
+		type				: 'Type',
+		start				: 'Start',
+		circle				: 'Circle',
+		disc				: 'Disc',
+		square				: 'Square',
+		none				: 'None',
+		notset				: '<not set>',
+		armenian			: 'Armenian numbering',
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)',
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)',
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)',
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)',
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)',
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)',
+		decimal				: 'Decimal (1, 2, 3, etc.)',
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)'
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Border size',
 		align		: 'Alignment',
-		alignNotSet	: '<Not set>',
 		alignLeft	: 'Left',
 		alignCenter	: 'Center',
@@ -211,4 +246,5 @@
 		widthPx		: 'pixels',
 		widthPc		: 'percent',
+		widthUnit	: 'width unit',
 		height		: 'Height',
 		cellSpace	: 'Cell spacing',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.',
 			invalidColSpan	: 'Columns span must be a whole number.',
-			chooseColor : 'Choose'
+			chooseColor		: 'Choose'
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Action',
 		method		: 'Method',
-		encoding	: 'Encoding',
-		target		: 'Target',
-		targetNotSet	: '<not set>',
-		targetNew	: 'New Window (_blank)',
-		targetTop	: 'Topmost Window (_top)',
-		targetSelf	: 'Same Window (_self)',
-		targetParent	: 'Parent Window (_parent)'
+		encoding	: 'Encoding'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Image Button Properties',
 		menu		: 'Image Properties',
-		infoTab	: 'Image Info',
+		infoTab		: 'Image Info',
 		btnUpload	: 'Send it to the Server',
-		url		: 'URL',
-		upload	: 'Upload',
-		alt		: 'Alternative Text',
+		upload		: 'Upload',
+		alt			: 'Alternative Text',
 		width		: 'Width',
-		height	: 'Height',
+		height		: 'Height',
 		lockRatio	: 'Lock Ratio',
+		unlockRatio	: 'Unlock Ratio',
 		resetSize	: 'Reset Size',
-		border	: 'Border',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
+		border		: 'Border',
+		hSpace		: 'HSpace',
+		vSpace		: 'VSpace',
 		align		: 'Align',
 		alignLeft	: 'Left',
-		alignAbsBottom: 'Abs Bottom',
-		alignAbsMiddle: 'Abs Middle',
-		alignBaseline	: 'Baseline',
-		alignBottom	: 'Bottom',
-		alignMiddle	: 'Middle',
 		alignRight	: 'Right',
-		alignTextTop	: 'Text Top',
-		alignTop	: 'Top',
-		preview	: 'Preview',
 		alertUrl	: 'Please type the image URL',
-		linkTab	: 'Link',
+		linkTab		: 'Link',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?',
 		img2Button	: 'Do you want to transform the selected image on a image button?',
-		urlMissing : 'Image source URL is missing.'
+		urlMissing	: 'Image source URL is missing.',
+		validateWidth	: 'Width must be a whole number.',
+		validateHeight	: 'Height must be a whole number.',
+		validateBorder	: 'Border must be a whole number.',
+		validateHSpace	: 'HSpace must be a whole number.',
+		validateVSpace	: 'VSpace must be a whole number.'
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Flash Properties',
 		propertiesTab	: 'Properties',
-		title		: 'Flash Properties',
-		chkPlay		: 'Auto Play',
-		chkLoop		: 'Loop',
-		chkMenu		: 'Enable Flash Menu',
-		chkFull		: 'Allow Fullscreen',
- 		scale		: 'Scale',
+		title			: 'Flash Properties',
+		chkPlay			: 'Auto Play',
+		chkLoop			: 'Loop',
+		chkMenu			: 'Enable Flash Menu',
+		chkFull			: 'Allow Fullscreen',
+ 		scale			: 'Scale',
 		scaleAll		: 'Show all',
 		scaleNoBorder	: 'No Border',
@@ -418,38 +445,38 @@
 		access			: 'Script Access',
 		accessAlways	: 'Always',
-		accessSameDomain	: 'Same domain',
-		accessNever	: 'Never',
-		align		: 'Align',
-		alignLeft	: 'Left',
-		alignAbsBottom: 'Abs Bottom',
-		alignAbsMiddle: 'Abs Middle',
+		accessSameDomain: 'Same domain',
+		accessNever		: 'Never',
+		align			: 'Align',
+		alignLeft		: 'Left',
+		alignAbsBottom	: 'Abs Bottom',
+		alignAbsMiddle	: 'Abs Middle',
 		alignBaseline	: 'Baseline',
-		alignBottom	: 'Bottom',
-		alignMiddle	: 'Middle',
-		alignRight	: 'Right',
+		alignBottom		: 'Bottom',
+		alignMiddle		: 'Middle',
+		alignRight		: 'Right',
 		alignTextTop	: 'Text Top',
-		alignTop	: 'Top',
-		quality		: 'Quality',
-		qualityBest		 : 'Best',
-		qualityHigh		 : 'High',
-		qualityAutoHigh	 : 'Auto High',
-		qualityMedium	 : 'Medium',
-		qualityAutoLow	 : 'Auto Low',
-		qualityLow		 : 'Low',
-		windowModeWindow	 : 'Window',
-		windowModeOpaque	 : 'Opaque',
-		windowModeTransparent	 : 'Transparent',
-		windowMode	: 'Window mode',
-		flashvars	: 'Variables for Flash',
-		bgcolor	: 'Background color',
-		width	: 'Width',
-		height	: 'Height',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
-		validateSrc : 'URL must not be empty.',
-		validateWidth : 'Width must be a number.',
-		validateHeight : 'Height must be a number.',
-		validateHSpace : 'HSpace must be a number.',
-		validateVSpace : 'VSpace must be a number.'
+		alignTop		: 'Top',
+		quality			: 'Quality',
+		qualityBest		: 'Best',
+		qualityHigh		: 'High',
+		qualityAutoHigh	: 'Auto High',
+		qualityMedium	: 'Medium',
+		qualityAutoLow	: 'Auto Low',
+		qualityLow		: 'Low',
+		windowModeWindow: 'Window',
+		windowModeOpaque: 'Opaque',
+		windowModeTransparent : 'Transparent',
+		windowMode		: 'Window mode',
+		flashvars		: 'Variables for Flash',
+		bgcolor			: 'Background color',
+		width			: 'Width',
+		height			: 'Height',
+		hSpace			: 'HSpace',
+		vSpace			: 'VSpace',
+		validateSrc		: 'URL must not be empty.',
+		validateWidth	: 'Width must be a number.',
+		validateHeight	: 'Height must be a number.',
+		validateHSpace	: 'HSpace must be a number.',
+		validateVSpace	: 'VSpace must be a number.'
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'Smiley',
-		title	: 'Insert a Smiley'
+		title	: 'Insert a Smiley',
+		options : 'Smiley Options'
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path',
 		eleTitle : '%1 element'
 	},
 
-	numberedlist : 'Insert/Remove Numbered List',
-	bulletedlist : 'Insert/Remove Bulleted List',
-	indent : 'Increase Indent',
-	outdent : 'Decrease Indent',
+	numberedlist	: 'Insert/Remove Numbered List',
+	bulletedlist	: 'Insert/Remove Bulleted List',
+	indent			: 'Increase Indent',
+	outdent			: 'Decrease Indent',
 
 	justify :
 	{
-		left : 'Left Justify',
-		center : 'Center Justify',
-		right : 'Right Justify',
-		block : 'Block Justify'
-	},
-
-	blockquote : 'Blockquote',
+		left	: 'Left Justify',
+		center	: 'Center Justify',
+		right	: 'Right Justify',
+		block	: 'Block Justify'
+	},
+
+	blockquote : 'Block Quote',
 
 	clipboard :
 	{
 		title		: 'Paste',
-		cutError	: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).',
-		copyError	: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).',
-		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK',
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.'
+		cutError	: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).',
+		copyError	: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).',
+		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',
+		pasteArea	: 'Paste Area'
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Paste from Word',
-		title : 'Paste from Word',
-		advice : 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.',
-		ignoreFontFace : 'Ignore Font Face definitions',
-		removeStyle : 'Remove Styles definitions'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',
+		toolbar			: 'Paste from Word',
+		title			: 'Paste from Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error'
 	},
 
 	pasteText :
 	{
-		button : 'Paste as plain text',
-		title : 'Paste as Plain Text'
+		button	: 'Paste as plain text',
+		title	: 'Paste as Plain Text'
 	},
 
 	templates :
 	{
-		button : 'Templates',
-		title : 'Content Templates',
-		insertOption: 'Replace actual contents',
-		selectPromptMsg: 'Please select the template to open in the editor',
-		emptyListMsg : '(No templates defined)'
+		button			: 'Templates',
+		title			: 'Content Templates',
+		options : 'Template Options',
+		insertOption	: 'Replace actual contents',
+		selectPromptMsg	: 'Please select the template to open in the editor',
+		emptyListMsg	: '(No templates defined)'
 	},
 
@@ -540,53 +570,66 @@
 	stylesCombo :
 	{
-		label : 'Styles',
-		voiceLabel : 'Styles',
-		panelVoiceLabel : 'Select a style',
-		panelTitle1 : 'Block Styles',
-		panelTitle2 : 'Inline Styles',
-		panelTitle3 : 'Object Styles'
+		label		: 'Styles',
+		panelTitle	: 'Formatting Styles',
+		panelTitle1	: 'Block Styles',
+		panelTitle2	: 'Inline Styles',
+		panelTitle3	: 'Object Styles'
 	},
 
 	format :
 	{
-		label : 'Format',
-		voiceLabel : 'Format',
-		panelTitle : 'Paragraph Format',
-		panelVoiceLabel : 'Select a paragraph format',
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatted',
-		tag_address : 'Address',
-		tag_h1 : 'Heading 1',
-		tag_h2 : 'Heading 2',
-		tag_h3 : 'Heading 3',
-		tag_h4 : 'Heading 4',
-		tag_h5 : 'Heading 5',
-		tag_h6 : 'Heading 6',
-		tag_div : 'Normal (DIV)'
-	},
+		label		: 'Format',
+		panelTitle	: 'Paragraph Format',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatted',
+		tag_address	: 'Address',
+		tag_h1		: 'Heading 1',
+		tag_h2		: 'Heading 2',
+		tag_h3		: 'Heading 3',
+		tag_h4		: 'Heading 4',
+		tag_h5		: 'Heading 5',
+		tag_h6		: 'Heading 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container',
+		toolbar				: 'Create Div Container',
+		cssClassInputLabel	: 'Stylesheet Classes',
+		styleSelectLabel	: 'Style',
+		IdInputLabel		: 'Id',
+		languageCodeInputLabel	: ' Language Code',
+		inlineStyleInputLabel	: 'Inline Style',
+		advisoryTitleInputLabel	: 'Advisory Title',
+		langDirLabel		: 'Language Direction',
+		langDirLTRLabel		: 'Left to Right (LTR)',
+		langDirRTLLabel		: 'Right to Left (RTL)',
+		edit				: 'Edit Div',
+		remove				: 'Remove Div'
+  	},
 
 	font :
 	{
-		label : 'Font',
-		voiceLabel : 'Font',
-		panelTitle : 'Font Name',
-		panelVoiceLabel : 'Select a font'
+		label		: 'Font',
+		voiceLabel	: 'Font',
+		panelTitle	: 'Font Name'
 	},
 
 	fontSize :
 	{
-		label : 'Size',
-		voiceLabel : 'Font Size',
-		panelTitle : 'Font Size',
-		panelVoiceLabel : 'Select a font size'
+		label		: 'Size',
+		voiceLabel	: 'Font Size',
+		panelTitle	: 'Font Size'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Text Color',
-		bgColorTitle : 'Background Color',
-		auto : 'Automatic',
-		more : 'More Colors...'
+		textColorTitle	: 'Text Color',
+		bgColorTitle	: 'Background Color',
+		panelTitle		: 'Colors',
+		auto			: 'Automatic',
+		more			: 'More Colors...'
 	},
 
@@ -637,28 +680,43 @@
 	scayt :
 	{
-		title : 'Spell Check As You Type',
-		enable : 'Enable SCAYT',
-		disable : 'Disable SCAYT',
-		about : 'About SCAYT',
-		toggle : 'Toggle SCAYT',
-		options : 'Options',
-		langs : 'Languages',
-		moreSuggestions : 'More suggestions',
-		ignore : 'Ignore',
-		ignoreAll : 'Ignore All',
-		addWord : 'Add Word',
-		emptyDic : 'Dictionary name should not be empty.',
-		optionsTab : 'Options',
-		languagesTab : 'Languages',
-		dictionariesTab : 'Dictionaries',
-		aboutTab : 'About'
+		title			: 'Spell Check As You Type',
+		opera_title		: 'Not supported by Opera',
+		enable			: 'Enable SCAYT',
+		disable			: 'Disable SCAYT',
+		about			: 'About SCAYT',
+		toggle			: 'Toggle SCAYT',
+		options			: 'Options',
+		langs			: 'Languages',
+		moreSuggestions	: 'More suggestions',
+		ignore			: 'Ignore',
+		ignoreAll		: 'Ignore All',
+		addWord			: 'Add Word',
+		emptyDic		: 'Dictionary name should not be empty.',
+
+		optionsTab		: 'Options',
+		allCaps			: 'Ignore All-Caps Words',
+		ignoreDomainNames : 'Ignore Domain Names',
+		mixedCase		: 'Ignore Words with Mixed Case',
+		mixedWithDigits	: 'Ignore Words with Numbers',
+
+		languagesTab	: 'Languages',
+
+		dictionariesTab	: 'Dictionaries',
+		dic_field_name	: 'Dictionary name',
+		dic_create		: 'Create',
+		dic_restore		: 'Restore',
+		dic_delete		: 'Delete',
+		dic_rename		: 'Rename',
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.',
+
+		aboutTab		: 'About'
 	},
 
 	about :
 	{
-		title : 'About CKEditor',
-		dlgTitle : 'About CKEditor',
-		moreInfo : 'For licensing information please visit our web site:',
-		copy : 'Copyright &copy; $1. All rights reserved.'
+		title		: 'About CKEditor',
+		dlgTitle	: 'About CKEditor',
+		moreInfo	: 'For licensing information please visit our web site:',
+		copy		: 'Copyright &copy; $1. All rights reserved.'
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor',
-		flash : 'Flash Animation',
-		div : 'Page Break',
-		unknown : 'Unknown Object'
+		anchor	: 'Anchor',
+		flash	: 'Flash Animation',
+		div		: 'Page Break',
+		unknown	: 'Unknown Object'
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color',
-		highlight : 'Highlight',
-		selected : 'Selected',
-		clear : 'Clear'
-	}
+		title		: 'Select color',
+		options	:	'Color Options',
+		highlight	: 'Highlight',
+		selected	: 'Selected Color',
+		clear		: 'Clear'
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar',
+	toolbarExpand	: 'Expand Toolbar'
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/eo.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/eo.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/eo.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Formularo',
 		checkbox		: 'Markobutono',
-		radio		: 'Radiobutono',
+		radio			: 'Radiobutono',
 		textField		: 'Teksta kampo',
 		textarea		: 'Teksta Areo',
 		hiddenField		: 'Kaŝita Kampo',
 		button			: 'Butono',
-		select	: 'Elekta Kampo',
+		select			: 'Elekta Kampo',
 		imageButton		: 'Bildbutono',
 		notSet			: '<Defaŭlta>',
@@ -89,9 +93,17 @@
 		ok				: 'Akcepti',
 		cancel			: 'Rezigni',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'Speciala',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Enmeti Specialan Signon',
-		title		: 'Enmeti Specialan Signon'
+		title		: 'Enmeti Specialan Signon',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Enmeti/Ŝanĝi Ligilon',
+		other 		: '<other>', // MISSING
 		menu		: 'Modifier Ligilon',
 		title		: 'Ligilo',
@@ -117,14 +136,9 @@
 		advanced	: 'Speciala',
 		type		: 'Tipo de Ligilo',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Ankri en tiu ĉi paĝo',
 		toEmail		: 'Retpoŝto',
-		target		: 'Celo',
-		targetNotSet	: '<Defaŭlta>',
-		targetFrame	: '<kadro>',
-		targetPopup	: '<ŝprucfenestro>',
-		targetNew	: 'Nova Fenestro (_blank)',
-		targetTop	: 'Plej Supra Fenestro (_top)',
-		targetSelf	: 'Sama Fenestro (_self)',
-		targetParent	: 'Gepatra Fenestro (_parent)',
+		targetFrame		: '<kadro>',
+		targetPopup		: '<ŝprucfenestro>',
 		targetFrameName	: 'Nomo de Kadro',
 		targetPopupName	: 'Nomo de Ŝprucfenestro',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Statobreto',
-		popupLocationBar	: 'Adresobreto',
+		popupLocationBar: 'Adresobreto',
 		popupToolbar	: 'Ilobreto',
 		popupMenuBar	: 'Menubreto',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Skribdirekto',
-		langDirNotSet	: '<Defaŭlta>',
 		langDirLTR		: 'De maldekstro dekstren (LTR)',
 		langDirRTL		: 'De dekstro maldekstren (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Bordero',
 		align		: 'Ĝisrandigo',
-		alignNotSet	: '<Defaŭlte>',
 		alignLeft	: 'Maldekstre',
 		alignCenter	: 'Centre',
@@ -211,4 +246,5 @@
 		widthPx		: 'Bitbilderoj',
 		widthPc		: 'elcentoj',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Alto',
 		cellSpace	: 'Interspacigo de Ĉeloj',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Ago',
 		method		: 'Metodo',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Celo',
-		targetNotSet	: '<Defaŭlta>',
-		targetNew	: 'Nova Fenestro (_blank)',
-		targetTop	: 'Plej Supra Fenestro (_top)',
-		targetSelf	: 'Sama Fenestro (_self)',
-		targetParent	: 'Gepatra Fenestro (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Bildbutonaj Atributoj',
 		menu		: 'Atributoj de Bildo',
-		infoTab	: 'Informoj pri Bildo',
+		infoTab		: 'Informoj pri Bildo',
 		btnUpload	: 'Sendu al Servilo',
-		url		: 'URL',
-		upload	: 'Alŝuti',
-		alt		: 'Anstataŭiga Teksto',
+		upload		: 'Alŝuti',
+		alt			: 'Anstataŭiga Teksto',
 		width		: 'Larĝo',
-		height	: 'Alto',
+		height		: 'Alto',
 		lockRatio	: 'Konservi Proporcion',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Origina Grando',
-		border	: 'Bordero',
-		hSpace	: 'HSpaco',
-		vSpace	: 'VSpaco',
+		border		: 'Bordero',
+		hSpace		: 'HSpaco',
+		vSpace		: 'VSpaco',
 		align		: 'Ĝisrandigo',
 		alignLeft	: 'Maldekstre',
-		alignAbsBottom: 'Abs Malsupre',
-		alignAbsMiddle: 'Abs Centre',
-		alignBaseline	: 'Je Malsupro de Teksto',
-		alignBottom	: 'Malsupre',
-		alignMiddle	: 'Centre',
 		alignRight	: 'Dekstre',
-		alignTextTop	: 'Je Supro de Teksto',
-		alignTop	: 'Supre',
-		preview	: 'Vidigi Aspekton',
 		alertUrl	: 'Bonvolu tajpi la URL de la bildo',
-		linkTab	: 'Link', // MISSING
+		linkTab		: 'Link', // MISSING
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Flash Properties', // MISSING
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Flash Properties', // MISSING
-		chkPlay		: 'Auto Play', // MISSING
-		chkLoop		: 'Loop', // MISSING
-		chkMenu		: 'Enable Flash Menu', // MISSING
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Scale', // MISSING
+		title			: 'Flash Properties', // MISSING
+		chkPlay			: 'Auto Play', // MISSING
+		chkLoop			: 'Loop', // MISSING
+		chkMenu			: 'Enable Flash Menu', // MISSING
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Scale', // MISSING
 		scaleAll		: 'Show all', // MISSING
 		scaleNoBorder	: 'No Border', // MISSING
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Ĝisrandigo',
-		alignLeft	: 'Maldekstre',
-		alignAbsBottom: 'Abs Malsupre',
-		alignAbsMiddle: 'Abs Centre',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Ĝisrandigo',
+		alignLeft		: 'Maldekstre',
+		alignAbsBottom	: 'Abs Malsupre',
+		alignAbsMiddle	: 'Abs Centre',
 		alignBaseline	: 'Je Malsupro de Teksto',
-		alignBottom	: 'Malsupre',
-		alignMiddle	: 'Centre',
-		alignRight	: 'Dekstre',
+		alignBottom		: 'Malsupre',
+		alignMiddle		: 'Centre',
+		alignRight		: 'Dekstre',
 		alignTextTop	: 'Je Supro de Teksto',
-		alignTop	: 'Supre',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Fona Koloro',
-		width	: 'Larĝo',
-		height	: 'Alto',
-		hSpace	: 'HSpaco',
-		vSpace	: 'VSpaco',
-		validateSrc : 'Bonvolu entajpi la URL-on',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Supre',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Fona Koloro',
+		width			: 'Larĝo',
+		height			: 'Alto',
+		hSpace			: 'HSpaco',
+		vSpace			: 'VSpaco',
+		validateSrc		: 'Bonvolu entajpi la URL-on',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'Mienvinjeto',
-		title	: 'Enmeti Mienvinjeton'
+		title	: 'Enmeti Mienvinjeton',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Numera Listo',
-	bulletedlist : 'Bula Listo',
-	indent : 'Pligrandigi Krommarĝenon',
-	outdent : 'Malpligrandigi Krommarĝenon',
+	numberedlist	: 'Numera Listo',
+	bulletedlist	: 'Bula Listo',
+	indent			: 'Pligrandigi Krommarĝenon',
+	outdent			: 'Malpligrandigi Krommarĝenon',
 
 	justify :
 	{
-		left : 'Maldekstrigi',
-		center : 'Centrigi',
-		right : 'Dekstrigi',
-		block : 'Ĝisrandigi Ambaŭflanke'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: 'Maldekstrigi',
+		center	: 'Centrigi',
+		right	: 'Dekstrigi',
+		block	: 'Ĝisrandigi Ambaŭflanke'
+	},
+
+	blockquote : 'Block Quote', // MISSING
 
 	clipboard :
 	{
 		title		: 'Interglui',
-		cutError	: 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (ctrl-X).',
-		copyError	: 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (ctrl-C).',
-		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK', // MISSING
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+		cutError	: 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-X).',
+		copyError	: 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-C).',
+		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK', // MISSING
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Interglui el Word',
-		title : 'Interglui el Word',
-		advice : 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.', // MISSING
-		ignoreFontFace : 'Ignore Font Face definitions', // MISSING
-		removeStyle : 'Remove Styles definitions' // MISSING
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Interglui el Word',
+		title			: 'Interglui el Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Interglui kiel Tekston',
-		title : 'Interglui kiel Tekston'
+		button	: 'Interglui kiel Tekston',
+		title	: 'Interglui kiel Tekston'
 	},
 
 	templates :
 	{
-		button : 'Templates', // MISSING
-		title : 'Content Templates', // MISSING
-		insertOption: 'Replace actual contents', // MISSING
-		selectPromptMsg: 'Please select the template to open in the editor', // MISSING
-		emptyListMsg : '(No templates defined)' // MISSING
+		button			: 'Templates', // MISSING
+		title			: 'Content Templates', // MISSING
+		options : 'Template Options', // MISSING
+		insertOption	: 'Replace actual contents', // MISSING
+		selectPromptMsg	: 'Please select the template to open in the editor', // MISSING
+		emptyListMsg	: '(No templates defined)' // MISSING
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Stilo',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Stilo',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Formato',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Formato',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normala',
-		tag_pre : 'Formatita',
-		tag_address : 'Adreso',
-		tag_h1 : 'Titolo 1',
-		tag_h2 : 'Titolo 2',
-		tag_h3 : 'Titolo 3',
-		tag_h4 : 'Titolo 4',
-		tag_h5 : 'Titolo 5',
-		tag_h6 : 'Titolo 6',
-		tag_div : 'Paragrafo (DIV)'
-	},
+		label		: 'Formato',
+		panelTitle	: 'Formato',
+
+		tag_p		: 'Normala',
+		tag_pre		: 'Formatita',
+		tag_address	: 'Adreso',
+		tag_h1		: 'Titolo 1',
+		tag_h2		: 'Titolo 2',
+		tag_h3		: 'Titolo 3',
+		tag_h4		: 'Titolo 4',
+		tag_h5		: 'Titolo 5',
+		tag_h6		: 'Titolo 6',
+		tag_div		: 'Paragrafo (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Tiparo',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Tiparo',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Tiparo',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Tiparo'
 	},
 
 	fontSize :
 	{
-		label : 'Grando',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Grando',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Grando',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Grando'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Teksta Koloro',
-		bgColorTitle : 'Fona Koloro',
-		auto : 'Aŭtomata',
-		more : 'Pli da Koloroj...'
+		textColorTitle	: 'Teksta Koloro',
+		bgColorTitle	: 'Fona Koloro',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Aŭtomata',
+		more			: 'Pli da Koloroj...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/es.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/es.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/es.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Editor de texto enriquecido, %1',
+	editorTitle : 'Editor de texto, %1, pulse ALT 0 para ayuda.',
+
+	// ARIA descriptions.
+	toolbar	: 'Barra de herramientas',
+	editor	: 'Editor de texto enriquecido',
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Formulario',
 		checkbox		: 'Casilla de Verificación',
-		radio		: 'Botones de Radio',
+		radio			: 'Botones de Radio',
 		textField		: 'Campo de Texto',
 		textarea		: 'Area de Texto',
 		hiddenField		: 'Campo Oculto',
 		button			: 'Botón',
-		select	: 'Campo de Selección',
+		select			: 'Campo de Selección',
 		imageButton		: 'Botón Imagen',
 		notSet			: '<No definido>',
@@ -87,11 +91,19 @@
 		advisoryTitle	: 'Título',
 		cssStyle		: 'Estilo',
-		ok				: 'OK',
+		ok				: 'Aceptar',
 		cancel			: 'Cancelar',
+		close			: 'Cerrar',
+		preview			: 'Previsualización',
 		generalTab		: 'General',
 		advancedTab		: 'Avanzado',
-		validateNumberFailed	: 'El valor no es un número.',
-		confirmNewPage	: 'Cualquier cambio que no se haya guardado se perderá. ¿Está seguro de querer crear una nueva página?',
-		confirmCancel	: 'Algunas de las opciones se han cambiado. ¿Está seguro de querer cerrar el diálogo?',
+		validateNumberFailed : 'El valor no es un número.',
+		confirmNewPage	: 'Cualquier cambio que no se haya guardado se perderá.\r\n¿Está seguro de querer crear una nueva página?',
+		confirmCancel	: 'Algunas de las opciones se han cambiado.\r\n¿Está seguro de querer cerrar el diálogo?',
+		options			: 'Opciones',
+		target			: 'Destino',
+		targetNew		: 'Nueva ventana (_blank)',
+		targetTop		: 'Ventana principal (_top)',
+		targetSelf		: 'Misma ventana (_self)',
+		targetParent	: 'Ventana padre (_parent)',
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Opciones del menú contextual'
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Insertar Caracter Especial',
-		title		: 'Seleccione un caracter especial'
+		title		: 'Seleccione un caracter especial',
+		options : 'Opciones de caracteres especiales'
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Insertar/Editar Vínculo',
+		other 		: '<otro>',
 		menu		: 'Editar Vínculo',
 		title		: 'Vínculo',
@@ -117,14 +136,9 @@
 		advanced	: 'Avanzado',
 		type		: 'Tipo de vínculo',
+		toUrl		: 'URL',
 		toAnchor	: 'Referencia en esta página',
 		toEmail		: 'E-Mail',
-		target		: 'Destino',
-		targetNotSet	: '<No definido>',
-		targetFrame	: '<marco>',
-		targetPopup	: '<ventana emergente>',
-		targetNew	: 'Nueva Ventana(_blank)',
-		targetTop	: 'Ventana primaria (_top)',
-		targetSelf	: 'Misma Ventana (_self)',
-		targetParent	: 'Ventana Padre (_parent)',
+		targetFrame		: '<marco>',
+		targetPopup		: '<ventana emergente>',
 		targetFrameName	: 'Nombre del Marco Destino',
 		targetPopupName	: 'Nombre de Ventana Emergente',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Redimensionable',
 		popupStatusBar	: 'Barra de Estado',
-		popupLocationBar	: 'Barra de ubicación',
+		popupLocationBar: 'Barra de ubicación',
 		popupToolbar	: 'Barra de Herramientas',
 		popupMenuBar	: 'Barra de Menú',
@@ -144,10 +158,9 @@
 		id				: 'Id',
 		langDir			: 'Orientación',
-		langDirNotSet	: '<No definido>',
 		langDirLTR		: 'Izquierda a Derecha (LTR)',
 		langDirRTL		: 'Derecha a Izquierda (RTL)',
 		acccessKey		: 'Clave de Acceso',
 		name			: 'Nombre',
-		langCode		: 'Orientación',
+		langCode		: 'Código idioma',
 		tabIndex		: 'Indice de tabulación',
 		advisoryTitle	: 'Título',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Propiedades de lista numerada',
+		bulletedTitle		: 'Propiedades de viñetas',
+		type				: 'Tipo',
+		start				: 'Inicio',
+		circle				: 'Círculo',
+		disc				: 'Disco',
+		square				: 'Cuadrado',
+		none				: 'Ninguno',
+		notset				: '<sin establecer>',
+		armenian			: 'Numeración armenia',
+		georgian			: 'Numeración georgiana (an, ban, gan, etc.)',
+		lowerRoman			: 'Números romanos en minúsculas (i, ii, iii, iv, v, etc.)',
+		upperRoman			: 'Números romanos en mayúsculas (I, II, III, IV, V, etc.)',
+		lowerAlpha			: 'Alfabeto en minúsculas (a, b, c, d, e, etc.)',
+		upperAlpha			: 'Alfabeto en mayúsculas  (A, B, C, D, E, etc.)',
+		lowerGreek			: 'Letras griegas (alpha, beta, gamma, etc.)',
+		decimal				: 'Decimal (1, 2, 3, etc.)',
+		decimalLeadingZero	: 'Decimal con cero inicial (01, 02, 03, etc.)'
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Tamaño de Borde',
 		align		: 'Alineación',
-		alignNotSet	: '<No establecido>',
 		alignLeft	: 'Izquierda',
 		alignCenter	: 'Centrado',
@@ -211,4 +246,5 @@
 		widthPx		: 'pixeles',
 		widthPc		: 'porcentaje',
+		widthUnit	: 'unidad de la anchura',
 		height		: 'Altura',
 		cellSpace	: 'Esp. e/celdas',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'La expansión de filas debe ser un número entero.',
 			invalidColSpan	: 'La expansión de columnas debe ser un número entero.',
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Elegir'
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Acción',
 		method		: 'Método',
-		encoding	: 'Codificación',
-		target		: 'Destino',
-		targetNotSet	: '<No definido>',
-		targetNew	: 'Nueva Ventana(_blank)',
-		targetTop	: 'Ventana primaria (_top)',
-		targetSelf	: 'Misma Ventana (_self)',
-		targetParent	: 'Ventana Padre (_parent)'
+		encoding	: 'Codificación'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Propiedades de Botón de Imagen',
 		menu		: 'Propiedades de Imagen',
-		infoTab	: 'Información de Imagen',
+		infoTab		: 'Información de Imagen',
 		btnUpload	: 'Enviar al Servidor',
-		url		: 'URL',
-		upload	: 'Cargar',
-		alt		: 'Texto Alternativo',
+		upload		: 'Cargar',
+		alt			: 'Texto Alternativo',
 		width		: 'Anchura',
-		height	: 'Altura',
+		height		: 'Altura',
 		lockRatio	: 'Proporcional',
+		unlockRatio	: 'Desbloquear el proporcional',
 		resetSize	: 'Tamaño Original',
-		border	: 'Borde',
-		hSpace	: 'Esp.Horiz',
-		vSpace	: 'Esp.Vert',
+		border		: 'Borde',
+		hSpace		: 'Esp.Horiz',
+		vSpace		: 'Esp.Vert',
 		align		: 'Alineación',
 		alignLeft	: 'Izquierda',
-		alignAbsBottom: 'Abs inferior',
-		alignAbsMiddle: 'Abs centro',
-		alignBaseline	: 'Línea de base',
-		alignBottom	: 'Pie',
-		alignMiddle	: 'Centro',
 		alignRight	: 'Derecha',
-		alignTextTop	: 'Tope del texto',
-		alignTop	: 'Tope',
-		preview	: 'Vista Previa',
 		alertUrl	: 'Por favor escriba la URL de la imagen',
-		linkTab	: 'Vínculo',
+		linkTab		: 'Vínculo',
 		button2Img	: '¿Desea convertir el botón de imagen en una simple imagen?',
 		img2Button	: '¿Desea convertir la imagen en un botón de imagen?',
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Debe indicar la URL de la imagen.',
+		validateWidth	: 'La anchura debe ser un número.',
+		validateHeight	: 'La altura debe ser un número.',
+		validateBorder	: 'El borde debe ser un número.',
+		validateHSpace	: 'El espaciado horizontal debe ser un número.',
+		validateVSpace	: 'El espaciado vertical debe ser un número.'
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Propiedades de Flash',
 		propertiesTab	: 'Propiedades',
-		title		: 'Propiedades de Flash',
-		chkPlay		: 'Autoejecución',
-		chkLoop		: 'Repetir',
-		chkMenu		: 'Activar Menú Flash',
-		chkFull		: 'Permitir pantalla completa',
- 		scale		: 'Escala',
+		title			: 'Propiedades de Flash',
+		chkPlay			: 'Autoejecución',
+		chkLoop			: 'Repetir',
+		chkMenu			: 'Activar Menú Flash',
+		chkFull			: 'Permitir pantalla completa',
+ 		scale			: 'Escala',
 		scaleAll		: 'Mostrar todo',
 		scaleNoBorder	: 'Sin Borde',
@@ -418,38 +445,38 @@
 		access			: 'Acceso de scripts',
 		accessAlways	: 'Siempre',
-		accessSameDomain	: 'Mismo dominio',
-		accessNever	: 'Nunca',
-		align		: 'Alineación',
-		alignLeft	: 'Izquierda',
-		alignAbsBottom: 'Abs inferior',
-		alignAbsMiddle: 'Abs centro',
+		accessSameDomain: 'Mismo dominio',
+		accessNever		: 'Nunca',
+		align			: 'Alineación',
+		alignLeft		: 'Izquierda',
+		alignAbsBottom	: 'Abs inferior',
+		alignAbsMiddle	: 'Abs centro',
 		alignBaseline	: 'Línea de base',
-		alignBottom	: 'Pie',
-		alignMiddle	: 'Centro',
-		alignRight	: 'Derecha',
+		alignBottom		: 'Pie',
+		alignMiddle		: 'Centro',
+		alignRight		: 'Derecha',
 		alignTextTop	: 'Tope del texto',
-		alignTop	: 'Tope',
-		quality		: 'Calidad',
-		qualityBest		 : 'La mejor',
-		qualityHigh		 : 'Alta',
-		qualityAutoHigh	 : 'Auto Alta',
-		qualityMedium	 : 'Media',
-		qualityAutoLow	 : 'Auto Baja',
-		qualityLow		 : 'Baja',
-		windowModeWindow	 : 'Ventana',
-		windowModeOpaque	 : 'Opaco',
-		windowModeTransparent	 : 'Transparente',
-		windowMode	: 'WindowMode',
-		flashvars	: 'FlashVars',
-		bgcolor	: 'Color de Fondo',
-		width	: 'Anchura',
-		height	: 'Altura',
-		hSpace	: 'Esp.Horiz',
-		vSpace	: 'Esp.Vert',
-		validateSrc : 'Por favor escriba el vínculo URL',
-		validateWidth : 'Anchura debe ser un número.',
-		validateHeight : 'Altura debe ser un número.',
-		validateHSpace : 'Esp.Horiz debe ser un número.',
-		validateVSpace : 'Esp.Vert debe ser un número.'
+		alignTop		: 'Tope',
+		quality			: 'Calidad',
+		qualityBest		: 'La mejor',
+		qualityHigh		: 'Alta',
+		qualityAutoHigh	: 'Auto Alta',
+		qualityMedium	: 'Media',
+		qualityAutoLow	: 'Auto Baja',
+		qualityLow		: 'Baja',
+		windowModeWindow: 'Ventana',
+		windowModeOpaque: 'Opaco',
+		windowModeTransparent : 'Transparente',
+		windowMode		: 'WindowMode',
+		flashvars		: 'Opciones',
+		bgcolor			: 'Color de Fondo',
+		width			: 'Anchura',
+		height			: 'Altura',
+		hSpace			: 'Esp.Horiz',
+		vSpace			: 'Esp.Vert',
+		validateSrc		: 'Por favor escriba el vínculo URL',
+		validateWidth	: 'Anchura debe ser un número.',
+		validateHeight	: 'Altura debe ser un número.',
+		validateHSpace	: 'Esp.Horiz debe ser un número.',
+		validateVSpace	: 'Esp.Vert debe ser un número.'
 	},
 
@@ -474,29 +501,31 @@
 		oneChange		: 'Control finalizado: se ha cambiado una palabra',
 		manyChanges		: 'Control finalizado: se ha cambiado %1 palabras',
-		ieSpellDownload	: 'Módulo de Control de Ortografía no instalado. ¿Desea descargarlo ahora?'
+		ieSpellDownload	: 'Módulo de Control de Ortografía no instalado.\r\n¿Desea descargarlo ahora?'
 	},
 
 	smiley :
 	{
-		toolbar	: 'Emoticons',
-		title	: 'Insertar un Emoticon'
+		toolbar	: 'Emoticonos',
+		title	: 'Insertar un Emoticon',
+		options : 'Opciones de emoticonos'
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Ruta de los elementos',
 		eleTitle : '%1 elemento'
 	},
 
-	numberedlist : 'Numeración',
-	bulletedlist : 'Viñetas',
-	indent : 'Aumentar Sangría',
-	outdent : 'Disminuir Sangría',
+	numberedlist	: 'Numeración',
+	bulletedlist	: 'Viñetas',
+	indent			: 'Aumentar Sangría',
+	outdent			: 'Disminuir Sangría',
 
 	justify :
 	{
-		left : 'Alinear a Izquierda',
-		center : 'Centrar',
-		right : 'Alinear a Derecha',
-		block : 'Justificado'
+		left	: 'Alinear a Izquierda',
+		center	: 'Centrar',
+		right	: 'Alinear a Derecha',
+		block	: 'Justificado'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Pegar',
-		cutError	: 'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado. Por favor use el teclado (Ctrl+X).',
-		copyError	: 'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado. Por favor use el teclado (Ctrl+C).',
-		pasteMsg	: 'Por favor pegue dentro del cuadro utilizando el teclado (<STRONG>Ctrl+V</STRONG>); luego presione <STRONG>OK</STRONG>.',
-		securityMsg	: 'Debido a la configuración de seguridad de su navegador, el editor no tiene acceso al portapapeles. Es necesario que lo pegue de nuevo en esta ventana.'
+		cutError	: 'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado.\r\nPor favor use el teclado (Ctrl/Cmd+X).',
+		copyError	: 'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado.\r\nPor favor use el teclado (Ctrl/Cmd+C).',
+		pasteMsg	: 'Por favor pegue dentro del cuadro utilizando el teclado (<STRONG>Ctrl/Cmd+V</STRONG>);\r\nluego presione <STRONG>Aceptar</STRONG>.',
+		securityMsg	: 'Debido a la configuración de seguridad de su navegador, el editor no tiene acceso al portapapeles.\r\nEs necesario que lo pegue de nuevo en esta ventana.',
+		pasteArea	: 'Zona de pegado'
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Pegar desde Word',
-		title : 'Pegar desde Word',
-		advice : 'Por favor pegue dentro del cuadro utilizando el teclado (<STRONG>Ctrl+V</STRONG>); luego presione <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignorar definiciones de fuentes',
-		removeStyle : 'Remover definiciones de estilo'
+		confirmCleanup	: 'El texto que desea parece provenir de Word.\r\n¿Desea depurarlo antes de pegarlo?',
+		toolbar			: 'Pegar desde Word',
+		title			: 'Pegar desde Word',
+		error			: 'No ha sido posible limpiar los datos debido a un error interno'
 	},
 
 	pasteText :
 	{
-		button : 'Pegar como Texto Plano',
-		title : 'Pegar como Texto Plano'
+		button	: 'Pegar como Texto Plano',
+		title	: 'Pegar como Texto Plano'
 	},
 
 	templates :
 	{
-		button : 'Plantillas',
-		title : 'Contenido de Plantillas',
-		insertOption: 'Reemplazar el contenido actual',
-		selectPromptMsg: 'Por favor selecciona la plantilla a abrir en el editor<br>(el contenido actual se perderá):',
-		emptyListMsg : '(No hay plantillas definidas)'
+		button			: 'Plantillas',
+		title			: 'Contenido de Plantillas',
+		options : 'Opciones de plantillas',
+		insertOption	: 'Reemplazar el contenido actual',
+		selectPromptMsg	: 'Por favor selecciona la plantilla a abrir en el editor<br>(el contenido actual se perderá):',
+		emptyListMsg	: '(No hay plantillas definidas)'
 	},
 
@@ -540,136 +570,164 @@
 	stylesCombo :
 	{
-		label : 'Estilo',
-		voiceLabel : 'Estilos',
-		panelVoiceLabel : 'Elija un estilo',
-		panelTitle1 : 'Estilos de párrafo',
-		panelTitle2 : 'Estilos de carácter',
-		panelTitle3 : 'Estilos de objeto'
+		label		: 'Estilo',
+		panelTitle	: 'Estilos para formatear',
+		panelTitle1	: 'Estilos de párrafo',
+		panelTitle2	: 'Estilos de carácter',
+		panelTitle3	: 'Estilos de objeto'
 	},
 
 	format :
 	{
-		label : 'Formato',
-		voiceLabel : 'Formato',
-		panelTitle : 'Formato',
-		panelVoiceLabel : 'Elija un formato de párrafo',
-
-		tag_p : 'Normal',
-		tag_pre : 'Con formato',
-		tag_address : 'Dirección',
-		tag_h1 : 'Encabezado 1',
-		tag_h2 : 'Encabezado 2',
-		tag_h3 : 'Encabezado 3',
-		tag_h4 : 'Encabezado 4',
-		tag_h5 : 'Encabezado 5',
-		tag_h6 : 'Encabezado 6',
-		tag_div : 'Normal (DIV)'
-	},
+		label		: 'Formato',
+		panelTitle	: 'Formato',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Con formato',
+		tag_address	: 'Dirección',
+		tag_h1		: 'Encabezado 1',
+		tag_h2		: 'Encabezado 2',
+		tag_h3		: 'Encabezado 3',
+		tag_h4		: 'Encabezado 4',
+		tag_h5		: 'Encabezado 5',
+		tag_h6		: 'Encabezado 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Crear contenedor DIV',
+		toolbar				: 'Crear contenedor DIV',
+		cssClassInputLabel	: 'Clase de hoja de estilos',
+		styleSelectLabel	: 'Estilo',
+		IdInputLabel		: 'Id',
+		languageCodeInputLabel	: ' Codigo de idioma',
+		inlineStyleInputLabel	: 'Estilo',
+		advisoryTitleInputLabel	: 'Título',
+		langDirLabel		: 'Orientación',
+		langDirLTRLabel		: 'Izquierda a Derecha (LTR)',
+		langDirRTLLabel		: 'Derecha a Izquierda (RTL)',
+		edit				: 'Editar Div',
+		remove				: 'Quitar Div'
+  	},
 
 	font :
 	{
-		label : 'Fuente',
-		voiceLabel : 'Fuente',
-		panelTitle : 'Fuente',
-		panelVoiceLabel : 'Elija una fuente'
+		label		: 'Fuente',
+		voiceLabel	: 'Fuente',
+		panelTitle	: 'Fuente'
 	},
 
 	fontSize :
 	{
-		label : 'Tamaño',
-		voiceLabel : 'Tamaño de fuente',
-		panelTitle : 'Tamaño',
-		panelVoiceLabel : 'Elija un tamaño de fuente'
+		label		: 'Tamaño',
+		voiceLabel	: 'Tamaño de fuente',
+		panelTitle	: 'Tamaño'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Color de Texto',
-		bgColorTitle : 'Color de Fondo',
-		auto : 'Automático',
-		more : 'Más Colores...'
+		textColorTitle	: 'Color de Texto',
+		bgColorTitle	: 'Color de Fondo',
+		panelTitle		: 'Colores',
+		auto			: 'Automático',
+		more			: 'Más Colores...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Negro',
+		'800000' : 'Marrón oscuro',
+		'8B4513' : 'Marrón tierra',
+		'2F4F4F' : 'Pizarra Oscuro',
+		'008080' : 'Azul verdoso',
+		'000080' : 'Azul marino',
+		'4B0082' : 'Añil',
+		'696969' : 'Gris oscuro',
+		'B22222' : 'Ladrillo',
+		'A52A2A' : 'Marrón',
+		'DAA520' : 'Oro oscuro',
+		'006400' : 'Verde oscuro',
+		'40E0D0' : 'Turquesa',
+		'0000CD' : 'Azul medio-oscuro',
+		'800080' : 'Púrpura',
+		'808080' : 'Gris',
+		'F00' : 'Rojo',
+		'FF8C00' : 'Naranja oscuro',
+		'FFD700' : 'Oro',
+		'008000' : 'Verde',
+		'0FF' : 'Cian',
+		'00F' : 'Azul',
+		'EE82EE' : 'Violeta',
+		'A9A9A9' : 'Gris medio',
+		'FFA07A' : 'Salmón claro',
+		'FFA500' : 'Naranja',
+		'FFFF00' : 'Amarillo',
+		'00FF00' : 'Lima',
+		'AFEEEE' : 'Turquesa claro',
+		'ADD8E6' : 'Azul claro',
+		'DDA0DD' : 'Violeta claro',
+		'D3D3D3' : 'Gris claro',
+		'FFF0F5' : 'Lavanda rojizo',
+		'FAEBD7' : 'Blanco antiguo',
+		'FFFFE0' : 'Amarillo claro',
+		'F0FFF0' : 'Miel',
+		'F0FFFF' : 'Azul celeste',
+		'F0F8FF' : 'Azul pálido',
+		'E6E6FA' : 'Lavanda',
+		'FFF' : 'Blanco'
 	},
 
 	scayt :
 	{
-		title : 'Comprobar Ortografía Mientras Escribe',
-		enable : 'Activar COME',
-		disable : 'Desactivar COME',
-		about : 'Acerca de COME',
-		toggle : 'Cambiar COME',
-		options : 'Opciones',
-		langs : 'Idiomas',
-		moreSuggestions : 'Más sugerencias',
-		ignore : 'Ignorar',
-		ignoreAll : 'Ignorar Todas',
-		addWord : 'Añadir palabra',
-		emptyDic : 'El nombre del diccionario no puede estar en blanco.',
-		optionsTab : 'Opciones',
-		languagesTab : 'Idiomas',
-		dictionariesTab : 'Diccionarios',
-		aboutTab : 'Acerca de'
+		title			: 'Comprobar Ortografía Mientras Escribe',
+		opera_title		: 'No soportado en Opera',
+		enable			: 'Activar Corrector',
+		disable			: 'Desactivar Corrector',
+		about			: 'Acerca de Corrector',
+		toggle			: 'Cambiar Corrector',
+		options			: 'Opciones',
+		langs			: 'Idiomas',
+		moreSuggestions	: 'Más sugerencias',
+		ignore			: 'Ignorar',
+		ignoreAll		: 'Ignorar Todas',
+		addWord			: 'Añadir palabra',
+		emptyDic		: 'El nombre del diccionario no puede estar en blanco.',
+
+		optionsTab		: 'Opciones',
+		allCaps			: 'Omitir palabras en MAYÚSCULAS',
+		ignoreDomainNames : 'Omitir nombres de dominio',
+		mixedCase		: 'Ignorar palabras con combinación de mayúsculas y minúsculas',
+		mixedWithDigits	: 'Omitir palabras con números',
+
+		languagesTab	: 'Idiomas',
+
+		dictionariesTab	: 'Diccionarios',
+		dic_field_name	: 'Nombre del diccionario',
+		dic_create		: 'Crear',
+		dic_restore		: 'Recuperar',
+		dic_delete		: 'Borrar',
+		dic_rename		: 'Renombrar',
+		dic_info		: 'Inicialmente el Diccionario de usuario se guarda en una Cookie. Sin embargo, las cookies están limitadas en tamaño. Cuando el diccionario crece a un punto en el que no se puede guardar en una Cookie, el diccionario puede ser almacenado en nuestro servidor. Para almacenar su diccionario personalizado en nuestro servidor debe especificar un nombre para su diccionario. Si ya ha guardado un diccionaro, por favor, escriba su nombre y pulse el botón Recuperar',
+
+		aboutTab		: 'Acerca de'
 	},
 
 	about :
 	{
-		title : 'Acerca de CKEditor',
-		dlgTitle : 'Acerca de CKEditor',
-		moreInfo : 'Para información de licencia, por favor visite nuestro sitio web:',
-		copy : 'Copyright &copy; $1. Todos los derechos reservados.'
+		title		: 'Acerca de CKEditor',
+		dlgTitle	: 'Acerca de CKEditor',
+		moreInfo	: 'Para información de licencia, por favor visite nuestro sitio web:',
+		copy		: 'Copyright &copy; $1. Todos los derechos reservados.'
 	},
 
 	maximize : 'Maximizar',
-	minimize : 'Minimize', // MISSING
+	minimize : 'Minimizar',
 
 	fakeobjects :
 	{
-		anchor : 'Ancla',
-		flash : 'Animación flash',
-		div : 'Salto de página',
-		unknown : 'Objeto desconocido'
+		anchor	: 'Ancla',
+		flash	: 'Animación flash',
+		div		: 'Salto de página',
+		unknown	: 'Objeto desconocido'
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Elegir color',
+		options	:	'Opciones de colores',
+		highlight	: 'Muestra',
+		selected	: 'Elegido',
+		clear		: 'Borrar'
+	},
+
+	toolbarCollapse	: 'Contraer barra de herramientas',
+	toolbarExpand	: 'Expandir barra de herramientas'
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/et.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/et.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/et.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Vorm',
 		checkbox		: 'Märkeruut',
-		radio		: 'Raadionupp',
+		radio			: 'Raadionupp',
 		textField		: 'Tekstilahter',
 		textarea		: 'Tekstiala',
 		hiddenField		: 'Varjatud lahter',
 		button			: 'Nupp',
-		select	: 'Valiklahter',
+		select			: 'Valiklahter',
 		imageButton		: 'Piltnupp',
 		notSet			: '<määramata>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Loobu',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'Täpsemalt',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Sisesta erimärk',
-		title		: 'Vali erimärk'
+		title		: 'Vali erimärk',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Sisesta link / Muuda linki',
+		other 		: '<muu>',
 		menu		: 'Muuda linki',
 		title		: 'Link',
@@ -117,14 +136,9 @@
 		advanced	: 'Täpsemalt',
 		type		: 'Lingi tüüp',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Ankur sellel lehel',
 		toEmail		: 'E-post',
-		target		: 'Sihtkoht',
-		targetNotSet	: '<määramata>',
-		targetFrame	: '<raam>',
-		targetPopup	: '<hüpikaken>',
-		targetNew	: 'Uus aken (_blank)',
-		targetTop	: 'Pealmine aken (_top)',
-		targetSelf	: 'Sama aken (_self)',
-		targetParent	: 'Esivanem aken (_parent)',
+		targetFrame		: '<raam>',
+		targetPopup		: '<hüpikaken>',
 		targetFrameName	: 'Sihtmärk raami nimi',
 		targetPopupName	: 'Hüpikakna nimi',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Olekuriba',
-		popupLocationBar	: 'Aadressiriba',
+		popupLocationBar: 'Aadressiriba',
 		popupToolbar	: 'Tööriistariba',
 		popupMenuBar	: 'Menüüriba',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Keele suund',
-		langDirNotSet	: '<määramata>',
 		langDirLTR		: 'Vasakult paremale (LTR)',
 		langDirRTL		: 'Paremalt vasakule (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Joone suurus',
 		align		: 'Joondus',
-		alignNotSet	: '<Määramata>',
 		alignLeft	: 'Vasak',
 		alignCenter	: 'Kesk',
@@ -211,4 +246,5 @@
 		widthPx		: 'pikslit',
 		widthPc		: 'protsenti',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Kõrgus',
 		cellSpace	: 'Lahtri vahe',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Toiming',
 		method		: 'Meetod',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Sihtkoht',
-		targetNotSet	: '<määramata>',
-		targetNew	: 'Uus aken (_blank)',
-		targetTop	: 'Pealmine aken (_top)',
-		targetSelf	: 'Sama aken (_self)',
-		targetParent	: 'Esivanem aken (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Piltnupu omadused',
 		menu		: 'Pildi atribuudid',
-		infoTab	: 'Pildi info',
+		infoTab		: 'Pildi info',
 		btnUpload	: 'Saada serverissee',
-		url		: 'URL',
-		upload	: 'Lae üles',
-		alt		: 'Alternatiivne tekst',
+		upload		: 'Lae üles',
+		alt			: 'Alternatiivne tekst',
 		width		: 'Laius',
-		height	: 'Kõrgus',
+		height		: 'Kõrgus',
 		lockRatio	: 'Lukusta kuvasuhe',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Lähtesta suurus',
-		border	: 'Joon',
-		hSpace	: 'H. vaheruum',
-		vSpace	: 'V. vaheruum',
+		border		: 'Joon',
+		hSpace		: 'H. vaheruum',
+		vSpace		: 'V. vaheruum',
 		align		: 'Joondus',
 		alignLeft	: 'Vasak',
-		alignAbsBottom: 'Abs alla',
-		alignAbsMiddle: 'Abs keskele',
-		alignBaseline	: 'Baasjoonele',
-		alignBottom	: 'Alla',
-		alignMiddle	: 'Keskele',
 		alignRight	: 'Paremale',
-		alignTextTop	: 'Tekstit üles',
-		alignTop	: 'Üles',
-		preview	: 'Eelvaade',
 		alertUrl	: 'Palun kirjuta pildi URL',
-		linkTab	: 'Link',
+		linkTab		: 'Link',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Flash omadused',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Flash omadused',
-		chkPlay		: 'Automaatne start ',
-		chkLoop		: 'Korduv',
-		chkMenu		: 'Võimalda flash menüü',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Mastaap',
+		title			: 'Flash omadused',
+		chkPlay			: 'Automaatne start ',
+		chkLoop			: 'Korduv',
+		chkMenu			: 'Võimalda flash menüü',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Mastaap',
 		scaleAll		: 'Näita kõike',
 		scaleNoBorder	: 'Äärist ei ole',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Joondus',
-		alignLeft	: 'Vasak',
-		alignAbsBottom: 'Abs alla',
-		alignAbsMiddle: 'Abs keskele',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Joondus',
+		alignLeft		: 'Vasak',
+		alignAbsBottom	: 'Abs alla',
+		alignAbsMiddle	: 'Abs keskele',
 		alignBaseline	: 'Baasjoonele',
-		alignBottom	: 'Alla',
-		alignMiddle	: 'Keskele',
-		alignRight	: 'Paremale',
+		alignBottom		: 'Alla',
+		alignMiddle		: 'Keskele',
+		alignRight		: 'Paremale',
 		alignTextTop	: 'Tekstit üles',
-		alignTop	: 'Üles',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Tausta värv',
-		width	: 'Laius',
-		height	: 'Kõrgus',
-		hSpace	: 'H. vaheruum',
-		vSpace	: 'V. vaheruum',
-		validateSrc : 'Palun kirjuta lingi URL',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Üles',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Tausta värv',
+		width			: 'Laius',
+		height			: 'Kõrgus',
+		hSpace			: 'H. vaheruum',
+		vSpace			: 'V. vaheruum',
+		validateSrc		: 'Palun kirjuta lingi URL',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Emotikon',
-		title	: 'Sisesta emotikon'
+		title	: 'Sisesta emotikon',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Nummerdatud loetelu',
-	bulletedlist : 'Punktiseeritud loetelu',
-	indent : 'Suurenda taanet',
-	outdent : 'Vähenda taanet',
+	numberedlist	: 'Nummerdatud loetelu',
+	bulletedlist	: 'Punktiseeritud loetelu',
+	indent			: 'Suurenda taanet',
+	outdent			: 'Vähenda taanet',
 
 	justify :
 	{
-		left : 'Vasakjoondus',
-		center : 'Keskjoondus',
-		right : 'Paremjoondus',
-		block : 'Rööpjoondus'
+		left	: 'Vasakjoondus',
+		center	: 'Keskjoondus',
+		right	: 'Paremjoondus',
+		block	: 'Rööpjoondus'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Kleebi',
-		cutError	: 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+X).',
-		copyError	: 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+C).',
-		pasteMsg	: 'Palun kleebi järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (<STRONG>Ctrl+V</STRONG>) ja vajuta seejärel <STRONG>OK</STRONG>.',
-		securityMsg	: 'Sinu veebisirvija turvaseadete tõttu, ei oma redaktor otsest ligipääsu lõikelaua andmetele. Sa pead kleepima need uuesti siia aknasse.'
+		cutError	: 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+X).',
+		copyError	: 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+C).',
+		pasteMsg	: 'Palun kleebi järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (<STRONG>Ctrl/Cmd+V</STRONG>) ja vajuta seejärel <STRONG>OK</STRONG>.',
+		securityMsg	: 'Sinu veebisirvija turvaseadete tõttu, ei oma redaktor otsest ligipääsu lõikelaua andmetele. Sa pead kleepima need uuesti siia aknasse.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Kleebi Wordist',
-		title : 'Kleebi Wordist',
-		advice : 'Palun kleebi järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (<STRONG>Ctrl+V</STRONG>) ja vajuta seejärel <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignoreeri kirja definitsioone',
-		removeStyle : 'Eemalda stiilide definitsioonid'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Kleebi Wordist',
+		title			: 'Kleebi Wordist',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Kleebi tavalise tekstina',
-		title : 'Kleebi tavalise tekstina'
+		button	: 'Kleebi tavalise tekstina',
+		title	: 'Kleebi tavalise tekstina'
 	},
 
 	templates :
 	{
-		button : 'Šabloon',
-		title : 'Sisu šabloonid',
-		insertOption: 'Asenda tegelik sisu',
-		selectPromptMsg: 'Palun vali šabloon, et avada see redaktoris<br />(praegune sisu läheb kaotsi):',
-		emptyListMsg : '(Ühtegi šablooni ei ole defineeritud)'
+		button			: 'Šabloon',
+		title			: 'Sisu šabloonid',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Asenda tegelik sisu',
+		selectPromptMsg	: 'Palun vali šabloon, et avada see redaktoris<br />(praegune sisu läheb kaotsi):',
+		emptyListMsg	: '(Ühtegi šablooni ei ole defineeritud)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Laad',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Laad',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Vorming',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Vorming',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Tavaline',
-		tag_pre : 'Vormindatud',
-		tag_address : 'Aadress',
-		tag_h1 : 'Pealkiri 1',
-		tag_h2 : 'Pealkiri 2',
-		tag_h3 : 'Pealkiri 3',
-		tag_h4 : 'Pealkiri 4',
-		tag_h5 : 'Pealkiri 5',
-		tag_h6 : 'Pealkiri 6',
-		tag_div : 'Tavaline (DIV)'
-	},
+		label		: 'Vorming',
+		panelTitle	: 'Vorming',
+
+		tag_p		: 'Tavaline',
+		tag_pre		: 'Vormindatud',
+		tag_address	: 'Aadress',
+		tag_h1		: 'Pealkiri 1',
+		tag_h2		: 'Pealkiri 2',
+		tag_h3		: 'Pealkiri 3',
+		tag_h4		: 'Pealkiri 4',
+		tag_h5		: 'Pealkiri 5',
+		tag_h6		: 'Pealkiri 6',
+		tag_div		: 'Tavaline (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Kiri',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Kiri',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Kiri',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Kiri'
 	},
 
 	fontSize :
 	{
-		label : 'Suurus',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Suurus',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Suurus',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Suurus'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Teksti värv',
-		bgColorTitle : 'Tausta värv',
-		auto : 'Automaatne',
-		more : 'Rohkem värve...'
+		textColorTitle	: 'Teksti värv',
+		bgColorTitle	: 'Tausta värv',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automaatne',
+		more			: 'Rohkem värve...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/eu.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/eu.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/eu.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Testu aberastuentzako editorea, %1',
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Formularioa',
 		checkbox		: 'Kontrol-laukia',
-		radio		: 'Aukera-botoia',
+		radio			: 'Aukera-botoia',
 		textField		: 'Testu Eremua',
 		textarea		: 'Testu-area',
 		hiddenField		: 'Ezkutuko Eremua',
 		button			: 'Botoia',
-		select	: 'Hautespen Eremua',
+		select			: 'Hautespen Eremua',
 		imageButton		: 'Irudi Botoia',
 		notSet			: '<Ezarri gabe>',
@@ -89,9 +93,17 @@
 		ok				: 'Ados',
 		cancel			: 'Utzi',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'Orokorra',
 		advancedTab		: 'Aurreratua',
-		validateNumberFailed	: 'Balio hau ez da zenbaki bat.',
+		validateNumberFailed : 'Balio hau ez da zenbaki bat.',
 		confirmNewPage	: 'Eduki honetan gorde gabe dauden aldaketak galduko dira. Ziur zaude orri berri bat kargatu nahi duzula?',
 		confirmCancel	: 'Aukera batzuk aldatu egin dira. Ziur zaude elkarrizketa-koadroa itxi nahi duzula?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Txertatu Karaktere Berezia',
-		title		: 'Karaktere Berezia Aukeratu'
+		title		: 'Karaktere Berezia Aukeratu',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Txertatu/Editatu Esteka',
+		other 		: '<other>', // MISSING
 		menu		: 'Aldatu Esteka',
 		title		: 'Esteka',
@@ -117,14 +136,9 @@
 		advanced	: 'Aurreratua',
 		type		: 'Esteka Mota',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Aingura orrialde honetan',
 		toEmail		: 'ePosta',
-		target		: 'Target (Helburua)',
-		targetNotSet	: '<Ezarri gabe>',
-		targetFrame	: '<marko>',
-		targetPopup	: '<popup leihoa>',
-		targetNew	: 'Leiho Berria (_blank)',
-		targetTop	: 'Goiko Leihoa (_top)',
-		targetSelf	: 'Leiho Berdina (_self)',
-		targetParent	: 'Leiho Gurasoa (_parent)',
+		targetFrame		: '<marko>',
+		targetPopup		: '<popup leihoa>',
 		targetFrameName	: 'Marko Helburuaren Izena',
 		targetPopupName	: 'Popup Leihoaren Izena',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Tamaina Aldakorra',
 		popupStatusBar	: 'Egoera Barra',
-		popupLocationBar	: 'Kokaleku Barra',
+		popupLocationBar: 'Kokaleku Barra',
 		popupToolbar	: 'Tresna Barra',
 		popupMenuBar	: 'Menu Barra',
@@ -144,5 +158,4 @@
 		id				: 'Id',
 		langDir			: 'Hizkuntzaren Norabidea',
-		langDirNotSet	: '<Ezarri gabe>',
 		langDirLTR		: 'Ezkerretik Eskumara(LTR)',
 		langDirRTL		: 'Eskumatik Ezkerrera (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Ertzaren Zabalera',
 		align		: 'Lerrokatu',
-		alignNotSet	: '<Ezarri gabe>',
 		alignLeft	: 'Ezkerrean',
 		alignCenter	: 'Erdian',
@@ -211,4 +246,5 @@
 		widthPx		: 'pixel',
 		widthPc		: 'ehuneko',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Altuera',
 		cellSpace	: 'Gelaxka arteko tartea',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Lerroen hedapena zenbaki osoa izan behar da.',
 			invalidColSpan	: 'Zutabeen hedapena zenbaki osoa izan behar da.',
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Ekintza',
 		method		: 'Metodoa',
-		encoding	: 'Kodeketa',
-		target		: 'Target (Helburua)',
-		targetNotSet	: '<Ezarri gabe>',
-		targetNew	: 'Leiho Berria (_blank)',
-		targetTop	: 'Goiko Leihoa (_top)',
-		targetSelf	: 'Leiho Berdina (_self)',
-		targetParent	: 'Leiho Gurasoa (_parent)'
+		encoding	: 'Kodeketa'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Irudi Botoiaren Ezaugarriak',
 		menu		: 'Irudi Ezaugarriak',
-		infoTab	: 'Irudi informazioa',
+		infoTab		: 'Irudi informazioa',
 		btnUpload	: 'Zerbitzarira bidalia',
-		url		: 'URL',
-		upload	: 'Gora Kargatu',
-		alt		: 'Ordezko Testua',
+		upload		: 'Gora Kargatu',
+		alt			: 'Ordezko Testua',
 		width		: 'Zabalera',
-		height	: 'Altuera',
+		height		: 'Altuera',
 		lockRatio	: 'Erlazioa Blokeatu',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Tamaina Berrezarri',
-		border	: 'Ertza',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
+		border		: 'Ertza',
+		hSpace		: 'HSpace',
+		vSpace		: 'VSpace',
 		align		: 'Lerrokatu',
 		alignLeft	: 'Ezkerrera',
-		alignAbsBottom: 'Abs Behean',
-		alignAbsMiddle: 'Abs Erdian',
-		alignBaseline	: 'Oinan',
-		alignBottom	: 'Behean',
-		alignMiddle	: 'Erdian',
 		alignRight	: 'Eskuman',
-		alignTextTop	: 'Testua Goian',
-		alignTop	: 'Goian',
-		preview	: 'Aurrebista',
 		alertUrl	: 'Mesedez Irudiaren URLa idatzi',
-		linkTab	: 'Esteka',
+		linkTab		: 'Esteka',
 		button2Img	: 'Aukeratutako irudi botoia, irudi normal batean eraldatu nahi duzu?',
 		img2Button	: 'Aukeratutako irudia, irudi botoi batean eraldatu nahi duzu?',
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Flasharen Ezaugarriak',
 		propertiesTab	: 'Ezaugarriak',
-		title		: 'Flasharen Ezaugarriak',
-		chkPlay		: 'Automatikoki Erreproduzitu',
-		chkLoop		: 'Begizta',
-		chkMenu		: 'Flasharen Menua Gaitu',
-		chkFull		: 'Onartu Pantaila osoa',
- 		scale		: 'Eskalatu',
+		title			: 'Flasharen Ezaugarriak',
+		chkPlay			: 'Automatikoki Erreproduzitu',
+		chkLoop			: 'Begizta',
+		chkMenu			: 'Flasharen Menua Gaitu',
+		chkFull			: 'Onartu Pantaila osoa',
+ 		scale			: 'Eskalatu',
 		scaleAll		: 'Dena erakutsi',
 		scaleNoBorder	: 'Ertzik gabe',
@@ -418,38 +445,38 @@
 		access			: 'Scriptak baimendu',
 		accessAlways	: 'Beti',
-		accessSameDomain	: 'Domeinu berdinekoak',
-		accessNever	: 'Inoiz ere ez',
-		align		: 'Lerrokatu',
-		alignLeft	: 'Ezkerrera',
-		alignAbsBottom: 'Abs Behean',
-		alignAbsMiddle: 'Abs Erdian',
+		accessSameDomain: 'Domeinu berdinekoak',
+		accessNever		: 'Inoiz ere ez',
+		align			: 'Lerrokatu',
+		alignLeft		: 'Ezkerrera',
+		alignAbsBottom	: 'Abs Behean',
+		alignAbsMiddle	: 'Abs Erdian',
 		alignBaseline	: 'Oinan',
-		alignBottom	: 'Behean',
-		alignMiddle	: 'Erdian',
-		alignRight	: 'Eskuman',
+		alignBottom		: 'Behean',
+		alignMiddle		: 'Erdian',
+		alignRight		: 'Eskuman',
 		alignTextTop	: 'Testua Goian',
-		alignTop	: 'Goian',
-		quality		: 'Kalitatea',
-		qualityBest		 : 'Hoberena',
-		qualityHigh		 : 'Altua',
-		qualityAutoHigh	 : 'Auto Altua',
-		qualityMedium	 : 'Ertaina',
-		qualityAutoLow	 : 'Auto Baxua',
-		qualityLow		 : 'Baxua',
-		windowModeWindow	 : 'Leihoa',
-		windowModeOpaque	 : 'Opakoa',
-		windowModeTransparent	 : 'Gardena',
-		windowMode	: 'Leihoaren modua',
-		flashvars	: 'Flash Aldagaiak',
-		bgcolor	: 'Atzeko kolorea',
-		width	: 'Zabalera',
-		height	: 'Altuera',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
-		validateSrc : 'Mesedez URL esteka idatzi',
-		validateWidth : 'Zabalera zenbaki bat izan behar da.',
-		validateHeight : 'Altuera zenbaki bat izan behar da.',
-		validateHSpace : 'HSpace zenbaki bat izan behar da.',
-		validateVSpace : 'VSpace zenbaki bat izan behar da.'
+		alignTop		: 'Goian',
+		quality			: 'Kalitatea',
+		qualityBest		: 'Hoberena',
+		qualityHigh		: 'Altua',
+		qualityAutoHigh	: 'Auto Altua',
+		qualityMedium	: 'Ertaina',
+		qualityAutoLow	: 'Auto Baxua',
+		qualityLow		: 'Baxua',
+		windowModeWindow: 'Leihoa',
+		windowModeOpaque: 'Opakoa',
+		windowModeTransparent : 'Gardena',
+		windowMode		: 'Leihoaren modua',
+		flashvars		: 'Flash Aldagaiak',
+		bgcolor			: 'Atzeko kolorea',
+		width			: 'Zabalera',
+		height			: 'Altuera',
+		hSpace			: 'HSpace',
+		vSpace			: 'VSpace',
+		validateSrc		: 'Mesedez URL esteka idatzi',
+		validateWidth	: 'Zabalera zenbaki bat izan behar da.',
+		validateHeight	: 'Altuera zenbaki bat izan behar da.',
+		validateHSpace	: 'HSpace zenbaki bat izan behar da.',
+		validateVSpace	: 'VSpace zenbaki bat izan behar da.'
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Aurpegierak',
-		title	: 'Aurpegiera Sartu'
+		title	: 'Aurpegiera Sartu',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 elementua'
 	},
 
-	numberedlist : 'Zenbakidun Zerrenda',
-	bulletedlist : 'Buletdun Zerrenda',
-	indent : 'Handitu Koska',
-	outdent : 'Txikitu Koska',
+	numberedlist	: 'Zenbakidun Zerrenda',
+	bulletedlist	: 'Buletdun Zerrenda',
+	indent			: 'Handitu Koska',
+	outdent			: 'Txikitu Koska',
 
 	justify :
 	{
-		left : 'Lerrokatu Ezkerrean',
-		center : 'Lerrokatu Erdian',
-		right : 'Lerrokatu Eskuman',
-		block : 'Justifikatu'
+		left	: 'Lerrokatu Ezkerrean',
+		center	: 'Lerrokatu Erdian',
+		right	: 'Lerrokatu Eskuman',
+		block	: 'Justifikatu'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Itsatsi',
-		cutError	: 'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki moztea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl+X).',
-		copyError	: 'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki kopiatzea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl+C).',
-		pasteMsg	: 'Mesedez teklatua erabilita (<STRONG>Ctrl+V</STRONG>) ondorego eremuan testua itsatsi eta <STRONG>OK</STRONG> sakatu.',
-		securityMsg	: 'Nabigatzailearen segurtasun ezarpenak direla eta, editoreak ezin du arbela zuzenean erabili. Leiho honetan berriro itsatsi behar duzu.'
+		cutError	: 'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki moztea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl/Cmd+X).',
+		copyError	: 'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki kopiatzea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl/Cmd+C).',
+		pasteMsg	: 'Mesedez teklatua erabilita (<STRONG>Ctrl/Cmd+V</STRONG>) ondorego eremuan testua itsatsi eta <STRONG>OK</STRONG> sakatu.',
+		securityMsg	: 'Nabigatzailearen segurtasun ezarpenak direla eta, editoreak ezin du arbela zuzenean erabili. Leiho honetan berriro itsatsi behar duzu.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Itsatsi Word-etik',
-		title : 'Itsatsi Word-etik',
-		advice : 'Mesedez teklatua erabilita (<STRONG>Ctrl+V</STRONG>) ondorego eremuan testua itsatsi eta <STRONG>OK</STRONG> sakatu.',
-		ignoreFontFace : 'Letra Motaren definizioa ezikusi',
-		removeStyle : 'Estilo definizioak kendu'
+		confirmCleanup	: 'Itsatsi nahi duzun testua Wordetik hartua dela dirudi. Itsatsi baino lehen garbitu nahi duzu?',
+		toolbar			: 'Itsatsi Word-etik',
+		title			: 'Itsatsi Word-etik',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Testu Arrunta bezala Itsatsi',
-		title : 'Testu Arrunta bezala Itsatsi'
+		button	: 'Testu Arrunta bezala Itsatsi',
+		title	: 'Testu Arrunta bezala Itsatsi'
 	},
 
 	templates :
 	{
-		button : 'Txantiloiak',
-		title : 'Eduki Txantiloiak',
-		insertOption: 'Ordeztu oraingo edukiak',
-		selectPromptMsg: 'Mesedez txantiloia aukeratu editorean kargatzeko<br>(orain dauden edukiak galduko dira):',
-		emptyListMsg : '(Ez dago definitutako txantiloirik)'
+		button			: 'Txantiloiak',
+		title			: 'Eduki Txantiloiak',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Ordeztu oraingo edukiak',
+		selectPromptMsg	: 'Mesedez txantiloia aukeratu editorean kargatzeko<br>(orain dauden edukiak galduko dira):',
+		emptyListMsg	: '(Ez dago definitutako txantiloirik)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Estiloa',
-		voiceLabel : 'Estiloak',
-		panelVoiceLabel : 'Estilo bat aukeratu',
-		panelTitle1 : 'Bloke Estiloak',
-		panelTitle2 : 'Inline Estiloak',
-		panelTitle3 : 'Objektu Estiloak'
+		label		: 'Estiloa',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Bloke Estiloak',
+		panelTitle2	: 'Inline Estiloak',
+		panelTitle3	: 'Objektu Estiloak'
 	},
 
 	format :
 	{
-		label : 'Formatua',
-		voiceLabel : 'Formatua',
-		panelTitle : 'Formatua',
-		panelVoiceLabel : 'Aukeratu paragrafo formatu bat',
-
-		tag_p : 'Arrunta',
-		tag_pre : 'Formateatua',
-		tag_address : 'Helbidea',
-		tag_h1 : 'Izenburua 1',
-		tag_h2 : 'Izenburua 2',
-		tag_h3 : 'Izenburua 3',
-		tag_h4 : 'Izenburua 4',
-		tag_h5 : 'Izenburua 5',
-		tag_h6 : 'Izenburua 6',
-		tag_div : 'Paragrafoa (DIV)'
-	},
+		label		: 'Formatua',
+		panelTitle	: 'Formatua',
+
+		tag_p		: 'Arrunta',
+		tag_pre		: 'Formateatua',
+		tag_address	: 'Helbidea',
+		tag_h1		: 'Izenburua 1',
+		tag_h2		: 'Izenburua 2',
+		tag_h3		: 'Izenburua 3',
+		tag_h4		: 'Izenburua 4',
+		tag_h5		: 'Izenburua 5',
+		tag_h6		: 'Izenburua 6',
+		tag_div		: 'Paragrafoa (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Letra-tipoa',
-		voiceLabel : 'Letra-tipoa',
-		panelTitle : 'Letra-tipoa',
-		panelVoiceLabel : 'Aukeratu letra-tipoa'
+		label		: 'Letra-tipoa',
+		voiceLabel	: 'Letra-tipoa',
+		panelTitle	: 'Letra-tipoa'
 	},
 
 	fontSize :
 	{
-		label : 'Tamaina',
-		voiceLabel : 'Tamaina',
-		panelTitle : 'Tamaina',
-		panelVoiceLabel : 'Aukeratu letraren tamaina'
+		label		: 'Tamaina',
+		voiceLabel	: 'Tamaina',
+		panelTitle	: 'Tamaina'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Testu Kolorea',
-		bgColorTitle : 'Atzeko kolorea',
-		auto : 'Automatikoa',
-		more : 'Kolore gehiago...'
+		textColorTitle	: 'Testu Kolorea',
+		bgColorTitle	: 'Atzeko kolorea',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatikoa',
+		more			: 'Kolore gehiago...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Ortografia Zuzenketa Idatzi Ahala (SCAYT)',
-		enable : 'Gaitu SCAYT',
-		disable : 'Desgaitu SCAYT',
-		about : 'SCAYTi buruz',
-		toggle : 'SCAYT aldatu',
-		options : 'Aukerak',
-		langs : 'Hizkuntzak',
-		moreSuggestions : 'Iradokizun gehiago',
-		ignore : 'Baztertu',
-		ignoreAll : 'Denak baztertu',
-		addWord : 'Hitza Gehitu',
-		emptyDic : 'Hiztegiaren izena ezin da hutsik egon.',
-		optionsTab : 'Aukerak',
-		languagesTab : 'Hizkuntzak',
-		dictionariesTab : 'Hiztegiak',
-		aboutTab : 'Honi buruz'
+		title			: 'Ortografia Zuzenketa Idatzi Ahala (SCAYT)',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Gaitu SCAYT',
+		disable			: 'Desgaitu SCAYT',
+		about			: 'SCAYTi buruz',
+		toggle			: 'SCAYT aldatu',
+		options			: 'Aukerak',
+		langs			: 'Hizkuntzak',
+		moreSuggestions	: 'Iradokizun gehiago',
+		ignore			: 'Baztertu',
+		ignoreAll		: 'Denak baztertu',
+		addWord			: 'Hitza Gehitu',
+		emptyDic		: 'Hiztegiaren izena ezin da hutsik egon.',
+
+		optionsTab		: 'Aukerak',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Hizkuntzak',
+
+		dictionariesTab	: 'Hiztegiak',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'Honi buruz'
 	},
 
 	about :
 	{
-		title : 'CKEditor(r)i buruz',
-		dlgTitle : 'CKEditor(r)i buruz',
-		moreInfo : 'Lizentziari buruzko informazioa gure webgunean:',
-		copy : 'Copyright &copy; $1. Eskubide guztiak erreserbaturik.'
+		title		: 'CKEditor(r)i buruz',
+		dlgTitle	: 'CKEditor(r)i buruz',
+		moreInfo	: 'Lizentziari buruzko informazioa gure webgunean:',
+		copy		: 'Copyright &copy; $1. Eskubide guztiak erreserbaturik.'
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Aingura',
-		flash : 'Flash Animazioa',
-		div : 'Orrialde Saltoa',
-		unknown : 'Objektu ezezaguna'
+		anchor	: 'Aingura',
+		flash	: 'Flash Animazioa',
+		div		: 'Orrialde Saltoa',
+		unknown	: 'Objektu ezezaguna'
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/fa.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/fa.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/fa.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'فرم',
 		checkbox		: 'خانهٴ گزینهای',
-		radio		: 'دکمهٴ رادیویی',
+		radio			: 'دکمهٴ رادیویی',
 		textField		: 'فیلد متنی',
 		textarea		: 'ناحیهٴ متنی',
 		hiddenField		: 'فیلد پنهان',
 		button			: 'دکمه',
-		select	: 'فیلد چندگزینهای',
+		select			: 'فیلد چندگزینهای',
 		imageButton		: 'دکمهٴ تصویری',
 		notSet			: '<تعیننشده>',
@@ -89,9 +93,17 @@
 		ok				: 'پذیرش',
 		cancel			: 'انصراف',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'پیشرفته',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'گنجاندن نویسهٴ ویژه',
-		title		: 'گزینش نویسهٴویژه'
+		title		: 'گزینش نویسهٴویژه',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'گنجاندن/ویرایش ِپیوند',
+		other 		: '<سایر>',
 		menu		: 'ویرایش پیوند',
 		title		: 'پیوند',
@@ -117,14 +136,9 @@
 		advanced	: 'پیشرفته',
 		type		: 'نوع پیوند',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'لنگر در همین صفحه',
 		toEmail		: 'پست الکترونیکی',
-		target		: 'مقصد',
-		targetNotSet	: '<تعیننشده>',
-		targetFrame	: '<فریم>',
-		targetPopup	: '<پنجرهٴ پاپاپ>',
-		targetNew	: 'پنجرهٴ دیگر (_blank)',
-		targetTop	: 'بالاترین پنجره (_top)',
-		targetSelf	: 'همان پنجره (_self)',
-		targetParent	: 'پنجرهٴ والد (_parent)',
+		targetFrame		: '<فریم>',
+		targetPopup		: '<پنجرهٴ پاپاپ>',
 		targetFrameName	: 'نام فریم مقصد',
 		targetPopupName	: 'نام پنجرهٴ پاپاپ',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'نوار وضعیت',
-		popupLocationBar	: 'نوار موقعیت',
+		popupLocationBar: 'نوار موقعیت',
 		popupToolbar	: 'نوارابزار',
 		popupMenuBar	: 'نوار منو',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'جهتنمای زبان',
-		langDirNotSet	: '<تعیننشده>',
 		langDirLTR		: 'چپ به راست (LTR)',
 		langDirRTL		: 'راست به چپ (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'اندازهٴ لبه',
 		align		: 'چینش',
-		alignNotSet	: '<تعیننشده>',
 		alignLeft	: 'چپ',
 		alignCenter	: 'وسط',
@@ -211,4 +246,5 @@
 		widthPx		: 'پیکسل',
 		widthPc		: 'درصد',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'درازا',
 		cellSpace	: 'فاصلهٴ میان سلولها',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'رویداد',
 		method		: 'متد',
-		encoding	: 'Encoding', // MISSING
-		target		: 'مقصد',
-		targetNotSet	: '<تعیننشده>',
-		targetNew	: 'پنجرهٴ دیگر (_blank)',
-		targetTop	: 'بالاترین پنجره (_top)',
-		targetSelf	: 'همان پنجره (_self)',
-		targetParent	: 'پنجرهٴ والد (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'ویژگیهای دکمهٴ تصویری',
 		menu		: 'ویژگیهای تصویر',
-		infoTab	: 'اطلاعات تصویر',
+		infoTab		: 'اطلاعات تصویر',
 		btnUpload	: 'به سرور بفرست',
-		url		: 'URL',
-		upload	: 'انتقال به سرور',
-		alt		: 'متن جایگزین',
+		upload		: 'انتقال به سرور',
+		alt			: 'متن جایگزین',
 		width		: 'پهنا',
-		height	: 'درازا',
+		height		: 'درازا',
 		lockRatio	: 'قفلکردن ِنسبت',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'بازنشانی اندازه',
-		border	: 'لبه',
-		hSpace	: 'فاصلهٴ افقی',
-		vSpace	: 'فاصلهٴ عمودی',
+		border		: 'لبه',
+		hSpace		: 'فاصلهٴ افقی',
+		vSpace		: 'فاصلهٴ عمودی',
 		align		: 'چینش',
 		alignLeft	: 'چپ',
-		alignAbsBottom: 'پائین مطلق',
-		alignAbsMiddle: 'وسط مطلق',
-		alignBaseline	: 'خطپایه',
-		alignBottom	: 'پائین',
-		alignMiddle	: 'وسط',
 		alignRight	: 'راست',
-		alignTextTop	: 'متن بالا',
-		alignTop	: 'بالا',
-		preview	: 'پیشنمایش',
 		alertUrl	: 'لطفا URL تصویر را بنویسید',
-		linkTab	: 'پیوند',
+		linkTab		: 'پیوند',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'ویژگیهای Flash',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'ویژگیهای Flash',
-		chkPlay		: 'آغاز ِخودکار',
-		chkLoop		: 'اجرای پیاپی',
-		chkMenu		: 'دردسترسبودن منوی Flash',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'مقیاس',
+		title			: 'ویژگیهای Flash',
+		chkPlay			: 'آغاز ِخودکار',
+		chkLoop			: 'اجرای پیاپی',
+		chkMenu			: 'دردسترسبودن منوی Flash',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'مقیاس',
 		scaleAll		: 'نمایش همه',
 		scaleNoBorder	: 'بدون کران',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'چینش',
-		alignLeft	: 'چپ',
-		alignAbsBottom: 'پائین مطلق',
-		alignAbsMiddle: 'وسط مطلق',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'چینش',
+		alignLeft		: 'چپ',
+		alignAbsBottom	: 'پائین مطلق',
+		alignAbsMiddle	: 'وسط مطلق',
 		alignBaseline	: 'خطپایه',
-		alignBottom	: 'پائین',
-		alignMiddle	: 'وسط',
-		alignRight	: 'راست',
+		alignBottom		: 'پائین',
+		alignMiddle		: 'وسط',
+		alignRight		: 'راست',
 		alignTextTop	: 'متن بالا',
-		alignTop	: 'بالا',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'رنگ پسزمینه',
-		width	: 'پهنا',
-		height	: 'درازا',
-		hSpace	: 'فاصلهٴ افقی',
-		vSpace	: 'فاصلهٴ عمودی',
-		validateSrc : 'لطفا URL پیوند را بنویسید',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'بالا',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'رنگ پسزمینه',
+		width			: 'پهنا',
+		height			: 'درازا',
+		hSpace			: 'فاصلهٴ افقی',
+		vSpace			: 'فاصلهٴ عمودی',
+		validateSrc		: 'لطفا URL پیوند را بنویسید',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'خندانک',
-		title	: 'گنجاندن خندانک'
+		title	: 'گنجاندن خندانک',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'فهرست شمارهدار',
-	bulletedlist : 'فهرست نقطهای',
-	indent : 'افزایش تورفتگی',
-	outdent : 'کاهش تورفتگی',
+	numberedlist	: 'فهرست شمارهدار',
+	bulletedlist	: 'فهرست نقطهای',
+	indent			: 'افزایش تورفتگی',
+	outdent			: 'کاهش تورفتگی',
 
 	justify :
 	{
-		left : 'چپچین',
-		center : 'میانچین',
-		right : 'راستچین',
-		block : 'بلوکچین'
+		left	: 'چپچین',
+		center	: 'میانچین',
+		right	: 'راستچین',
+		block	: 'بلوکچین'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'چسباندن',
-		cutError	: 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطفا با دکمههای صفحهکلید این کار را انجام دهید (Ctrl+X).',
-		copyError	: 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای کپیکردن را انجام دهد. لطفا با دکمههای صفحهکلید این کار را انجام دهید (Ctrl+C).',
-		pasteMsg	: 'لطفا متن را با کلیدهای (<STRONG>Ctrl+V</STRONG>) در این جعبهٴ متنی بچسبانید و <STRONG>پذیرش</STRONG> را بزنید.',
-		securityMsg	: 'به خاطر تنظیمات امنیتی مرورگر شما، ویرایشگر نمیتواند دسترسی مستقیم به دادههای clipboard داشته باشد. شما باید دوباره آنرا در این پنجره بچسبانید.'
+		cutError	: 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطفا با دکمههای صفحهکلید این کار را انجام دهید (Ctrl/Cmd+X).',
+		copyError	: 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای کپیکردن را انجام دهد. لطفا با دکمههای صفحهکلید این کار را انجام دهید (Ctrl/Cmd+C).',
+		pasteMsg	: 'لطفا متن را با کلیدهای (<STRONG>Ctrl/Cmd+V</STRONG>) در این جعبهٴ متنی بچسبانید و <STRONG>پذیرش</STRONG> را بزنید.',
+		securityMsg	: 'به خاطر تنظیمات امنیتی مرورگر شما، ویرایشگر نمیتواند دسترسی مستقیم به دادههای clipboard داشته باشد. شما باید دوباره آنرا در این پنجره بچسبانید.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'چسباندن از Word',
-		title : 'چسباندن از Word',
-		advice : 'لطفا متن را با کلیدهای (<STRONG>Ctrl+V</STRONG>) در این جعبهٴ متنی بچسبانید و <STRONG>پذیرش</STRONG> را بزنید.',
-		ignoreFontFace : 'چشمپوشی از تعاریف نوع قلم',
-		removeStyle : 'چشمپوشی از تعاریف سبک (style)'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'چسباندن از Word',
+		title			: 'چسباندن از Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'چسباندن به عنوان متن ِساده',
-		title : 'چسباندن به عنوان متن ِساده'
+		button	: 'چسباندن به عنوان متن ِساده',
+		title	: 'چسباندن به عنوان متن ِساده'
 	},
 
 	templates :
 	{
-		button : 'الگوها',
-		title : 'الگوهای محتویات',
-		insertOption: 'محتویات کنونی جایگزین شوند',
-		selectPromptMsg: 'لطفا الگوی موردنظر را برای بازکردن در ویرایشگر برگزینید<br>(محتویات کنونی از دست خواهند رفت):',
-		emptyListMsg : '(الگوئی تعریف نشده است)'
+		button			: 'الگوها',
+		title			: 'الگوهای محتویات',
+		options : 'Template Options', // MISSING
+		insertOption	: 'محتویات کنونی جایگزین شوند',
+		selectPromptMsg	: 'لطفا الگوی موردنظر را برای بازکردن در ویرایشگر برگزینید<br>(محتویات کنونی از دست خواهند رفت):',
+		emptyListMsg	: '(الگوئی تعریف نشده است)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'سبک',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'سبک',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'فرمت',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'فرمت',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		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 : 'بند'
-	},
+		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 :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'قلم',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'قلم',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'قلم',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'قلم'
 	},
 
 	fontSize :
 	{
-		label : 'اندازه',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'اندازه',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'اندازه',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'اندازه'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'رنگ متن',
-		bgColorTitle : 'رنگ پسزمینه',
-		auto : 'خودکار',
-		more : 'رنگهای بیشتر...'
+		textColorTitle	: 'رنگ متن',
+		bgColorTitle	: 'رنگ پسزمینه',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'خودکار',
+		more			: 'رنگهای بیشتر...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/fi.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/fi.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/fi.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rikastekstieditori, %1, paina ALT 0 nähdäksesi ohjeen.',
+
+	// ARIA descriptions.
+	toolbar	: 'Työkalupalkki',
+	editor	: 'Rikastekstieditori',
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Lomake',
 		checkbox		: 'Valintaruutu',
-		radio		: 'Radiopainike',
+		radio			: 'Radiopainike',
 		textField		: 'Tekstikenttä',
 		textarea		: 'Tekstilaatikko',
 		hiddenField		: 'Piilokenttä',
 		button			: 'Painike',
-		select	: 'Valintakenttä',
+		select			: 'Valintakenttä',
 		imageButton		: 'Kuvapainike',
 		notSet			: '<ei asetettu>',
@@ -89,12 +93,25 @@
 		ok				: 'OK',
 		cancel			: 'Peruuta',
-		generalTab		: 'General', // MISSING
+		close			: 'Sulje',
+		preview			: 'Esikatselu',
+		generalTab		: 'Yleinen',
 		advancedTab		: 'Lisäominaisuudet',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
-		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
-		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		validateNumberFailed : 'Arvon pitää olla numero.',
+		confirmNewPage	: 'Kaikki tallentamattomat muutokset tähän sisältöön menetetään. Oletko varma, että haluat ladata uuden sivun?',
+		confirmCancel	: 'Jotkut asetuksista on muuttuneet. Oletko varma, että haluat sulkea valintaikkunan?',
+		options			: 'Asetukset',
+		target			: 'Kohde',
+		targetNew		: 'Uusi ikkuna (_blank)',
+		targetTop		: 'Päällimmäinen ikkuna (_top)',
+		targetSelf		: 'Sama ikkuna (_self)',
+		targetParent	: 'Ylemmän tason ikkuna (_parent)',
 
 		// Put the voice-only part of the label in the span.
-		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+		unavailable		: '%1<span class="cke_accessibility">, ei saatavissa</span>'
+	},
+
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
 	},
 
@@ -103,5 +120,6 @@
 	{
 		toolbar		: 'Lisää erikoismerkki',
-		title		: 'Valitse erikoismerkki'
+		title		: 'Valitse erikoismerkki',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Lisää linkki/muokkaa linkkiä',
+		other 		: '<muu>',
 		menu		: 'Muokkaa linkkiä',
 		title		: 'Linkki',
@@ -117,20 +136,15 @@
 		advanced	: 'Lisäominaisuudet',
 		type		: 'Linkkityyppi',
+		toUrl		: 'Osoite',
 		toAnchor	: 'Ankkuri tässä sivussa',
 		toEmail		: 'Sähköposti',
-		target		: 'Kohde',
-		targetNotSet	: '<ei asetettu>',
-		targetFrame	: '<kehys>',
-		targetPopup	: '<popup ikkuna>',
-		targetNew	: 'Uusi ikkuna (_blank)',
-		targetTop	: 'Päällimmäisin ikkuna (_top)',
-		targetSelf	: 'Sama ikkuna (_self)',
-		targetParent	: 'Emoikkuna (_parent)',
+		targetFrame		: '<kehys>',
+		targetPopup		: '<popup ikkuna>',
 		targetFrameName	: 'Kohdekehyksen nimi',
 		targetPopupName	: 'Popup ikkunan nimi',
 		popupFeatures	: 'Popup ikkunan ominaisuudet',
-		popupResizable	: 'Resizable', // MISSING
+		popupResizable	: 'Venytettävä',
 		popupStatusBar	: 'Tilarivi',
-		popupLocationBar	: 'Osoiterivi',
+		popupLocationBar: 'Osoiterivi',
 		popupToolbar	: 'Vakiopainikkeet',
 		popupMenuBar	: 'Valikkorivi',
@@ -142,7 +156,6 @@
 		popupHeight		: 'Korkeus',
 		popupTop		: 'Ylhäältä (px)',
-		id				: 'Id', // MISSING
+		id				: 'Tunniste',
 		langDir			: 'Kielen suunta',
-		langDirNotSet	: '<ei asetettu>',
 		langDirLTR		: 'Vasemmalta oikealle (LTR)',
 		langDirRTL		: 'Oikealta vasemmalle (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numeroidun listan ominaisuudet',
+		bulletedTitle		: 'Numeroimattoman listan ominaisuudet',
+		type				: 'Tyyppi',
+		start				: 'Alku',
+		circle				: 'Ympyrä',
+		disc				: 'Levy',
+		square				: 'Neliö',
+		none				: 'Ei mikään',
+		notset				: '<ei asetettu>',
+		armenian			: 'Armeenialainen numerointi',
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Pienet roomalaiset (i, ii, iii, iv, v, jne.)',
+		upperRoman			: 'Isot roomalaiset (I, II, III, IV, V, jne.)',
+		lowerAlpha			: 'Pienet aakkoset (a, b, c, d, e, jne.)',
+		upperAlpha			: 'Isot aakkoset (A, B, C, D, E, jne.)',
+		lowerGreek			: 'Pienet kreikkalaiset (alpha, beta, gamma, jne.)',
+		decimal				: 'Desimaalit (1, 2, 3, jne.)',
+		decimalLeadingZero	: 'Desimaalit, alussa nolla (01, 02, 03, jne.)'
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -188,7 +224,7 @@
 		matchCase			: 'Sama kirjainkoko',
 		matchWord			: 'Koko sana',
-		matchCyclic			: 'Match cyclic', // MISSING
+		matchCyclic			: 'Kierrä ympäri',
 		replaceAll			: 'Korvaa kaikki',
-		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+		replaceSuccessMsg	: '%1 esiintymä(ä) korvattu.'
 	},
 
@@ -204,5 +240,4 @@
 		border		: 'Rajan paksuus',
 		align		: 'Kohdistus',
-		alignNotSet	: '<ei asetettu>',
 		alignLeft	: 'Vasemmalle',
 		alignCenter	: 'Keskelle',
@@ -211,4 +246,5 @@
 		widthPx		: 'pikseliä',
 		widthPc		: 'prosenttia',
+		widthUnit	: 'leveysyksikkö',
 		height		: 'Korkeus',
 		cellSpace	: 'Solujen väli',
@@ -216,16 +252,16 @@
 		caption		: 'Otsikko',
 		summary		: 'Yhteenveto',
-		headers		: 'Headers', // MISSING
-		headersNone		: 'None', // MISSING
-		headersColumn	: 'First column', // MISSING
-		headersRow		: 'First Row', // MISSING
-		headersBoth		: 'Both', // MISSING
-		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
-		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
-		invalidBorder	: 'Border size must be a number.', // MISSING
-		invalidWidth	: 'Table width must be a number.', // MISSING
-		invalidHeight	: 'Table height must be a number.', // MISSING
-		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
-		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+		headers		: 'Ylätunnisteet',
+		headersNone		: 'Ei',
+		headersColumn	: 'Ensimmäinen sarake',
+		headersRow		: 'Ensimmäinen rivi',
+		headersBoth		: 'Molemmat',
+		invalidRows		: 'Rivien määrän täytyy olla suurempi kuin 0.',
+		invalidCols		: 'Sarakkeiden määrän täytyy olla suurempi kuin 0.',
+		invalidBorder	: 'Reunan koon täytyy olla numero.',
+		invalidWidth	: 'Taulun leveyden täytyy olla numero.',
+		invalidHeight	: 'Taulun korkeuden täytyy olla numero.',
+		invalidCellSpacing	: 'Solujen välin täytyy olla numero.',
+		invalidCellPadding	: 'Solujen sisennyksen täytyy olla numero.',
 
 		cell :
@@ -240,26 +276,26 @@
 			splitHorizontal	: 'Jaa solu vaakasuunnassa',
 			splitVertical	: 'Jaa solu pystysuunnassa',
-			title			: 'Cell Properties', // MISSING
-			cellType		: 'Cell Type', // MISSING
-			rowSpan			: 'Rows Span', // MISSING
-			colSpan			: 'Columns Span', // MISSING
-			wordWrap		: 'Word Wrap', // MISSING
-			hAlign			: 'Horizontal Alignment', // MISSING
-			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
-			alignBaseline	: 'Baseline', // MISSING
-			bgColor			: 'Background Color', // MISSING
-			borderColor		: 'Border Color', // MISSING
-			data			: 'Data', // MISSING
-			header			: 'Header', // MISSING
-			yes				: 'Yes', // MISSING
-			no				: 'No', // MISSING
-			invalidWidth	: 'Cell width must be a number.', // MISSING
-			invalidHeight	: 'Cell height must be a number.', // MISSING
-			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
-			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			title			: 'Solun ominaisuudet',
+			cellType		: 'Solun tyyppi',
+			rowSpan			: 'Rivin jatkuvuus',
+			colSpan			: 'Solun jatkuvuus',
+			wordWrap		: 'Rivitys',
+			hAlign			: 'Horisontaali kohdistus',
+			vAlign			: 'Vertikaali kohdistus',
+			alignTop		: 'Ylös',
+			alignMiddle		: 'Keskelle',
+			alignBottom		: 'Alas',
+			alignBaseline	: 'Alas (teksti)',
+			bgColor			: 'Taustan väri',
+			borderColor		: 'Reunan väri',
+			data			: 'Data',
+			header			: 'Ylätunniste',
+			yes				: 'Kyllä',
+			no				: 'Ei',
+			invalidWidth	: 'Solun leveyden täytyy olla numero.',
+			invalidHeight	: 'Solun korkeuden täytyy olla numero.',
+			invalidRowSpan	: 'Rivin jatkuvuuden täytyy olla kokonaisluku.',
+			invalidColSpan	: 'Solun jatkuvuuden täytyy olla kokonaisluku.',
+			chooseColor		: 'Valitse'
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Toiminto',
 		method		: 'Tapa',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Kohde',
-		targetNotSet	: '<ei asetettu>',
-		targetNew	: 'Uusi ikkuna (_blank)',
-		targetTop	: 'Päällimmäisin ikkuna (_top)',
-		targetSelf	: 'Sama ikkuna (_self)',
-		targetParent	: 'Emoikkuna (_parent)'
+		encoding	: 'Enkoodaus'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Kuvapainikkeen ominaisuudet',
 		menu		: 'Kuvan ominaisuudet',
-		infoTab	: 'Kuvan tiedot',
+		infoTab		: 'Kuvan tiedot',
 		btnUpload	: 'Lähetä palvelimelle',
-		url		: 'Osoite',
-		upload	: 'Lisää kuva',
-		alt		: 'Vaihtoehtoinen teksti',
+		upload		: 'Lisää kuva',
+		alt			: 'Vaihtoehtoinen teksti',
 		width		: 'Leveys',
-		height	: 'Korkeus',
+		height		: 'Korkeus',
 		lockRatio	: 'Lukitse suhteet',
+		unlockRatio	: 'Vapauta suhteet',
 		resetSize	: 'Alkuperäinen koko',
-		border	: 'Raja',
-		hSpace	: 'Vaakatila',
-		vSpace	: 'Pystytila',
+		border		: 'Kehys',
+		hSpace		: 'Vaakatila',
+		vSpace		: 'Pystytila',
 		align		: 'Kohdistus',
 		alignLeft	: 'Vasemmalle',
-		alignAbsBottom: 'Aivan alas',
-		alignAbsMiddle: 'Aivan keskelle',
-		alignBaseline	: 'Alas (teksti)',
-		alignBottom	: 'Alas',
-		alignMiddle	: 'Keskelle',
 		alignRight	: 'Oikealle',
-		alignTextTop	: 'Ylös (teksti)',
-		alignTop	: 'Ylös',
-		preview	: 'Esikatselu',
 		alertUrl	: 'Kirjoita kuvan osoite (URL)',
-		linkTab	: 'Linkki',
-		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
-		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		linkTab		: 'Linkki',
+		button2Img	: 'Haluatko muuntaa valitun kuvanäppäimen kuvaksi?',
+		img2Button	: 'Haluatko muuntaa valitun kuvan kuvanäppäimeksi?',
+		urlMissing	: 'Kuvan lähdeosoite puuttuu.',
+		validateWidth	: 'Leveyden täytyy olla kokonaisluku.',
+		validateHeight	: 'Korkeuden täytyy olla kokonaisluku.',
+		validateBorder	: 'Kehyksen täytyy olla kokonaisluku.',
+		validateHSpace	: 'HSpace-määrityksen täytyy olla kokonaisluku.',
+		validateVSpace	: 'VSpace-määrityksen täytyy olla kokonaisluku.'
 	},
 
@@ -405,51 +432,51 @@
 	flash :
 	{
-		properties		: 'Flash ominaisuudet',
-		propertiesTab	: 'Properties', // MISSING
-		title		: 'Flash ominaisuudet',
-		chkPlay		: 'Automaattinen käynnistys',
-		chkLoop		: 'Toisto',
-		chkMenu		: 'Näytä Flash-valikko',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Levitä',
+		properties		: 'Flash-ominaisuudet',
+		propertiesTab	: 'Ominaisuudet',
+		title			: 'Flash ominaisuudet',
+		chkPlay			: 'Automaattinen käynnistys',
+		chkLoop			: 'Toisto',
+		chkMenu			: 'Näytä Flash-valikko',
+		chkFull			: 'Salli kokoruututila',
+ 		scale			: 'Levitä',
 		scaleAll		: 'Näytä kaikki',
 		scaleNoBorder	: 'Ei rajaa',
 		scaleFit		: 'Tarkka koko',
-		access			: 'Script Access', // MISSING
-		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Kohdistus',
-		alignLeft	: 'Vasemmalle',
-		alignAbsBottom: 'Aivan alas',
-		alignAbsMiddle: 'Aivan keskelle',
+		access			: 'Skriptien pääsy',
+		accessAlways	: 'Aina',
+		accessSameDomain: 'Sama verkkotunnus',
+		accessNever		: 'Ei koskaan',
+		align			: 'Kohdistus',
+		alignLeft		: 'Vasemmalle',
+		alignAbsBottom	: 'Aivan alas',
+		alignAbsMiddle	: 'Aivan keskelle',
 		alignBaseline	: 'Alas (teksti)',
-		alignBottom	: 'Alas',
-		alignMiddle	: 'Keskelle',
-		alignRight	: 'Oikealle',
+		alignBottom		: 'Alas',
+		alignMiddle		: 'Keskelle',
+		alignRight		: 'Oikealle',
 		alignTextTop	: 'Ylös (teksti)',
-		alignTop	: 'Ylös',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Taustaväri',
-		width	: 'Leveys',
-		height	: 'Korkeus',
-		hSpace	: 'Vaakatila',
-		vSpace	: 'Pystytila',
-		validateSrc : 'Linkille on kirjoitettava URL',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Ylös',
+		quality			: 'Laatu',
+		qualityBest		: 'Paras',
+		qualityHigh		: 'Korkea',
+		qualityAutoHigh	: 'Automaattinen korkea',
+		qualityMedium	: 'Keskitaso',
+		qualityAutoLow	: 'Automaattinen matala',
+		qualityLow		: 'Matala',
+		windowModeWindow: 'Ikkuna',
+		windowModeOpaque: 'Läpinäkyvyys',
+		windowModeTransparent : 'Läpinäkyvä',
+		windowMode		: 'Ikkuna tila',
+		flashvars		: 'Muuttujat Flash:lle',
+		bgcolor			: 'Taustaväri',
+		width			: 'Leveys',
+		height			: 'Korkeus',
+		hSpace			: 'Vaakatila',
+		vSpace			: 'Pystytila',
+		validateSrc		: 'Linkille on kirjoitettava URL',
+		validateWidth	: 'Leveyden täytyy olla numero.',
+		validateHeight	: 'Korkeuden täytyy olla numero.',
+		validateHSpace	: 'Vaakatilan täytyy olla numero.',
+		validateVSpace	: 'Pystytilan täytyy olla numero.'
 	},
 
@@ -458,7 +485,7 @@
 	{
 		toolbar			: 'Tarkista oikeinkirjoitus',
-		title			: 'Spell Check', // MISSING
-		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
-		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		title			: 'Oikoluku',
+		notAvailable	: 'Valitettavasti oikoluku ei ole käytössä tällä hetkellä.',
+		errorLoading	: 'Virhe ladattaessa oikolukupalvelua isännältä: %s.',
 		notInDic		: 'Ei sanakirjassa',
 		changeTo		: 'Vaihda',
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Hymiö',
-		title	: 'Lisää hymiö'
+		title	: 'Lisää hymiö',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
-	},
-
-	numberedlist : 'Numerointi',
-	bulletedlist : 'Luottelomerkit',
-	indent : 'Suurenna sisennystä',
-	outdent : 'Pienennä sisennystä',
+		eleLabel : 'Elementin polku',
+		eleTitle : '%1 elementti'
+	},
+
+	numberedlist	: 'Numerointi',
+	bulletedlist	: 'Luottelomerkit',
+	indent			: 'Suurenna sisennystä',
+	outdent			: 'Pienennä sisennystä',
 
 	justify :
 	{
-		left : 'Tasaa vasemmat reunat',
-		center : 'Keskitä',
-		right : 'Tasaa oikeat reunat',
-		block : 'Tasaa molemmat reunat'
+		left	: 'Tasaa vasemmat reunat',
+		center	: 'Keskitä',
+		right	: 'Tasaa oikeat reunat',
+		block	: 'Tasaa molemmat reunat'
 	},
 
@@ -509,29 +538,30 @@
 		copyError	: 'Selaimesi turva-asetukset eivät salli editorin toteuttaa kopioimista. Käytä näppäimistöä kopioimiseen (Ctrl+C).',
 		pasteMsg	: 'Liitä painamalla (<STRONG>Ctrl+V</STRONG>) ja painamalla <STRONG>OK</STRONG>.',
-		securityMsg	: 'Selaimesi turva-asetukset eivät salli editorin käyttää leikepöytää suoraan. Sinun pitää suorittaa liittäminen tässä ikkunassa.'
+		securityMsg	: 'Selaimesi turva-asetukset eivät salli editorin käyttää leikepöytää suoraan. Sinun pitää suorittaa liittäminen tässä ikkunassa.',
+		pasteArea	: 'Leikealue'
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Liitä Wordista',
-		title : 'Liitä Wordista',
-		advice : 'Liitä painamalla (<STRONG>Ctrl+V</STRONG>) ja painamalla <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Jätä huomioimatta fonttimääritykset',
-		removeStyle : 'Poista tyylimääritykset'
+		confirmCleanup	: 'Liittämäsi teksti näyttäisi olevan Word-dokumentista. Haluatko siivota sen ennen liittämistä? (Suositus: Kyllä)',
+		toolbar			: 'Liitä Word-dokumentista',
+		title			: 'Liitä Word-dokumentista',
+		error			: 'Liitetyn tiedon siivoaminen ei onnistunut sisäisen virheen takia'
 	},
 
 	pasteText :
 	{
-		button : 'Liitä tekstinä',
-		title : 'Liitä tekstinä'
+		button	: 'Liitä tekstinä',
+		title	: 'Liitä tekstinä'
 	},
 
 	templates :
 	{
-		button : 'Pohjat',
-		title : 'Sisältöpohjat',
-		insertOption: 'Korvaa editorin koko sisältö',
-		selectPromptMsg: 'Valitse pohja editoriin<br>(aiempi sisältö menetetään):',
-		emptyListMsg : '(Ei määriteltyjä pohjia)'
+		button			: 'Pohjat',
+		title			: 'Sisältöpohjat',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Korvaa editorin koko sisältö',
+		selectPromptMsg	: 'Valitse pohja editoriin<br>(aiempi sisältö menetetään):',
+		emptyListMsg	: '(Ei määriteltyjä pohjia)'
 	},
 
@@ -540,146 +570,178 @@
 	stylesCombo :
 	{
-		label : 'Tyyli',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Tyyli',
+		panelTitle	: 'Muotoilujen tyylit',
+		panelTitle1	: 'Lohkojen tyylit',
+		panelTitle2	: 'Rivinsisäiset tyylit',
+		panelTitle3	: 'Objektien tyylit'
 	},
 
 	format :
 	{
-		label : 'Muotoilu',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Muotoilu',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normaali',
-		tag_pre : 'Muotoiltu',
-		tag_address : 'Osoite',
-		tag_h1 : 'Otsikko 1',
-		tag_h2 : 'Otsikko 2',
-		tag_h3 : 'Otsikko 3',
-		tag_h4 : 'Otsikko 4',
-		tag_h5 : 'Otsikko 5',
-		tag_h6 : 'Otsikko 6',
-		tag_div : 'Normal (DIV)' // MISSING
-	},
+		label		: 'Muotoilu',
+		panelTitle	: 'Muotoilu',
+
+		tag_p		: 'Normaali',
+		tag_pre		: 'Muotoiltu',
+		tag_address	: 'Osoite',
+		tag_h1		: 'Otsikko 1',
+		tag_h2		: 'Otsikko 2',
+		tag_h3		: 'Otsikko 3',
+		tag_h4		: 'Otsikko 4',
+		tag_h5		: 'Otsikko 5',
+		tag_h6		: 'Otsikko 6',
+		tag_div		: 'Normaali (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Luo div-kehikko',
+		toolbar				: 'Luo div-kehikko',
+		cssClassInputLabel	: 'Tyylitiedoston luokat',
+		styleSelectLabel	: 'Tyyli',
+		IdInputLabel		: 'Id',
+		languageCodeInputLabel	: ' Kielen koodi',
+		inlineStyleInputLabel	: 'Sisätyyli',
+		advisoryTitleInputLabel	: 'Ohjeistava otsikko',
+		langDirLabel		: 'Kielen suunta',
+		langDirLTRLabel		: 'Vasemmalta oikealle (LTR)',
+		langDirRTLLabel		: 'Oikealta vasemmalle (RTL)',
+		edit				: 'Muokkaa Diviä',
+		remove				: 'Poista Div'
+  	},
 
 	font :
 	{
-		label : 'Fontti',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Fontti',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Kirjaisinlaji',
+		voiceLabel	: 'Kirjaisinlaji',
+		panelTitle	: 'Kirjaisinlaji'
 	},
 
 	fontSize :
 	{
-		label : 'Koko',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Koko',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Koko',
+		voiceLabel	: 'Kirjaisimen koko',
+		panelTitle	: 'Koko'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Tekstiväri',
-		bgColorTitle : 'Taustaväri',
-		auto : 'Automaattinen',
-		more : 'Lisää värejä...'
+		textColorTitle	: 'Tekstiväri',
+		bgColorTitle	: 'Taustaväri',
+		panelTitle		: 'Värit',
+		auto			: 'Automaattinen',
+		more			: 'Lisää värejä...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Musta',
+		'800000' : 'Kastanjanruskea',
+		'8B4513' : 'Satulanruskea',
+		'2F4F4F' : 'Tumma liuskekivenharmaa',
+		'008080' : 'Sinivihreä',
+		'000080' : 'Laivastonsininen',
+		'4B0082' : 'Indigonsininen',
+		'696969' : 'Tummanharmaa',
+		'B22222' : 'Tiili',
+		'A52A2A' : 'Ruskea',
+		'DAA520' : 'Kultapiisku',
+		'006400' : 'Tummanvihreä',
+		'40E0D0' : 'Turkoosi',
+		'0000CD' : 'Keskisininen',
+		'800080' : 'Purppura',
+		'808080' : 'Harmaa',
+		'F00' : 'Punainen',
+		'FF8C00' : 'Tumma oranssi',
+		'FFD700' : 'Kulta',
+		'008000' : 'Vihreä',
+		'0FF' : 'Syaani',
+		'00F' : 'Sininen',
+		'EE82EE' : 'Violetti',
+		'A9A9A9' : 'Tummanharmaa',
+		'FFA07A' : 'Vaaleanlohenpunainen',
+		'FFA500' : 'Oranssi',
+		'FFFF00' : 'Keltainen',
+		'00FF00' : 'Limetin vihreä',
+		'AFEEEE' : 'Haalea turkoosi',
+		'ADD8E6' : 'Vaaleansininen',
+		'DDA0DD' : 'Luumu',
+		'D3D3D3' : 'Vaaleanharmaa',
+		'FFF0F5' : 'Laventelinpunainen',
+		'FAEBD7' : 'Antiikinvalkoinen',
+		'FFFFE0' : 'Vaaleankeltainen',
+		'F0FFF0' : 'Hunajameloni',
+		'F0FFFF' : 'Asurinsininen',
+		'F0F8FF' : 'Alice Blue -sininen',
+		'E6E6FA' : 'Lavanteli',
+		'FFF' : 'Valkoinen'
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Oikolue kirjoitettaessa',
+		opera_title		: 'Opera ei tue tätä ominaisuutta',
+		enable			: 'Ota käyttöön oikoluku kirjoitettaessa',
+		disable			: 'Poista käytöstä oikoluku kirjoitetaessa',
+		about			: 'Tietoja oikoluvusta kirjoitetaessa',
+		toggle			: 'Vaihda oikoluku kirjoittaessa tilaa',
+		options			: 'Asetukset',
+		langs			: 'Kielet',
+		moreSuggestions	: 'Lisää ehdotuksia',
+		ignore			: 'Ohita',
+		ignoreAll		: 'Ohita kaikki',
+		addWord			: 'Lisää sana',
+		emptyDic		: 'Sanakirjan nimi on annettava.',
+
+		optionsTab		: 'Asetukset',
+		allCaps			: 'Ohita sanat, jotka on kirjoitettu kokonaan isoilla kirjaimilla',
+		ignoreDomainNames : 'Ohita verkkotunnukset',
+		mixedCase		: 'Ohita sanat, joissa on sekoitettu isoja ja pieniä kirjaimia',
+		mixedWithDigits	: 'Ohita sanat, joissa on numeroita',
+
+		languagesTab	: 'Kielet',
+
+		dictionariesTab	: 'Sanakirjat',
+		dic_field_name	: 'Sanakirjan nimi',
+		dic_create		: 'Luo',
+		dic_restore		: 'Palauta',
+		dic_delete		: 'Poista',
+		dic_rename		: 'Nimeä uudelleen',
+		dic_info		: 'Oletuksena sanakirjat tallennetaan evästeeseen, mutta evästeiden koko on kuitenkin rajallinen. Sanakirjan kasvaessa niin suureksi, ettei se enää mahdu evästeeseen, sanakirja täytyy tallentaa palvelimellemme. Tallentaaksesi sanakirjasi palvelimellemme tulee sinun antaa sille nimi. Jos olet jo tallentanut sanakirjan, anna sen nimi ja klikkaa Palauta-painiketta',
+
+		aboutTab		: 'Tietoa'
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
-	},
-
-	maximize : 'Maximize', // MISSING
-	minimize : 'Minimize', // MISSING
+		title		: 'Tietoa CKEditorista',
+		dlgTitle	: 'Tietoa CKEditorista',
+		moreInfo	: 'Lisenssitiedot löytyvät kotisivuiltamme:',
+		copy		: 'Copyright &copy; $1. Kaikki oikeuden pidätetään.'
+	},
+
+	maximize : 'Suurenna',
+	minimize : 'Pienennä',
 
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
-	},
-
-	resize : 'Drag to resize', // MISSING
+		anchor	: 'Ankkuri',
+		flash	: 'Flash animaatio',
+		div		: 'Sivun vaihto',
+		unknown	: 'Tuntematon objekti'
+	},
+
+	resize : 'Raahaa muuttaaksesi kokoa',
 
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Valitse väri',
+		options	:	'Color Options', // MISSING
+		highlight	: 'Korostus',
+		selected	: 'Valittu',
+		clear		: 'Poista'
+	},
+
+	toolbarCollapse	: 'Kutista työkalupalkki',
+	toolbarExpand	: 'Laajenna työkalupalkki'
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/fo.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/fo.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/fo.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Formur',
 		checkbox		: 'Flugubein',
-		radio		: 'Radioknøttur',
+		radio			: 'Radioknøttur',
 		textField		: 'Tekstteigur',
 		textarea		: 'Tekstumráði',
 		hiddenField		: 'Fjaldur teigur',
 		button			: 'Knøttur',
-		select	: 'Valskrá',
+		select			: 'Valskrá',
 		imageButton		: 'Myndaknøttur',
 		notSet			: '<ikki sett>',
@@ -89,12 +93,25 @@
 		ok				: 'Góðkent',
 		cancel			: 'Avlýst',
+		close			: 'Lat aftur',
+		preview			: 'Frumsýn',
 		generalTab		: 'Generelt',
 		advancedTab		: 'Fjølbroytt',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
-		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
-		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		validateNumberFailed : 'Hetta er ikki eitt tal.',
+		confirmNewPage	: 'Allar ikki goymdar broytingar í hesum innihaldi hvørva. Skal nýggj síða lesast kortini?',
+		confirmCancel	: 'Nakrir valmøguleikar eru broyttir. Ert tú vísur í, at dialogurin skal latast aftur?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'Nýtt vindeyga (_blank)',
+		targetTop		: 'Vindeyga ovast (_top)',
+		targetSelf		: 'Sama vindeyga (_self)',
+		targetParent	: 'Upphavligt vindeyga (_parent)',
 
 		// Put the voice-only part of the label in the span.
-		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+		unavailable		: '%1<span class="cke_accessibility">, ikki tøkt</span>'
+	},
+
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
 	},
 
@@ -103,5 +120,6 @@
 	{
 		toolbar		: 'Set inn sertekn',
-		title		: 'Vel sertekn'
+		title		: 'Vel sertekn',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,21 +128,17 @@
 	{
 		toolbar		: 'Ger/broyt tilknýti',
+		other 		: '<other>', // MISSING
 		menu		: 'Broyt tilknýti',
 		title		: 'Tilknýti',
 		info		: 'Tilknýtis upplýsingar',
-		target		: 'Mál',
+		target		: 'Target', // MISSING
 		upload		: 'Send til ambætaran',
 		advanced	: 'Fjølbroytt',
 		type		: 'Tilknýtisslag',
+		toUrl		: 'URL',
 		toAnchor	: 'Tilknýti til marknastein í tekstinum',
 		toEmail		: 'Teldupostur',
-		target		: 'Mál',
-		targetNotSet	: '<ikki sett>',
-		targetFrame	: '<ramma>',
-		targetPopup	: '<popup vindeyga>',
-		targetNew	: 'Nýtt vindeyga (_blank)',
-		targetTop	: 'Alt vindeygað (_top)',
-		targetSelf	: 'Sama vindeygað (_self)',
-		targetParent	: 'Upphavliga vindeygað (_parent)',
+		targetFrame		: '<ramma>',
+		targetPopup		: '<popup vindeyga>',
 		targetFrameName	: 'Vís navn vindeygans',
 		targetPopupName	: 'Popup vindeygans navn',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Støðufrágreiðingarbjálki',
-		popupLocationBar	: 'Adressulinja',
+		popupLocationBar: 'Adressulinja',
 		popupToolbar	: 'Amboðsbjálki',
 		popupMenuBar	: 'Skrábjálki',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Tekstkós',
-		langDirNotSet	: '<ikki sett>',
 		langDirLTR		: 'Frá vinstru til høgru (LTR)',
 		langDirRTL		: 'Frá høgru til vinstru (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -186,9 +222,9 @@
 		replaceWith			: 'Yvirskriva við:',
 		notFoundMsg			: 'Leititeksturin varð ikki funnin',
-		matchCase			: 'Munur á stórum og smáðum bókstavum',
+		matchCase			: 'Munur á stórum og smáum bókstavum',
 		matchWord			: 'Bert heil orð',
 		matchCyclic			: 'Match cyclic', // MISSING
 		replaceAll			: 'Yvirskriva alt',
-		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+		replaceSuccessMsg	: '%1 úrslit broytt.'
 	},
 
@@ -204,5 +240,4 @@
 		border		: 'Bordabreidd',
 		align		: 'Justering',
-		alignNotSet	: '<Einki valt>',
 		alignLeft	: 'Vinstrasett',
 		alignCenter	: 'Miðsett',
@@ -211,4 +246,5 @@
 		widthPx		: 'pixels',
 		widthPc		: 'prosent',
+		widthUnit	: 'breiddar unit',
 		height		: 'Hædd',
 		cellSpace	: 'Fjarstøða millum meskar',
@@ -217,15 +253,15 @@
 		summary		: 'Samandráttur',
 		headers		: 'Headers', // MISSING
-		headersNone		: 'None', // MISSING
-		headersColumn	: 'First column', // MISSING
-		headersRow		: 'First Row', // MISSING
-		headersBoth		: 'Both', // MISSING
-		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
-		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
-		invalidBorder	: 'Border size must be a number.', // MISSING
-		invalidWidth	: 'Table width must be a number.', // MISSING
-		invalidHeight	: 'Table height must be a number.', // MISSING
-		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
-		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+		headersNone		: 'Eingin',
+		headersColumn	: 'Fyrsta kolonna',
+		headersRow		: 'Fyrsta rað',
+		headersBoth		: 'Báðir',
+		invalidRows		: 'Talið av røðum má vera eitt tal størri enn 0.',
+		invalidCols		: 'Talið av kolonnum má vera eitt tal størri enn 0.',
+		invalidBorder	: 'Borda-stødd má vera eitt tal.',
+		invalidWidth	: 'Tabell-breidd má vera eitt tal.',
+		invalidHeight	: 'Tabell-hædd má vera eitt tal.',
+		invalidCellSpacing	: 'Cell spacing má vera eitt tal.',
+		invalidCellPadding	: 'Cell padding má vera eitt tal.',
 
 		cell :
@@ -240,26 +276,26 @@
 			splitHorizontal	: 'Kloyv meska vatnrætt',
 			splitVertical	: 'Kloyv meska loddrætt',
-			title			: 'Cell Properties', // MISSING
-			cellType		: 'Cell Type', // MISSING
-			rowSpan			: 'Rows Span', // MISSING
-			colSpan			: 'Columns Span', // MISSING
+			title			: 'Mesku eginleikar',
+			cellType		: 'Mesku slag',
+			rowSpan			: 'Ræð spenni',
+			colSpan			: 'Kolonnu spenni',
 			wordWrap		: 'Word Wrap', // MISSING
-			hAlign			: 'Horizontal Alignment', // MISSING
-			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
-			alignBaseline	: 'Baseline', // MISSING
-			bgColor			: 'Background Color', // MISSING
-			borderColor		: 'Border Color', // MISSING
-			data			: 'Data', // MISSING
-			header			: 'Header', // MISSING
-			yes				: 'Yes', // MISSING
-			no				: 'No', // MISSING
-			invalidWidth	: 'Cell width must be a number.', // MISSING
-			invalidHeight	: 'Cell height must be a number.', // MISSING
-			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
-			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			hAlign			: 'Horisontal plasering',
+			vAlign			: 'Loddrøtt plasering',
+			alignTop		: 'Top',
+			alignMiddle		: 'Miðja',
+			alignBottom		: 'Botnur',
+			alignBaseline	: 'Basislinja',
+			bgColor			: 'Bakgrundslitur',
+			borderColor		: 'Bordalitur',
+			data			: 'Data',
+			header			: 'Header',
+			yes				: 'Ja',
+			no				: 'Nei',
+			invalidWidth	: 'Meskubreidd má vera eitt tal.',
+			invalidHeight	: 'Meskuhædd má vera eitt tal.',
+			invalidRowSpan	: 'Raðspennið má vera eitt heiltal.',
+			invalidColSpan	: 'Kolonnuspennið má vera eitt heiltal.',
+			chooseColor		: 'Vel'
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Hending',
 		method		: 'Háttur',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Mál',
-		targetNotSet	: '<ikki sett>',
-		targetNew	: 'Nýtt vindeyga (_blank)',
-		targetTop	: 'Alt vindeygað (_top)',
-		targetSelf	: 'Sama vindeygað (_self)',
-		targetParent	: 'Upphavliga vindeygað (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Eginleikar fyri myndaknøtt',
 		menu		: 'Myndaeginleikar',
-		infoTab	: 'Myndaupplýsingar',
+		infoTab		: 'Myndaupplýsingar',
 		btnUpload	: 'Send til ambætaran',
-		url		: 'URL',
-		upload	: 'Send',
-		alt		: 'Alternativur tekstur',
+		upload		: 'Send',
+		alt			: 'Alternativur tekstur',
 		width		: 'Breidd',
-		height	: 'Hædd',
+		height		: 'Hædd',
 		lockRatio	: 'Læs lutfallið',
+		unlockRatio	: 'Lutfallið ikki læst',
 		resetSize	: 'Upprunastødd',
-		border	: 'Bordi',
-		hSpace	: 'Høgri breddi',
-		vSpace	: 'Vinstri breddi',
+		border		: 'Bordi',
+		hSpace		: 'Høgri breddi',
+		vSpace		: 'Vinstri breddi',
 		align		: 'Justering',
 		alignLeft	: 'Vinstra',
-		alignAbsBottom: 'Abs botnur',
-		alignAbsMiddle: 'Abs miðja',
-		alignBaseline	: 'Basislinja',
-		alignBottom	: 'Botnur',
-		alignMiddle	: 'Miðja',
 		alignRight	: 'Høgra',
-		alignTextTop	: 'Tekst toppur',
-		alignTop	: 'Ovast',
-		preview	: 'Frumsýning',
 		alertUrl	: 'Rita slóðina til myndina',
-		linkTab	: 'Tilknýti',
+		linkTab		: 'Tilknýti',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'URL til mynd manglar.',
+		validateWidth	: 'Breidd má vera eitt heiltal.',
+		validateHeight	: 'Hædd má vera eitt heiltal.',
+		validateBorder	: 'Bordi má vera eitt heiltal.',
+		validateHSpace	: 'HSpace má vera eitt heiltal.',
+		validateVSpace	: 'VSpace má vera eitt heiltal.'
 	},
 
@@ -406,50 +433,50 @@
 	{
 		properties		: 'Flash eginleikar',
-		propertiesTab	: 'Properties', // MISSING
-		title		: 'Flash eginleikar',
-		chkPlay		: 'Avspælingin byrjar sjálv',
-		chkLoop		: 'Endurspæl',
-		chkMenu		: 'Ger Flash skrá virkna',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Skalering',
+		propertiesTab	: 'Eginleikar',
+		title			: 'Flash eginleikar',
+		chkPlay			: 'Avspælingin byrjar sjálv',
+		chkLoop			: 'Endurspæl',
+		chkMenu			: 'Ger Flash skrá virkna',
+		chkFull			: 'Loyv fullan skerm',
+ 		scale			: 'Skalering',
 		scaleAll		: 'Vís alt',
 		scaleNoBorder	: 'Eingin bordi',
 		scaleFit		: 'Neyv skalering',
-		access			: 'Script Access', // MISSING
-		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Justering',
-		alignLeft	: 'Vinstra',
-		alignAbsBottom: 'Abs botnur',
-		alignAbsMiddle: 'Abs miðja',
+		access			: 'Script atgongd',
+		accessAlways	: 'Altíð',
+		accessSameDomain: 'Sama navnaøki',
+		accessNever		: 'Ongantíð',
+		align			: 'Justering',
+		alignLeft		: 'Vinstra',
+		alignAbsBottom	: 'Abs botnur',
+		alignAbsMiddle	: 'Abs miðja',
 		alignBaseline	: 'Basislinja',
-		alignBottom	: 'Botnur',
-		alignMiddle	: 'Miðja',
-		alignRight	: 'Høgra',
+		alignBottom		: 'Botnur',
+		alignMiddle		: 'Miðja',
+		alignRight		: 'Høgra',
 		alignTextTop	: 'Tekst toppur',
-		alignTop	: 'Ovast',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Bakgrundslitur',
-		width	: 'Breidd',
-		height	: 'Hædd',
-		hSpace	: 'Høgri breddi',
-		vSpace	: 'Vinstri breddi',
-		validateSrc : 'Vinarliga skriva tilknýti (URL)',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Ovast',
+		quality			: 'Góðska',
+		qualityBest		: 'Besta',
+		qualityHigh		: 'Høg',
+		qualityAutoHigh	: 'Auto høg',
+		qualityMedium	: 'Meðal',
+		qualityAutoLow	: 'Auto Lág',
+		qualityLow		: 'Lág',
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Ikki transparent',
+		windowModeTransparent : 'Transparent',
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variablar fyri Flash',
+		bgcolor			: 'Bakgrundslitur',
+		width			: 'Breidd',
+		height			: 'Hædd',
+		hSpace			: 'Høgri breddi',
+		vSpace			: 'Vinstri breddi',
+		validateSrc		: 'Vinarliga skriva tilknýti (URL)',
+		validateWidth	: 'Breidd má vera eitt tal.',
+		validateHeight	: 'Hædd má vera eitt tal.',
+		validateHSpace	: 'HSpace má vera eitt tal.',
+		validateVSpace	: 'VSpace má vera eitt tal.'
 	},
 
@@ -458,7 +485,7 @@
 	{
 		toolbar			: 'Kanna stavseting',
-		title			: 'Spell Check', // MISSING
-		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
-		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		title			: 'Kanna stavseting',
+		notAvailable	: 'Tíverri, ikki tøkt í løtuni.',
+		errorLoading	: 'Feilur við innlesing av application service host: %s.',
 		notInDic		: 'Finst ikki í orðabókini',
 		changeTo		: 'Broyt til',
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Smiley',
-		title	: 'Vel Smiley'
+		title	: 'Vel Smiley',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
-	},
-
-	numberedlist : 'Talmerktur listi',
-	bulletedlist : 'Punktmerktur listi',
-	indent : 'Økja reglubrotarinntriv',
-	outdent : 'Minka reglubrotarinntriv',
+		eleLabel : 'Slóð til elementir',
+		eleTitle : '%1 element'
+	},
+
+	numberedlist	: 'Talmerktur listi',
+	bulletedlist	: 'Punktmerktur listi',
+	indent			: 'Økja reglubrotarinntriv',
+	outdent			: 'Minka reglubrotarinntriv',
 
 	justify :
 	{
-		left : 'Vinstrasett',
-		center : 'Miðsett',
-		right : 'Høgrasett',
-		block : 'Javnir tekstkantar'
+		left	: 'Vinstrasett',
+		center	: 'Miðsett',
+		right	: 'Høgrasett',
+		block	: 'Javnir tekstkantar'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Innrita',
-		cutError	: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (CTRL+X).',
-		copyError	: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (CTRL+C).',
-		pasteMsg	: 'Vinarliga koyr tekstin í hendan rútin við knappaborðinum (<strong>CTRL+V</strong>) og klikk á <strong>Góðtak</strong>.',
-		securityMsg	: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í beinleiðis atgongd til avritingarminnið. Tygum mugu royna aftur í hesum rútinum.'
+		cutError	: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (Ctrl/Cmd+X).',
+		copyError	: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (Ctrl/Cmd+C).',
+		pasteMsg	: 'Vinarliga koyr tekstin í hendan rútin við knappaborðinum (<strong>Ctrl/Cmd+V</strong>) og klikk á <strong>Góðtak</strong>.',
+		securityMsg	: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í beinleiðis atgongd til avritingarminnið. Tygum mugu royna aftur í hesum rútinum.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Innrita frá Word',
-		title : 'Innrita frá Word',
-		advice : 'Vinarliga koyr tekstin í hendan rútin við knappaborðinum (<strong>CTRL+V</strong>) og klikk á <strong>Góðtak</strong>.',
-		ignoreFontFace : 'Forfjóna Font definitiónirnar',
-		removeStyle : 'Strika typografi definitiónir'
+		confirmCleanup	: 'Teksturin, tú roynir at seta inn, sýnist at stava frá Word. Skal teksturin reinsast fyrst?',
+		toolbar			: 'Innrita frá Word',
+		title			: 'Innrita frá Word',
+		error			: 'Tað eyðnaðist ikki at reinsa tekstin vegna ein internan feil'
 	},
 
 	pasteText :
 	{
-		button : 'Innrita som reinan tekst',
-		title : 'Innrita som reinan tekst'
+		button	: 'Innrita som reinan tekst',
+		title	: 'Innrita som reinan tekst'
 	},
 
 	templates :
 	{
-		button : 'Skabelónir',
-		title : 'Innihaldsskabelónir',
-		insertOption: 'Yvirskriva núverandi innihald',
-		selectPromptMsg: 'Vinarliga vel ta skabelón, ið skal opnast í tekstviðgeranum<br>(Hetta yvirskrivar núverandi innihald):',
-		emptyListMsg : '(Ongar skabelónir tøkar)'
+		button			: 'Skabelónir',
+		title			: 'Innihaldsskabelónir',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Yvirskriva núverandi innihald',
+		selectPromptMsg	: 'Vinarliga vel ta skabelón, ið skal opnast í tekstviðgeranum<br>(Hetta yvirskrivar núverandi innihald):',
+		emptyListMsg	: '(Ongar skabelónir tøkar)'
 	},
 
@@ -540,146 +570,178 @@
 	stylesCombo :
 	{
-		label : 'Typografi',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Typografi',
+		panelTitle	: 'Formatterings stílir',
+		panelTitle1	: 'Blokk stílir',
+		panelTitle2	: 'Inline stílir',
+		panelTitle3	: 'Object stílir'
 	},
 
 	format :
 	{
-		label : 'Skriftsnið',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Skriftsnið',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Vanligt',
-		tag_pre : 'Sniðgivið',
-		tag_address : 'Adressa',
-		tag_h1 : 'Yvirskrift 1',
-		tag_h2 : 'Yvirskrift 2',
-		tag_h3 : 'Yvirskrift 3',
-		tag_h4 : 'Yvirskrift 4',
-		tag_h5 : 'Yvirskrift 5',
-		tag_h6 : 'Yvirskrift 6',
-		tag_div : 'Normal (DIV)' // MISSING
-	},
+		label		: 'Skriftsnið',
+		panelTitle	: 'Skriftsnið',
+
+		tag_p		: 'Vanligt',
+		tag_pre		: 'Sniðgivið',
+		tag_address	: 'Adressa',
+		tag_h1		: 'Yvirskrift 1',
+		tag_h2		: 'Yvirskrift 2',
+		tag_h3		: 'Yvirskrift 3',
+		tag_h4		: 'Yvirskrift 4',
+		tag_h5		: 'Yvirskrift 5',
+		tag_h6		: 'Yvirskrift 6',
+		tag_div		: 'Normal (DIV)' // MISSING
+	},
+
+	div :
+	{
+		title				: 'Ger Div Container',
+		toolbar				: 'Ger Div Container',
+		cssClassInputLabel	: 'Stylesheet Classes',
+		styleSelectLabel	: 'Style',
+		IdInputLabel		: 'Id',
+		languageCodeInputLabel	: ' Language Code',
+		inlineStyleInputLabel	: 'Inline Style',
+		advisoryTitleInputLabel	: 'Advisory Title',
+		langDirLabel		: 'Language Direction',
+		langDirLTRLabel		: 'Vinstru til høgru (LTR)',
+		langDirRTLLabel		: 'Høgru til vinstru (RTL)',
+		edit				: 'Redigera Div',
+		remove				: 'Strika Div'
+  	},
 
 	font :
 	{
-		label : 'Skrift',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Skrift',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Skrift',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Skrift'
 	},
 
 	fontSize :
 	{
-		label : 'Skriftstødd',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Skriftstødd',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Skriftstødd',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Skriftstødd'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Tekstlitur',
-		bgColorTitle : 'Bakgrundslitur',
-		auto : 'Automatiskt',
-		more : 'Fleiri litir...'
+		textColorTitle	: 'Tekstlitur',
+		bgColorTitle	: 'Bakgrundslitur',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatiskt',
+		more			: 'Fleiri litir...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Kanna stavseting, meðan tú skrivar',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT',
+		disable			: 'Disable SCAYT',
+		about			: 'Um SCAYT',
+		toggle			: 'Toggle SCAYT',
+		options			: 'Uppseting',
+		langs			: 'Tungumál',
+		moreSuggestions	: 'Fleiri tilráðingar',
+		ignore			: 'Ignorera',
+		ignoreAll		: 'Ignorera alt',
+		addWord			: 'Legg orð afturat',
+		emptyDic		: 'Heiti á orðabók eigur ikki at vera tómt.',
+
+		optionsTab		: 'Uppseting',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Tungumál',
+
+		dictionariesTab	: 'Orðabøkur',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'Um'
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
-	},
-
-	maximize : 'Maximize', // MISSING
-	minimize : 'Minimize', // MISSING
+		title		: 'Um CKEditor',
+		dlgTitle	: 'Um CKEditor',
+		moreInfo	: 'Licens upplýsingar finnast á heimasíðu okkara:',
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
+	},
+
+	maximize : 'Maksimera',
+	minimize : 'Minimera',
 
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
-	},
-
-	resize : 'Drag to resize', // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Síðuskift',
+		unknown	: 'Ókent Object'
+	},
+
+	resize : 'Drag fyri at broyta stødd',
 
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Vel lit',
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/fr-ca.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/fr-ca.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/fr-ca.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Formulaire',
 		checkbox		: 'Case à cocher',
-		radio		: 'Bouton radio',
+		radio			: 'Bouton radio',
 		textField		: 'Champ texte',
 		textarea		: 'Zone de texte',
 		hiddenField		: 'Champ caché',
 		button			: 'Bouton',
-		select	: 'Champ de sélection',
+		select			: 'Champ de sélection',
 		imageButton		: 'Bouton image',
 		notSet			: '<Par défaut>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Annuler',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'Général',
 		advancedTab		: 'Avancée',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Insérer un caractère spécial',
-		title		: 'Insérer un caractère spécial'
+		title		: 'Insérer un caractère spécial',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Insérer/modifier le lien',
+		other 		: '<other>', // MISSING
 		menu		: 'Modifier le lien',
 		title		: 'Propriétés du lien',
@@ -117,14 +136,9 @@
 		advanced	: 'Avancée',
 		type		: 'Type de lien',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Ancre dans cette page',
 		toEmail		: 'E-Mail',
-		target		: 'Destination',
-		targetNotSet	: '<Par défaut>',
-		targetFrame	: '<Cadre>',
-		targetPopup	: '<fenêtre popup>',
-		targetNew	: 'Nouvelle fenêtre (_blank)',
-		targetTop	: 'Fenêtre supérieure (_top)',
-		targetSelf	: 'Même fenêtre (_self)',
-		targetParent	: 'Fenêtre mère (_parent)',
+		targetFrame		: '<Cadre>',
+		targetPopup		: '<fenêtre popup>',
 		targetFrameName	: 'Nom du cadre de destination',
 		targetPopupName	: 'Nom de la fenêtre popup',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Barre d\'état',
-		popupLocationBar	: 'Barre d\'adresses',
+		popupLocationBar: 'Barre d\'adresses',
 		popupToolbar	: 'Barre d\'outils',
 		popupMenuBar	: 'Barre de menu',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Sens d\'écriture',
-		langDirNotSet	: '<Par défaut>',
 		langDirLTR		: 'De gauche à droite (LTR)',
 		langDirRTL		: 'De droite à gauche (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Taille de la bordure',
 		align		: 'Alignement',
-		alignNotSet	: '<Par défaut>',
 		alignLeft	: 'Gauche',
 		alignCenter	: 'Centré',
@@ -211,4 +246,5 @@
 		widthPx		: 'pixels',
 		widthPc		: 'pourcentage',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Hauteur',
 		cellSpace	: 'Espacement',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Action',
 		method		: 'Méthode',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Destination',
-		targetNotSet	: '<Par défaut>',
-		targetNew	: 'Nouvelle fenêtre (_blank)',
-		targetTop	: 'Fenêtre supérieure (_top)',
-		targetSelf	: 'Même fenêtre (_self)',
-		targetParent	: 'Fenêtre mère (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Propriétés du bouton image',
 		menu		: 'Propriétés de l\'image',
-		infoTab	: 'Informations sur l\'image',
+		infoTab		: 'Informations sur l\'image',
 		btnUpload	: 'Envoyer sur le serveur',
-		url		: 'URL',
-		upload	: 'Télécharger',
-		alt		: 'Texte de remplacement',
+		upload		: 'Télécharger',
+		alt			: 'Texte de remplacement',
 		width		: 'Largeur',
-		height	: 'Hauteur',
+		height		: 'Hauteur',
 		lockRatio	: 'Garder les proportions',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Taille originale',
-		border	: 'Bordure',
-		hSpace	: 'Espacement horizontal',
-		vSpace	: 'Espacement vertical',
+		border		: 'Bordure',
+		hSpace		: 'Espacement horizontal',
+		vSpace		: 'Espacement vertical',
 		align		: 'Alignement',
 		alignLeft	: 'Gauche',
-		alignAbsBottom: 'Abs Bas',
-		alignAbsMiddle: 'Abs Milieu',
-		alignBaseline	: 'Bas du texte',
-		alignBottom	: 'Bas',
-		alignMiddle	: 'Milieu',
 		alignRight	: 'Droite',
-		alignTextTop	: 'Haut du texte',
-		alignTop	: 'Haut',
-		preview	: 'Prévisualisation',
 		alertUrl	: 'Veuillez saisir l\'URL de l\'image',
-		linkTab	: 'Lien',
+		linkTab		: 'Lien',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Propriétés de l\'animation Flash',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Propriétés de l\'animation Flash',
-		chkPlay		: 'Lecture automatique',
-		chkLoop		: 'Boucle',
-		chkMenu		: 'Activer le menu Flash',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Affichage',
+		title			: 'Propriétés de l\'animation Flash',
+		chkPlay			: 'Lecture automatique',
+		chkLoop			: 'Boucle',
+		chkMenu			: 'Activer le menu Flash',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Affichage',
 		scaleAll		: 'Par défaut (tout montrer)',
 		scaleNoBorder	: 'Sans bordure',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Alignement',
-		alignLeft	: 'Gauche',
-		alignAbsBottom: 'Abs Bas',
-		alignAbsMiddle: 'Abs Milieu',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Alignement',
+		alignLeft		: 'Gauche',
+		alignAbsBottom	: 'Abs Bas',
+		alignAbsMiddle	: 'Abs Milieu',
 		alignBaseline	: 'Bas du texte',
-		alignBottom	: 'Bas',
-		alignMiddle	: 'Milieu',
-		alignRight	: 'Droite',
+		alignBottom		: 'Bas',
+		alignMiddle		: 'Milieu',
+		alignRight		: 'Droite',
 		alignTextTop	: 'Haut du texte',
-		alignTop	: 'Haut',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Couleur de fond',
-		width	: 'Largeur',
-		height	: 'Hauteur',
-		hSpace	: 'Espacement horizontal',
-		vSpace	: 'Espacement vertical',
-		validateSrc : 'Veuillez saisir l\'URL',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Haut',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Couleur de fond',
+		width			: 'Largeur',
+		height			: 'Hauteur',
+		hSpace			: 'Espacement horizontal',
+		vSpace			: 'Espacement vertical',
+		validateSrc		: 'Veuillez saisir l\'URL',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Emoticon',
-		title	: 'Insérer un Emoticon'
+		title	: 'Insérer un Emoticon',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Liste numérotée',
-	bulletedlist : 'Liste à puces',
-	indent : 'Augmenter le retrait',
-	outdent : 'Diminuer le retrait',
+	numberedlist	: 'Liste numérotée',
+	bulletedlist	: 'Liste à puces',
+	indent			: 'Augmenter le retrait',
+	outdent			: 'Diminuer le retrait',
 
 	justify :
 	{
-		left : 'Aligner à gauche',
-		center : 'Centrer',
-		right : 'Aligner à Droite',
-		block : 'Texte justifié'
+		left	: 'Aligner à gauche',
+		center	: 'Centrer',
+		right	: 'Aligner à Droite',
+		block	: 'Texte justifié'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Coller',
-		cutError	: 'Les paramètres de sécurité de votre navigateur empêchent l\'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+X).',
-		copyError	: 'Les paramètres de sécurité de votre navigateur empêchent l\'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+C).',
-		pasteMsg	: 'Veuillez coller dans la zone ci-dessous en utilisant le clavier (<STRONG>Ctrl+V</STRONG>) et appuyer sur <STRONG>OK</STRONG>.',
-		securityMsg	: 'A cause des paramètres de sécurité de votre navigateur, l\'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.'
+		cutError	: 'Les paramètres de sécurité de votre navigateur empêchent l\'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+X).',
+		copyError	: 'Les paramètres de sécurité de votre navigateur empêchent l\'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+C).',
+		pasteMsg	: 'Veuillez coller dans la zone ci-dessous en utilisant le clavier (<STRONG>Ctrl/Cmd+V</STRONG>) et appuyer sur <STRONG>OK</STRONG>.',
+		securityMsg	: 'A cause des paramètres de sécurité de votre navigateur, l\'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Coller en tant que Word (formaté)',
-		title : 'Coller en tant que Word (formaté)',
-		advice : 'Veuillez coller dans la zone ci-dessous en utilisant le clavier (<STRONG>Ctrl+V</STRONG>) et appuyer sur <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignorer les polices de caractères',
-		removeStyle : 'Supprimer les styles'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Coller en tant que Word (formaté)',
+		title			: 'Coller en tant que Word (formaté)',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Coller comme texte',
-		title : 'Coller comme texte'
+		button	: 'Coller comme texte',
+		title	: 'Coller comme texte'
 	},
 
 	templates :
 	{
-		button : 'Modèles',
-		title : 'Modèles de contenu',
-		insertOption: 'Remplacer tout le contenu actuel',
-		selectPromptMsg: 'Sélectionner le modèle à ouvrir dans l\'éditeur<br>(le contenu actuel sera remplacé):',
-		emptyListMsg : '(Aucun modèle disponible)'
+		button			: 'Modèles',
+		title			: 'Modèles de contenu',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Remplacer tout le contenu actuel',
+		selectPromptMsg	: 'Sélectionner le modèle à ouvrir dans l\'éditeur<br>(le contenu actuel sera remplacé):',
+		emptyListMsg	: '(Aucun modèle disponible)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Style',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Style',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Format',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Format',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Formaté',
-		tag_address : 'Adresse',
-		tag_h1 : 'En-tête 1',
-		tag_h2 : 'En-tête 2',
-		tag_h3 : 'En-tête 3',
-		tag_h4 : 'En-tête 4',
-		tag_h5 : 'En-tête 5',
-		tag_h6 : 'En-tête 6',
-		tag_div : 'Normal (DIV)'
-	},
+		label		: 'Format',
+		panelTitle	: 'Format',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formaté',
+		tag_address	: 'Adresse',
+		tag_h1		: 'En-tête 1',
+		tag_h2		: 'En-tête 2',
+		tag_h3		: 'En-tête 3',
+		tag_h4		: 'En-tête 4',
+		tag_h5		: 'En-tête 5',
+		tag_h6		: 'En-tête 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Police',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Police',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Police',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Police'
 	},
 
 	fontSize :
 	{
-		label : 'Taille',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Taille',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Taille',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Taille'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Couleur de caractère',
-		bgColorTitle : 'Couleur de fond',
-		auto : 'Automatique',
-		more : 'Plus de couleurs...'
+		textColorTitle	: 'Couleur de caractère',
+		bgColorTitle	: 'Couleur de fond',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatique',
+		more			: 'Plus de couleurs...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/fr.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/fr.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/fr.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Editeur de Texte Enrichi, %1',
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Formulaire',
 		checkbox		: 'Case à cocher',
-		radio		: 'Bouton Radio',
+		radio			: 'Bouton Radio',
 		textField		: 'Champ texte',
 		textarea		: 'Zone de texte',
 		hiddenField		: 'Champ caché',
 		button			: 'Bouton',
-		select	: 'Liste déroulante',
+		select			: 'Liste déroulante',
 		imageButton		: 'Bouton image',
 		notSet			: '<non défini>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Annuler',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'Général',
 		advancedTab		: 'Avancé',
-		validateNumberFailed	: 'Cette valeur n\'est pas un nombre.',
+		validateNumberFailed : 'Cette valeur n\'est pas un nombre.',
 		confirmNewPage	: 'Les changements non sauvegardés seront perdus. Etes-vous sûr de vouloir charger une nouvelle page?',
 		confirmCancel	: 'Certaines options ont été modifiées. Etes-vous sûr de vouloir fermer?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Insérer un caractère spécial',
-		title		: 'Sélectionnez un caractère'
+		title		: 'Sélectionnez un caractère',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Lien',
+		other 		: '<autre>',
 		menu		: 'Editer le lien',
 		title		: 'Lien',
@@ -117,14 +136,9 @@
 		advanced	: 'Avancé',
 		type		: 'Type de lien',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Transformer le lien en ancre dans le texte',
 		toEmail		: 'E-mail',
-		target		: 'Cible',
-		targetNotSet	: '<non définie>',
-		targetFrame	: '<cadre>',
-		targetPopup	: '<fenêtre popup>',
-		targetNew	: 'Nouvelle fenêtre (_blank)',
-		targetTop	: 'Même fenêtre (_top)',
-		targetSelf	: 'Même Cadre (_self)',
-		targetParent	: 'Fenêtre parente (_parent)',
+		targetFrame		: '<cadre>',
+		targetPopup		: '<fenêtre popup>',
 		targetFrameName	: 'Nom du Cadre destination',
 		targetPopupName	: 'Nom de la fenêtre popup',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Redimensionnable',
 		popupStatusBar	: 'Barre de status',
-		popupLocationBar	: 'Barre d\'adresse',
+		popupLocationBar: 'Barre d\'adresse',
 		popupToolbar	: 'Barre d\'outils',
 		popupMenuBar	: 'Barre de menu',
@@ -144,5 +158,4 @@
 		id				: 'Id',
 		langDir			: 'Sens d\'écriture',
-		langDirNotSet	: '<non défini>',
 		langDirLTR		: 'Gauche à droite',
 		langDirRTL		: 'Droite à gauche',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Taille de la bordure',
 		align		: 'Alignement du contenu',
-		alignNotSet	: '<non définie>',
 		alignLeft	: 'Gauche',
 		alignCenter	: 'Centré',
@@ -211,4 +246,5 @@
 		widthPx		: 'pixels',
 		widthPc		: '% pourcents',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Hauteur',
 		cellSpace	: 'Espacement des cellules',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'La fusion de lignes doit être un nombre entier.',
 			invalidColSpan	: 'La fusion de colonnes doit être un nombre entier.',
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Action',
 		method		: 'Méthode',
-		encoding	: 'Encodage',
-		target		: 'Cible',
-		targetNotSet	: '<non définie>',
-		targetNew	: 'Nouvelle fenêtre (_blank)',
-		targetTop	: 'Même fenêtre (_top)',
-		targetSelf	: 'Même Cadre (_self)',
-		targetParent	: 'Fenêtre parente (_parent)'
+		encoding	: 'Encodage'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Propriétés du bouton image',
 		menu		: 'Propriétés de l\'image',
-		infoTab	: 'Informations sur l\'image',
+		infoTab		: 'Informations sur l\'image',
 		btnUpload	: 'Envoyer sur le serveur',
-		url		: 'URL',
-		upload	: 'Envoyer',
-		alt		: 'Texte de remplacement',
+		upload		: 'Envoyer',
+		alt			: 'Texte de remplacement',
 		width		: 'Largeur',
-		height	: 'Hauteur',
+		height		: 'Hauteur',
 		lockRatio	: 'Garder les proportions',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Taille d\'origine',
-		border	: 'Bordure',
-		hSpace	: 'Espacement horizontal',
-		vSpace	: 'Espacement vertical',
+		border		: 'Bordure',
+		hSpace		: 'Espacement horizontal',
+		vSpace		: 'Espacement vertical',
 		align		: 'Alignement',
 		alignLeft	: 'Gauche',
-		alignAbsBottom: 'Bas absolu',
-		alignAbsMiddle: 'Milieu absolu',
-		alignBaseline	: 'Bas du texte',
-		alignBottom	: 'Bas',
-		alignMiddle	: 'Milieu',
 		alignRight	: 'Droite',
-		alignTextTop	: 'Haut du texte',
-		alignTop	: 'Haut',
-		preview	: 'Aperçu',
 		alertUrl	: 'Veuillez entrer l\'adresse de l\'image',
-		linkTab	: 'Lien',
+		linkTab		: 'Lien',
 		button2Img	: 'Voulez-vous transformer le bouton image sélectionné en simple image?',
 		img2Button	: 'Voulez-vous transformer l\'image en bouton image?',
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Propriétés du Flash',
 		propertiesTab	: 'Propriétés',
-		title		: 'Propriétés du Flash',
-		chkPlay		: 'Jouer automatiquement',
-		chkLoop		: 'Boucle',
-		chkMenu		: 'Activer le menu Flash',
-		chkFull		: 'Permettre le plein écran',
- 		scale		: 'Echelle',
+		title			: 'Propriétés du Flash',
+		chkPlay			: 'Jouer automatiquement',
+		chkLoop			: 'Boucle',
+		chkMenu			: 'Activer le menu Flash',
+		chkFull			: 'Permettre le plein écran',
+ 		scale			: 'Echelle',
 		scaleAll		: 'Afficher tout',
 		scaleNoBorder	: 'Pas de bordure',
@@ -418,38 +445,38 @@
 		access			: 'Accès aux scripts',
 		accessAlways	: 'Toujours',
-		accessSameDomain	: 'Même domaine',
-		accessNever	: 'Jamais',
-		align		: 'Alignement',
-		alignLeft	: 'Gauche',
-		alignAbsBottom: 'Bas absolu',
-		alignAbsMiddle: 'Milieu absolu',
+		accessSameDomain: 'Même domaine',
+		accessNever		: 'Jamais',
+		align			: 'Alignement',
+		alignLeft		: 'Gauche',
+		alignAbsBottom	: 'Bas absolu',
+		alignAbsMiddle	: 'Milieu absolu',
 		alignBaseline	: 'Bas du texte',
-		alignBottom	: 'Bas',
-		alignMiddle	: 'Milieu',
-		alignRight	: 'Droite',
+		alignBottom		: 'Bas',
+		alignMiddle		: 'Milieu',
+		alignRight		: 'Droite',
 		alignTextTop	: 'Haut du texte',
-		alignTop	: 'Haut',
-		quality		: 'Qualité',
-		qualityBest		 : 'Meilleure',
-		qualityHigh		 : 'Haute',
-		qualityAutoHigh	 : 'Haute Auto',
-		qualityMedium	 : 'Moyenne',
-		qualityAutoLow	 : 'Basse Auto',
-		qualityLow		 : 'Basse',
-		windowModeWindow	 : 'Fenêtre',
-		windowModeOpaque	 : 'Opaque',
-		windowModeTransparent	 : 'Transparent',
-		windowMode	: 'Mode fenêtre',
-		flashvars	: 'Variables du Flash',
-		bgcolor	: 'Couleur d\'arrière-plan',
-		width	: 'Largeur',
-		height	: 'Hauteur',
-		hSpace	: 'Espacement horizontal',
-		vSpace	: 'Espacement vertical',
-		validateSrc : 'L\'adresse ne doit pas être vide.',
-		validateWidth : 'La largeur doit être un nombre.',
-		validateHeight : 'La hauteur doit être un nombre.',
-		validateHSpace : 'L\'espacement horizontal doit être un nombre.',
-		validateVSpace : 'L\'espacement vertical doit être un nombre.'
+		alignTop		: 'Haut',
+		quality			: 'Qualité',
+		qualityBest		: 'Meilleure',
+		qualityHigh		: 'Haute',
+		qualityAutoHigh	: 'Haute Auto',
+		qualityMedium	: 'Moyenne',
+		qualityAutoLow	: 'Basse Auto',
+		qualityLow		: 'Basse',
+		windowModeWindow: 'Fenêtre',
+		windowModeOpaque: 'Opaque',
+		windowModeTransparent : 'Transparent',
+		windowMode		: 'Mode fenêtre',
+		flashvars		: 'Variables du Flash',
+		bgcolor			: 'Couleur d\'arrière-plan',
+		width			: 'Largeur',
+		height			: 'Hauteur',
+		hSpace			: 'Espacement horizontal',
+		vSpace			: 'Espacement vertical',
+		validateSrc		: 'L\'adresse ne doit pas être vide.',
+		validateWidth	: 'La largeur doit être un nombre.',
+		validateHeight	: 'La hauteur doit être un nombre.',
+		validateHSpace	: 'L\'espacement horizontal doit être un nombre.',
+		validateVSpace	: 'L\'espacement vertical doit être un nombre.'
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Emoticon',
-		title	: 'Insérer un émoticon'
+		title	: 'Insérer un émoticon',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 éléments'
 	},
 
-	numberedlist : 'Insérer/Supprimer la liste numérotée',
-	bulletedlist : 'Insérer/Supprimer la liste à puces',
-	indent : 'Augmenter le retrait (tabulation)',
-	outdent : 'Diminuer le retrait (tabulation)',
+	numberedlist	: 'Insérer/Supprimer la liste numérotée',
+	bulletedlist	: 'Insérer/Supprimer la liste à puces',
+	indent			: 'Augmenter le retrait (tabulation)',
+	outdent			: 'Diminuer le retrait (tabulation)',
 
 	justify :
 	{
-		left : 'Aligner à gauche',
-		center : 'Centrer',
-		right : 'Aligner à droite',
-		block : 'Justifier'
+		left	: 'Aligner à gauche',
+		center	: 'Centrer',
+		right	: 'Aligner à droite',
+		block	: 'Justifier'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Coller',
-		cutError	: 'Les paramètres de sécurité de votre navigateur ne permettent pas à l\'éditeur d\'exécuter automatiquement l\'opération "couper". Veuillez utiliser le raccourci clavier (Ctrl+X).',
-		copyError	: 'Les paramètres de sécurité de votre navigateur ne permettent pas à l\'éditeur d\'exécuter automatiquement des opérations de copie. Veuillez utiliser le raccourci clavier (Ctrl+C).',
-		pasteMsg	: 'Veuillez coller le texte dans la zone suivante en utilisant le raccourci clavier (<strong>Ctrl+V</strong>) et cliquez sur OK',
-		securityMsg	: 'A cause des paramètres de sécurité de votre navigateur, l\'éditeur n\'est pas en mesure d\'accéder directement à vos données contenues dans le presse-papier. Vous devriez réessayer de coller les données dans la fenêtre.'
+		cutError	: 'Les paramètres de sécurité de votre navigateur ne permettent pas à l\'éditeur d\'exécuter automatiquement l\'opération "couper". Veuillez utiliser le raccourci clavier (Ctrl/Cmd+X).',
+		copyError	: 'Les paramètres de sécurité de votre navigateur ne permettent pas à l\'éditeur d\'exécuter automatiquement des opérations de copie. Veuillez utiliser le raccourci clavier (Ctrl/Cmd+C).',
+		pasteMsg	: 'Veuillez coller le texte dans la zone suivante en utilisant le raccourci clavier (<strong>Ctrl/Cmd+V</strong>) et cliquez sur OK',
+		securityMsg	: 'A cause des paramètres de sécurité de votre navigateur, l\'éditeur n\'est pas en mesure d\'accéder directement à vos données contenues dans le presse-papier. Vous devriez réessayer de coller les données dans la fenêtre.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Coller depuis Word',
-		title : 'Coller depuis Word',
-		advice : 'Veuillez coller le texte dans la zone suivante, en utilisant le raccourci clavier (<strong>Ctrl+V</strong>) et cliquez sur OK.',
-		ignoreFontFace : 'Supprimer la définition des polices',
-		removeStyle : 'Supprimer la définition des styles'
+		confirmCleanup	: 'Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller?',
+		toolbar			: 'Coller depuis Word',
+		title			: 'Coller depuis Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Coller comme texte sans mise en forme',
-		title : 'Coller comme texte sans mise en forme'
+		button	: 'Coller comme texte sans mise en forme',
+		title	: 'Coller comme texte sans mise en forme'
 	},
 
 	templates :
 	{
-		button : 'Modèles',
-		title : 'Contenu des modèles',
-		insertOption: 'Remplacer le contenu actuel',
-		selectPromptMsg: 'Veuillez sélectionner le modèle pour l\'ouvrir dans l\'éditeur',
-		emptyListMsg : '(Aucun modèle disponible)'
+		button			: 'Modèles',
+		title			: 'Contenu des modèles',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Remplacer le contenu actuel',
+		selectPromptMsg	: 'Veuillez sélectionner le modèle pour l\'ouvrir dans l\'éditeur',
+		emptyListMsg	: '(Aucun modèle disponible)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Styles',
-		voiceLabel : 'Styles',
-		panelVoiceLabel : 'Choisissez un style',
-		panelTitle1 : 'Styles de blocs',
-		panelTitle2 : 'Styles en ligne',
-		panelTitle3 : 'Styles d\'objet'
+		label		: 'Styles',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Styles de blocs',
+		panelTitle2	: 'Styles en ligne',
+		panelTitle3	: 'Styles d\'objet'
 	},
 
 	format :
 	{
-		label : 'Format',
-		voiceLabel : 'Format',
-		panelTitle : 'Format de paragraphe',
-		panelVoiceLabel : 'Choisissez un format de paragraphe',
-
-		tag_p : 'Normal',
-		tag_pre : 'Formaté',
-		tag_address : 'Adresse',
-		tag_h1 : 'Titre 1',
-		tag_h2 : 'Titre 2',
-		tag_h3 : 'Titre 3',
-		tag_h4 : 'Titre 4',
-		tag_h5 : 'Titre 5',
-		tag_h6 : 'Titre 6',
-		tag_div : 'Normal (DIV)'
-	},
+		label		: 'Format',
+		panelTitle	: 'Format de paragraphe',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formaté',
+		tag_address	: 'Adresse',
+		tag_h1		: 'Titre 1',
+		tag_h2		: 'Titre 2',
+		tag_h3		: 'Titre 3',
+		tag_h4		: 'Titre 4',
+		tag_h5		: 'Titre 5',
+		tag_h6		: 'Titre 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Police',
-		voiceLabel : 'Police',
-		panelTitle : 'Style de police',
-		panelVoiceLabel : 'Choisissez une police'
+		label		: 'Police',
+		voiceLabel	: 'Police',
+		panelTitle	: 'Style de police'
 	},
 
 	fontSize :
 	{
-		label : 'Taille',
-		voiceLabel : 'Taille de police',
-		panelTitle : 'Taille de police',
-		panelVoiceLabel : 'Choisissez une taille de police'
+		label		: 'Taille',
+		voiceLabel	: 'Taille de police',
+		panelTitle	: 'Taille de police'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Couleur de texte',
-		bgColorTitle : 'Couleur d\'arrière plan',
-		auto : 'Automatique',
-		more : 'Plus de couleurs...'
+		textColorTitle	: 'Couleur de texte',
+		bgColorTitle	: 'Couleur d\'arrière plan',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatique',
+		more			: 'Plus de couleurs...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Vérification d\'Orthographe en Cours de Frappe (SCAYT: Spell Check As You Type)',
-		enable : 'Activer SCAYT',
-		disable : 'Désactiver SCAYT',
-		about : 'A propos de SCAYT',
-		toggle : 'Activer/Désactiver SCAYT',
-		options : 'Options',
-		langs : 'Langues',
-		moreSuggestions : 'Plus de suggestions',
-		ignore : 'Ignorer',
-		ignoreAll : 'Ignorer Tout',
-		addWord : 'Ajouter le mot',
-		emptyDic : 'Le nom du dictionnaire ne devrait pas être vide.',
-		optionsTab : 'Options',
-		languagesTab : 'Langues',
-		dictionariesTab : 'Dictionnaires',
-		aboutTab : 'A propos de'
+		title			: 'Vérification d\'Orthographe en Cours de Frappe (SCAYT: Spell Check As You Type)',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Activer SCAYT',
+		disable			: 'Désactiver SCAYT',
+		about			: 'A propos de SCAYT',
+		toggle			: 'Activer/Désactiver SCAYT',
+		options			: 'Options',
+		langs			: 'Langues',
+		moreSuggestions	: 'Plus de suggestions',
+		ignore			: 'Ignorer',
+		ignoreAll		: 'Ignorer Tout',
+		addWord			: 'Ajouter le mot',
+		emptyDic		: 'Le nom du dictionnaire ne devrait pas être vide.',
+
+		optionsTab		: 'Options',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Langues',
+
+		dictionariesTab	: 'Dictionnaires',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'A propos de'
 	},
 
 	about :
 	{
-		title : 'A propos de CKEditor',
-		dlgTitle : 'A propos de CKEditor',
-		moreInfo : 'Pour les informations de licence, veuillez visiter notre site web:',
-		copy : 'Copyright &copy; $1. Tous droits réservés.'
+		title		: 'A propos de CKEditor',
+		dlgTitle	: 'A propos de CKEditor',
+		moreInfo	: 'Pour les informations de licence, veuillez visiter notre site web:',
+		copy		: 'Copyright &copy; $1. Tous droits réservés.'
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Ancre',
-		flash : 'Animation Flash',
-		div : 'Saut de Page',
-		unknown : 'Objet Inconnu'
+		anchor	: 'Ancre',
+		flash	: 'Animation Flash',
+		div		: 'Saut de Page',
+		unknown	: 'Objet Inconnu'
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/gl.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/gl.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/gl.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Formulario',
 		checkbox		: 'Cadro de Verificación',
-		radio		: 'Botón de Radio',
+		radio			: 'Botón de Radio',
 		textField		: 'Campo de Texto',
 		textarea		: 'Área de Texto',
 		hiddenField		: 'Campo Oculto',
 		button			: 'Botón',
-		select	: 'Campo de Selección',
+		select			: 'Campo de Selección',
 		imageButton		: 'Botón de Imaxe',
 		notSet			: '<non definido>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Cancelar',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'Advanzado',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Inserir Carácter Especial',
-		title		: 'Seleccione Caracter Especial'
+		title		: 'Seleccione Caracter Especial',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Inserir/Editar Ligazón',
+		other 		: '<outro>',
 		menu		: 'Editar Ligazón',
 		title		: 'Ligazón',
@@ -117,14 +136,9 @@
 		advanced	: 'Advanzado',
 		type		: 'Tipo de Ligazón',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Referencia nesta páxina',
 		toEmail		: 'E-Mail',
-		target		: 'Destino',
-		targetNotSet	: '<non definido>',
-		targetFrame	: '<frame>',
-		targetPopup	: '<Xanela Emerxente>',
-		targetNew	: 'Nova Xanela (_blank)',
-		targetTop	: 'Xanela Primaria (_top)',
-		targetSelf	: 'Mesma Xanela (_self)',
-		targetParent	: 'Xanela Pai (_parent)',
+		targetFrame		: '<frame>',
+		targetPopup		: '<Xanela Emerxente>',
 		targetFrameName	: 'Nome do Marco Destino',
 		targetPopupName	: 'Nome da Xanela Emerxente',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Barra de Estado',
-		popupLocationBar	: 'Barra de Localización',
+		popupLocationBar: 'Barra de Localización',
 		popupToolbar	: 'Barra de Ferramentas',
 		popupMenuBar	: 'Barra de Menú',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Orientación do Idioma',
-		langDirNotSet	: '<non definido>',
 		langDirLTR		: 'Esquerda a Dereita (LTR)',
 		langDirRTL		: 'Dereita a Esquerda (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Tamaño do Borde',
 		align		: 'Aliñamento',
-		alignNotSet	: '<Non Definido>',
 		alignLeft	: 'Esquerda',
 		alignCenter	: 'Centro',
@@ -211,4 +246,5 @@
 		widthPx		: 'pixels',
 		widthPc		: 'percent',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Altura',
 		cellSpace	: 'Marxe entre Celas',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Acción',
 		method		: 'Método',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Destino',
-		targetNotSet	: '<non definido>',
-		targetNew	: 'Nova Xanela (_blank)',
-		targetTop	: 'Xanela Primaria (_top)',
-		targetSelf	: 'Mesma Xanela (_self)',
-		targetParent	: 'Xanela Pai (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Propriedades do Botón de Imaxe',
 		menu		: 'Propriedades da Imaxe',
-		infoTab	: 'Información da Imaxe',
+		infoTab		: 'Información da Imaxe',
 		btnUpload	: 'Enviar ó Servidor',
-		url		: 'URL',
-		upload	: 'Carregar',
-		alt		: 'Texto Alternativo',
+		upload		: 'Carregar',
+		alt			: 'Texto Alternativo',
 		width		: 'Largura',
-		height	: 'Altura',
+		height		: 'Altura',
 		lockRatio	: 'Proporcional',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Tamaño Orixinal',
-		border	: 'Límite',
-		hSpace	: 'Esp. Horiz.',
-		vSpace	: 'Esp. Vert.',
+		border		: 'Límite',
+		hSpace		: 'Esp. Horiz.',
+		vSpace		: 'Esp. Vert.',
 		align		: 'Aliñamento',
 		alignLeft	: 'Esquerda',
-		alignAbsBottom: 'Abs Inferior',
-		alignAbsMiddle: 'Abs Centro',
-		alignBaseline	: 'Liña Base',
-		alignBottom	: 'Pé',
-		alignMiddle	: 'Centro',
 		alignRight	: 'Dereita',
-		alignTextTop	: 'Tope do Texto',
-		alignTop	: 'Tope',
-		preview	: 'Vista Previa',
 		alertUrl	: 'Por favor, escriba a URL da imaxe',
-		linkTab	: 'Ligazón',
+		linkTab		: 'Ligazón',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Propriedades Flash',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Propriedades Flash',
-		chkPlay		: 'Auto Execución',
-		chkLoop		: 'Bucle',
-		chkMenu		: 'Activar Menú Flash',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Escalar',
+		title			: 'Propriedades Flash',
+		chkPlay			: 'Auto Execución',
+		chkLoop			: 'Bucle',
+		chkMenu			: 'Activar Menú Flash',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Escalar',
 		scaleAll		: 'Amosar Todo',
 		scaleNoBorder	: 'Sen Borde',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Aliñamento',
-		alignLeft	: 'Esquerda',
-		alignAbsBottom: 'Abs Inferior',
-		alignAbsMiddle: 'Abs Centro',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Aliñamento',
+		alignLeft		: 'Esquerda',
+		alignAbsBottom	: 'Abs Inferior',
+		alignAbsMiddle	: 'Abs Centro',
 		alignBaseline	: 'Liña Base',
-		alignBottom	: 'Pé',
-		alignMiddle	: 'Centro',
-		alignRight	: 'Dereita',
+		alignBottom		: 'Pé',
+		alignMiddle		: 'Centro',
+		alignRight		: 'Dereita',
 		alignTextTop	: 'Tope do Texto',
-		alignTop	: 'Tope',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Cor do Fondo',
-		width	: 'Largura',
-		height	: 'Altura',
-		hSpace	: 'Esp. Horiz.',
-		vSpace	: 'Esp. Vert.',
-		validateSrc : 'Por favor, escriba a ligazón URL',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Tope',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Cor do Fondo',
+		width			: 'Largura',
+		height			: 'Altura',
+		hSpace			: 'Esp. Horiz.',
+		vSpace			: 'Esp. Vert.',
+		validateSrc		: 'Por favor, escriba a ligazón URL',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'Smiley',
-		title	: 'Inserte un Smiley'
+		title	: 'Inserte un Smiley',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Lista Numerada',
-	bulletedlist : 'Marcas',
-	indent : 'Aumentar Sangría',
-	outdent : 'Disminuir Sangría',
+	numberedlist	: 'Lista Numerada',
+	bulletedlist	: 'Marcas',
+	indent			: 'Aumentar Sangría',
+	outdent			: 'Disminuir Sangría',
 
 	justify :
 	{
-		left : 'Aliñar á Esquerda',
-		center : 'Centrado',
-		right : 'Aliñar á Dereita',
-		block : 'Xustificado'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: 'Aliñar á Esquerda',
+		center	: 'Centrado',
+		right	: 'Aliñar á Dereita',
+		block	: 'Xustificado'
+	},
+
+	blockquote : 'Block Quote', // MISSING
 
 	clipboard :
 	{
 		title		: 'Pegar',
-		cutError	: 'Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de corte. Por favor, use o teclado para iso (Ctrl+X).',
-		copyError	: 'Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de copia. Por favor, use o teclado para iso (Ctrl+C).',
-		pasteMsg	: 'Por favor, pegue dentro do seguinte cadro usando o teclado (<STRONG>Ctrl+V</STRONG>) e pulse <STRONG>OK</STRONG>.',
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+		cutError	: 'Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de corte. Por favor, use o teclado para iso (Ctrl/Cmd+X).',
+		copyError	: 'Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de copia. Por favor, use o teclado para iso (Ctrl/Cmd+C).',
+		pasteMsg	: 'Por favor, pegue dentro do seguinte cadro usando o teclado (<STRONG>Ctrl/Cmd+V</STRONG>) e pulse <STRONG>OK</STRONG>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Pegar dende Word',
-		title : 'Pegar dende Word',
-		advice : 'Por favor, pegue dentro do seguinte cadro usando o teclado (<STRONG>Ctrl+V</STRONG>) e pulse <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignorar as definicións de Tipografía',
-		removeStyle : 'Eliminar as definicións de Estilos'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Pegar dende Word',
+		title			: 'Pegar dende Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Pegar como texto plano',
-		title : 'Pegar como texto plano'
+		button	: 'Pegar como texto plano',
+		title	: 'Pegar como texto plano'
 	},
 
 	templates :
 	{
-		button : 'Plantillas',
-		title : 'Plantillas de Contido',
-		insertOption: 'Replace actual contents', // MISSING
-		selectPromptMsg: 'Por favor, seleccione a plantilla a abrir no editor<br>(o contido actual perderase):',
-		emptyListMsg : '(Non hai plantillas definidas)'
+		button			: 'Plantillas',
+		title			: 'Plantillas de Contido',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Replace actual contents', // MISSING
+		selectPromptMsg	: 'Por favor, seleccione a plantilla a abrir no editor<br>(o contido actual perderase):',
+		emptyListMsg	: '(Non hai plantillas definidas)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Estilo',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Estilo',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Formato',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Formato',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Formateado',
-		tag_address : 'Enderezo',
-		tag_h1 : 'Enacabezado 1',
-		tag_h2 : 'Encabezado 2',
-		tag_h3 : 'Encabezado 3',
-		tag_h4 : 'Encabezado 4',
-		tag_h5 : 'Encabezado 5',
-		tag_h6 : 'Encabezado 6',
-		tag_div : 'Paragraph (DIV)'
-	},
+		label		: 'Formato',
+		panelTitle	: 'Formato',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formateado',
+		tag_address	: 'Enderezo',
+		tag_h1		: 'Enacabezado 1',
+		tag_h2		: 'Encabezado 2',
+		tag_h3		: 'Encabezado 3',
+		tag_h4		: 'Encabezado 4',
+		tag_h5		: 'Encabezado 5',
+		tag_h6		: 'Encabezado 6',
+		tag_div		: 'Paragraph (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Tipo',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Tipo',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Tipo',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Tipo'
 	},
 
 	fontSize :
 	{
-		label : 'Tamaño',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Tamaño',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Tamaño',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Tamaño'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Cor do Texto',
-		bgColorTitle : 'Cor do Fondo',
-		auto : 'Automático',
-		more : 'Máis Cores...'
+		textColorTitle	: 'Cor do Texto',
+		bgColorTitle	: 'Cor do Fondo',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automático',
+		more			: 'Máis Cores...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/gu.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/gu.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/gu.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'ફૉર્મ/પત્રક',
 		checkbox		: 'ચેક બોક્સ',
-		radio		: 'રેડિઓ બટન',
+		radio			: 'રેડિઓ બટન',
 		textField		: 'ટેક્સ્ટ ફીલ્ડ, શબ્દ ક્ષેત્ર',
 		textarea		: 'ટેક્સ્ટ એરિઆ, શબ્દ વિસ્તાર',
 		hiddenField		: 'ગુપ્ત ક્ષેત્ર',
 		button			: 'બટન',
-		select	: 'પસંદગી ક્ષેત્ર',
+		select			: 'પસંદગી ક્ષેત્ર',
 		imageButton		: 'ચિત્ર બટન',
 		notSet			: '<સેટ નથી>',
@@ -89,9 +93,17 @@
 		ok				: 'ઠીક છે',
 		cancel			: 'રદ કરવું',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'અડ્વાન્સડ',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'વિશિષ્ટ અક્ષર ઇન્સર્ટ/દાખલ કરવું',
-		title		: 'સ્પેશિઅલ વિશિષ્ટ અક્ષર પસંદ કરો'
+		title		: 'સ્પેશિઅલ વિશિષ્ટ અક્ષર પસંદ કરો',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'લિંક ઇન્સર્ટ/દાખલ કરવી',
+		other 		: '<other>', // MISSING
 		menu		: ' લિંક એડિટ/માં ફેરફાર કરવો',
 		title		: 'લિંક',
@@ -117,14 +136,9 @@
 		advanced	: 'અડ્વાન્સડ',
 		type		: 'લિંક પ્રકાર',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'આ પેજનો ઍંકર',
 		toEmail		: 'ઈ-મેલ',
-		target		: 'ટાર્ગેટ/લક્ષ્ય',
-		targetNotSet	: '<સેટ નથી>',
-		targetFrame	: '<ફ્રેમ>',
-		targetPopup	: '<પૉપ-અપ વિન્ડો>',
-		targetNew	: 'નવી  વિન્ડો (_blank)',
-		targetTop	: 'ઉપરની વિન્ડો (_top)',
-		targetSelf	: 'આજ વિન્ડો (_self)',
-		targetParent	: 'મૂળ વિન્ડો (_parent)',
+		targetFrame		: '<ફ્રેમ>',
+		targetPopup		: '<પૉપ-અપ વિન્ડો>',
 		targetFrameName	: 'ટાર્ગેટ ફ્રેમ નું નામ',
 		targetPopupName	: 'પૉપ-અપ વિન્ડો નું નામ',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'સ્ટૅટસ બાર',
-		popupLocationBar	: 'લોકેશન બાર',
+		popupLocationBar: 'લોકેશન બાર',
 		popupToolbar	: 'ટૂલ બાર',
 		popupMenuBar	: 'મેન્યૂ બાર',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'ભાષા લેખવાની પદ્ધતિ',
-		langDirNotSet	: '<સેટ નથી>',
 		langDirLTR		: 'ડાબે થી જમણે (LTR)',
 		langDirRTL		: 'જમણે થી ડાબે (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'કોઠાની બાજુ(બોર્ડર) સાઇઝ',
 		align		: 'અલાઇનમન્ટ/ગોઠવાયેલું ',
-		alignNotSet	: '<સેટ નથી>',
 		alignLeft	: 'ડાબી બાજુ',
 		alignCenter	: 'મધ્ય સેન્ટર',
@@ -211,4 +246,5 @@
 		widthPx		: 'પિકસલ',
 		widthPc		: 'પ્રતિશત',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'ઊંચાઈ',
 		cellSpace	: 'સેલ અંતર',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'ક્રિયા',
 		method		: 'પદ્ધતિ',
-		encoding	: 'Encoding', // MISSING
-		target		: 'ટાર્ગેટ/લક્ષ્ય',
-		targetNotSet	: '<સેટ નથી>',
-		targetNew	: 'નવી  વિન્ડો (_blank)',
-		targetTop	: 'ઉપરની વિન્ડો (_top)',
-		targetSelf	: 'આજ વિન્ડો (_self)',
-		targetParent	: 'મૂળ વિન્ડો (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'ચિત્ર બટનના ગુણ',
 		menu		: 'ચિત્રના ગુણ',
-		infoTab	: 'ચિત્ર ની જાણકારી',
+		infoTab		: 'ચિત્ર ની જાણકારી',
 		btnUpload	: 'આ સર્વરને મોકલવું',
-		url		: 'URL',
-		upload	: 'અપલોડ',
-		alt		: 'ઑલ્ટર્નટ ટેક્સ્ટ',
+		upload		: 'અપલોડ',
+		alt			: 'ઑલ્ટર્નટ ટેક્સ્ટ',
 		width		: 'પહોળાઈ',
-		height	: 'ઊંચાઈ',
+		height		: 'ઊંચાઈ',
 		lockRatio	: 'લૉક ગુણોત્તર',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'રીસેટ સાઇઝ',
-		border	: 'બોર્ડર',
-		hSpace	: 'સમસ્તરીય જગ્યા',
-		vSpace	: 'લંબરૂપ જગ્યા',
+		border		: 'બોર્ડર',
+		hSpace		: 'સમસ્તરીય જગ્યા',
+		vSpace		: 'લંબરૂપ જગ્યા',
 		align		: 'લાઇનદોરીમાં ગોઠવવું',
 		alignLeft	: 'ડાબી બાજુ ગોઠવવું',
-		alignAbsBottom: 'Abs નીચે',
-		alignAbsMiddle: 'Abs ઉપર',
-		alignBaseline	: 'આધાર લીટી',
-		alignBottom	: 'નીચે',
-		alignMiddle	: 'વચ્ચે',
 		alignRight	: 'જમણી',
-		alignTextTop	: 'ટેક્સ્ટ ઉપર',
-		alignTop	: 'ઉપર',
-		preview	: 'પૂર્વદર્શન',
 		alertUrl	: 'ચિત્રની URL ટાઇપ કરો',
-		linkTab	: 'લિંક',
+		linkTab		: 'લિંક',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'ફ્લૅશના ગુણ',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'ફ્લૅશ ગુણ',
-		chkPlay		: 'ઑટો/સ્વયં પ્લે',
-		chkLoop		: 'લૂપ',
-		chkMenu		: 'ફ્લૅશ મેન્યૂ નો પ્રયોગ કરો',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'સ્કેલ',
+		title			: 'ફ્લૅશ ગુણ',
+		chkPlay			: 'ઑટો/સ્વયં પ્લે',
+		chkLoop			: 'લૂપ',
+		chkMenu			: 'ફ્લૅશ મેન્યૂ નો પ્રયોગ કરો',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'સ્કેલ',
 		scaleAll		: 'સ્કેલ ઓલ/બધુ બતાવો',
 		scaleNoBorder	: 'સ્કેલ બોર્ડર વગર',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'લાઇનદોરીમાં ગોઠવવું',
-		alignLeft	: 'ડાબી બાજુ ગોઠવવું',
-		alignAbsBottom: 'Abs નીચે',
-		alignAbsMiddle: 'Abs ઉપર',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'લાઇનદોરીમાં ગોઠવવું',
+		alignLeft		: 'ડાબી બાજુ ગોઠવવું',
+		alignAbsBottom	: 'Abs નીચે',
+		alignAbsMiddle	: 'Abs ઉપર',
 		alignBaseline	: 'આધાર લીટી',
-		alignBottom	: 'નીચે',
-		alignMiddle	: 'વચ્ચે',
-		alignRight	: 'જમણી',
+		alignBottom		: 'નીચે',
+		alignMiddle		: 'વચ્ચે',
+		alignRight		: 'જમણી',
 		alignTextTop	: 'ટેક્સ્ટ ઉપર',
-		alignTop	: 'ઉપર',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'બૅકગ્રાઉન્ડ રંગ,',
-		width	: 'પહોળાઈ',
-		height	: 'ઊંચાઈ',
-		hSpace	: 'સમસ્તરીય જગ્યા',
-		vSpace	: 'લંબરૂપ જગ્યા',
-		validateSrc : 'લિંક  URL ટાઇપ કરો',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'ઉપર',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'બૅકગ્રાઉન્ડ રંગ,',
+		width			: 'પહોળાઈ',
+		height			: 'ઊંચાઈ',
+		hSpace			: 'સમસ્તરીય જગ્યા',
+		vSpace			: 'લંબરૂપ જગ્યા',
+		validateSrc		: 'લિંક  URL ટાઇપ કરો',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'સ્માઇલી',
-		title	: 'સ્માઇલી  પસંદ કરો'
+		title	: 'સ્માઇલી  પસંદ કરો',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'સંખ્યાંકન સૂચિ',
-	bulletedlist : 'બુલેટ સૂચિ',
-	indent : 'ઇન્ડેન્ટ, લીટીના આરંભમાં જગ્યા વધારવી',
-	outdent : 'ઇન્ડેન્ટ લીટીના આરંભમાં જગ્યા ઘટાડવી',
+	numberedlist	: 'સંખ્યાંકન સૂચિ',
+	bulletedlist	: 'બુલેટ સૂચિ',
+	indent			: 'ઇન્ડેન્ટ, લીટીના આરંભમાં જગ્યા વધારવી',
+	outdent			: 'ઇન્ડેન્ટ લીટીના આરંભમાં જગ્યા ઘટાડવી',
 
 	justify :
 	{
-		left : 'ડાબી બાજુએ/બાજુ તરફ',
-		center : 'સંકેંદ્રણ/સેંટરિંગ',
-		right : 'જમણી બાજુએ/બાજુ તરફ',
-		block : 'બ્લૉક, અંતરાય જસ્ટિફાઇ'
+		left	: 'ડાબી બાજુએ/બાજુ તરફ',
+		center	: 'સંકેંદ્રણ/સેંટરિંગ',
+		right	: 'જમણી બાજુએ/બાજુ તરફ',
+		block	: 'બ્લૉક, અંતરાય જસ્ટિફાઇ'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'પેસ્ટ',
-		cutError	: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl+X) નો ઉપયોગ કરો.',
-		copyError	: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી.  (Ctrl+C) का प्रयोग करें।',
-		pasteMsg	: 'Ctrl+V નો પ્રયોગ કરી પેસ્ટ કરો',
-		securityMsg	: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસના કારણે,એડિટર તમારા કિલ્પબોર્ડ ડેટા ને કોપી નથી કરી શકતો. તમારે આ વિન્ડોમાં ફરીથી પેસ્ટ કરવું પડશે.'
+		cutError	: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+X) નો ઉપયોગ કરો.',
+		copyError	: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી.  (Ctrl/Cmd+C) का प्रयोग करें।',
+		pasteMsg	: 'Ctrl/Cmd+V નો પ્રયોગ કરી પેસ્ટ કરો',
+		securityMsg	: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસના કારણે,એડિટર તમારા કિલ્પબોર્ડ ડેટા ને કોપી નથી કરી શકતો. તમારે આ વિન્ડોમાં ફરીથી પેસ્ટ કરવું પડશે.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'પેસ્ટ (વડૅ ટેક્સ્ટ)',
-		title : 'પેસ્ટ (વડૅ ટેક્સ્ટ)',
-		advice : 'Ctrl+V નો પ્રયોગ કરી પેસ્ટ કરો',
-		ignoreFontFace : 'ફૉન્ટફેસ વ્યાખ્યાની અવગણના',
-		removeStyle : 'સ્ટાઇલ વ્યાખ્યા કાઢી નાખવી'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'પેસ્ટ (વડૅ ટેક્સ્ટ)',
+		title			: 'પેસ્ટ (વડૅ ટેક્સ્ટ)',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'પેસ્ટ (ટેક્સ્ટ)',
-		title : 'પેસ્ટ (ટેક્સ્ટ)'
+		button	: 'પેસ્ટ (ટેક્સ્ટ)',
+		title	: 'પેસ્ટ (ટેક્સ્ટ)'
 	},
 
 	templates :
 	{
-		button : 'ટેમ્પ્લેટ',
-		title : 'કન્ટેન્ટ ટેમ્પ્લેટ',
-		insertOption: 'મૂળ શબ્દને બદલો',
-		selectPromptMsg: 'એડિટરમાં ઓપન કરવા ટેમ્પ્લેટ પસંદ કરો (વર્તમાન કન્ટેન્ટ સેવ નહીં થાય):',
-		emptyListMsg : '(કોઈ ટેમ્પ્લેટ ડિફાઇન નથી)'
+		button			: 'ટેમ્પ્લેટ',
+		title			: 'કન્ટેન્ટ ટેમ્પ્લેટ',
+		options : 'Template Options', // MISSING
+		insertOption	: 'મૂળ શબ્દને બદલો',
+		selectPromptMsg	: 'એડિટરમાં ઓપન કરવા ટેમ્પ્લેટ પસંદ કરો (વર્તમાન કન્ટેન્ટ સેવ નહીં થાય):',
+		emptyListMsg	: '(કોઈ ટેમ્પ્લેટ ડિફાઇન નથી)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'શૈલી/રીત',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'શૈલી/રીત',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'ફૉન્ટ ફૉર્મટ, રચનાની શૈલી',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'ફૉન્ટ ફૉર્મટ, રચનાની શૈલી',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		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)'
-	},
+		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				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'ફૉન્ટ',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'ફૉન્ટ',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'ફૉન્ટ',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'ફૉન્ટ'
 	},
 
 	fontSize :
 	{
-		label : 'ફૉન્ટ સાઇઝ/કદ',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'ફૉન્ટ સાઇઝ/કદ',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'ફૉન્ટ સાઇઝ/કદ',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'ફૉન્ટ સાઇઝ/કદ'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'શબ્દનો રંગ',
-		bgColorTitle : 'બૅકગ્રાઉન્ડ રંગ,',
-		auto : 'સ્વચાલિત',
-		more : 'ઔર રંગ...'
+		textColorTitle	: 'શબ્દનો રંગ',
+		bgColorTitle	: 'બૅકગ્રાઉન્ડ રંગ,',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'સ્વચાલિત',
+		more			: 'ઔર રંગ...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/he.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/he.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/he.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'עורך טקסט עשיר, %1, לחץ אלט (ALT) + 0 לעזרה.',
+
+	// ARIA descriptions.
+	toolbar	: 'סרגל הכלים',
+	editor	: 'עורך טקסט עשיר',
 
 	// Toolbar buttons without dialogs.
@@ -52,5 +56,5 @@
 	superscript		: 'כתיב עליון',
 	horizontalrule	: 'הוספת קו אופקי',
-	pagebreak		: 'הוסף שבירת דף',
+	pagebreak		: 'הוספת שבירת דף',
 	unlink			: 'הסרת הקישור',
 	undo			: 'ביטול צעד אחרון',
@@ -69,13 +73,13 @@
 		form			: 'טופס',
 		checkbox		: 'תיבת סימון',
-		radio		: 'לחצן אפשרויות',
+		radio			: 'לחצן אפשרויות',
 		textField		: 'שדה טקסט',
 		textarea		: 'איזור טקסט',
 		hiddenField		: 'שדה חבוי',
 		button			: 'כפתור',
-		select	: 'שדה בחירה',
+		select			: 'שדה בחירה',
 		imageButton		: 'כפתור תמונה',
 		notSet			: '<לא נקבע>',
-		id				: 'זיהוי (Id)',
+		id				: 'זיהוי (ID)',
 		name			: 'שם',
 		langDir			: 'כיוון שפה',
@@ -84,17 +88,30 @@
 		langCode		: 'קוד שפה',
 		longDescr		: 'קישור לתיאור מפורט',
-		cssClass		: 'גיליונות עיצוב קבוצות',
+		cssClass		: 'מחלקת עיצוב (CSS Class)',
 		advisoryTitle	: 'כותרת מוצעת',
 		cssStyle		: 'סגנון',
 		ok				: 'אישור',
 		cancel			: 'ביטול',
+		close			: 'סגירה',
+		preview			: 'תצוגה מקדימה',
 		generalTab		: 'כללי',
 		advancedTab		: 'אפשרויות מתקדמות',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
-		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
-		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		validateNumberFailed : 'הערך חייב להיות מספרי.',
+		confirmNewPage	: 'כל השינויים שלא נשמרו יאבדו. האם להעלות דף חדש?',
+		confirmCancel	: 'חלק מהאפשרויות שונו, האם לסגור את הדיאלוג?',
+		options			: 'אפשרויות',
+		target			: 'מטרה',
+		targetNew		: 'חלון חדש (_blank)',
+		targetTop		: 'החלון העליון ביותר (_top)',
+		targetSelf		: 'אותו חלון (_self)',
+		targetParent	: 'חלון האב (_parent)',
 
 		// Put the voice-only part of the label in the span.
-		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+		unavailable		: '%1<span class="cke_accessibility">, לא זמין</span>'
+	},
+
+	contextmenu :
+	{
+		options : 'אפשרויות תפריט ההקשר'
 	},
 
@@ -103,5 +120,6 @@
 	{
 		toolbar		: 'הוספת תו מיוחד',
-		title		: 'בחירת תו מיוחד'
+		title		: 'בחירת תו מיוחד',
+		options : 'אפשרויות תווים מיוחדים'
 	},
 
@@ -110,5 +128,6 @@
 	{
 		toolbar		: 'הוספת/עריכת קישור',
-		menu		: 'עריכת קישור',
+		other 		: '<אחר>',
+		menu		: 'מאפייני קישור',
 		title		: 'קישור',
 		info		: 'מידע על הקישור',
@@ -117,20 +136,15 @@
 		advanced	: 'אפשרויות מתקדמות',
 		type		: 'סוג קישור',
+		toUrl		: 'כתובת (URL)',
 		toAnchor	: 'עוגן בעמוד זה',
-		toEmail		: 'דוא\'\'ל',
-		target		: 'מטרה',
-		targetNotSet	: '<לא נקבע>',
-		targetFrame	: '<מסגרת>',
-		targetPopup	: '<חלון קופץ>',
-		targetNew	: 'חלון חדש (_blank)',
-		targetTop	: 'חלון ראשי (_top)',
-		targetSelf	: 'באותו החלון (_self)',
-		targetParent	: 'חלון האב (_parent)',
+		toEmail		: 'דוא"ל',
+		targetFrame		: '<מסגרת>',
+		targetPopup		: '<חלון קופץ>',
 		targetFrameName	: 'שם מסגרת היעד',
 		targetPopupName	: 'שם החלון הקופץ',
 		popupFeatures	: 'תכונות החלון הקופץ',
-		popupResizable	: 'Resizable', // MISSING
+		popupResizable	: 'שינוי גודל',
 		popupStatusBar	: 'סרגל חיווי',
-		popupLocationBar	: 'סרגל כתובת',
+		popupLocationBar: 'סרגל כתובת',
 		popupToolbar	: 'סרגל הכלים',
 		popupMenuBar	: 'סרגל תפריט',
@@ -142,12 +156,11 @@
 		popupHeight		: 'גובה',
 		popupTop		: 'מיקום צד עליון',
-		id				: 'Id', // MISSING
+		id				: 'זיהוי (ID)',
 		langDir			: 'כיוון שפה',
-		langDirNotSet	: '<לא נקבע>',
 		langDirLTR		: 'שמאל לימין (LTR)',
 		langDirRTL		: 'ימין לשמאל (RTL)',
 		acccessKey		: 'מקש גישה',
 		name			: 'שם',
-		langCode		: 'כיוון שפה',
+		langCode		: 'קוד שפה',
 		tabIndex		: 'מספר טאב',
 		advisoryTitle	: 'כותרת מוצעת',
@@ -157,12 +170,12 @@
 		styles			: 'סגנון',
 		selectAnchor	: 'בחירת עוגן',
-		anchorName		: 'עפ\'\'י שם העוגן',
-		anchorId		: 'עפ\'\'י זיהוי (Id) הרכיב',
-		emailAddress	: 'כתובת הדוא\'\'ל',
+		anchorName		: 'עפ"י שם העוגן',
+		anchorId		: 'עפ"י זיהוי (ID) האלמנט',
+		emailAddress	: 'כתובת הדוא"ל',
 		emailSubject	: 'נושא ההודעה',
 		emailBody		: 'גוף ההודעה',
 		noAnchors		: '(אין עוגנים זמינים בדף)',
-		noUrl			: 'נא להקליד את כתובת הקישור (URL)',
-		noEmail			: 'נא להקליד את כתובת הדוא\'\'ל'
+		noUrl			: 'יש להקליד את כתובת הקישור (URL)',
+		noEmail			: 'יש להקליד את כתובת הדוא"ל'
 	},
 
@@ -174,5 +187,28 @@
 		title		: 'מאפייני נקודת עיגון',
 		name		: 'שם לנקודת עיגון',
-		errorName	: 'אנא הזן שם לנקודת עיגון'
+		errorName	: 'יש להקליד שם לנקודת עיגון'
+	},
+
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'תכונות רשימה ממוספרת',
+		bulletedTitle		: 'תכונות רשימת תבליטים',
+		type				: 'סוג',
+		start				: 'תחילת מספור',
+		circle				: 'עיגול ריק',
+		disc				: 'עיגול מלא',
+		square				: 'ריבוע',
+		none				: 'ללא',
+		notset				: '<לא נקבע>',
+		armenian			: 'ספרות ארמניות',
+		georgian			: 'ספרות גיאורגיות (an, ban, gan וכו\')',
+		lowerRoman			: 'ספירה רומית באותיות קטנות (i, ii, iii, iv, v וכו\')',
+		upperRoman			: 'ספירה רומיות באותיות גדולות (I, II, III, IV, V וכו\')',
+		lowerAlpha			: 'אותיות אנגליות קטנות (a, b, c, d, e וכו\')',
+		upperAlpha			: 'אותיות אנגליות גדולות (A, B, C, D, E וכו\')',
+		lowerGreek			: 'אותיות יווניות קטנות (alpha, beta, gamma וכו\')',
+		decimal				: 'ספרות (1, 2, 3 וכו\')',
+		decimalLeadingZero	: 'ספרות עם 0 בהתחלה (01, 02, 03 וכו\')'
 	},
 
@@ -180,5 +216,5 @@
 	findAndReplace :
 	{
-		title				: 'חפש והחלף',
+		title				: 'חיפוש והחלפה',
 		find				: 'חיפוש',
 		replace				: 'החלפה',
@@ -186,9 +222,9 @@
 		replaceWith			: 'החלפה במחרוזת:',
 		notFoundMsg			: 'הטקסט המבוקש לא נמצא.',
-		matchCase			: 'התאמת סוג אותיות (Case)',
+		matchCase			: 'הבחנה בין אותיות רשיות לקטנות (Case)',
 		matchWord			: 'התאמה למילה המלאה',
-		matchCyclic			: 'Match cyclic', // MISSING
+		matchCyclic			: 'התאמה מחזורית',
 		replaceAll			: 'החלפה בכל העמוד',
-		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+		replaceSuccessMsg	: '%1 טקסטים הוחלפו.'
 	},
 
@@ -197,6 +233,6 @@
 	{
 		toolbar		: 'טבלה',
-		title		: 'תכונות טבלה',
-		menu		: 'תכונות טבלה',
+		title		: 'מאפייני טבלה',
+		menu		: 'מאפייני טבלה',
 		deleteTable	: 'מחק טבלה',
 		rows		: 'שורות',
@@ -204,5 +240,4 @@
 		border		: 'גודל מסגרת',
 		align		: 'יישור',
-		alignNotSet	: '<לא נקבע>',
 		alignLeft	: 'שמאל',
 		alignCenter	: 'מרכז',
@@ -211,9 +246,10 @@
 		widthPx		: 'פיקסלים',
 		widthPc		: 'אחוז',
+		widthUnit	: 'יחידת רוחב',
 		height		: 'גובה',
 		cellSpace	: 'מרווח תא',
 		cellPad		: 'ריפוד תא',
 		caption		: 'כיתוב',
-		summary		: 'סיכום',
+		summary		: 'תקציר',
 		headers		: 'כותרות',
 		headersNone		: 'אין',
@@ -221,45 +257,45 @@
 		headersRow		: 'שורה ראשונה',
 		headersBoth		: 'שניהם',
-		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
-		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
-		invalidBorder	: 'Border size must be a number.', // MISSING
-		invalidWidth	: 'Table width must be a number.', // MISSING
-		invalidHeight	: 'Table height must be a number.', // MISSING
-		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
-		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+		invalidRows		: 'שדה מספר השורות חייב להיות מספר גדול מ 0.',
+		invalidCols		: 'שדה מספר העמודות חייב להיות מספר גדול מ 0.',
+		invalidBorder	: 'שדה גודל המסגרת חייב להיות מספר.',
+		invalidWidth	: 'שדה רוחב הטבלה חייב להיות רוחב.',
+		invalidHeight	: 'שדה גובה הטבלה חייב להיות מספר.',
+		invalidCellSpacing	: 'שדה ריווח התאים חייב להיות מספר.',
+		invalidCellPadding	: 'שדה ריפוד התאים חייב להיות מספר.',
 
 		cell :
 		{
-			menu			: 'תא',
-			insertBefore	: 'הוסף תא אחרי',
-			insertAfter		: 'הוסף תא אחרי',
+			menu			: 'מאפייני תא',
+			insertBefore	: 'הוספת תא לפני',
+			insertAfter		: 'הוספת תא אחרי',
 			deleteCell		: 'מחיקת תאים',
 			merge			: 'מיזוג תאים',
 			mergeRight		: 'מזג ימינה',
 			mergeDown		: 'מזג למטה',
-			splitHorizontal	: 'פצל תא אופקית',
-			splitVertical	: 'פצל תא אנכית',
+			splitHorizontal	: 'פיצול תא אופקית',
+			splitVertical	: 'פיצול תא אנכית',
 			title			: 'תכונות התא',
-			cellType		: 'Cell Type', // MISSING
-			rowSpan			: 'Rows Span', // MISSING
-			colSpan			: 'Columns Span', // MISSING
-			wordWrap		: 'Word Wrap', // MISSING
-			hAlign			: 'Horizontal Alignment', // MISSING
-			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
-			alignBaseline	: 'Baseline', // MISSING
-			bgColor			: 'Background Color', // MISSING
-			borderColor		: 'Border Color', // MISSING
-			data			: 'Data', // MISSING
-			header			: 'Header', // MISSING
-			yes				: 'Yes', // MISSING
-			no				: 'No', // MISSING
-			invalidWidth	: 'Cell width must be a number.', // MISSING
-			invalidHeight	: 'Cell height must be a number.', // MISSING
-			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
-			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			cellType		: 'סוג התא',
+			rowSpan			: 'מתיחת השורות',
+			colSpan			: 'מתיחת התאים',
+			wordWrap		: 'מניעת גלישת שורות',
+			hAlign			: 'יישור אופקי',
+			vAlign			: 'יישור אנכי',
+			alignTop		: 'למעלה',
+			alignMiddle		: 'מרכז',
+			alignBottom		: 'למטה',
+			alignBaseline	: 'שורת בסיס',
+			bgColor			: 'צבע רקע',
+			borderColor		: 'צבע מסגרת',
+			data			: 'מידע',
+			header			: 'כותרת',
+			yes				: 'כן',
+			no				: 'לא',
+			invalidWidth	: 'שדה רוחב התא חייב להיות מספר.',
+			invalidHeight	: 'שדה גובה התא חייב להיות מספר.',
+			invalidRowSpan	: 'שדה מתיחת השורות חייב להיות מספר שלם.',
+			invalidColSpan	: 'שדה מתיחת העמודות חייב להיות מספר שלם.',
+			chooseColor		: 'בחר'
 		},
 
@@ -267,6 +303,6 @@
 		{
 			menu			: 'שורה',
-			insertBefore	: 'הוסף שורה לפני',
-			insertAfter		: 'הוסף שורה אחרי',
+			insertBefore	: 'הוספת שורה לפני',
+			insertAfter		: 'הוספת שורה אחרי',
 			deleteRow		: 'מחיקת שורות'
 		},
@@ -275,6 +311,6 @@
 		{
 			menu			: 'עמודה',
-			insertBefore	: 'הוסף עמודה לפני',
-			insertAfter		: 'הוסף עמודה אחרי',
+			insertBefore	: 'הוספת עמודה לפני',
+			insertAfter		: 'הוספת עמודה אחרי',
 			deleteColumn	: 'מחיקת עמודות'
 		}
@@ -288,6 +324,6 @@
 		type		: 'סוג',
 		typeBtn		: 'כפתור',
-		typeSbm		: 'שלח',
-		typeRst		: 'אפס'
+		typeSbm		: 'שליחה',
+		typeRst		: 'איפוס'
 	},
 
@@ -298,5 +334,5 @@
 		radioTitle	: 'מאפייני לחצן אפשרויות',
 		value		: 'ערך',
-		selected	: 'בחור'
+		selected	: 'מסומן'
 	},
 
@@ -308,11 +344,5 @@
 		action		: 'שלח אל',
 		method		: 'סוג שליחה',
-		encoding	: 'Encoding', // MISSING
-		target		: 'מטרה',
-		targetNotSet	: '<לא נקבע>',
-		targetNew	: 'חלון חדש (_blank)',
-		targetTop	: 'חלון ראשי (_top)',
-		targetSelf	: 'באותו החלון (_self)',
-		targetParent	: 'חלון האב (_parent)'
+		encoding	: 'קידוד'
 	},
 
@@ -326,13 +356,13 @@
 		size		: 'גודל',
 		lines		: 'שורות',
-		chkMulti	: 'אפשר בחירות מרובות',
+		chkMulti	: 'איפשור בחירות מרובות',
 		opText		: 'טקסט',
 		opValue		: 'ערך',
-		btnAdd		: 'הוסף',
-		btnModify	: 'שנה',
+		btnAdd		: 'הוספה',
+		btnModify	: 'שינוי',
 		btnUp		: 'למעלה',
 		btnDown		: 'למטה',
-		btnSetValue : 'קבע כברירת מחדל',
-		btnDelete	: 'מחק'
+		btnSetValue : 'קביעה כברירת מחדל',
+		btnDelete	: 'מחיקה'
 	},
 
@@ -340,5 +370,5 @@
 	textarea :
 	{
-		title		: 'מאפיני איזור טקסט',
+		title		: 'מאפייני איזור טקסט',
 		cols		: 'עמודות',
 		rows		: 'שורות'
@@ -351,6 +381,6 @@
 		name		: 'שם',
 		value		: 'ערך',
-		charWidth	: 'רוחב באותיות',
-		maxChars	: 'מקסימות אותיות',
+		charWidth	: 'רוחב לפי תווים',
+		maxChars	: 'מקסימום תווים',
 		type		: 'סוג',
 		typeText	: 'טקסט',
@@ -369,35 +399,32 @@
 	image :
 	{
-		title		: 'תכונות התמונה',
+		title		: 'מאפייני התמונה',
 		titleButton	: 'מאפיני כפתור תמונה',
 		menu		: 'תכונות התמונה',
-		infoTab	: 'מידע על התמונה',
+		infoTab		: 'מידע על התמונה',
 		btnUpload	: 'שליחה לשרת',
-		url		: 'כתובת (URL)',
-		upload	: 'העלאה',
-		alt		: 'טקסט חלופי',
+		upload		: 'העלאה',
+		alt			: 'טקסט חלופי',
 		width		: 'רוחב',
-		height	: 'גובה',
+		height		: 'גובה',
 		lockRatio	: 'נעילת היחס',
+		unlockRatio	: 'ביטול נעילת היחס',
 		resetSize	: 'איפוס הגודל',
-		border	: 'מסגרת',
-		hSpace	: 'מרווח אופקי',
-		vSpace	: 'מרווח אנכי',
+		border		: 'מסגרת',
+		hSpace		: 'מרווח אופקי',
+		vSpace		: 'מרווח אנכי',
 		align		: 'יישור',
 		alignLeft	: 'לשמאל',
-		alignAbsBottom: 'לתחתית האבסולוטית',
-		alignAbsMiddle: 'מרכוז אבסולוטי',
-		alignBaseline	: 'לקו התחתית',
-		alignBottom	: 'לתחתית',
-		alignMiddle	: 'לאמצע',
 		alignRight	: 'לימין',
-		alignTextTop	: 'לראש הטקסט',
-		alignTop	: 'למעלה',
-		preview	: 'תצוגה מקדימה',
-		alertUrl	: 'נא להקליד את כתובת התמונה',
-		linkTab	: 'קישור',
-		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
-		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		alertUrl	: 'יש להקליד את כתובת התמונה',
+		linkTab		: 'קישור',
+		button2Img	: 'האם להפוך את תמונת הכפתור לתמונה פשוטה?',
+		img2Button	: 'האם להפוך את התמונה לכפתור תמונה?',
+		urlMissing	: 'כתובת התמונה חסרה.',
+		validateWidth	: 'שדה הרוחב חייב להיות מספר שלם.',
+		validateHeight	: 'שדה הגובה חייב להיות מספר שלם.',
+		validateBorder	: 'שדה המסגרת חייב להיות מספר שלם.',
+		validateHSpace	: 'שדה המרווח האופקי חייב להיות מספר שלם.',
+		validateVSpace	: 'שדה המרווח האנכי חייב להיות מספר שלם.'
 	},
 
@@ -406,50 +433,50 @@
 	{
 		properties		: 'מאפייני פלאש',
-		propertiesTab	: 'Properties', // MISSING
-		title		: 'מאפיני פלאש',
-		chkPlay		: 'נגן אוטומטי',
-		chkLoop		: 'לולאה',
-		chkMenu		: 'אפשר תפריט פלאש',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'גודל',
+		propertiesTab	: 'מאפיינים',
+		title			: 'מאפיני פלאש',
+		chkPlay			: 'ניגון אוטומטי',
+		chkLoop			: 'לולאה',
+		chkMenu			: 'אפשר תפריט פלאש',
+		chkFull			: 'אפשר חלון מלא',
+ 		scale			: 'גודל',
 		scaleAll		: 'הצג הכל',
 		scaleNoBorder	: 'ללא גבולות',
 		scaleFit		: 'התאמה מושלמת',
-		access			: 'Script Access', // MISSING
-		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'יישור',
-		alignLeft	: 'לשמאל',
-		alignAbsBottom: 'לתחתית האבסולוטית',
-		alignAbsMiddle: 'מרכוז אבסולוטי',
+		access			: 'גישת סקריפט',
+		accessAlways	: 'תמיד',
+		accessSameDomain: 'דומיין זהה',
+		accessNever		: 'אף פעם',
+		align			: 'יישור',
+		alignLeft		: 'לשמאל',
+		alignAbsBottom	: 'לתחתית האבסולוטית',
+		alignAbsMiddle	: 'מרכוז אבסולוטי',
 		alignBaseline	: 'לקו התחתית',
-		alignBottom	: 'לתחתית',
-		alignMiddle	: 'לאמצע',
-		alignRight	: 'לימין',
+		alignBottom		: 'לתחתית',
+		alignMiddle		: 'לאמצע',
+		alignRight		: 'לימין',
 		alignTextTop	: 'לראש הטקסט',
-		alignTop	: 'למעלה',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'צבע רקע',
-		width	: 'רוחב',
-		height	: 'גובה',
-		hSpace	: 'מרווח אופקי',
-		vSpace	: 'מרווח אנכי',
-		validateSrc : 'נא להקליד את כתובת הקישור (URL)',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'למעלה',
+		quality			: 'איכות',
+		qualityBest		: 'מעולה',
+		qualityHigh		: 'גבוהה',
+		qualityAutoHigh	: 'גבוהה אוטומטית',
+		qualityMedium	: 'ממוצעת',
+		qualityAutoLow	: 'נמוכה אוטומטית',
+		qualityLow		: 'נמוכה',
+		windowModeWindow: 'חלון',
+		windowModeOpaque: 'אטום',
+		windowModeTransparent : 'שקוף',
+		windowMode		: 'מצב חלון',
+		flashvars		: 'משתנים לפלאש',
+		bgcolor			: 'צבע רקע',
+		width			: 'רוחב',
+		height			: 'גובה',
+		hSpace			: 'מרווח אופקי',
+		vSpace			: 'מרווח אנכי',
+		validateSrc		: 'יש להקליד את כתובת סרטון הפלאש (URL)',
+		validateWidth	: 'הרוחב חייב להיות מספר.',
+		validateHeight	: 'הגובה חייב להיות מספר.',
+		validateHSpace	: 'המרווח האופקי חייב להיות מספר.',
+		validateVSpace	: 'המרווח האנכי חייב להיות מספר.'
 	},
 
@@ -458,21 +485,21 @@
 	{
 		toolbar			: 'בדיקת איות',
-		title			: 'Spell Check', // MISSING
-		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
-		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		title			: 'בדיקת איות',
+		notAvailable	: 'לא נמצא שירות זמין.',
+		errorLoading	: 'שגיאה בהעלאת השירות: %s.',
 		notInDic		: 'לא נמצא במילון',
-		changeTo		: 'שנה ל',
-		btnIgnore		: 'התעלם',
-		btnIgnoreAll	: 'התעלם מהכל',
-		btnReplace		: 'החלף',
-		btnReplaceAll	: 'החלף הכל',
-		btnUndo			: 'החזר',
+		changeTo		: 'שינוי ל',
+		btnIgnore		: 'התעלמות',
+		btnIgnoreAll	: 'התעלמות מהכל',
+		btnReplace		: 'החלפה',
+		btnReplaceAll	: 'החלפת הכל',
+		btnUndo			: 'החזרה',
 		noSuggestions	: '- אין הצעות -',
-		progress		: 'בדיקות איות בתהליך ....',
-		noMispell		: 'בדיקות איות הסתיימה: לא נמצאו שגיעות כתיב',
+		progress		: 'בודק האיות בתהליך בדיקה....',
+		noMispell		: 'בדיקות איות הסתיימה: לא נמצאו שגיאות כתיב',
 		noChanges		: 'בדיקות איות הסתיימה: לא שונתה אף מילה',
 		oneChange		: 'בדיקות איות הסתיימה: שונתה מילה אחת',
 		manyChanges		: 'בדיקות איות הסתיימה: %1 מילים שונו',
-		ieSpellDownload	: 'בודק האיות לא מותקן, האם אתה מעוניין להוריד?'
+		ieSpellDownload	: 'בודק האיות לא מותקן, האם להורידו?'
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'סמיילי',
-		title	: 'הוספת סמיילי'
+		title	: 'הוספת סמיילי',
+		options : 'אפשרויות סמיילים'
 	},
 
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
-	},
-
-	numberedlist : 'רשימה ממוספרת',
-	bulletedlist : 'רשימת נקודות',
-	indent : 'הגדלת אינדנטציה',
-	outdent : 'הקטנת אינדנטציה',
+		eleLabel : 'עץ האלמנטים',
+		eleTitle : '%1 אלמנט'
+	},
+
+	numberedlist	: 'רשימה ממוספרת',
+	bulletedlist	: 'רשימת נקודות',
+	indent			: 'הגדלת הזחה',
+	outdent			: 'הקטנת הזחה',
 
 	justify :
 	{
-		left : 'יישור לשמאל',
-		center : 'מרכוז',
-		right : 'יישור לימין',
-		block : 'יישור לשוליים'
+		left	: 'יישור לשמאל',
+		center	: 'מרכוז',
+		right	: 'יישור לימין',
+		block	: 'יישור לשוליים'
 	},
 
@@ -506,180 +535,213 @@
 	{
 		title		: 'הדבקה',
-		cutError	: 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות גזירה  אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl+X).',
-		copyError	: 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות העתקה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl+C).',
-		pasteMsg	: 'אנא הדבק בתוך הקופסה באמצעות  (<STRONG>Ctrl+V</STRONG>) ולחץ על  <STRONG>אישור</STRONG>.',
-		securityMsg	: 'עקב הגדרות אבטחה בדפדפן, לא ניתן לגשת אל לוח הגזירים (clipboard) בצורה ישירה.אנא בצע הדבק שוב בחלון זה.'
+		cutError	: 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות גזירה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+X).',
+		copyError	: 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות העתקה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+C).',
+		pasteMsg	: 'נא להדביק בתוך הקופסה באמצעות (<b>Ctrl/Cmd+V</b>) וללחוץ על <b>אישור</b>.',
+		securityMsg	: 'עקב הגדרות אבטחה בדפדפן, לא ניתן לגשת אל לוח הגזירים (Clipboard) בצורה ישירה. נא להדביק שוב בחלון זה.',
+		pasteArea	: 'איזור הדבקה'
 	},
 
 	pastefromword :
 	{
-		toolbar : 'הדבקה מ-וורד',
-		title : 'הדבקה מ-וורד',
-		advice : 'אנא הדבק בתוך הקופסה באמצעות  (<STRONG>Ctrl+V</STRONG>) ולחץ על  <STRONG>אישור</STRONG>.',
-		ignoreFontFace : 'התעלם מהגדרות סוג פונט',
-		removeStyle : 'הסר הגדרות סגנון'
+		confirmCleanup	: 'נראה הטקסט שבכוונתך להדביק מקורו בקובץ וורד. האם ברצונך לנקות אותו טרם ההדבקה?',
+		toolbar			: 'הדבקה מ-Word',
+		title			: 'הדבקה מ-Word',
+		error			: 'לא ניתן היה לנקות את המידע בשל תקלה פנימית.'
 	},
 
 	pasteText :
 	{
-		button : 'הדבקה כטקסט פשוט',
-		title : 'הדבקה כטקסט פשוט'
+		button	: 'הדבקה כטקסט פשוט',
+		title	: 'הדבקה כטקסט פשוט'
 	},
 
 	templates :
 	{
-		button : 'תבניות',
-		title : 'תביות תוכן',
-		insertOption: 'החלפת תוכן ממשי',
-		selectPromptMsg: 'אנא בחר תבנית לפתיחה בעורך <BR>התוכן המקורי ימחק:',
-		emptyListMsg : '(לא הוגדרו תבניות)'
-	},
-
-	showBlocks : 'הצג בלוקים',
+		button			: 'תבניות',
+		title			: 'תביות תוכן',
+		options : 'אפשרויות התבניות',
+		insertOption	: 'החלפת תוכן ממשי',
+		selectPromptMsg	: 'יש לבחור תבנית לפתיחה בעורך.<br />התוכן המקורי ימחק:',
+		emptyListMsg	: '(לא הוגדרו תבניות)'
+	},
+
+	showBlocks : 'הצגת בלוקים',
 
 	stylesCombo :
 	{
-		label : 'סגנון',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'סגנון',
+		panelTitle	: 'סגנונות פורמט',
+		panelTitle1	: 'סגנונות בלוק',
+		panelTitle2	: 'סגנונות רצף',
+		panelTitle3	: 'סגנונות אובייקט'
 	},
 
 	format :
 	{
-		label : 'עיצוב',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'עיצוב',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'נורמלי',
-		tag_pre : 'קוד',
-		tag_address : 'כתובת',
-		tag_h1 : 'כותרת',
-		tag_h2 : 'כותרת 2',
-		tag_h3 : 'כותרת 3',
-		tag_h4 : 'כותרת 4',
-		tag_h5 : 'כותרת 5',
-		tag_h6 : 'כותרת 6',
-		tag_div : 'Normal (DIV)' // MISSING
-	},
+		label		: 'עיצוב',
+		panelTitle	: 'עיצוב',
+
+		tag_p		: 'נורמלי',
+		tag_pre		: 'קוד',
+		tag_address	: 'כתובת',
+		tag_h1		: 'כותרת',
+		tag_h2		: 'כותרת 2',
+		tag_h3		: 'כותרת 3',
+		tag_h4		: 'כותרת 4',
+		tag_h5		: 'כותרת 5',
+		tag_h6		: 'כותרת 6',
+		tag_div		: 'נורמלי (DIV)'
+	},
+
+	div :
+	{
+		title				: 'יצירת מיכל (Div)',
+		toolbar				: 'יצירת מיכל (Div)',
+		cssClassInputLabel	: 'מחלקת עיצוב',
+		styleSelectLabel	: 'סגנון',
+		IdInputLabel		: 'מזהה (ID)',
+		languageCodeInputLabel	: 'קוד שפה',
+		inlineStyleInputLabel	: 'סגנון פנימי',
+		advisoryTitleInputLabel	: 'כותרת מוצעת',
+		langDirLabel		: 'כיוון שפה',
+		langDirLTRLabel		: 'שמאל לימין (LTR)',
+		langDirRTLLabel		: 'ימין לשמאל (RTL)',
+		edit				: 'עריכת מיכל (Div)',
+		remove				: 'הסרת מיכל (Div)'
+  	},
 
 	font :
 	{
-		label : 'גופן',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'גופן',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'גופן',
+		voiceLabel	: 'גופן',
+		panelTitle	: 'גופן'
 	},
 
 	fontSize :
 	{
-		label : 'גודל',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'גודל',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'גודל',
+		voiceLabel	: 'גודל',
+		panelTitle	: 'גודל'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'צבע טקסט',
-		bgColorTitle : 'צבע רקע',
-		auto : 'אוטומטי',
-		more : 'צבעים נוספים...'
+		textColorTitle	: 'צבע טקסט',
+		bgColorTitle	: 'צבע רקע',
+		panelTitle		: 'צבעים',
+		auto			: 'אוטומטי',
+		more			: 'צבעים נוספים...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'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' : 'תכלת',
+		'F0F8FF' : 'כחול טיפת מים',
+		'E6E6FA' : 'לבנדר',
+		'FFF' : 'לבן'
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'בדיקת איות בזמן כתיבה (SCAYT)',
+		opera_title		: 'לא זמין בדפדפן אופרה',
+		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		: 'בהתחלה מילון המשתמש מאוחסן בעוגיה, אך עוגיות מוגבלות במקום. כאשר המילון מגיע לגודל בו הוא אינו יכול להתאכסן בעוגיה, המילון צריך להתאכסן בשרתנו. לשם כך עליך לתת שם למילון. אם כבר יש לך מילון מאוחסן, יש להכניס את שמו וללחוץ על כפתור השחזור.',
+
+		aboutTab		: 'אודות'
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
-	},
-
-	maximize : 'Maximize', // MISSING
-	minimize : 'Minimize', // MISSING
+		title		: 'אודות CKEditor',
+		dlgTitle	: 'אודות CKEditor',
+		moreInfo	: 'למידע נוסף בקרו באתרנו:',
+		copy		: 'Copyright &copy; $1. כל הזכויות שמורות.'
+	},
+
+	maximize : 'הגדלה למקסימום',
+	minimize : 'הקטנה למינימום',
 
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
-	},
-
-	resize : 'Drag to resize', // MISSING
+		anchor	: 'עוגן',
+		flash	: 'סרטון פלאש',
+		div		: 'שבירת דף',
+		unknown	: 'אובייקט לא ידוע'
+	},
+
+	resize : 'יש לגרור בכדי לשנות את הגודל',
 
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'בחירת צבע',
+		options	:	'Color Options', // MISSING
+		highlight	: 'סימון',
+		selected	: 'בחירה',
+		clear		: 'ניקוי'
+	},
+
+	toolbarCollapse	: 'מזעור סרגל כלים',
+	toolbarExpand	: 'הרחבת סרגל כלים'
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/hi.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/hi.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/hi.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'फ़ॉर्म',
 		checkbox		: 'चॅक बॉक्स',
-		radio		: 'रेडिओ बटन',
+		radio			: 'रेडिओ बटन',
 		textField		: 'टेक्स्ट फ़ील्ड',
 		textarea		: 'टेक्स्ट एरिया',
 		hiddenField		: 'गुप्त फ़ील्ड',
 		button			: 'बटन',
-		select	: 'चुनाव फ़ील्ड',
+		select			: 'चुनाव फ़ील्ड',
 		imageButton		: 'तस्वीर बटन',
 		notSet			: '<सॅट नहीं>',
@@ -89,9 +93,17 @@
 		ok				: 'ठीक है',
 		cancel			: 'रद्द करें',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'सामान्य',
 		advancedTab		: 'ऍड्वान्स्ड',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'विशेष करॅक्टर इन्सर्ट करें',
-		title		: 'विशेष करॅक्टर चुनें'
+		title		: 'विशेष करॅक्टर चुनें',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'लिंक इन्सर्ट/संपादन',
+		other 		: '<अन्य>',
 		menu		: 'लिंक संपादन',
 		title		: 'लिंक',
@@ -117,14 +136,9 @@
 		advanced	: 'ऍड्वान्स्ड',
 		type		: 'लिंक प्रकार',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'इस पेज का ऐंकर',
 		toEmail		: 'ई-मेल',
-		target		: 'टार्गेट',
-		targetNotSet	: '<सॅट नहीं>',
-		targetFrame	: '<फ़्रेम>',
-		targetPopup	: '<पॉप-अप विन्डो>',
-		targetNew	: 'नया विन्डो (_blank)',
-		targetTop	: 'शीर्ष विन्डो (_top)',
-		targetSelf	: 'इसी विन्डो (_self)',
-		targetParent	: 'मूल विन्डो (_parent)',
+		targetFrame		: '<फ़्रेम>',
+		targetPopup		: '<पॉप-अप विन्डो>',
 		targetFrameName	: 'टार्गेट फ़्रेम का नाम',
 		targetPopupName	: 'पॉप-अप विन्डो का नाम',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'स्टेटस बार',
-		popupLocationBar	: 'लोकेशन बार',
+		popupLocationBar: 'लोकेशन बार',
 		popupToolbar	: 'टूल बार',
 		popupMenuBar	: 'मॅन्यू बार',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'भाषा लिखने की दिशा',
-		langDirNotSet	: '<सॅट नहीं>',
 		langDirLTR		: 'बायें से दायें (LTR)',
 		langDirRTL		: 'दायें से बायें (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'बॉर्डर साइज़',
 		align		: 'ऍलाइन्मॅन्ट',
-		alignNotSet	: '<सॅट नहीं>',
 		alignLeft	: 'दायें',
 		alignCenter	: 'बीच में',
@@ -211,4 +246,5 @@
 		widthPx		: 'पिक्सैल',
 		widthPc		: 'प्रतिशत',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'ऊँचाई',
 		cellSpace	: 'सैल अंतर',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'क्रिया',
 		method		: 'तरीका',
-		encoding	: 'Encoding', // MISSING
-		target		: 'टार्गेट',
-		targetNotSet	: '<सॅट नहीं>',
-		targetNew	: 'नया विन्डो (_blank)',
-		targetTop	: 'शीर्ष विन्डो (_top)',
-		targetSelf	: 'इसी विन्डो (_self)',
-		targetParent	: 'मूल विन्डो (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'तस्वीर बटन प्रॉपर्टीज़',
 		menu		: 'तस्वीर प्रॉपर्टीज़',
-		infoTab	: 'तस्वीर की जानकारी',
+		infoTab		: 'तस्वीर की जानकारी',
 		btnUpload	: 'इसे सर्वर को भेजें',
-		url		: 'URL',
-		upload	: 'अपलोड',
-		alt		: 'वैकल्पिक टेक्स्ट',
+		upload		: 'अपलोड',
+		alt			: 'वैकल्पिक टेक्स्ट',
 		width		: 'चौड़ाई',
-		height	: 'ऊँचाई',
+		height		: 'ऊँचाई',
 		lockRatio	: 'लॉक अनुपात',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'रीसॅट साइज़',
-		border	: 'बॉर्डर',
-		hSpace	: 'हॉरिज़ॉन्टल स्पेस',
-		vSpace	: 'वर्टिकल स्पेस',
+		border		: 'बॉर्डर',
+		hSpace		: 'हॉरिज़ॉन्टल स्पेस',
+		vSpace		: 'वर्टिकल स्पेस',
 		align		: 'ऍलाइन',
 		alignLeft	: 'दायें',
-		alignAbsBottom: 'Abs नीचे',
-		alignAbsMiddle: 'Abs ऊपर',
-		alignBaseline	: 'मूल रेखा',
-		alignBottom	: 'नीचे',
-		alignMiddle	: 'मध्य',
 		alignRight	: 'दायें',
-		alignTextTop	: 'टेक्स्ट ऊपर',
-		alignTop	: 'ऊपर',
-		preview	: 'प्रीव्यू',
 		alertUrl	: 'तस्वीर का URL टाइप करें ',
-		linkTab	: 'लिंक',
+		linkTab		: 'लिंक',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'फ़्लैश प्रॉपर्टीज़',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'फ़्लैश प्रॉपर्टीज़',
-		chkPlay		: 'ऑटो प्ले',
-		chkLoop		: 'लूप',
-		chkMenu		: 'फ़्लैश मॅन्यू का प्रयोग करें',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'स्केल',
+		title			: 'फ़्लैश प्रॉपर्टीज़',
+		chkPlay			: 'ऑटो प्ले',
+		chkLoop			: 'लूप',
+		chkMenu			: 'फ़्लैश मॅन्यू का प्रयोग करें',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'स्केल',
 		scaleAll		: 'सभी दिखायें',
 		scaleNoBorder	: 'कोई बॉर्डर नहीं',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'ऍलाइन',
-		alignLeft	: 'दायें',
-		alignAbsBottom: 'Abs नीचे',
-		alignAbsMiddle: 'Abs ऊपर',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'ऍलाइन',
+		alignLeft		: 'दायें',
+		alignAbsBottom	: 'Abs नीचे',
+		alignAbsMiddle	: 'Abs ऊपर',
 		alignBaseline	: 'मूल रेखा',
-		alignBottom	: 'नीचे',
-		alignMiddle	: 'मध्य',
-		alignRight	: 'दायें',
+		alignBottom		: 'नीचे',
+		alignMiddle		: 'मध्य',
+		alignRight		: 'दायें',
 		alignTextTop	: 'टेक्स्ट ऊपर',
-		alignTop	: 'ऊपर',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'बैक्ग्राउन्ड रंग',
-		width	: 'चौड़ाई',
-		height	: 'ऊँचाई',
-		hSpace	: 'हॉरिज़ॉन्टल स्पेस',
-		vSpace	: 'वर्टिकल स्पेस',
-		validateSrc : 'लिंक URL टाइप करें',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'ऊपर',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'बैक्ग्राउन्ड रंग',
+		width			: 'चौड़ाई',
+		height			: 'ऊँचाई',
+		hSpace			: 'हॉरिज़ॉन्टल स्पेस',
+		vSpace			: 'वर्टिकल स्पेस',
+		validateSrc		: 'लिंक URL टाइप करें',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'स्माइली',
-		title	: 'स्माइली इन्सर्ट करें'
+		title	: 'स्माइली इन्सर्ट करें',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'अंकीय सूची',
-	bulletedlist : 'बुलॅट सूची',
-	indent : 'इन्डॅन्ट बढ़ायें',
-	outdent : 'इन्डॅन्ट कम करें',
+	numberedlist	: 'अंकीय सूची',
+	bulletedlist	: 'बुलॅट सूची',
+	indent			: 'इन्डॅन्ट बढ़ायें',
+	outdent			: 'इन्डॅन्ट कम करें',
 
 	justify :
 	{
-		left : 'बायीं तरफ',
-		center : 'बीच में',
-		right : 'दायीं तरफ',
-		block : 'ब्लॉक जस्टीफ़ाई'
+		left	: 'बायीं तरफ',
+		center	: 'बीच में',
+		right	: 'दायीं तरफ',
+		block	: 'ब्लॉक जस्टीफ़ाई'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'पेस्ट',
-		cutError	: 'आपके ब्राउज़र की सुरक्षा सॅटिन्ग्स ने कट करने की अनुमति नहीं प्रदान की है। (Ctrl+X) का प्रयोग करें।',
-		copyError	: 'आपके ब्राआउज़र की सुरक्षा सॅटिन्ग्स ने कॉपी करने की अनुमति नहीं प्रदान की है। (Ctrl+C) का प्रयोग करें।',
-		pasteMsg	: 'Ctrl+V का प्रयोग करके पेस्ट करें और ठीक है करें.',
-		securityMsg	: 'आपके ब्राउज़र की सुरक्षा आपके ब्राउज़र की सुरKश सैटिंग के कारण, एडिटर आपके क्लिपबोर्ड डेटा को नहीं पा सकता है. आपको उसे इस विन्डो में दोबारा पेस्ट करना होगा.'
+		cutError	: 'आपके ब्राउज़र की सुरक्षा सॅटिन्ग्स ने कट करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+X) का प्रयोग करें।',
+		copyError	: 'आपके ब्राआउज़र की सुरक्षा सॅटिन्ग्स ने कॉपी करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+C) का प्रयोग करें।',
+		pasteMsg	: 'Ctrl/Cmd+V का प्रयोग करके पेस्ट करें और ठीक है करें.',
+		securityMsg	: 'आपके ब्राउज़र की सुरक्षा आपके ब्राउज़र की सुरKश सैटिंग के कारण, एडिटर आपके क्लिपबोर्ड डेटा को नहीं पा सकता है. आपको उसे इस विन्डो में दोबारा पेस्ट करना होगा.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'पेस्ट (वर्ड से)',
-		title : 'पेस्ट (वर्ड से)',
-		advice : 'Ctrl+V का प्रयोग करके पेस्ट करें और ठीक है करें.',
-		ignoreFontFace : 'फ़ॉन्ट परिभाषा निकालें',
-		removeStyle : 'स्टाइल परिभाषा निकालें'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'पेस्ट (वर्ड से)',
+		title			: 'पेस्ट (वर्ड से)',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'पेस्ट (सादा टॅक्स्ट)',
-		title : 'पेस्ट (सादा टॅक्स्ट)'
+		button	: 'पेस्ट (सादा टॅक्स्ट)',
+		title	: 'पेस्ट (सादा टॅक्स्ट)'
 	},
 
 	templates :
 	{
-		button : 'टॅम्प्लेट',
-		title : 'कन्टेन्ट टॅम्प्लेट',
-		insertOption: 'मूल शब्दों को बदलें',
-		selectPromptMsg: 'ऍडिटर में ओपन करने हेतु टॅम्प्लेट चुनें(वर्तमान कन्टॅन्ट सेव नहीं होंगे):',
-		emptyListMsg : '(कोई टॅम्प्लेट डिफ़ाइन नहीं किया गया है)'
+		button			: 'टॅम्प्लेट',
+		title			: 'कन्टेन्ट टॅम्प्लेट',
+		options : 'Template Options', // MISSING
+		insertOption	: 'मूल शब्दों को बदलें',
+		selectPromptMsg	: 'ऍडिटर में ओपन करने हेतु टॅम्प्लेट चुनें(वर्तमान कन्टॅन्ट सेव नहीं होंगे):',
+		emptyListMsg	: '(कोई टॅम्प्लेट डिफ़ाइन नहीं किया गया है)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'स्टाइल',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'स्टाइल',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'फ़ॉर्मैट',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'फ़ॉर्मैट',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		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)'
-	},
+		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				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'फ़ॉन्ट',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'फ़ॉन्ट',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'फ़ॉन्ट',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'फ़ॉन्ट'
 	},
 
 	fontSize :
 	{
-		label : 'साइज़',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'साइज़',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'साइज़',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'साइज़'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'टेक्स्ट रंग',
-		bgColorTitle : 'बैक्ग्राउन्ड रंग',
-		auto : 'स्वचालित',
-		more : 'और रंग...'
+		textColorTitle	: 'टेक्स्ट रंग',
+		bgColorTitle	: 'बैक्ग्राउन्ड रंग',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'स्वचालित',
+		more			: 'और रंग...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/hr.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/hr.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/hr.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Text editor, %1',
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Form',
 		checkbox		: 'Checkbox',
-		radio		: 'Radio Button',
+		radio			: 'Radio Button',
 		textField		: 'Text Field',
 		textarea		: 'Textarea',
 		hiddenField		: 'Hidden Field',
 		button			: 'Button',
-		select	: 'Selection Field',
+		select			: 'Selection Field',
 		imageButton		: 'Image Button',
 		notSet			: '<nije postavljeno>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Poništi',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'Općenito',
 		advancedTab		: 'Napredno',
-		validateNumberFailed	: 'Ova vrijednost nije broj.',
+		validateNumberFailed : 'Ova vrijednost nije broj.',
 		confirmNewPage	: 'Sve napravljene promjene će biti izgubljene ukoliko ih niste snimili. Sigurno želite učitati novu stranicu?',
 		confirmCancel	: 'Neke od opcija su promjenjene. Sigurno želite zatvoriti ovaj prozor?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Ubaci posebne znakove',
-		title		: 'Odaberite posebni karakter'
+		title		: 'Odaberite posebni karakter',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Ubaci/promijeni link',
+		other 		: '<drugi>',
 		menu		: 'Promijeni link',
 		title		: 'Link',
@@ -117,14 +136,9 @@
 		advanced	: 'Napredno',
 		type		: 'Link vrsta',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Sidro na ovoj stranici',
 		toEmail		: 'E-Mail',
-		target		: 'Meta',
-		targetNotSet	: '<nije postavljeno>',
-		targetFrame	: '<okvir>',
-		targetPopup	: '<popup prozor>',
-		targetNew	: 'Novi prozor (_blank)',
-		targetTop	: 'Vršni prozor (_top)',
-		targetSelf	: 'Isti prozor (_self)',
-		targetParent	: 'Roditeljski prozor (_parent)',
+		targetFrame		: '<okvir>',
+		targetPopup		: '<popup prozor>',
 		targetFrameName	: 'Ime ciljnog okvira',
 		targetPopupName	: 'Naziv popup prozora',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Promjenjiva veličina',
 		popupStatusBar	: 'Statusna traka',
-		popupLocationBar	: 'Traka za lokaciju',
+		popupLocationBar: 'Traka za lokaciju',
 		popupToolbar	: 'Traka s alatima',
 		popupMenuBar	: 'Izborna traka',
@@ -144,5 +158,4 @@
 		id				: 'Id',
 		langDir			: 'Smjer jezika',
-		langDirNotSet	: '<nije postavljeno>',
 		langDirLTR		: 'S lijeva na desno (LTR)',
 		langDirRTL		: 'S desna na lijevo (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Veličina okvira',
 		align		: 'Poravnanje',
-		alignNotSet	: '<nije postavljeno>',
 		alignLeft	: 'Lijevo',
 		alignCenter	: 'Središnje',
@@ -211,4 +246,5 @@
 		widthPx		: 'piksela',
 		widthPc		: 'postotaka',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Visina',
 		cellSpace	: 'Prostornost ćelija',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span mora biti cijeli broj.',
 			invalidColSpan	: 'Columns span mora biti cijeli broj.',
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Akcija',
 		method		: 'Metoda',
-		encoding	: 'Encoding',
-		target		: 'Meta',
-		targetNotSet	: '<nije postavljeno>',
-		targetNew	: 'Novi prozor (_blank)',
-		targetTop	: 'Vršni prozor (_top)',
-		targetSelf	: 'Isti prozor (_self)',
-		targetParent	: 'Roditeljski prozor (_parent)'
+		encoding	: 'Encoding'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Image Button svojstva',
 		menu		: 'Svojstva slika',
-		infoTab	: 'Info slike',
+		infoTab		: 'Info slike',
 		btnUpload	: 'Pošalji na server',
-		url		: 'URL',
-		upload	: 'Pošalji',
-		alt		: 'Alternativni tekst',
+		upload		: 'Pošalji',
+		alt			: 'Alternativni tekst',
 		width		: 'Širina',
-		height	: 'Visina',
+		height		: 'Visina',
 		lockRatio	: 'Zaključaj odnos',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Obriši veličinu',
-		border	: 'Okvir',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
+		border		: 'Okvir',
+		hSpace		: 'HSpace',
+		vSpace		: 'VSpace',
 		align		: 'Poravnaj',
 		alignLeft	: 'Lijevo',
-		alignAbsBottom: 'Abs dolje',
-		alignAbsMiddle: 'Abs sredina',
-		alignBaseline	: 'Bazno',
-		alignBottom	: 'Dolje',
-		alignMiddle	: 'Sredina',
 		alignRight	: 'Desno',
-		alignTextTop	: 'Vrh teksta',
-		alignTop	: 'Vrh',
-		preview	: 'Pregledaj',
 		alertUrl	: 'Unesite URL slike',
-		linkTab	: 'Link',
+		linkTab		: 'Link',
 		button2Img	: 'Želite li promijeniti odabrani gumb u jednostavnu sliku?',
 		img2Button	: 'Želite li promijeniti odabranu sliku u gumb?',
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Flash svojstva',
 		propertiesTab	: 'Svojstva',
-		title		: 'Flash svojstva',
-		chkPlay		: 'Auto Play',
-		chkLoop		: 'Ponavljaj',
-		chkMenu		: 'Omogući Flash izbornik',
-		chkFull		: 'Omogući Fullscreen',
- 		scale		: 'Omjer',
+		title			: 'Flash svojstva',
+		chkPlay			: 'Auto Play',
+		chkLoop			: 'Ponavljaj',
+		chkMenu			: 'Omogući Flash izbornik',
+		chkFull			: 'Omogući Fullscreen',
+ 		scale			: 'Omjer',
 		scaleAll		: 'Prikaži sve',
 		scaleNoBorder	: 'Bez okvira',
@@ -418,38 +445,38 @@
 		access			: 'Script Access',
 		accessAlways	: 'Uvijek',
-		accessSameDomain	: 'Ista domena',
-		accessNever	: 'Nikad',
-		align		: 'Poravnaj',
-		alignLeft	: 'Lijevo',
-		alignAbsBottom: 'Abs dolje',
-		alignAbsMiddle: 'Abs sredina',
+		accessSameDomain: 'Ista domena',
+		accessNever		: 'Nikad',
+		align			: 'Poravnaj',
+		alignLeft		: 'Lijevo',
+		alignAbsBottom	: 'Abs dolje',
+		alignAbsMiddle	: 'Abs sredina',
 		alignBaseline	: 'Bazno',
-		alignBottom	: 'Dolje',
-		alignMiddle	: 'Sredina',
-		alignRight	: 'Desno',
+		alignBottom		: 'Dolje',
+		alignMiddle		: 'Sredina',
+		alignRight		: 'Desno',
 		alignTextTop	: 'Vrh teksta',
-		alignTop	: 'Vrh',
-		quality		: 'Kvaliteta',
-		qualityBest		 : 'Best',
-		qualityHigh		 : 'High',
-		qualityAutoHigh	 : 'Auto High',
-		qualityMedium	 : 'Medium',
-		qualityAutoLow	 : 'Auto Low',
-		qualityLow		 : 'Low',
-		windowModeWindow	 : 'Window',
-		windowModeOpaque	 : 'Opaque',
-		windowModeTransparent	 : 'Transparent',
-		windowMode	: 'Vrsta prozora',
-		flashvars	: 'Varijable za Flash',
-		bgcolor	: 'Boja pozadine',
-		width	: 'Širina',
-		height	: 'Visina',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
-		validateSrc : 'Molimo upišite URL link',
-		validateWidth : 'Širina mora biti broj.',
-		validateHeight : 'Visina mora biti broj.',
-		validateHSpace : 'HSpace mora biti broj.',
-		validateVSpace : 'VSpace mora biti broj.'
+		alignTop		: 'Vrh',
+		quality			: 'Kvaliteta',
+		qualityBest		: 'Best',
+		qualityHigh		: 'High',
+		qualityAutoHigh	: 'Auto High',
+		qualityMedium	: 'Medium',
+		qualityAutoLow	: 'Auto Low',
+		qualityLow		: 'Low',
+		windowModeWindow: 'Window',
+		windowModeOpaque: 'Opaque',
+		windowModeTransparent : 'Transparent',
+		windowMode		: 'Vrsta prozora',
+		flashvars		: 'Varijable za Flash',
+		bgcolor			: 'Boja pozadine',
+		width			: 'Širina',
+		height			: 'Visina',
+		hSpace			: 'HSpace',
+		vSpace			: 'VSpace',
+		validateSrc		: 'Molimo upišite URL link',
+		validateWidth	: 'Širina mora biti broj.',
+		validateHeight	: 'Visina mora biti broj.',
+		validateHSpace	: 'HSpace mora biti broj.',
+		validateVSpace	: 'VSpace mora biti broj.'
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Smješko',
-		title	: 'Ubaci smješka'
+		title	: 'Ubaci smješka',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element'
 	},
 
-	numberedlist : 'Brojčana lista',
-	bulletedlist : 'Obična lista',
-	indent : 'Pomakni udesno',
-	outdent : 'Pomakni ulijevo',
+	numberedlist	: 'Brojčana lista',
+	bulletedlist	: 'Obična lista',
+	indent			: 'Pomakni udesno',
+	outdent			: 'Pomakni ulijevo',
 
 	justify :
 	{
-		left : 'Lijevo poravnanje',
-		center : 'Središnje poravnanje',
-		right : 'Desno poravnanje',
-		block : 'Blok poravnanje'
+		left	: 'Lijevo poravnanje',
+		center	: 'Središnje poravnanje',
+		right	: 'Desno poravnanje',
+		block	: 'Blok poravnanje'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Zalijepi',
-		cutError	: 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl+X).',
-		copyError	: 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl+C).',
-		pasteMsg	: 'Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (<STRONG>Ctrl+V</STRONG>) i kliknite <STRONG>OK</STRONG>.',
-		securityMsg	: 'Zbog sigurnosnih postavki Vašeg pretraživača, editor nema direktan pristup Vašem međuspremniku. Potrebno je ponovno zalijepiti tekst u ovaj prozor.'
+		cutError	: 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+X).',
+		copyError	: 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+C).',
+		pasteMsg	: 'Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (<STRONG>Ctrl/Cmd+V</STRONG>) i kliknite <STRONG>OK</STRONG>.',
+		securityMsg	: 'Zbog sigurnosnih postavki Vašeg pretraživača, editor nema direktan pristup Vašem međuspremniku. Potrebno je ponovno zalijepiti tekst u ovaj prozor.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Zalijepi iz Worda',
-		title : 'Zalijepi iz Worda',
-		advice : 'Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (<STRONG>Ctrl+V</STRONG>) i kliknite <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Zanemari definiciju vrste fonta',
-		removeStyle : 'Ukloni definicije stilova'
+		confirmCleanup	: 'Tekst koji želite zalijepiti čini se da je kopiran iz Worda. Želite li prije očistiti tekst?',
+		toolbar			: 'Zalijepi iz Worda',
+		title			: 'Zalijepi iz Worda',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Zalijepi kao čisti tekst',
-		title : 'Zalijepi kao čisti tekst'
+		button	: 'Zalijepi kao čisti tekst',
+		title	: 'Zalijepi kao čisti tekst'
 	},
 
 	templates :
 	{
-		button : 'Predlošci',
-		title : 'Predlošci sadržaja',
-		insertOption: 'Zamijeni trenutne sadržaje',
-		selectPromptMsg: 'Molimo odaberite predložak koji želite otvoriti<br>(stvarni sadržaj će biti izgubljen):',
-		emptyListMsg : '(Nema definiranih predložaka)'
+		button			: 'Predlošci',
+		title			: 'Predlošci sadržaja',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Zamijeni trenutne sadržaje',
+		selectPromptMsg	: 'Molimo odaberite predložak koji želite otvoriti<br>(stvarni sadržaj će biti izgubljen):',
+		emptyListMsg	: '(Nema definiranih predložaka)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Stil',
-		voiceLabel : 'Stilovi',
-		panelVoiceLabel : 'Odaberite stil',
-		panelTitle1 : 'Block stilovi',
-		panelTitle2 : 'Inline stilovi',
-		panelTitle3 : 'Object stilovi'
+		label		: 'Stil',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block stilovi',
+		panelTitle2	: 'Inline stilovi',
+		panelTitle3	: 'Object stilovi'
 	},
 
 	format :
 	{
-		label : 'Format',
-		voiceLabel : 'Format',
-		panelTitle : 'Format',
-		panelVoiceLabel : 'Odaberite format paragrafa',
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatirano',
-		tag_address : 'Address',
-		tag_h1 : 'Heading 1',
-		tag_h2 : 'Heading 2',
-		tag_h3 : 'Heading 3',
-		tag_h4 : 'Heading 4',
-		tag_h5 : 'Heading 5',
-		tag_h6 : 'Heading 6',
-		tag_div : 'Normal (DIV)'
-	},
+		label		: 'Format',
+		panelTitle	: 'Format',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatirano',
+		tag_address	: 'Address',
+		tag_h1		: 'Heading 1',
+		tag_h2		: 'Heading 2',
+		tag_h3		: 'Heading 3',
+		tag_h4		: 'Heading 4',
+		tag_h5		: 'Heading 5',
+		tag_h6		: 'Heading 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Font',
-		voiceLabel : 'Font',
-		panelTitle : 'Font',
-		panelVoiceLabel : 'Odaberite font'
+		label		: 'Font',
+		voiceLabel	: 'Font',
+		panelTitle	: 'Font'
 	},
 
 	fontSize :
 	{
-		label : 'Veličina',
-		voiceLabel : 'Veličina slova',
-		panelTitle : 'Veličina',
-		panelVoiceLabel : 'Odaberite veličinu slova'
+		label		: 'Veličina',
+		voiceLabel	: 'Veličina slova',
+		panelTitle	: 'Veličina'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Boja teksta',
-		bgColorTitle : 'Boja pozadine',
-		auto : 'Automatski',
-		more : 'Više boja...'
+		textColorTitle	: 'Boja teksta',
+		bgColorTitle	: 'Boja pozadine',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatski',
+		more			: 'Više boja...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Provjeri pravopis tijekom tipkanja (SCAYT)',
-		enable : 'Omogući SCAYT',
-		disable : 'Onemogući SCAYT',
-		about : 'O SCAYT',
-		toggle : 'Omoguću/Onemogući SCAYT',
-		options : 'Opcije',
-		langs : 'Jezici',
-		moreSuggestions : 'Više prijedloga',
-		ignore : 'Zanemari',
-		ignoreAll : 'Zanemari sve',
-		addWord : 'Dodaj riječ',
-		emptyDic : 'Naziv rječnika ne smije biti prazno.',
-		optionsTab : 'Opcije',
-		languagesTab : 'Jezici',
-		dictionariesTab : 'Rječnici',
-		aboutTab : 'O SCAYT'
+		title			: 'Provjeri pravopis tijekom tipkanja (SCAYT)',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Omogući SCAYT',
+		disable			: 'Onemogući SCAYT',
+		about			: 'O SCAYT',
+		toggle			: 'Omoguću/Onemogući SCAYT',
+		options			: 'Opcije',
+		langs			: 'Jezici',
+		moreSuggestions	: 'Više prijedloga',
+		ignore			: 'Zanemari',
+		ignoreAll		: 'Zanemari sve',
+		addWord			: 'Dodaj riječ',
+		emptyDic		: 'Naziv rječnika ne smije biti prazno.',
+
+		optionsTab		: 'Opcije',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Jezici',
+
+		dictionariesTab	: 'Rječnici',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'O SCAYT'
 	},
 
 	about :
 	{
-		title : 'O CKEditoru',
-		dlgTitle : 'O CKEditoru',
-		moreInfo : 'Za informacije o licencama posjetite našu web stranicu:',
-		copy : 'Copyright &copy; $1. All rights reserved.'
+		title		: 'O CKEditoru',
+		dlgTitle	: 'O CKEditoru',
+		moreInfo	: 'Za informacije o licencama posjetite našu web stranicu:',
+		copy		: 'Copyright &copy; $1. All rights reserved.'
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Sidro',
-		flash : 'Flash animacija',
-		div : 'Prijelom stranice',
-		unknown : 'Nepoznati objekt'
+		anchor	: 'Sidro',
+		flash	: 'Flash animacija',
+		div		: 'Prijelom stranice',
+		unknown	: 'Nepoznati objekt'
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/hu.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/hu.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/hu.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Űrlap',
 		checkbox		: 'Jelölőnégyzet',
-		radio		: 'Választógomb',
+		radio			: 'Választógomb',
 		textField		: 'Szövegmező',
 		textarea		: 'Szövegterület',
 		hiddenField		: 'Rejtettmező',
 		button			: 'Gomb',
-		select	: 'Legördülő lista',
+		select			: 'Legördülő lista',
 		imageButton		: 'Képgomb',
 		notSet			: '<nincs beállítva>',
@@ -89,9 +93,17 @@
 		ok				: 'Rendben',
 		cancel			: 'Mégsem',
-		generalTab		: 'General', // MISSING
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
+		generalTab		: 'Általános',
 		advancedTab		: 'További opciók',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
-		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
-		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		validateNumberFailed : 'A mezőbe csak számokat írhat.',
+		confirmNewPage	: 'Minden nem mentett változás el fog veszni! Biztosan be szeretné tölteni az oldalt?',
+		confirmCancel	: 'Az űrlap tartalma megváltozott, ám a változásokat nem rögzítette. Biztosan be szeretné zárni az űrlapot?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Speciális karakter beillesztése',
-		title		: 'Speciális karakter választása'
+		title		: 'Speciális karakter választása',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Hivatkozás beillesztése/módosítása',
+		other 		: '<más>',
 		menu		: 'Hivatkozás módosítása',
 		title		: 'Hivatkozás tulajdonságai',
@@ -117,20 +136,15 @@
 		advanced	: 'További opciók',
 		type		: 'Hivatkozás típusa',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Horgony az oldalon',
 		toEmail		: 'E-Mail',
-		target		: 'Tartalom megjelenítése',
-		targetNotSet	: '<nincs beállítva>',
-		targetFrame	: '<keretben>',
-		targetPopup	: '<felugró ablakban>',
-		targetNew	: 'Új ablakban (_blank)',
-		targetTop	: 'Legfelső ablakban (_top)',
-		targetSelf	: 'Azonos ablakban (_self)',
-		targetParent	: 'Szülő ablakban (_parent)',
+		targetFrame		: '<keretben>',
+		targetPopup		: '<felugró ablakban>',
 		targetFrameName	: 'Keret neve',
 		targetPopupName	: 'Felugró ablak neve',
 		popupFeatures	: 'Felugró ablak jellemzői',
-		popupResizable	: 'Resizable', // MISSING
+		popupResizable	: 'Átméretezés',
 		popupStatusBar	: 'Állapotsor',
-		popupLocationBar	: 'Címsor',
+		popupLocationBar: 'Címsor',
 		popupToolbar	: 'Eszköztár',
 		popupMenuBar	: 'Menü sor',
@@ -142,7 +156,6 @@
 		popupHeight		: 'Magasság',
 		popupTop		: 'Felső pozíció',
-		id				: 'Id', // MISSING
+		id				: 'Id',
 		langDir			: 'Írás iránya',
-		langDirNotSet	: '<nincs beállítva>',
 		langDirLTR		: 'Balról jobbra',
 		langDirRTL		: 'Jobbról balra',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -188,7 +224,7 @@
 		matchCase			: 'kis- és nagybetű megkülönböztetése',
 		matchWord			: 'csak ha ez a teljes szó',
-		matchCyclic			: 'Match cyclic', // MISSING
+		matchCyclic			: 'Ciklikus keresés',
 		replaceAll			: 'Az összes cseréje',
-		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+		replaceSuccessMsg	: '%1 egyezőség cserélve.'
 	},
 
@@ -204,5 +240,4 @@
 		border		: 'Szegélyméret',
 		align		: 'Igazítás',
-		alignNotSet	: '<Nincs beállítva>',
 		alignLeft	: 'Balra',
 		alignCenter	: 'Középre',
@@ -211,4 +246,5 @@
 		widthPx		: 'képpont',
 		widthPc		: 'százalék',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Magasság',
 		cellSpace	: 'Cella térköz',
@@ -216,22 +252,22 @@
 		caption		: 'Felirat',
 		summary		: 'Leírás',
-		headers		: 'Headers', // MISSING
-		headersNone		: 'None', // MISSING
-		headersColumn	: 'First column', // MISSING
-		headersRow		: 'First Row', // MISSING
-		headersBoth		: 'Both', // MISSING
-		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
-		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
-		invalidBorder	: 'Border size must be a number.', // MISSING
-		invalidWidth	: 'Table width must be a number.', // MISSING
-		invalidHeight	: 'Table height must be a number.', // MISSING
-		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
-		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+		headers		: 'Fejlécek',
+		headersNone		: 'Nincsenek',
+		headersColumn	: 'Első oszlop',
+		headersRow		: 'Első sor',
+		headersBoth		: 'Mindkettő',
+		invalidRows		: 'A sorok számának nagyobbnak kell lenni mint 0.',
+		invalidCols		: 'Az oszlopok számának nagyobbnak kell lenni mint 0.',
+		invalidBorder	: 'A szegélyméret mezőbe csak számokat írhat.',
+		invalidWidth	: 'A szélesség mezőbe csak számokat írhat.',
+		invalidHeight	: 'A magasság mezőbe csak számokat írhat.',
+		invalidCellSpacing	: 'A cella térköz mezőbe csak számokat írhat.',
+		invalidCellPadding	: 'A cella belső margó mezőbe csak számokat írhat.',
 
 		cell :
 		{
 			menu			: 'Cella',
-			insertBefore	: 'Cella beillesztése az aktuális cella elé',
-			insertAfter		: 'Cella beillesztése az aktuális cella mögé',
+			insertBefore	: 'Beszúrás balra',
+			insertAfter		: 'Beszúrás jobbra',
 			deleteCell		: 'Cellák törlése',
 			merge			: 'Cellák egyesítése',
@@ -240,26 +276,26 @@
 			splitHorizontal	: 'Cellák szétválasztása vízszintesen',
 			splitVertical	: 'Cellák szétválasztása függőlegesen',
-			title			: 'Cell Properties', // MISSING
-			cellType		: 'Cell Type', // MISSING
-			rowSpan			: 'Rows Span', // MISSING
-			colSpan			: 'Columns Span', // MISSING
-			wordWrap		: 'Word Wrap', // MISSING
-			hAlign			: 'Horizontal Alignment', // MISSING
-			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
-			alignBaseline	: 'Baseline', // MISSING
-			bgColor			: 'Background Color', // MISSING
-			borderColor		: 'Border Color', // MISSING
-			data			: 'Data', // MISSING
-			header			: 'Header', // MISSING
-			yes				: 'Yes', // MISSING
-			no				: 'No', // MISSING
-			invalidWidth	: 'Cell width must be a number.', // MISSING
-			invalidHeight	: 'Cell height must be a number.', // MISSING
-			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
-			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			title			: 'Cella tulajdonságai',
+			cellType		: 'Cella típusa',
+			rowSpan			: 'Függőleges egyesítés',
+			colSpan			: 'Vízszintes egyesítés',
+			wordWrap		: 'Hosszú sorok törése',
+			hAlign			: 'Vízszintes igazítás',
+			vAlign			: 'Függőleges igazítás',
+			alignTop		: 'Fel',
+			alignMiddle		: 'Középre',
+			alignBottom		: 'Le',
+			alignBaseline	: 'Alapvonalra',
+			bgColor			: 'Háttér színe',
+			borderColor		: 'Keret színe',
+			data			: 'Adat',
+			header			: 'Fejléc',
+			yes				: 'Igen',
+			no				: 'Nem',
+			invalidWidth	: 'A szélesség mezőbe csak számokat írhat.',
+			invalidHeight	: 'A magasság mezőbe csak számokat írhat.',
+			invalidRowSpan	: 'A függőleges egyesítés mezőbe csak számokat írhat.',
+			invalidColSpan	: 'A vízszintes egyesítés mezőbe csak számokat írhat.',
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -267,6 +303,6 @@
 		{
 			menu			: 'Sor',
-			insertBefore	: 'Sor beillesztése az aktuális sor elé',
-			insertAfter		: 'Sor beillesztése az aktuális sor mögé',
+			insertBefore	: 'Beszúrás fölé',
+			insertAfter		: 'Beszúrás alá',
 			deleteRow		: 'Sorok törlése'
 		},
@@ -275,6 +311,6 @@
 		{
 			menu			: 'Oszlop',
-			insertBefore	: 'Oszlop beillesztése az aktuális oszlop elé',
-			insertAfter		: 'Oszlop beillesztése az aktuális oszlop mögé',
+			insertBefore	: 'Beszúrás balra',
+			insertAfter		: 'Beszúrás jobbra',
 			deleteColumn	: 'Oszlopok törlése'
 		}
@@ -308,11 +344,5 @@
 		action		: 'Adatfeldolgozást végző hivatkozás',
 		method		: 'Adatküldés módja',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Tartalom megjelenítése',
-		targetNotSet	: '<nincs beállítva>',
-		targetNew	: 'Új ablakban (_blank)',
-		targetTop	: 'Legfelső ablakban (_top)',
-		targetSelf	: 'Azonos ablakban (_self)',
-		targetParent	: 'Szülő ablakban (_parent)'
+		encoding	: 'Kódolás'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Képgomb tulajdonságai',
 		menu		: 'Kép tulajdonságai',
-		infoTab	: 'Alaptulajdonságok',
+		infoTab		: 'Alaptulajdonságok',
 		btnUpload	: 'Küldés a szerverre',
-		url		: 'Hivatkozás',
-		upload	: 'Feltöltés',
-		alt		: 'Buborék szöveg',
+		upload		: 'Feltöltés',
+		alt			: 'Buborék szöveg',
 		width		: 'Szélesség',
-		height	: 'Magasság',
+		height		: 'Magasság',
 		lockRatio	: 'Arány megtartása',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Eredeti méret',
-		border	: 'Keret',
-		hSpace	: 'Vízsz. táv',
-		vSpace	: 'Függ. táv',
+		border		: 'Keret',
+		hSpace		: 'Vízsz. táv',
+		vSpace		: 'Függ. táv',
 		align		: 'Igazítás',
 		alignLeft	: 'Bal',
-		alignAbsBottom: 'Legaljára',
-		alignAbsMiddle: 'Közepére',
-		alignBaseline	: 'Alapvonalhoz',
-		alignBottom	: 'Aljára',
-		alignMiddle	: 'Középre',
 		alignRight	: 'Jobbra',
-		alignTextTop	: 'Szöveg tetejére',
-		alignTop	: 'Tetejére',
-		preview	: 'Előnézet',
 		alertUrl	: 'Töltse ki a kép webcímét',
-		linkTab	: 'Hivatkozás',
+		linkTab		: 'Hivatkozás',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -406,50 +433,50 @@
 	{
 		properties		: 'Flash tulajdonságai',
-		propertiesTab	: 'Properties', // MISSING
-		title		: 'Flash tulajdonságai',
-		chkPlay		: 'Automata lejátszás',
-		chkLoop		: 'Folyamatosan',
-		chkMenu		: 'Flash menü engedélyezése',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Méretezés',
+		propertiesTab	: 'Tulajdonságok',
+		title			: 'Flash tulajdonságai',
+		chkPlay			: 'Automata lejátszás',
+		chkLoop			: 'Folyamatosan',
+		chkMenu			: 'Flash menü engedélyezése',
+		chkFull			: 'Teljes képernyő engedélyezése',
+ 		scale			: 'Méretezés',
 		scaleAll		: 'Mindent mutat',
 		scaleNoBorder	: 'Keret nélkül',
 		scaleFit		: 'Teljes kitöltés',
-		access			: 'Script Access', // MISSING
-		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Igazítás',
-		alignLeft	: 'Bal',
-		alignAbsBottom: 'Legaljára',
-		alignAbsMiddle: 'Közepére',
+		access			: 'Szkript hozzáférés',
+		accessAlways	: 'Mindig',
+		accessSameDomain: 'Azonos domainről',
+		accessNever		: 'Soha',
+		align			: 'Igazítás',
+		alignLeft		: 'Bal',
+		alignAbsBottom	: 'Legaljára',
+		alignAbsMiddle	: 'Közepére',
 		alignBaseline	: 'Alapvonalhoz',
-		alignBottom	: 'Aljára',
-		alignMiddle	: 'Középre',
-		alignRight	: 'Jobbra',
+		alignBottom		: 'Aljára',
+		alignMiddle		: 'Középre',
+		alignRight		: 'Jobbra',
 		alignTextTop	: 'Szöveg tetejére',
-		alignTop	: 'Tetejére',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Háttérszín',
-		width	: 'Szélesség',
-		height	: 'Magasság',
-		hSpace	: 'Vízsz. táv',
-		vSpace	: 'Függ. táv',
-		validateSrc : 'Adja meg a hivatkozás webcímét',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Tetejére',
+		quality			: 'Minőség',
+		qualityBest		: 'Legjobb',
+		qualityHigh		: 'Jó',
+		qualityAutoHigh	: 'Automata jó',
+		qualityMedium	: 'Közepes',
+		qualityAutoLow	: 'Automata gyenge',
+		qualityLow		: 'Gyenge',
+		windowModeWindow: 'Window',
+		windowModeOpaque: 'Opaque',
+		windowModeTransparent : 'Transparent',
+		windowMode		: 'Ablak mód',
+		flashvars		: 'Flash változók',
+		bgcolor			: 'Háttérszín',
+		width			: 'Szélesség',
+		height			: 'Magasság',
+		hSpace			: 'Vízsz. táv',
+		vSpace			: 'Függ. táv',
+		validateSrc		: 'Adja meg a hivatkozás webcímét',
+		validateWidth	: 'A szélesség mezőbe csak számokat írhat.',
+		validateHeight	: 'A magasság mezőbe csak számokat írhat.',
+		validateHSpace	: 'A vízszintes távolsűág mezőbe csak számokat írhat.',
+		validateVSpace	: 'A függőleges távolsűág mezőbe csak számokat írhat.'
 	},
 
@@ -458,7 +485,7 @@
 	{
 		toolbar			: 'Helyesírás-ellenőrzés',
-		title			: 'Spell Check', // MISSING
-		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
-		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		title			: 'Helyesírás ellenörző',
+		notAvailable	: 'Sajnálom, de a szolgáltatás jelenleg nem elérhető.',
+		errorLoading	: 'Hiba a szolgáltatás host betöltése közben: %s.',
 		notInDic		: 'Nincs a szótárban',
 		changeTo		: 'Módosítás',
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Hangulatjelek',
-		title	: 'Hangulatjel beszúrása'
+		title	: 'Hangulatjel beszúrása',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
-	},
-
-	numberedlist : 'Számozás',
-	bulletedlist : 'Felsorolás',
-	indent : 'Behúzás növelése',
-	outdent : 'Behúzás csökkentése',
+		eleLabel : 'Elements path', // MISSING
+		eleTitle : '%1 elem'
+	},
+
+	numberedlist	: 'Számozás',
+	bulletedlist	: 'Felsorolás',
+	indent			: 'Behúzás növelése',
+	outdent			: 'Behúzás csökkentése',
 
 	justify :
 	{
-		left : 'Balra',
-		center : 'Középre',
-		right : 'Jobbra',
-		block : 'Sorkizárt'
+		left	: 'Balra',
+		center	: 'Középre',
+		right	: 'Jobbra',
+		block	: 'Sorkizárt'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Beillesztés',
-		cutError	: 'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl+X).',
-		copyError	: 'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl+X).',
-		pasteMsg	: 'Másolja be az alábbi mezőbe a <STRONG>Ctrl+V</STRONG> billentyűk lenyomásával, majd nyomjon <STRONG>Rendben</STRONG>-t.',
-		securityMsg	: 'A böngésző biztonsági beállításai miatt a szerkesztő nem képes hozzáférni a vágólap adataihoz. Illeszd be újra ebben az ablakban.'
+		cutError	: 'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).',
+		copyError	: 'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).',
+		pasteMsg	: 'Másolja be az alábbi mezőbe a <STRONG>Ctrl/Cmd+V</STRONG> billentyűk lenyomásával, majd nyomjon <STRONG>Rendben</STRONG>-t.',
+		securityMsg	: 'A böngésző biztonsági beállításai miatt a szerkesztő nem képes hozzáférni a vágólap adataihoz. Illeszd be újra ebben az ablakban.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Beillesztés Word-ből',
-		title : 'Beillesztés Word-ből',
-		advice : 'Másolja be az alábbi mezőbe a <STRONG>Ctrl+V</STRONG> billentyűk lenyomásával, majd nyomjon <STRONG>Rendben</STRONG>-t.',
-		ignoreFontFace : 'Betű formázások megszüntetése',
-		removeStyle : 'Stílusok eltávolítása'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Beillesztés Word-ből',
+		title			: 'Beillesztés Word-ből',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Beillesztés formázatlan szövegként',
-		title : 'Beillesztés formázatlan szövegként'
+		button	: 'Beillesztés formázatlan szövegként',
+		title	: 'Beillesztés formázatlan szövegként'
 	},
 
 	templates :
 	{
-		button : 'Sablonok',
-		title : 'Elérhető sablonok',
-		insertOption: 'Kicseréli a jelenlegi tartalmat',
-		selectPromptMsg: 'Válassza ki melyik sablon nyíljon meg a szerkesztőben<br>(a jelenlegi tartalom elveszik):',
-		emptyListMsg : '(Nincs sablon megadva)'
+		button			: 'Sablonok',
+		title			: 'Elérhető sablonok',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Kicseréli a jelenlegi tartalmat',
+		selectPromptMsg	: 'Válassza ki melyik sablon nyíljon meg a szerkesztőben<br>(a jelenlegi tartalom elveszik):',
+		emptyListMsg	: '(Nincs sablon megadva)'
 	},
 
@@ -540,146 +570,178 @@
 	stylesCombo :
 	{
-		label : 'Stílus',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Stílus',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Blokk stílusok',
+		panelTitle2	: 'Inline stílusok',
+		panelTitle3	: 'Objektum stílusok'
 	},
 
 	format :
 	{
-		label : 'Formátum',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Formátum',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normál',
-		tag_pre : 'Formázott',
-		tag_address : 'Címsor',
-		tag_h1 : 'Fejléc 1',
-		tag_h2 : 'Fejléc 2',
-		tag_h3 : 'Fejléc 3',
-		tag_h4 : 'Fejléc 4',
-		tag_h5 : 'Fejléc 5',
-		tag_h6 : 'Fejléc 6',
-		tag_div : 'Bekezdés (DIV)'
-	},
+		label		: 'Formátum',
+		panelTitle	: 'Formátum',
+
+		tag_p		: 'Normál',
+		tag_pre		: 'Formázott',
+		tag_address	: 'Címsor',
+		tag_h1		: 'Fejléc 1',
+		tag_h2		: 'Fejléc 2',
+		tag_h3		: 'Fejléc 3',
+		tag_h4		: 'Fejléc 4',
+		tag_h5		: 'Fejléc 5',
+		tag_h6		: 'Fejléc 6',
+		tag_div		: 'Bekezdés (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Betűtípus',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Betűtípus',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Betűtípus',
+		voiceLabel	: 'Betűtípus',
+		panelTitle	: 'Betűtípus'
 	},
 
 	fontSize :
 	{
-		label : 'Méret',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Méret',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Méret',
+		voiceLabel	: 'Betűméret',
+		panelTitle	: 'Méret'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Betűszín',
-		bgColorTitle : 'Háttérszín',
-		auto : 'Automatikus',
-		more : 'További színek...'
+		textColorTitle	: 'Betűszín',
+		bgColorTitle	: 'Háttérszín',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatikus',
+		more			: 'További színek...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
+		'000' : 'Fekete',
+		'800000' : 'Bordó',
+		'8B4513' : 'Barna',
+		'2F4F4F' : 'Sötét türkiz',
+		'008080' : 'Türkiz',
+		'000080' : 'Király kék',
+		'4B0082' : 'Indigó kék',
+		'696969' : 'Szürke',
+		'B22222' : 'Tégla vörös',
+		'A52A2A' : 'Vörös',
+		'DAA520' : 'Arany sárga',
+		'006400' : 'Sötét zöld',
+		'40E0D0' : 'Türkiz',
+		'0000CD' : 'Kék',
+		'800080' : 'Lila',
+		'808080' : 'Szürke',
+		'F00' : 'Piros',
+		'FF8C00' : 'Sötét narancs',
+		'FFD700' : 'Arany',
+		'008000' : 'Zöld',
+		'0FF' : 'Türkiz',
+		'00F' : 'Kék',
+		'EE82EE' : 'Rózsaszín',
+		'A9A9A9' : 'Sötét szürke',
+		'FFA07A' : 'Lazac',
+		'FFA500' : 'Narancs',
+		'FFFF00' : 'Citromsárga',
+		'00FF00' : 'Neon zöld',
+		'AFEEEE' : 'Világos türkiz',
+		'ADD8E6' : 'Világos kék',
+		'DDA0DD' : 'Világos lila',
+		'D3D3D3' : 'Világos szürke',
 		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
+		'FAEBD7' : 'Törtfehér',
+		'FFFFE0' : 'Világos sárga',
+		'F0FFF0' : 'Menta',
+		'F0FFFF' : 'Azúr kék',
+		'F0F8FF' : 'Halvány kék',
 		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'FFF' : 'Fehér'
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Helyesírás ellenőrzés gépelés közben',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'SCAYT engedélyezése',
+		disable			: 'SCAYT letiltása',
+		about			: 'SCAYT névjegy',
+		toggle			: 'SCAYT kapcsolása',
+		options			: 'Beállítások',
+		langs			: 'Nyelvek',
+		moreSuggestions	: 'További javaslatok',
+		ignore			: 'Kihagy',
+		ignoreAll		: 'Összes kihagyása',
+		addWord			: 'Szó hozzáadása',
+		emptyDic		: 'A szótár nevét meg kell adni.',
+
+		optionsTab		: 'Beállítások',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Nyelvek',
+
+		dictionariesTab	: 'Szótár',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'Névjegy'
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
-	},
-
-	maximize : 'Maximize', // MISSING
-	minimize : 'Minimize', // MISSING
+		title		: 'CKEditor névjegy',
+		dlgTitle	: 'CKEditor névjegy',
+		moreInfo	: 'Licenszelési információkért kérjük látogassa meg weboldalunkat:',
+		copy		: 'Copyright &copy; $1. Minden jog fenntartva.'
+	},
+
+	maximize : 'Teljes méret',
+	minimize : 'Kis méret',
 
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
-	},
-
-	resize : 'Drag to resize', // MISSING
+		anchor	: 'Horgony',
+		flash	: 'Flash animáció',
+		div		: 'Oldaltörés',
+		unknown	: 'Ismeretlen objektum'
+	},
+
+	resize : 'Húzza az átméretezéshez',
 
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Válasszon színt',
+		options	:	'Color Options', // MISSING
+		highlight	: 'Nagyítás',
+		selected	: 'Kiválasztott',
+		clear		: 'Ürítés'
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/is.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/is.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/is.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Setja inn innsláttarform',
 		checkbox		: 'Setja inn hökunarreit',
-		radio		: 'Setja inn valhnapp',
+		radio			: 'Setja inn valhnapp',
 		textField		: 'Setja inn textareit',
 		textarea		: 'Setja inn textasvæði',
 		hiddenField		: 'Setja inn falið svæði',
 		button			: 'Setja inn hnapp',
-		select	: 'Setja inn lista',
+		select			: 'Setja inn lista',
 		imageButton		: 'Setja inn myndahnapp',
 		notSet			: '<ekkert valið>',
@@ -89,9 +93,17 @@
 		ok				: 'Í lagi',
 		cancel			: 'Hætta við',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'Almennt',
 		advancedTab		: 'Tæknilegt',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Setja inn merki',
-		title		: 'Velja tákn'
+		title		: 'Velja tákn',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Stofna/breyta stiklu',
+		other 		: '<annar>',
 		menu		: 'Breyta stiklu',
 		title		: 'Stikla',
@@ -117,14 +136,9 @@
 		advanced	: 'Tæknilegt',
 		type		: 'Stikluflokkur',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Bókamerki á þessari síðu',
 		toEmail		: 'Netfang',
-		target		: 'Mark',
-		targetNotSet	: '<ekkert valið>',
-		targetFrame	: '<rammi>',
-		targetPopup	: '<sprettigluggi>',
-		targetNew	: 'Nýr gluggi (_blank)',
-		targetTop	: 'Allur glugginn (_top)',
-		targetSelf	: 'Sami gluggi (_self)',
-		targetParent	: 'Yfirsettur rammi (_parent)',
+		targetFrame		: '<rammi>',
+		targetPopup		: '<sprettigluggi>',
 		targetFrameName	: 'Nafn markglugga',
 		targetPopupName	: 'Nafn sprettiglugga',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Stöðustika',
-		popupLocationBar	: 'Fanglína',
+		popupLocationBar: 'Fanglína',
 		popupToolbar	: 'Verkfærastika',
 		popupMenuBar	: 'Vallína',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Lesstefna',
-		langDirNotSet	: '<ekkert valið>',
 		langDirLTR		: 'Frá vinstri til hægri (LTR)',
 		langDirRTL		: 'Frá hægri til vinstri (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Breidd ramma',
 		align		: 'Jöfnun',
-		alignNotSet	: '<ekkert valið>',
 		alignLeft	: 'Vinstrijafnað',
 		alignCenter	: 'Miðjað',
@@ -211,4 +246,5 @@
 		widthPx		: 'myndeindir',
 		widthPc		: 'prósent',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Hæð',
 		cellSpace	: 'Bil milli reita',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Aðgerð',
 		method		: 'Aðferð',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Mark',
-		targetNotSet	: '<ekkert valið>',
-		targetNew	: 'Nýr gluggi (_blank)',
-		targetTop	: 'Allur glugginn (_top)',
-		targetSelf	: 'Sami gluggi (_self)',
-		targetParent	: 'Yfirsettur rammi (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Eigindi myndahnapps',
 		menu		: 'Eigindi myndar',
-		infoTab	: 'Almennt',
+		infoTab		: 'Almennt',
 		btnUpload	: 'Hlaða upp',
-		url		: 'Vefslóð',
-		upload	: 'Hlaða upp',
-		alt		: 'Baklægur texti',
+		upload		: 'Hlaða upp',
+		alt			: 'Baklægur texti',
 		width		: 'Breidd',
-		height	: 'Hæð',
+		height		: 'Hæð',
 		lockRatio	: 'Festa stærðarhlutfall',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Reikna stærð',
-		border	: 'Rammi',
-		hSpace	: 'Vinstri bil',
-		vSpace	: 'Hægri bil',
+		border		: 'Rammi',
+		hSpace		: 'Vinstri bil',
+		vSpace		: 'Hægri bil',
 		align		: 'Jöfnun',
 		alignLeft	: 'Vinstri',
-		alignAbsBottom: 'Abs neðst',
-		alignAbsMiddle: 'Abs miðjuð',
-		alignBaseline	: 'Grunnlína',
-		alignBottom	: 'Neðst',
-		alignMiddle	: 'Miðjuð',
 		alignRight	: 'Hægri',
-		alignTextTop	: 'Efri brún texta',
-		alignTop	: 'Efst',
-		preview	: 'Sýna dæmi',
 		alertUrl	: 'Sláðu inn slóðina að myndinni',
-		linkTab	: 'Stikla',
+		linkTab		: 'Stikla',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Eigindi Flash',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Eigindi Flash',
-		chkPlay		: 'Sjálfvirk spilun',
-		chkLoop		: 'Endurtekning',
-		chkMenu		: 'Sýna Flash-valmynd',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Skali',
+		title			: 'Eigindi Flash',
+		chkPlay			: 'Sjálfvirk spilun',
+		chkLoop			: 'Endurtekning',
+		chkMenu			: 'Sýna Flash-valmynd',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Skali',
 		scaleAll		: 'Sýna allt',
 		scaleNoBorder	: 'Án ramma',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Jöfnun',
-		alignLeft	: 'Vinstri',
-		alignAbsBottom: 'Abs neðst',
-		alignAbsMiddle: 'Abs miðjuð',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Jöfnun',
+		alignLeft		: 'Vinstri',
+		alignAbsBottom	: 'Abs neðst',
+		alignAbsMiddle	: 'Abs miðjuð',
 		alignBaseline	: 'Grunnlína',
-		alignBottom	: 'Neðst',
-		alignMiddle	: 'Miðjuð',
-		alignRight	: 'Hægri',
+		alignBottom		: 'Neðst',
+		alignMiddle		: 'Miðjuð',
+		alignRight		: 'Hægri',
 		alignTextTop	: 'Efri brún texta',
-		alignTop	: 'Efst',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Bakgrunnslitur',
-		width	: 'Breidd',
-		height	: 'Hæð',
-		hSpace	: 'Vinstri bil',
-		vSpace	: 'Hægri bil',
-		validateSrc : 'Sláðu inn veffang stiklunnar!',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Efst',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Bakgrunnslitur',
+		width			: 'Breidd',
+		height			: 'Hæð',
+		hSpace			: 'Vinstri bil',
+		vSpace			: 'Hægri bil',
+		validateSrc		: 'Sláðu inn veffang stiklunnar!',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Svipur',
-		title	: 'Velja svip'
+		title	: 'Velja svip',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Númeraður listi',
-	bulletedlist : 'Punktalisti',
-	indent : 'Minnka inndrátt',
-	outdent : 'Auka inndrátt',
+	numberedlist	: 'Númeraður listi',
+	bulletedlist	: 'Punktalisti',
+	indent			: 'Minnka inndrátt',
+	outdent			: 'Auka inndrátt',
 
 	justify :
 	{
-		left : 'Vinstrijöfnun',
-		center : 'Miðja texta',
-		right : 'Hægrijöfnun',
-		block : 'Jafna báðum megin'
+		left	: 'Vinstrijöfnun',
+		center	: 'Miðja texta',
+		right	: 'Hægrijöfnun',
+		block	: 'Jafna báðum megin'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Líma',
-		cutError	: 'Öryggisstillingar vafrans þíns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið í klippa (Ctrl+X).',
-		copyError	: 'Öryggisstillingar vafrans þíns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið í afrita (Ctrl+C).',
-		pasteMsg	: 'Límdu í svæðið hér að neðan og (<STRONG>Ctrl+V</STRONG>) og smelltu á <STRONG>OK</STRONG>.',
-		securityMsg	: 'Vegna öryggisstillinga í vafranum þínum fær ritillinn ekki beinan aðgang að klippuborðinu. Þú verður að líma innihaldið aftur inn í þennan glugga.'
+		cutError	: 'Öryggisstillingar vafrans þíns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið í klippa (Ctrl/Cmd+X).',
+		copyError	: 'Öryggisstillingar vafrans þíns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið í afrita (Ctrl/Cmd+C).',
+		pasteMsg	: 'Límdu í svæðið hér að neðan og (<STRONG>Ctrl/Cmd+V</STRONG>) og smelltu á <STRONG>OK</STRONG>.',
+		securityMsg	: 'Vegna öryggisstillinga í vafranum þínum fær ritillinn ekki beinan aðgang að klippuborðinu. Þú verður að líma innihaldið aftur inn í þennan glugga.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Líma úr Word',
-		title : 'Líma úr Word',
-		advice : 'Límdu í svæðið hér að neðan og (<STRONG>Ctrl+V</STRONG>) og smelltu á <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Hunsa leturskilgreiningar',
-		removeStyle : 'Hunsa letureigindi'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Líma úr Word',
+		title			: 'Líma úr Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Líma sem ósniðinn texta',
-		title : 'Líma sem ósniðinn texta'
+		button	: 'Líma sem ósniðinn texta',
+		title	: 'Líma sem ósniðinn texta'
 	},
 
 	templates :
 	{
-		button : 'Sniðmát',
-		title : 'Innihaldssniðmát',
-		insertOption: 'Skipta út raunverulegu innihaldi',
-		selectPromptMsg: 'Veldu sniðmát til að opna í ritlinum.<br>(Núverandi innihald víkur fyrir því!):',
-		emptyListMsg : '(Ekkert sniðmát er skilgreint!)'
+		button			: 'Sniðmát',
+		title			: 'Innihaldssniðmát',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Skipta út raunverulegu innihaldi',
+		selectPromptMsg	: 'Veldu sniðmát til að opna í ritlinum.<br>(Núverandi innihald víkur fyrir því!):',
+		emptyListMsg	: '(Ekkert sniðmát er skilgreint!)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Stílflokkur',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Stílflokkur',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Stílsnið',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Stílsnið',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Venjulegt letur',
-		tag_pre : 'Forsniðið',
-		tag_address : 'Vistfang',
-		tag_h1 : 'Fyrirsögn 1',
-		tag_h2 : 'Fyrirsögn 2',
-		tag_h3 : 'Fyrirsögn 3',
-		tag_h4 : 'Fyrirsögn 4',
-		tag_h5 : 'Fyrirsögn 5',
-		tag_h6 : 'Fyrirsögn 6',
-		tag_div : 'Venjulegt (DIV)'
-	},
+		label		: 'Stílsnið',
+		panelTitle	: 'Stílsnið',
+
+		tag_p		: 'Venjulegt letur',
+		tag_pre		: 'Forsniðið',
+		tag_address	: 'Vistfang',
+		tag_h1		: 'Fyrirsögn 1',
+		tag_h2		: 'Fyrirsögn 2',
+		tag_h3		: 'Fyrirsögn 3',
+		tag_h4		: 'Fyrirsögn 4',
+		tag_h5		: 'Fyrirsögn 5',
+		tag_h6		: 'Fyrirsögn 6',
+		tag_div		: 'Venjulegt (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Leturgerð ',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Leturgerð ',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Leturgerð ',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Leturgerð '
 	},
 
 	fontSize :
 	{
-		label : 'Leturstærð ',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Leturstærð ',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Leturstærð ',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Leturstærð '
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Litur texta',
-		bgColorTitle : 'Bakgrunnslitur',
-		auto : 'Sjálfval',
-		more : 'Fleiri liti...'
+		textColorTitle	: 'Litur texta',
+		bgColorTitle	: 'Bakgrunnslitur',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Sjálfval',
+		more			: 'Fleiri liti...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/it.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/it.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/it.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Modulo',
 		checkbox		: 'Checkbox',
-		radio		: 'Radio Button',
+		radio			: 'Radio Button',
 		textField		: 'Campo di testo',
 		textarea		: 'Area di testo',
 		hiddenField		: 'Campo nascosto',
 		button			: 'Bottone',
-		select	: 'Menu di selezione',
+		select			: 'Menu di selezione',
 		imageButton		: 'Bottone immagine',
 		notSet			: '<non impostato>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Annulla',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'Generale',
 		advancedTab		: 'Avanzate',
-		validateNumberFailed	: 'Il valore inserito non è un numero.',
+		validateNumberFailed : 'Il valore inserito non è un numero.',
 		confirmNewPage	: 'Ogni modifica non salvata sarà persa. Sei sicuro di voler caricare una nuova pagina?',
 		confirmCancel	: 'Alcune delle opzioni sono state cambiate. Sei sicuro di voler chiudere la finestra di dialogo?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Inserisci carattere speciale',
-		title		: 'Seleziona carattere speciale'
+		title		: 'Seleziona carattere speciale',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Inserisci/Modifica collegamento',
+		other 		: '<altro>',
 		menu		: 'Modifica collegamento',
 		title		: 'Collegamento',
@@ -117,14 +136,9 @@
 		advanced	: 'Avanzate',
 		type		: 'Tipo di Collegamento',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Ancora nella pagina',
 		toEmail		: 'E-Mail',
-		target		: 'Destinazione',
-		targetNotSet	: '<non impostato>',
-		targetFrame	: '<riquadro>',
-		targetPopup	: '<finestra popup>',
-		targetNew	: 'Nuova finestra (_blank)',
-		targetTop	: 'Finestra superiore (_top)',
-		targetSelf	: 'Stessa finestra (_self)',
-		targetParent	: 'Finestra padre (_parent)',
+		targetFrame		: '<riquadro>',
+		targetPopup		: '<finestra popup>',
 		targetFrameName	: 'Nome del riquadro di destinazione',
 		targetPopupName	: 'Nome finestra popup',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Ridimensionabile',
 		popupStatusBar	: 'Barra di stato',
-		popupLocationBar	: 'Barra degli indirizzi',
+		popupLocationBar: 'Barra degli indirizzi',
 		popupToolbar	: 'Barra degli strumenti',
 		popupMenuBar	: 'Barra del menu',
@@ -144,5 +158,4 @@
 		id				: 'Id',
 		langDir			: 'Direzione scrittura',
-		langDirNotSet	: '<non impostato>',
 		langDirLTR		: 'Da Sinistra a Destra (LTR)',
 		langDirRTL		: 'Da Destra a Sinistra (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Dimensione bordo',
 		align		: 'Allineamento',
-		alignNotSet	: '<non impostato>',
 		alignLeft	: 'Sinistra',
 		alignCenter	: 'Centrato',
@@ -211,4 +246,5 @@
 		widthPx		: 'pixel',
 		widthPc		: 'percento',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Altezza',
 		cellSpace	: 'Spaziatura celle',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Il numero di righe dev\'essere un numero intero.',
 			invalidColSpan	: 'Il numero di colonne dev\'essere un numero intero.',
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Azione',
 		method		: 'Metodo',
-		encoding	: 'Codifica',
-		target		: 'Destinazione',
-		targetNotSet	: '<non impostato>',
-		targetNew	: 'Nuova finestra (_blank)',
-		targetTop	: 'Finestra superiore (_top)',
-		targetSelf	: 'Stessa finestra (_self)',
-		targetParent	: 'Finestra padre (_parent)'
+		encoding	: 'Codifica'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Proprietà bottone immagine',
 		menu		: 'Proprietà immagine',
-		infoTab	: 'Informazioni immagine',
+		infoTab		: 'Informazioni immagine',
 		btnUpload	: 'Invia al server',
-		url		: 'URL',
-		upload	: 'Carica',
-		alt		: 'Testo alternativo',
+		upload		: 'Carica',
+		alt			: 'Testo alternativo',
 		width		: 'Larghezza',
-		height	: 'Altezza',
+		height		: 'Altezza',
 		lockRatio	: 'Blocca rapporto',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Reimposta dimensione',
-		border	: 'Bordo',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
+		border		: 'Bordo',
+		hSpace		: 'HSpace',
+		vSpace		: 'VSpace',
 		align		: 'Allineamento',
 		alignLeft	: 'Sinistra',
-		alignAbsBottom: 'In basso assoluto',
-		alignAbsMiddle: 'Centrato assoluto',
-		alignBaseline	: 'Linea base',
-		alignBottom	: 'In Basso',
-		alignMiddle	: 'Centrato',
 		alignRight	: 'Destra',
-		alignTextTop	: 'In alto al testo',
-		alignTop	: 'In Alto',
-		preview	: 'Anteprima',
 		alertUrl	: 'Devi inserire l\'URL per l\'immagine',
-		linkTab	: 'Collegamento',
+		linkTab		: 'Collegamento',
 		button2Img	: 'Vuoi trasformare il bottone immagine selezionato in un\'immagine semplice?',
 		img2Button	: 'Vuoi trasferomare l\'immagine selezionata in un bottone immagine?',
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Proprietà Oggetto Flash',
 		propertiesTab	: 'Proprietà',
-		title		: 'Proprietà Oggetto Flash',
-		chkPlay		: 'Avvio Automatico',
-		chkLoop		: 'Riavvio automatico',
-		chkMenu		: 'Abilita Menu di Flash',
-		chkFull		: 'Permetti la modalità tutto schermo',
- 		scale		: 'Ridimensiona',
+		title			: 'Proprietà Oggetto Flash',
+		chkPlay			: 'Avvio Automatico',
+		chkLoop			: 'Riavvio automatico',
+		chkMenu			: 'Abilita Menu di Flash',
+		chkFull			: 'Permetti la modalità tutto schermo',
+ 		scale			: 'Ridimensiona',
 		scaleAll		: 'Mostra Tutto',
 		scaleNoBorder	: 'Senza Bordo',
@@ -418,38 +445,38 @@
 		access			: 'Accesso Script',
 		accessAlways	: 'Sempre',
-		accessSameDomain	: 'Solo stesso dominio',
-		accessNever	: 'Mai',
-		align		: 'Allineamento',
-		alignLeft	: 'Sinistra',
-		alignAbsBottom: 'In basso assoluto',
-		alignAbsMiddle: 'Centrato assoluto',
+		accessSameDomain: 'Solo stesso dominio',
+		accessNever		: 'Mai',
+		align			: 'Allineamento',
+		alignLeft		: 'Sinistra',
+		alignAbsBottom	: 'In basso assoluto',
+		alignAbsMiddle	: 'Centrato assoluto',
 		alignBaseline	: 'Linea base',
-		alignBottom	: 'In Basso',
-		alignMiddle	: 'Centrato',
-		alignRight	: 'Destra',
+		alignBottom		: 'In Basso',
+		alignMiddle		: 'Centrato',
+		alignRight		: 'Destra',
 		alignTextTop	: 'In alto al testo',
-		alignTop	: 'In Alto',
-		quality		: 'Qualità',
-		qualityBest		 : 'Massima',
-		qualityHigh		 : 'Alta',
-		qualityAutoHigh	 : 'Alta Automatica',
-		qualityMedium	 : 'Intermedia',
-		qualityAutoLow	 : 'Bassa Automatica',
-		qualityLow		 : 'Bassa',
-		windowModeWindow	 : 'Finestra',
-		windowModeOpaque	 : 'Opaca',
-		windowModeTransparent	 : 'Trasparente',
-		windowMode	: 'Modalità finestra',
-		flashvars	: 'Variabili per Flash',
-		bgcolor	: 'Colore sfondo',
-		width	: 'Larghezza',
-		height	: 'Altezza',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
-		validateSrc : 'Devi inserire l\'URL del collegamento',
-		validateWidth : 'La Larghezza dev\'essere un numero',
-		validateHeight : 'L\'altezza dev\'essere un numero',
-		validateHSpace : 'L\'HSpace dev\'essere un numero.',
-		validateVSpace : 'Il VSpace dev\'essere un numero.'
+		alignTop		: 'In Alto',
+		quality			: 'Qualità',
+		qualityBest		: 'Massima',
+		qualityHigh		: 'Alta',
+		qualityAutoHigh	: 'Alta Automatica',
+		qualityMedium	: 'Intermedia',
+		qualityAutoLow	: 'Bassa Automatica',
+		qualityLow		: 'Bassa',
+		windowModeWindow: 'Finestra',
+		windowModeOpaque: 'Opaca',
+		windowModeTransparent : 'Trasparente',
+		windowMode		: 'Modalità finestra',
+		flashvars		: 'Variabili per Flash',
+		bgcolor			: 'Colore sfondo',
+		width			: 'Larghezza',
+		height			: 'Altezza',
+		hSpace			: 'HSpace',
+		vSpace			: 'VSpace',
+		validateSrc		: 'Devi inserire l\'URL del collegamento',
+		validateWidth	: 'La Larghezza dev\'essere un numero',
+		validateHeight	: 'L\'altezza dev\'essere un numero',
+		validateHSpace	: 'L\'HSpace dev\'essere un numero.',
+		validateVSpace	: 'Il VSpace dev\'essere un numero.'
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Emoticon',
-		title	: 'Inserisci emoticon'
+		title	: 'Inserisci emoticon',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 elemento'
 	},
 
-	numberedlist : 'Elenco numerato',
-	bulletedlist : 'Elenco puntato',
-	indent : 'Aumenta rientro',
-	outdent : 'Riduci rientro',
+	numberedlist	: 'Elenco numerato',
+	bulletedlist	: 'Elenco puntato',
+	indent			: 'Aumenta rientro',
+	outdent			: 'Riduci rientro',
 
 	justify :
 	{
-		left : 'Allinea a sinistra',
-		center : 'Centra',
-		right : 'Allinea a destra',
-		block : 'Giustifica'
+		left	: 'Allinea a sinistra',
+		center	: 'Centra',
+		right	: 'Allinea a destra',
+		block	: 'Giustifica'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Incolla',
-		cutError	: 'Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl+X).',
-		copyError	: 'Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl+C).',
-		pasteMsg	: 'Incolla il testo all\'interno dell\'area sottostante usando la scorciatoia di tastiere (<STRONG>Ctrl+V</STRONG>) e premi <STRONG>OK</STRONG>.',
-		securityMsg	: 'A causa delle impostazioni di sicurezza del browser,l\'editor non è in grado di accedere direttamente agli appunti. E\' pertanto necessario incollarli di nuovo in questa finestra.'
+		cutError	: 'Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+X).',
+		copyError	: 'Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+C).',
+		pasteMsg	: 'Incolla il testo all\'interno dell\'area sottostante usando la scorciatoia di tastiere (<STRONG>Ctrl/Cmd+V</STRONG>) e premi <STRONG>OK</STRONG>.',
+		securityMsg	: 'A causa delle impostazioni di sicurezza del browser,l\'editor non è in grado di accedere direttamente agli appunti. E\' pertanto necessario incollarli di nuovo in questa finestra.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Incolla da Word',
-		title : 'Incolla da Word',
-		advice : 'Incolla il testo all\'interno dell\'area sottostante usando la scorciatoia di tastiere (<STRONG>Ctrl+V</STRONG>) e premi <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignora le definizioni di Font',
-		removeStyle : 'Rimuovi le definizioni di Stile'
+		confirmCleanup	: 'Il testo da incollare sembra provenire da Word. Desideri pulirlo prima di incollare?',
+		toolbar			: 'Incolla da Word',
+		title			: 'Incolla da Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Incolla come testo semplice',
-		title : 'Incolla come testo semplice'
+		button	: 'Incolla come testo semplice',
+		title	: 'Incolla come testo semplice'
 	},
 
 	templates :
 	{
-		button : 'Modelli',
-		title : 'Contenuto dei modelli',
-		insertOption: 'Cancella il contenuto corrente',
-		selectPromptMsg: 'Seleziona il modello da aprire nell\'editor<br />(il contenuto attuale verrà eliminato):',
-		emptyListMsg : '(Nessun modello definito)'
+		button			: 'Modelli',
+		title			: 'Contenuto dei modelli',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Cancella il contenuto corrente',
+		selectPromptMsg	: 'Seleziona il modello da aprire nell\'editor<br />(il contenuto attuale verrà eliminato):',
+		emptyListMsg	: '(Nessun modello definito)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Stile',
-		voiceLabel : 'Stili',
-		panelVoiceLabel : 'Seleziona uno stile',
-		panelTitle1 : 'Stili per blocchi',
-		panelTitle2 : 'Stili in linea',
-		panelTitle3 : 'Stili per oggetti'
+		label		: 'Stile',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Stili per blocchi',
+		panelTitle2	: 'Stili in linea',
+		panelTitle3	: 'Stili per oggetti'
 	},
 
 	format :
 	{
-		label : 'Formato',
-		voiceLabel : 'Formato',
-		panelTitle : 'Formato',
-		panelVoiceLabel : 'Seleziona il formato per paragrafo',
-
-		tag_p : 'Normale',
-		tag_pre : 'Formattato',
-		tag_address : 'Indirizzo',
-		tag_h1 : 'Titolo 1',
-		tag_h2 : 'Titolo 2',
-		tag_h3 : 'Titolo 3',
-		tag_h4 : 'Titolo 4',
-		tag_h5 : 'Titolo 5',
-		tag_h6 : 'Titolo 6',
-		tag_div : 'Paragrafo (DIV)'
-	},
+		label		: 'Formato',
+		panelTitle	: 'Formato',
+
+		tag_p		: 'Normale',
+		tag_pre		: 'Formattato',
+		tag_address	: 'Indirizzo',
+		tag_h1		: 'Titolo 1',
+		tag_h2		: 'Titolo 2',
+		tag_h3		: 'Titolo 3',
+		tag_h4		: 'Titolo 4',
+		tag_h5		: 'Titolo 5',
+		tag_h6		: 'Titolo 6',
+		tag_div		: 'Paragrafo (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Font',
-		voiceLabel : 'Font',
-		panelTitle : 'Font',
-		panelVoiceLabel : 'Seleziona un font'
+		label		: 'Font',
+		voiceLabel	: 'Font',
+		panelTitle	: 'Font'
 	},
 
 	fontSize :
 	{
-		label : 'Dimensione',
-		voiceLabel : 'Dimensione Font',
-		panelTitle : 'Dimensione',
-		panelVoiceLabel : 'Seleziona una dimensione font'
+		label		: 'Dimensione',
+		voiceLabel	: 'Dimensione Font',
+		panelTitle	: 'Dimensione'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Colore testo',
-		bgColorTitle : 'Colore sfondo',
-		auto : 'Automatico',
-		more : 'Altri colori...'
+		textColorTitle	: 'Colore testo',
+		bgColorTitle	: 'Colore sfondo',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatico',
+		more			: 'Altri colori...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Controllo Ortografico Mentre Scrivi',
-		enable : 'Abilita COMS',
-		disable : 'Disabilita COMS',
-		about : 'About COMS',
-		toggle : 'Inverti abilitazione SCOMS',
-		options : 'Opzioni',
-		langs : 'Lingue',
-		moreSuggestions : 'Altri suggerimenti',
-		ignore : 'Ignora',
-		ignoreAll : 'Ignora tutti',
-		addWord : 'Aggiungi Parola',
-		emptyDic : 'Il nome del dizionario non può essere vuoto.',
-		optionsTab : 'Opzioni',
-		languagesTab : 'Lingue',
-		dictionariesTab : 'Dizionari',
-		aboutTab : 'About'
+		title			: 'Controllo Ortografico Mentre Scrivi',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Abilita COMS',
+		disable			: 'Disabilita COMS',
+		about			: 'About COMS',
+		toggle			: 'Inverti abilitazione SCOMS',
+		options			: 'Opzioni',
+		langs			: 'Lingue',
+		moreSuggestions	: 'Altri suggerimenti',
+		ignore			: 'Ignora',
+		ignoreAll		: 'Ignora tutti',
+		addWord			: 'Aggiungi Parola',
+		emptyDic		: 'Il nome del dizionario non può essere vuoto.',
+
+		optionsTab		: 'Opzioni',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Lingue',
+
+		dictionariesTab	: 'Dizionari',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About'
 	},
 
 	about :
 	{
-		title : 'About CKEditor',
-		dlgTitle : 'About CKEditor',
-		moreInfo : 'Per le informazioni sulla licenza si prega di visitare il nostro sito:',
-		copy : 'Copyright &copy; $1. Tutti i diritti riservati.'
+		title		: 'About CKEditor',
+		dlgTitle	: 'About CKEditor',
+		moreInfo	: 'Per le informazioni sulla licenza si prega di visitare il nostro sito:',
+		copy		: 'Copyright &copy; $1. Tutti i diritti riservati.'
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Ancora',
-		flash : 'Animazione Flash',
-		div : 'Interruzione di Pagina',
-		unknown : 'Oggetto sconosciuto'
+		anchor	: 'Ancora',
+		flash	: 'Animazione Flash',
+		div		: 'Interruzione di Pagina',
+		unknown	: 'Oggetto sconosciuto'
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/ja.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/ja.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/ja.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'リッチテキストエディタ, %1',
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'フォーム',
 		checkbox		: 'チェックボックス',
-		radio		: 'ラジオボタン',
+		radio			: 'ラジオボタン',
 		textField		: '１行テキスト',
 		textarea		: 'テキストエリア',
 		hiddenField		: '不可視フィールド',
 		button			: 'ボタン',
-		select	: '選択フィールド',
+		select			: '選択フィールド',
 		imageButton		: '画像ボタン',
 		notSet			: '<なし>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'キャンセル',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: '全般',
 		advancedTab		: '高度な設定',
-		validateNumberFailed	: '値が数ではありません',
+		validateNumberFailed : '値が数ではありません',
 		confirmNewPage	: '変更内容を保存せず、 新しいページを開いてもよろしいでしょうか？',
 		confirmCancel	: 'オプション設定を変更しました。ダイアログを閉じてもよろしいでしょうか？',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: '特殊文字挿入',
-		title		: '特殊文字選択'
+		title		: '特殊文字選択',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'リンク挿入/編集',
+		other 		: '<その他の>',
 		menu		: 'リンク編集',
 		title		: 'ハイパーリンク',
@@ -117,14 +136,9 @@
 		advanced	: '高度な設定',
 		type		: 'リンクタイプ',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'このページのアンカー',
 		toEmail		: 'E-Mail',
-		target		: 'ターゲット',
-		targetNotSet	: '<なし>',
-		targetFrame	: '<フレーム>',
-		targetPopup	: '<ポップアップウィンドウ>',
-		targetNew	: '新しいウィンドウ (_blank)',
-		targetTop	: '最上位ウィンドウ (_top)',
-		targetSelf	: '同じウィンドウ (_self)',
-		targetParent	: '親ウィンドウ (_parent)',
+		targetFrame		: '<フレーム>',
+		targetPopup		: '<ポップアップウィンドウ>',
 		targetFrameName	: '目的のフレーム名',
 		targetPopupName	: 'ポップアップウィンドウ名',
@@ -132,5 +146,5 @@
 		popupResizable	: 'サイズ可変',
 		popupStatusBar	: 'ステータスバー',
-		popupLocationBar	: 'ロケーションバー',
+		popupLocationBar: 'ロケーションバー',
 		popupToolbar	: 'ツールバー',
 		popupMenuBar	: 'メニューバー',
@@ -144,5 +158,4 @@
 		id				: 'Id',
 		langDir			: '文字表記の方向',
-		langDirNotSet	: '<なし>',
 		langDirLTR		: '左から右 (LTR)',
 		langDirRTL		: '右から左 (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -190,5 +226,5 @@
 		matchCyclic			: '大文字/小文字区別一致',
 		replaceAll			: 'すべて置換え',
-		replaceSuccessMsg	: '%1 に置換しました。'
+		replaceSuccessMsg	: '%1 個置換しました。'
 	},
 
@@ -203,17 +239,17 @@
 		columns		: '列',
 		border		: 'ボーダーサイズ',
-		align		: 'キャプションの整列',
-		alignNotSet	: '<なし>',
+		align		: 'テーブルの整列',
 		alignLeft	: '左',
 		alignCenter	: '中央',
 		alignRight	: '右',
-		width		: 'テーブル幅',
+		width		: '幅',
 		widthPx		: 'ピクセル',
 		widthPc		: 'パーセント',
-		height		: 'テーブル高さ',
+		widthUnit	: 'width unit', // MISSING
+		height		: '高さ',
 		cellSpace	: 'セル内余白',
 		cellPad		: 'セル内間隔',
-		caption		: 'ｷｬﾌﾟｼｮﾝ',
-		summary		: 'テーブル目的/構造',
+		caption		: 'キャプション',
+		summary		: 'テーブルの概要',
 		headers		: 'テーブルヘッダ(th)',
 		headersNone		: 'なし',
@@ -224,6 +260,6 @@
 		invalidCols		: '列は0より大きな数値で入力してください。',
 		invalidBorder	: 'ボーダーサイズは数値で入力してください。',
-		invalidWidth	: 'テーブル幅は数値で入力してください。',
-		invalidHeight	: 'テーブル高さは数値で入力してください。',
+		invalidWidth	: '幅は数値で入力してください。',
+		invalidHeight	: '高さは数値で入力してください。',
 		invalidCellSpacing	: 'セル内余白は数値で入力してください。',
 		invalidCellPadding	: 'セル内間隔は数値で入力してください。',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: '縦幅(行数)は数値で入力してください。',
 			invalidColSpan	: '横幅(列数)は数値で入力してください。',
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: '色の選択'
 		},
 
@@ -267,6 +303,6 @@
 		{
 			menu			: '行',
-			insertBefore	: '列の前に挿入',
-			insertAfter		: '列の後に挿入',
+			insertBefore	: '行の前に挿入',
+			insertAfter		: '行の後に挿入',
 			deleteRow		: '行削除'
 		},
@@ -308,11 +344,5 @@
 		action		: 'アクション',
 		method		: 'メソッド',
-		encoding	: 'エンコーディング',
-		target		: 'ターゲット',
-		targetNotSet	: '<なし>',
-		targetNew	: '新しいウィンドウ (_blank)',
-		targetTop	: '最上位ウィンドウ (_top)',
-		targetSelf	: '同じウィンドウ (_self)',
-		targetParent	: '親ウィンドウ (_parent)'
+		encoding	: 'エンコーディング'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: '画像ボタン プロパティ',
 		menu		: 'イメージ プロパティ',
-		infoTab	: 'イメージ 情報',
+		infoTab		: 'イメージ 情報',
 		btnUpload	: 'サーバーに送信',
-		url		: 'URL',
-		upload	: 'アップロード',
-		alt		: '代替テキスト',
+		upload		: 'アップロード',
+		alt			: '代替テキスト',
 		width		: '幅',
-		height	: '高さ',
+		height		: '高さ',
 		lockRatio	: 'ロック比率',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'サイズリセット',
-		border	: 'ボーダー',
-		hSpace	: '横間隔',
-		vSpace	: '縦間隔',
+		border		: 'ボーダー',
+		hSpace		: '横間隔',
+		vSpace		: '縦間隔',
 		align		: '行揃え',
 		alignLeft	: '左',
-		alignAbsBottom: '下部(絶対的)',
-		alignAbsMiddle: '中央(絶対的)',
-		alignBaseline	: 'ベースライン',
-		alignBottom	: '下',
-		alignMiddle	: '中央',
 		alignRight	: '右',
-		alignTextTop	: 'テキスト上部',
-		alignTop	: '上',
-		preview	: 'プレビュー',
 		alertUrl	: 'イメージのURLを入力してください。',
-		linkTab	: 'リンク',
+		linkTab		: 'リンク',
 		button2Img	: '選択したボタンを画像に置き換えますか？',
 		img2Button	: '選択した画像をボタンに置き換えますか？',
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'イメージのURLを入力してください。',
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Flash プロパティ',
 		propertiesTab	: 'プロパティ',
-		title		: 'Flash プロパティ',
-		chkPlay		: '再生',
-		chkLoop		: 'ループ再生',
-		chkMenu		: 'Flashメニュー可能',
-		chkFull		: 'フルスクリーン許可',
- 		scale		: '拡大縮小設定',
+		title			: 'Flash プロパティ',
+		chkPlay			: '再生',
+		chkLoop			: 'ループ再生',
+		chkMenu			: 'Flashメニュー可能',
+		chkFull			: 'フルスクリーン許可',
+ 		scale			: '拡大縮小設定',
 		scaleAll		: 'すべて表示',
 		scaleNoBorder	: '外が見えない様に拡大',
@@ -418,38 +445,38 @@
 		access			: 'スプリクトアクセス(AllowScriptAccess)',
 		accessAlways	: 'すべての場合に通信可能(Always)',
-		accessSameDomain	: '同一ドメインのみに通信可能(Same domain)',
-		accessNever	: 'すべての場合に通信不可能(Never)',
-		align		: '行揃え',
-		alignLeft	: '左',
-		alignAbsBottom: '下部(絶対的)',
-		alignAbsMiddle: '中央(絶対的)',
+		accessSameDomain: '同一ドメインのみに通信可能(Same domain)',
+		accessNever		: 'すべての場合に通信不可能(Never)',
+		align			: '行揃え',
+		alignLeft		: '左',
+		alignAbsBottom	: '下部(絶対的)',
+		alignAbsMiddle	: '中央(絶対的)',
 		alignBaseline	: 'ベースライン',
-		alignBottom	: '下',
-		alignMiddle	: '中央',
-		alignRight	: '右',
+		alignBottom		: '下',
+		alignMiddle		: '中央',
+		alignRight		: '右',
 		alignTextTop	: 'テキスト上部',
-		alignTop	: '上',
-		quality		: '画質',
-		qualityBest		 : '品質優先',
-		qualityHigh		 : '高',
-		qualityAutoHigh	 : '自動/高',
-		qualityMedium	 : '中',
-		qualityAutoLow	 : '自動/低',
-		qualityLow		 : '低',
-		windowModeWindow	 : '標準',
-		windowModeOpaque	 : '背景を不透明設定',
-		windowModeTransparent	 : '背景を透過設定',
-		windowMode	: 'ウィンドウモード',
-		flashvars	: 'フラッシュに渡す変数(FlashVars)',
-		bgcolor	: '背景色',
-		width	: '幅',
-		height	: '高さ',
-		hSpace	: '横間隔',
-		vSpace	: '縦間隔',
-		validateSrc : 'リンクURLを入力してください。',
-		validateWidth : '幅は数値で入力してください。',
-		validateHeight : '高さは数値で入力してください。',
-		validateHSpace : '横間隔は数値で入力してください。',
-		validateVSpace : '縦間隔は数値で入力してください。'
+		alignTop		: '上',
+		quality			: '画質',
+		qualityBest		: '品質優先',
+		qualityHigh		: '高',
+		qualityAutoHigh	: '自動/高',
+		qualityMedium	: '中',
+		qualityAutoLow	: '自動/低',
+		qualityLow		: '低',
+		windowModeWindow: '標準',
+		windowModeOpaque: '背景を不透明設定',
+		windowModeTransparent : '背景を透過設定',
+		windowMode		: 'ウィンドウモード',
+		flashvars		: 'フラッシュに渡す変数(FlashVars)',
+		bgcolor			: '背景色',
+		width			: '幅',
+		height			: '高さ',
+		hSpace			: '横間隔',
+		vSpace			: '縦間隔',
+		validateSrc		: 'リンクURLを入力してください。',
+		validateWidth	: '幅は数値で入力してください。',
+		validateHeight	: '高さは数値で入力してください。',
+		validateHSpace	: '横間隔は数値で入力してください。',
+		validateVSpace	: '縦間隔は数値で入力してください。'
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: '絵文字',
-		title	: '顔文字挿入'
+		title	: '顔文字挿入',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 エレメント'
 	},
 
-	numberedlist : '段落番号',
-	bulletedlist : '箇条書き',
-	indent : 'インデント',
-	outdent : 'インデント解除',
+	numberedlist	: '段落番号',
+	bulletedlist	: '箇条書き',
+	indent			: 'インデント',
+	outdent			: 'インデント解除',
 
 	justify :
 	{
-		left : '左揃え',
-		center : '中央揃え',
-		right : '右揃え',
-		block : '両端揃え'
+		left	: '左揃え',
+		center	: '中央揃え',
+		right	: '右揃え',
+		block	: '両端揃え'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: '貼り付け',
-		cutError	: 'ブラウザーのセキュリティ設定によりエディタの切り取り操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl+X)を使用してください。',
-		copyError	: 'ブラウザーのセキュリティ設定によりエディタのコピー操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl+C)を使用してください。',
-		pasteMsg	: 'キーボード(<STRONG>Ctrl+V</STRONG>)を使用して、次の入力エリア内で貼って、<STRONG>OK</STRONG>を押してください。',
-		securityMsg	: 'ブラウザのセキュリティ設定により、エディタはクリップボード・データに直接アクセスすることができません。このウィンドウは貼り付け操作を行う度に表示されます。'
+		cutError	: 'ブラウザーのセキュリティ設定によりエディタの切り取り操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+X)を使用してください。',
+		copyError	: 'ブラウザーのセキュリティ設定によりエディタのコピー操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+C)を使用してください。',
+		pasteMsg	: 'キーボード(<STRONG>Ctrl/Cmd+V</STRONG>)を使用して、次の入力エリア内で貼って、<STRONG>OK</STRONG>を押してください。',
+		securityMsg	: 'ブラウザのセキュリティ設定により、エディタはクリップボード・データに直接アクセスすることができません。このウィンドウは貼り付け操作を行う度に表示されます。',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'ワード文章から貼り付け',
-		title : 'ワード文章から貼り付け',
-		advice : 'キーボード(<STRONG>Ctrl+V</STRONG>)を使用して、次の入力エリア内で貼って、<STRONG>OK</STRONG>を押してください。',
-		ignoreFontFace : 'FontタグのFace属性を無視します。',
-		removeStyle : 'スタイル定義を削除します。'
+		confirmCleanup	: '貼り付けを行うテキストは、ワード文章からコピーされようとしています。貼り付ける前にクリーニングを行いますか？',
+		toolbar			: 'ワード文章から貼り付け',
+		title			: 'ワード文章から貼り付け',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'プレーンテキスト貼り付け',
-		title : 'プレーンテキスト貼り付け'
+		button	: 'プレーンテキスト貼り付け',
+		title	: 'プレーンテキスト貼り付け'
 	},
 
 	templates :
 	{
-		button : 'テンプレート(雛形)',
-		title : 'テンプレート内容',
-		insertOption: '現在のエディタの内容と置換えをします',
-		selectPromptMsg: 'エディターで使用するテンプレートを選択してください。<br>(現在のエディタの内容は失われます):',
-		emptyListMsg : '(テンプレートが定義されていません)'
+		button			: 'テンプレート(雛形)',
+		title			: 'テンプレート内容',
+		options : 'Template Options', // MISSING
+		insertOption	: '現在のエディタの内容と置換えをします',
+		selectPromptMsg	: 'エディターで使用するテンプレートを選択してください。<br>(現在のエディタの内容は失われます):',
+		emptyListMsg	: '(テンプレートが定義されていません)'
 	},
 
@@ -540,146 +570,178 @@
 	stylesCombo :
 	{
-		label : 'スタイル',
-		voiceLabel : 'スタイル',
-		panelVoiceLabel : 'スタイルを選択してください',
-		panelTitle1 : 'ブロックスタイル',
-		panelTitle2 : 'インラインスタイル',
-		panelTitle3 : 'オブジェクトスタイル'
+		label		: 'スタイル',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'ブロックスタイル',
+		panelTitle2	: 'インラインスタイル',
+		panelTitle3	: 'オブジェクトスタイル'
 	},
 
 	format :
 	{
-		label : 'フォーマット',
-		voiceLabel : 'フォーマット',
-		panelTitle : 'フォーマット',
-		panelVoiceLabel : 'パラグラフ形式を選択してください。',
-
-		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)'
-	},
+		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				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'フォント',
-		voiceLabel : 'フォント',
-		panelTitle : 'フォント',
-		panelVoiceLabel : 'フォントを選択してください'
+		label		: 'フォント',
+		voiceLabel	: 'フォント',
+		panelTitle	: 'フォント'
 	},
 
 	fontSize :
 	{
-		label : 'サイズ',
-		voiceLabel : 'フォントサイズ',
-		panelTitle : 'サイズ',
-		panelVoiceLabel : 'フォントサイズを選択してください'
+		label		: 'サイズ',
+		voiceLabel	: 'フォントサイズ',
+		panelTitle	: 'サイズ'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'テキスト色',
-		bgColorTitle : '背景色',
-		auto : '自動',
-		more : 'その他の色...'
+		textColorTitle	: 'テキスト色',
+		bgColorTitle	: '背景色',
+		panelTitle		: 'Colors', // MISSING
+		auto			: '自動',
+		more			: 'その他の色...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'スペルチェック設定(SCAYT)',
-		enable : 'SCAYT有効',
-		disable : 'SCAYT無効',
-		about : 'SCAYTﾊﾞｰｼﾞｮﾝ',
-		toggle : 'SCAYT切替',
-		options : 'オプション',
-		langs : '言語',
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : '無視',
-		ignoreAll : 'すべて無視',
-		addWord : '語句追加',
-		emptyDic : '辞書名は必ず入力してください',
-		optionsTab : 'オプション',
-		languagesTab : '言語',
-		dictionariesTab : '辞書',
-		aboutTab : 'バージョン情報'
+		title			: 'スペルチェック設定(SCAYT)',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'SCAYT有効',
+		disable			: 'SCAYT無効',
+		about			: 'SCAYTﾊﾞｰｼﾞｮﾝ',
+		toggle			: 'SCAYT切替',
+		options			: 'オプション',
+		langs			: '言語',
+		moreSuggestions	: '他の候補',
+		ignore			: '無視',
+		ignoreAll		: 'すべて無視',
+		addWord			: '語句追加',
+		emptyDic		: '辞書名は必ず入力してください',
+
+		optionsTab		: 'オプション',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: '言語',
+
+		dictionariesTab	: '辞書',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'バージョン情報'
 	},
 
 	about :
 	{
-		title : 'CKEditorバージョン情報',
-		dlgTitle : 'CKEditorバージョン情報',
-		moreInfo : 'ライセンス情報の詳細はウェブサイトにて確認してください:',
-		copy : 'Copyright &copy; $1. All rights reserved.'
+		title		: 'CKEditorバージョン情報',
+		dlgTitle	: 'CKEditorバージョン情報',
+		moreInfo	: 'ライセンス情報の詳細はウェブサイトにて確認してください:',
+		copy		: 'Copyright &copy; $1. All rights reserved.'
 	},
 
 	maximize : '最大化',
-	minimize : 'Minimize', // MISSING
+	minimize : '最小化',
 
 	fakeobjects :
 	{
-		anchor : 'アンカー',
-		flash : 'Flash Animation',
-		div : 'Page Break',
-		unknown : 'Unknown Object'
-	},
-
-	resize : 'ドラックしてリサイズ',
+		anchor	: 'アンカー',
+		flash	: 'Flash Animation',
+		div		: 'Page Break',
+		unknown	: 'Unknown Object'
+	},
+
+	resize : 'ドラッグしてリサイズ',
 
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: '色選択',
+		options	:	'Color Options', // MISSING
+		highlight	: 'ハイライト',
+		selected	: '選択された色',
+		clear		: 'クリア'
+	},
+
+	toolbarCollapse	: 'ツールバーを閉じる',
+	toolbarExpand	: 'ツールバーを開く'
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/km.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/km.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/km.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'បែបបទ',
 		checkbox		: 'ប្រអប់ជ្រើសរើស',
-		radio		: 'ប៉ូតុនរង្វង់មូល',
+		radio			: 'ប៉ូតុនរង្វង់មូល',
 		textField		: 'ជួរសរសេរអត្ថបទ',
 		textarea		: 'តំបន់សរសេរអត្ថបទ',
 		hiddenField		: 'ជួរលាក់',
 		button			: 'ប៉ូតុន',
-		select	: 'ជួរជ្រើសរើស',
+		select			: 'ជួរជ្រើសរើស',
 		imageButton		: 'ប៉ូតុនរូបភាព',
 		notSet			: '<មិនមែន>',
@@ -89,9 +93,17 @@
 		ok				: 'យល់ព្រម',
 		cancel			: 'មិនយល់ព្រម',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'កំរិតខ្ពស់',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'បន្ថែមអក្សរពិសេស',
-		title		: 'តូអក្សរពិសេស'
+		title		: 'តូអក្សរពិសេស',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'បន្ថែម/កែប្រែ ឈ្នាប់',
+		other 		: '<other>', // MISSING
 		menu		: 'កែប្រែឈ្នាប់',
 		title		: 'ឈ្នាប់',
@@ -117,14 +136,9 @@
 		advanced	: 'កំរិតខ្ពស់',
 		type		: 'ប្រភេទឈ្នាប់',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'យុថ្កានៅក្នុងទំព័រនេះ',
 		toEmail		: 'អ៊ីមែល',
-		target		: 'គោលដៅ',
-		targetNotSet	: '<មិនមែន>',
-		targetFrame	: '<ហ្វ្រេម>',
-		targetPopup	: '<វីនដូវ លោត>',
-		targetNew	: 'វីនដូវថ្មី (_blank)',
-		targetTop	: 'វីនដូវនៅលើគេ(_top)',
-		targetSelf	: 'វីនដូវដដែល (_self)',
-		targetParent	: 'វីនដូវមេ (_parent)',
+		targetFrame		: '<ហ្វ្រេម>',
+		targetPopup		: '<វីនដូវ លោត>',
 		targetFrameName	: 'ឈ្មោះហ្រ្វេមដែលជាគោលដៅ',
 		targetPopupName	: 'ឈ្មោះវីនដូវលោត',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'របា ពត៌មាន',
-		popupLocationBar	: 'របា ទីតាំង',
+		popupLocationBar: 'របា ទីតាំង',
 		popupToolbar	: 'របា ឩបករណ៍',
 		popupMenuBar	: 'របា មឺនុយ',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'ទិសដៅភាសា',
-		langDirNotSet	: '<មិនមែន>',
 		langDirLTR		: 'ពីឆ្វេងទៅស្តាំ(LTR)',
 		langDirRTL		: 'ពីស្តាំទៅឆ្វេង(RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'ទំហំស៊ុម',
 		align		: 'ការកំណត់ទីតាំង',
-		alignNotSet	: '<មិនកំណត់>',
 		alignLeft	: 'ខាងឆ្វេង',
 		alignCenter	: 'កណ្តាល',
@@ -211,4 +246,5 @@
 		widthPx		: 'ភីកសែល',
 		widthPc		: 'ភាគរយ',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'កំពស់',
 		cellSpace	: 'គំលាតសែល',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'សកម្មភាព',
 		method		: 'វិធី',
-		encoding	: 'Encoding', // MISSING
-		target		: 'គោលដៅ',
-		targetNotSet	: '<មិនមែន>',
-		targetNew	: 'វីនដូវថ្មី (_blank)',
-		targetTop	: 'វីនដូវនៅលើគេ(_top)',
-		targetSelf	: 'វីនដូវដដែល (_self)',
-		targetParent	: 'វីនដូវមេ (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'ការកំណត់ប៉ូតុនរូបភាព',
 		menu		: 'ការកំណត់រូបភាព',
-		infoTab	: 'ពត៌មានអំពីរូបភាព',
+		infoTab		: 'ពត៌មានអំពីរូបភាព',
 		btnUpload	: 'បញ្ជូនទៅកាន់ម៉ាស៊ីនផ្តល់សេវា',
-		url		: 'URL',
-		upload	: 'ទាញយក',
-		alt		: 'អត្ថបទជំនួស',
+		upload		: 'ទាញយក',
+		alt			: 'អត្ថបទជំនួស',
 		width		: 'ទទឹង',
-		height	: 'កំពស់',
+		height		: 'កំពស់',
 		lockRatio	: 'អត្រាឡុក',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'កំណត់ទំហំឡើងវិញ',
-		border	: 'ស៊ុម',
-		hSpace	: 'គំលាតទទឹង',
-		vSpace	: 'គំលាតបណ្តោយ',
+		border		: 'ស៊ុម',
+		hSpace		: 'គំលាតទទឹង',
+		vSpace		: 'គំលាតបណ្តោយ',
 		align		: 'កំណត់ទីតាំង',
 		alignLeft	: 'ខាងឆ្វង',
-		alignAbsBottom: 'Abs Bottom', // MISSING
-		alignAbsMiddle: 'Abs Middle', // MISSING
-		alignBaseline	: 'បន្ទាត់ជាមូលដ្ឋាន',
-		alignBottom	: 'ខាងក្រោម',
-		alignMiddle	: 'កណ្តាល',
 		alignRight	: 'ខាងស្តាំ',
-		alignTextTop	: 'លើអត្ថបទ',
-		alignTop	: 'ខាងលើ',
-		preview	: 'មើលសាកល្បង',
 		alertUrl	: 'សូមសរសេរងាស័យដ្ឋានរបស់រូបភាព',
-		linkTab	: 'ឈ្នាប់',
+		linkTab		: 'ឈ្នាប់',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'ការកំណត់ Flash',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'ការកំណត់ Flash',
-		chkPlay		: 'លេងដោយស្វ័យប្រវត្ត',
-		chkLoop		: 'ចំនួនដង',
-		chkMenu		: 'បង្ហាញ មឺនុយរបស់ Flash',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'ទំហំ',
+		title			: 'ការកំណត់ Flash',
+		chkPlay			: 'លេងដោយស្វ័យប្រវត្ត',
+		chkLoop			: 'ចំនួនដង',
+		chkMenu			: 'បង្ហាញ មឺនុយរបស់ Flash',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'ទំហំ',
 		scaleAll		: 'បង្ហាញទាំងអស់',
 		scaleNoBorder	: 'មិនបង្ហាញស៊ុម',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'កំណត់ទីតាំង',
-		alignLeft	: 'ខាងឆ្វង',
-		alignAbsBottom: 'Abs Bottom', // MISSING
-		alignAbsMiddle: 'Abs Middle', // MISSING
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'កំណត់ទីតាំង',
+		alignLeft		: 'ខាងឆ្វង',
+		alignAbsBottom	: 'Abs Bottom', // MISSING
+		alignAbsMiddle	: 'Abs Middle', // MISSING
 		alignBaseline	: 'បន្ទាត់ជាមូលដ្ឋាន',
-		alignBottom	: 'ខាងក្រោម',
-		alignMiddle	: 'កណ្តាល',
-		alignRight	: 'ខាងស្តាំ',
+		alignBottom		: 'ខាងក្រោម',
+		alignMiddle		: 'កណ្តាល',
+		alignRight		: 'ខាងស្តាំ',
 		alignTextTop	: 'លើអត្ថបទ',
-		alignTop	: 'ខាងលើ',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'ពណ៌ផ្ទៃខាងក្រោយ',
-		width	: 'ទទឹង',
-		height	: 'កំពស់',
-		hSpace	: 'គំលាតទទឹង',
-		vSpace	: 'គំលាតបណ្តោយ',
-		validateSrc : 'សូមសរសេរ អាស័យដ្ឋាន URL',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'ខាងលើ',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'ពណ៌ផ្ទៃខាងក្រោយ',
+		width			: 'ទទឹង',
+		height			: 'កំពស់',
+		hSpace			: 'គំលាតទទឹង',
+		vSpace			: 'គំលាតបណ្តោយ',
+		validateSrc		: 'សូមសរសេរ អាស័យដ្ឋាន URL',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'រូបភាព',
-		title	: 'បញ្ជូលរូបភាព'
+		title	: 'បញ្ជូលរូបភាព',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'បញ្ជីជាអក្សរ',
-	bulletedlist : 'បញ្ជីជារង្វង់មូល',
-	indent : 'បន្ថែមការចូលបន្ទាត់',
-	outdent : 'បន្ថយការចូលបន្ទាត់',
+	numberedlist	: 'បញ្ជីជាអក្សរ',
+	bulletedlist	: 'បញ្ជីជារង្វង់មូល',
+	indent			: 'បន្ថែមការចូលបន្ទាត់',
+	outdent			: 'បន្ថយការចូលបន្ទាត់',
 
 	justify :
 	{
-		left : 'តំរឹមឆ្វេង',
-		center : 'តំរឹមកណ្តាល',
-		right : 'តំរឹមស្តាំ',
-		block : 'តំរឹមសងខាង'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: 'តំរឹមឆ្វេង',
+		center	: 'តំរឹមកណ្តាល',
+		right	: 'តំរឹមស្តាំ',
+		block	: 'តំរឹមសងខាង'
+	},
+
+	blockquote : 'Block Quote', // MISSING
 
 	clipboard :
 	{
 		title		: 'ចំលងដាក់',
-		cutError	: 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ\u200bមិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ កាត់អត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ  (Ctrl+X) ។',
-		copyError	: 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ\u200bមិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ ចំលងអត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl+C)។',
-		pasteMsg	: 'សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី \u200b(<STRONG>Ctrl+V</STRONG>) ហើយចុច <STRONG>OK</STRONG> ។',
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+		cutError	: 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ\u200bមិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ កាត់អត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ  (Ctrl/Cmd+X) ។',
+		copyError	: 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ\u200bមិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ ចំលងអត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+C)។',
+		pasteMsg	: 'សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី \u200b(<STRONG>Ctrl/Cmd+V</STRONG>) ហើយចុច <STRONG>OK</STRONG> ។',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'ចំលងដាក់ពី Word',
-		title : 'ចំលងដាក់ពី Word',
-		advice : 'សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី \u200b(<STRONG>Ctrl+V</STRONG>) ហើយចុច <STRONG>OK</STRONG> ។',
-		ignoreFontFace : 'មិនគិតអំពីប្រភេទពុម្ភអក្សរ',
-		removeStyle : 'លប់ម៉ូត'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'ចំលងដាក់ពី Word',
+		title			: 'ចំលងដាក់ពី Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'ចំលងដាក់អត្ថបទធម្មតា',
-		title : 'ចំលងដាក់អត្ថបទធម្មតា'
+		button	: 'ចំលងដាក់អត្ថបទធម្មតា',
+		title	: 'ចំលងដាក់អត្ថបទធម្មតា'
 	},
 
 	templates :
 	{
-		button : 'ឯកសារគំរូ',
-		title : 'ឯកសារគំរូ របស់អត្ថន័យ',
-		insertOption: 'Replace actual contents', // MISSING
-		selectPromptMsg: 'សូមជ្រើសរើសឯកសារគំរូ ដើម្បីបើកនៅក្នុងកម្មវិធីតាក់តែងអត្ថបទ<br>(អត្ថបទនឹងបាត់បង់):',
-		emptyListMsg : '(ពុំមានឯកសារគំរូត្រូវបានកំណត់)'
+		button			: 'ឯកសារគំរូ',
+		title			: 'ឯកសារគំរូ របស់អត្ថន័យ',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Replace actual contents', // MISSING
+		selectPromptMsg	: 'សូមជ្រើសរើសឯកសារគំរូ ដើម្បីបើកនៅក្នុងកម្មវិធីតាក់តែងអត្ថបទ<br>(អត្ថបទនឹងបាត់បង់):',
+		emptyListMsg	: '(ពុំមានឯកសារគំរូត្រូវបានកំណត់)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'ម៉ូត',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'ម៉ូត',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'រចនា',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'រចនា',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatted',
-		tag_address : 'Address',
-		tag_h1 : 'Heading 1',
-		tag_h2 : 'Heading 2',
-		tag_h3 : 'Heading 3',
-		tag_h4 : 'Heading 4',
-		tag_h5 : 'Heading 5',
-		tag_h6 : 'Heading 6',
-		tag_div : 'Normal (DIV)'
-	},
+		label		: 'រចនា',
+		panelTitle	: 'រចនា',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatted',
+		tag_address	: 'Address',
+		tag_h1		: 'Heading 1',
+		tag_h2		: 'Heading 2',
+		tag_h3		: 'Heading 3',
+		tag_h4		: 'Heading 4',
+		tag_h5		: 'Heading 5',
+		tag_h6		: 'Heading 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'ហ្វុង',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'ហ្វុង',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'ហ្វុង',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'ហ្វុង'
 	},
 
 	fontSize :
 	{
-		label : 'ទំហំ',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'ទំហំ',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'ទំហំ',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'ទំហំ'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'ពណ៌អក្សរ',
-		bgColorTitle : 'ពណ៌ផ្ទៃខាងក្រោយ',
-		auto : 'ស្វ័យប្រវត្ត',
-		more : 'ពណ៌ផ្សេងទៀត..'
+		textColorTitle	: 'ពណ៌អក្សរ',
+		bgColorTitle	: 'ពណ៌ផ្ទៃខាងក្រោយ',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'ស្វ័យប្រវត្ត',
+		more			: 'ពណ៌ផ្សេងទៀត..'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/ko.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/ko.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/ko.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: '폼',
 		checkbox		: '체크박스',
-		radio		: '라디오버튼',
+		radio			: '라디오버튼',
 		textField		: '입력필드',
 		textarea		: '입력영역',
 		hiddenField		: '숨김필드',
 		button			: '버튼',
-		select	: '펼침목록',
+		select			: '펼침목록',
 		imageButton		: '이미지버튼',
 		notSet			: '<설정되지 않음>',
@@ -89,9 +93,17 @@
 		ok				: '예',
 		cancel			: '아니오',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: '자세히',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: '특수문자 삽입',
-		title		: '특수문자 선택'
+		title		: '특수문자 선택',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: '링크 삽입/변경',
+		other 		: '<기타>',
 		menu		: '링크 수정',
 		title		: '링크',
@@ -117,14 +136,9 @@
 		advanced	: '자세히',
 		type		: '링크 종류',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: '책갈피',
 		toEmail		: '이메일',
-		target		: '타겟',
-		targetNotSet	: '<설정되지 않음>',
-		targetFrame	: '<프레임>',
-		targetPopup	: '<팝업창>',
-		targetNew	: '새 창 (_blank)',
-		targetTop	: '최 상위 창 (_top)',
-		targetSelf	: '현재 창 (_self)',
-		targetParent	: '부모 창 (_parent)',
+		targetFrame		: '<프레임>',
+		targetPopup		: '<팝업창>',
 		targetFrameName	: '타겟 프레임 이름',
 		targetPopupName	: '팝업창 이름',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: '상태바',
-		popupLocationBar	: '주소표시줄',
+		popupLocationBar: '주소표시줄',
 		popupToolbar	: '툴바',
 		popupMenuBar	: '메뉴바',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: '쓰기 방향',
-		langDirNotSet	: '<설정되지 않음>',
 		langDirLTR		: '왼쪽에서 오른쪽 (LTR)',
 		langDirRTL		: '오른쪽에서 왼쪽 (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: '테두리 크기',
 		align		: '정렬',
-		alignNotSet	: '<설정되지 않음>',
 		alignLeft	: '왼쪽',
 		alignCenter	: '가운데',
@@ -211,4 +246,5 @@
 		widthPx		: '픽셀',
 		widthPc		: '퍼센트',
+		widthUnit	: 'width unit', // MISSING
 		height		: '높이',
 		cellSpace	: '셀 간격',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: '실행경로(Action)',
 		method		: '방법(Method)',
-		encoding	: 'Encoding', // MISSING
-		target		: '타겟',
-		targetNotSet	: '<설정되지 않음>',
-		targetNew	: '새 창 (_blank)',
-		targetTop	: '최 상위 창 (_top)',
-		targetSelf	: '현재 창 (_self)',
-		targetParent	: '부모 창 (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: '이미지버튼 속성',
 		menu		: '이미지 설정',
-		infoTab	: '이미지 정보',
+		infoTab		: '이미지 정보',
 		btnUpload	: '서버로 전송',
-		url		: 'URL',
-		upload	: '업로드',
-		alt		: '이미지 설명',
+		upload		: '업로드',
+		alt			: '이미지 설명',
 		width		: '너비',
-		height	: '높이',
+		height		: '높이',
 		lockRatio	: '비율 유지',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: '원래 크기로',
-		border	: '테두리',
-		hSpace	: '수평여백',
-		vSpace	: '수직여백',
+		border		: '테두리',
+		hSpace		: '수평여백',
+		vSpace		: '수직여백',
 		align		: '정렬',
 		alignLeft	: '왼쪽',
-		alignAbsBottom: '줄아래(Abs Bottom)',
-		alignAbsMiddle: '줄중간(Abs Middle)',
-		alignBaseline	: '기준선',
-		alignBottom	: '아래',
-		alignMiddle	: '중간',
 		alignRight	: '오른쪽',
-		alignTextTop	: '글자상단',
-		alignTop	: '위',
-		preview	: '미리보기',
 		alertUrl	: '이미지 URL을 입력하십시요',
-		linkTab	: '링크',
+		linkTab		: '링크',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: '플래쉬 속성',
 		propertiesTab	: 'Properties', // MISSING
-		title		: '플래쉬 등록정보',
-		chkPlay		: '자동재생',
-		chkLoop		: '반복',
-		chkMenu		: '플래쉬메뉴 가능',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: '영역',
+		title			: '플래쉬 등록정보',
+		chkPlay			: '자동재생',
+		chkLoop			: '반복',
+		chkMenu			: '플래쉬메뉴 가능',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: '영역',
 		scaleAll		: '모두보기',
 		scaleNoBorder	: '경계선없음',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: '정렬',
-		alignLeft	: '왼쪽',
-		alignAbsBottom: '줄아래(Abs Bottom)',
-		alignAbsMiddle: '줄중간(Abs Middle)',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: '정렬',
+		alignLeft		: '왼쪽',
+		alignAbsBottom	: '줄아래(Abs Bottom)',
+		alignAbsMiddle	: '줄중간(Abs Middle)',
 		alignBaseline	: '기준선',
-		alignBottom	: '아래',
-		alignMiddle	: '중간',
-		alignRight	: '오른쪽',
+		alignBottom		: '아래',
+		alignMiddle		: '중간',
+		alignRight		: '오른쪽',
 		alignTextTop	: '글자상단',
-		alignTop	: '위',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: '배경 색상',
-		width	: '너비',
-		height	: '높이',
-		hSpace	: '수평여백',
-		vSpace	: '수직여백',
-		validateSrc : '링크 URL을 입력하십시요.',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: '위',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: '배경 색상',
+		width			: '너비',
+		height			: '높이',
+		hSpace			: '수평여백',
+		vSpace			: '수직여백',
+		validateSrc		: '링크 URL을 입력하십시요.',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: '아이콘',
-		title	: '아이콘 삽입'
+		title	: '아이콘 삽입',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : '순서있는 목록',
-	bulletedlist : '순서없는 목록',
-	indent : '들여쓰기',
-	outdent : '내어쓰기',
+	numberedlist	: '순서있는 목록',
+	bulletedlist	: '순서없는 목록',
+	indent			: '들여쓰기',
+	outdent			: '내어쓰기',
 
 	justify :
 	{
-		left : '왼쪽 정렬',
-		center : '가운데 정렬',
-		right : '오른쪽 정렬',
-		block : '양쪽 맞춤'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: '왼쪽 정렬',
+		center	: '가운데 정렬',
+		right	: '오른쪽 정렬',
+		block	: '양쪽 맞춤'
+	},
+
+	blockquote : 'Block Quote', // MISSING
 
 	clipboard :
 	{
 		title		: '붙여넣기',
-		cutError	: '브라우저의 보안설정때문에 잘라내기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl+X).',
-		copyError	: '브라우저의 보안설정때문에 복사하기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요.  (Ctrl+C).',
-		pasteMsg	: '키보드의 (<STRONG>Ctrl+V</STRONG>) 를 이용해서 상자안에 붙여넣고 <STRONG>OK</STRONG> 를 누르세요.',
-		securityMsg	: '브러우저 보안 설정으로 인해, 클립보드의 자료를 직접 접근할 수 없습니다. 이 창에 다시 붙여넣기 하십시오.'
+		cutError	: '브라우저의 보안설정때문에 잘라내기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl/Cmd+X).',
+		copyError	: '브라우저의 보안설정때문에 복사하기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요.  (Ctrl/Cmd+C).',
+		pasteMsg	: '키보드의 (<STRONG>Ctrl/Cmd+V</STRONG>) 를 이용해서 상자안에 붙여넣고 <STRONG>OK</STRONG> 를 누르세요.',
+		securityMsg	: '브러우저 보안 설정으로 인해, 클립보드의 자료를 직접 접근할 수 없습니다. 이 창에 다시 붙여넣기 하십시오.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'MS Word 형식에서 붙여넣기',
-		title : 'MS Word 형식에서 붙여넣기',
-		advice : '키보드의 (<STRONG>Ctrl+V</STRONG>) 를 이용해서 상자안에 붙여넣고 <STRONG>OK</STRONG> 를 누르세요.',
-		ignoreFontFace : '폰트 설정 무시',
-		removeStyle : '스타일 정의 제거'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'MS Word 형식에서 붙여넣기',
+		title			: 'MS Word 형식에서 붙여넣기',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : '텍스트로 붙여넣기',
-		title : '텍스트로 붙여넣기'
+		button	: '텍스트로 붙여넣기',
+		title	: '텍스트로 붙여넣기'
 	},
 
 	templates :
 	{
-		button : '템플릿',
-		title : '내용 템플릿',
-		insertOption: '현재 내용 바꾸기',
-		selectPromptMsg: '에디터에서 사용할 템플릿을 선택하십시요.<br>(지금까지 작성된 내용은 사라집니다.):',
-		emptyListMsg : '(템플릿이 없습니다.)'
+		button			: '템플릿',
+		title			: '내용 템플릿',
+		options : 'Template Options', // MISSING
+		insertOption	: '현재 내용 바꾸기',
+		selectPromptMsg	: '에디터에서 사용할 템플릿을 선택하십시요.<br>(지금까지 작성된 내용은 사라집니다.):',
+		emptyListMsg	: '(템플릿이 없습니다.)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : '스타일',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: '스타일',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : '포맷',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : '포맷',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatted',
-		tag_address : 'Address',
-		tag_h1 : 'Heading 1',
-		tag_h2 : 'Heading 2',
-		tag_h3 : 'Heading 3',
-		tag_h4 : 'Heading 4',
-		tag_h5 : 'Heading 5',
-		tag_h6 : 'Heading 6',
-		tag_div : 'Normal (DIV)' // MISSING
-	},
+		label		: '포맷',
+		panelTitle	: '포맷',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatted',
+		tag_address	: 'Address',
+		tag_h1		: 'Heading 1',
+		tag_h2		: 'Heading 2',
+		tag_h3		: 'Heading 3',
+		tag_h4		: 'Heading 4',
+		tag_h5		: 'Heading 5',
+		tag_h6		: 'Heading 6',
+		tag_div		: 'Normal (DIV)' // MISSING
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : '폰트',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : '폰트',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: '폰트',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: '폰트'
 	},
 
 	fontSize :
 	{
-		label : '글자 크기',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : '글자 크기',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: '글자 크기',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: '글자 크기'
 	},
 
 	colorButton :
 	{
-		textColorTitle : '글자 색상',
-		bgColorTitle : '배경 색상',
-		auto : '기본색상',
-		more : '색상선택...'
+		textColorTitle	: '글자 색상',
+		bgColorTitle	: '배경 색상',
+		panelTitle		: 'Colors', // MISSING
+		auto			: '기본색상',
+		more			: '색상선택...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/lt.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/lt.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/lt.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Forma',
 		checkbox		: 'Žymimasis langelis',
-		radio		: 'Žymimoji akutė',
+		radio			: 'Žymimoji akutė',
 		textField		: 'Teksto laukas',
 		textarea		: 'Teksto sritis',
 		hiddenField		: 'Nerodomas laukas',
 		button			: 'Mygtukas',
-		select	: 'Atrankos laukas',
+		select			: 'Atrankos laukas',
 		imageButton		: 'Vaizdinis mygtukas',
 		notSet			: '<nėra nustatyta>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Nutraukti',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'Bendros savybės',
 		advancedTab		: 'Papildomas',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Įterpti specialų simbolį',
-		title		: 'Pasirinkite specialų simbolį'
+		title		: 'Pasirinkite specialų simbolį',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Įterpti/taisyti nuorodą',
+		other 		: '<kitas>',
 		menu		: 'Taisyti nuorodą',
 		title		: 'Nuoroda',
@@ -117,14 +136,9 @@
 		advanced	: 'Papildomas',
 		type		: 'Nuorodos tipas',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Žymė šiame puslapyje',
 		toEmail		: 'El.paštas',
-		target		: 'Paskirties vieta',
-		targetNotSet	: '<nėra nustatyta>',
-		targetFrame	: '<kadras>',
-		targetPopup	: '<išskleidžiamas langas>',
-		targetNew	: 'Naujas langas (_blank)',
-		targetTop	: 'Svarbiausias langas (_top)',
-		targetSelf	: 'Tas pats langas (_self)',
-		targetParent	: 'Pirminis langas (_parent)',
+		targetFrame		: '<kadras>',
+		targetPopup		: '<išskleidžiamas langas>',
 		targetFrameName	: 'Paskirties kadro vardas',
 		targetPopupName	: 'Paskirties lango vardas',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Būsenos juosta',
-		popupLocationBar	: 'Adreso juosta',
+		popupLocationBar: 'Adreso juosta',
 		popupToolbar	: 'Mygtukų juosta',
 		popupMenuBar	: 'Meniu juosta',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Teksto kryptis',
-		langDirNotSet	: '<nėra nustatyta>',
 		langDirLTR		: 'Iš kairės į dešinę (LTR)',
 		langDirRTL		: 'Iš dešinės į kairę (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Rėmelio dydis',
 		align		: 'Lygiuoti',
-		alignNotSet	: '<Nenustatyta>',
 		alignLeft	: 'Kairę',
 		alignCenter	: 'Centrą',
@@ -211,4 +246,5 @@
 		widthPx		: 'taškais',
 		widthPc		: 'procentais',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Aukštis',
 		cellSpace	: 'Tarpas tarp langelių',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Veiksmas',
 		method		: 'Metodas',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Paskirties vieta',
-		targetNotSet	: '<nėra nustatyta>',
-		targetNew	: 'Naujas langas (_blank)',
-		targetTop	: 'Svarbiausias langas (_top)',
-		targetSelf	: 'Tas pats langas (_self)',
-		targetParent	: 'Pirminis langas (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Vaizdinio mygtuko savybės',
 		menu		: 'Vaizdo savybės',
-		infoTab	: 'Vaizdo informacija',
+		infoTab		: 'Vaizdo informacija',
 		btnUpload	: 'Siųsti į serverį',
-		url		: 'URL',
-		upload	: 'Nusiųsti',
-		alt		: 'Alternatyvus Tekstas',
+		upload		: 'Nusiųsti',
+		alt			: 'Alternatyvus Tekstas',
 		width		: 'Plotis',
-		height	: 'Aukštis',
+		height		: 'Aukštis',
 		lockRatio	: 'Išlaikyti proporciją',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Atstatyti dydį',
-		border	: 'Rėmelis',
-		hSpace	: 'Hor.Erdvė',
-		vSpace	: 'Vert.Erdvė',
+		border		: 'Rėmelis',
+		hSpace		: 'Hor.Erdvė',
+		vSpace		: 'Vert.Erdvė',
 		align		: 'Lygiuoti',
 		alignLeft	: 'Kairę',
-		alignAbsBottom: 'Absoliučią apačią',
-		alignAbsMiddle: 'Absoliutų vidurį',
-		alignBaseline	: 'Apatinę liniją',
-		alignBottom	: 'Apačią',
-		alignMiddle	: 'Vidurį',
 		alignRight	: 'Dešinę',
-		alignTextTop	: 'Teksto viršūnę',
-		alignTop	: 'Viršūnę',
-		preview	: 'Peržiūra',
 		alertUrl	: 'Prašome įvesti vaizdo URL',
-		linkTab	: 'Nuoroda',
+		linkTab		: 'Nuoroda',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Flash savybės',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Flash savybės',
-		chkPlay		: 'Automatinis paleidimas',
-		chkLoop		: 'Ciklas',
-		chkMenu		: 'Leisti Flash meniu',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Mastelis',
+		title			: 'Flash savybės',
+		chkPlay			: 'Automatinis paleidimas',
+		chkLoop			: 'Ciklas',
+		chkMenu			: 'Leisti Flash meniu',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Mastelis',
 		scaleAll		: 'Rodyti visą',
 		scaleNoBorder	: 'Be rėmelio',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Lygiuoti',
-		alignLeft	: 'Kairę',
-		alignAbsBottom: 'Absoliučią apačią',
-		alignAbsMiddle: 'Absoliutų vidurį',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Lygiuoti',
+		alignLeft		: 'Kairę',
+		alignAbsBottom	: 'Absoliučią apačią',
+		alignAbsMiddle	: 'Absoliutų vidurį',
 		alignBaseline	: 'Apatinę liniją',
-		alignBottom	: 'Apačią',
-		alignMiddle	: 'Vidurį',
-		alignRight	: 'Dešinę',
+		alignBottom		: 'Apačią',
+		alignMiddle		: 'Vidurį',
+		alignRight		: 'Dešinę',
 		alignTextTop	: 'Teksto viršūnę',
-		alignTop	: 'Viršūnę',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Fono spalva',
-		width	: 'Plotis',
-		height	: 'Aukštis',
-		hSpace	: 'Hor.Erdvė',
-		vSpace	: 'Vert.Erdvė',
-		validateSrc : 'Prašome įvesti nuorodos URL',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Viršūnę',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Fono spalva',
+		width			: 'Plotis',
+		height			: 'Aukštis',
+		hSpace			: 'Hor.Erdvė',
+		vSpace			: 'Vert.Erdvė',
+		validateSrc		: 'Prašome įvesti nuorodos URL',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Veideliai',
-		title	: 'Įterpti veidelį'
+		title	: 'Įterpti veidelį',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Numeruotas sąrašas',
-	bulletedlist : 'Suženklintas sąrašas',
-	indent : 'Padidinti įtrauką',
-	outdent : 'Sumažinti įtrauką',
+	numberedlist	: 'Numeruotas sąrašas',
+	bulletedlist	: 'Suženklintas sąrašas',
+	indent			: 'Padidinti įtrauką',
+	outdent			: 'Sumažinti įtrauką',
 
 	justify :
 	{
-		left : 'Lygiuoti kairę',
-		center : 'Centruoti',
-		right : 'Lygiuoti dešinę',
-		block : 'Lygiuoti abi puses'
+		left	: 'Lygiuoti kairę',
+		center	: 'Centruoti',
+		right	: 'Lygiuoti dešinę',
+		block	: 'Lygiuoti abi puses'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Įdėti',
-		cutError	: 'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti iškirpimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl+X).',
-		copyError	: 'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti kopijavimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl+C).',
-		pasteMsg	: 'Žemiau esančiame įvedimo lauke įdėkite tekstą, naudodami klaviatūrą (<STRONG>Ctrl+V</STRONG>) ir paspauskite mygtuką <STRONG>OK</STRONG>.',
-		securityMsg	: 'Dėl jūsų naršyklės saugumo nustatymų, redaktorius negali tiesiogiai pasiekti laikinosios atminties. Jums reikia nukopijuoti dar kartą į šį langą.'
+		cutError	: 'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti iškirpimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl/Cmd+X).',
+		copyError	: 'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti kopijavimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl/Cmd+C).',
+		pasteMsg	: 'Žemiau esančiame įvedimo lauke įdėkite tekstą, naudodami klaviatūrą (<STRONG>Ctrl/Cmd+V</STRONG>) ir paspauskite mygtuką <STRONG>OK</STRONG>.',
+		securityMsg	: 'Dėl jūsų naršyklės saugumo nustatymų, redaktorius negali tiesiogiai pasiekti laikinosios atminties. Jums reikia nukopijuoti dar kartą į šį langą.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Įdėti iš Word',
-		title : 'Įdėti iš Word',
-		advice : 'Žemiau esančiame įvedimo lauke įdėkite tekstą, naudodami klaviatūrą (<STRONG>Ctrl+V</STRONG>) ir paspauskite mygtuką <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignoruoti šriftų nustatymus',
-		removeStyle : 'Pašalinti stilių nustatymus'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Įdėti iš Word',
+		title			: 'Įdėti iš Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Įdėti kaip gryną tekstą',
-		title : 'Įdėti kaip gryną tekstą'
+		button	: 'Įdėti kaip gryną tekstą',
+		title	: 'Įdėti kaip gryną tekstą'
 	},
 
 	templates :
 	{
-		button : 'Šablonai',
-		title : 'Turinio šablonai',
-		insertOption: 'Pakeisti dabartinį turinį pasirinktu šablonu',
-		selectPromptMsg: 'Pasirinkite norimą šabloną<br>(<b>Dėmesio!</b> esamas turinys bus prarastas):',
-		emptyListMsg : '(Šablonų sąrašas tuščias)'
+		button			: 'Šablonai',
+		title			: 'Turinio šablonai',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Pakeisti dabartinį turinį pasirinktu šablonu',
+		selectPromptMsg	: 'Pasirinkite norimą šabloną<br>(<b>Dėmesio!</b> esamas turinys bus prarastas):',
+		emptyListMsg	: '(Šablonų sąrašas tuščias)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Stilius',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Stilius',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Šrifto formatas',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Šrifto formatas',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normalus',
-		tag_pre : 'Formuotas',
-		tag_address : 'Kreipinio',
-		tag_h1 : 'Antraštinis 1',
-		tag_h2 : 'Antraštinis 2',
-		tag_h3 : 'Antraštinis 3',
-		tag_h4 : 'Antraštinis 4',
-		tag_h5 : 'Antraštinis 5',
-		tag_h6 : 'Antraštinis 6',
-		tag_div : 'Normal (DIV)' // MISSING
-	},
+		label		: 'Šrifto formatas',
+		panelTitle	: 'Šrifto formatas',
+
+		tag_p		: 'Normalus',
+		tag_pre		: 'Formuotas',
+		tag_address	: 'Kreipinio',
+		tag_h1		: 'Antraštinis 1',
+		tag_h2		: 'Antraštinis 2',
+		tag_h3		: 'Antraštinis 3',
+		tag_h4		: 'Antraštinis 4',
+		tag_h5		: 'Antraštinis 5',
+		tag_h6		: 'Antraštinis 6',
+		tag_div		: 'Normal (DIV)' // MISSING
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Šriftas',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Šriftas',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Šriftas',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Šriftas'
 	},
 
 	fontSize :
 	{
-		label : 'Šrifto dydis',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Šrifto dydis',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Šrifto dydis',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Šrifto dydis'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Teksto spalva',
-		bgColorTitle : 'Fono spalva',
-		auto : 'Automatinis',
-		more : 'Daugiau spalvų...'
+		textColorTitle	: 'Teksto spalva',
+		bgColorTitle	: 'Fono spalva',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatinis',
+		more			: 'Daugiau spalvų...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/lv.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/lv.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/lv.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Forma',
 		checkbox		: 'Atzīmēšanas kastīte',
-		radio		: 'Izvēles poga',
+		radio			: 'Izvēles poga',
 		textField		: 'Teksta rinda',
 		textarea		: 'Teksta laukums',
 		hiddenField		: 'Paslēpta teksta rinda',
 		button			: 'Poga',
-		select	: 'Iezīmēšanas lauks',
+		select			: 'Iezīmēšanas lauks',
 		imageButton		: 'Attēlpoga',
 		notSet			: '<nav iestatīts>',
@@ -89,9 +93,17 @@
 		ok				: 'Darīts!',
 		cancel			: 'Atcelt',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'Izvērstais',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Ievietot speciālo simbolu',
-		title		: 'Ievietot īpašu simbolu'
+		title		: 'Ievietot īpašu simbolu',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Ievietot/Labot hipersaiti',
+		other 		: '<cits>',
 		menu		: 'Labot hipersaiti',
 		title		: 'Hipersaite',
@@ -117,14 +136,9 @@
 		advanced	: 'Izvērstais',
 		type		: 'Hipersaites tips',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Iezīme šajā lapā',
 		toEmail		: 'E-pasts',
-		target		: 'Mērķis',
-		targetNotSet	: '<nav iestatīts>',
-		targetFrame	: '<ietvars>',
-		targetPopup	: '<uznirstošā logā>',
-		targetNew	: 'Jaunā logā (_blank)',
-		targetTop	: 'Visredzamākajā logā (_top)',
-		targetSelf	: 'Tajā pašā logā (_self)',
-		targetParent	: 'Esošajā logā (_parent)',
+		targetFrame		: '<ietvars>',
+		targetPopup		: '<uznirstošā logā>',
 		targetFrameName	: 'Mērķa ietvara nosaukums',
 		targetPopupName	: 'Uznirstošā loga nosaukums',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Statusa josla',
-		popupLocationBar	: 'Atrašanās vietas josla',
+		popupLocationBar: 'Atrašanās vietas josla',
 		popupToolbar	: 'Rīku josla',
 		popupMenuBar	: 'Izvēlnes josla',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Valodas lasīšanas virziens',
-		langDirNotSet	: '<nav iestatīts>',
 		langDirLTR		: 'No kreisās uz labo (LTR)',
 		langDirRTL		: 'No labās uz kreiso (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Rāmja izmērs',
 		align		: 'Novietojums',
-		alignNotSet	: '<nav norādīts>',
 		alignLeft	: 'Pa kreisi',
 		alignCenter	: 'Centrēti',
@@ -211,4 +246,5 @@
 		widthPx		: 'pikseļos',
 		widthPc		: 'procentuāli',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Augstums',
 		cellSpace	: 'Rūtiņu atstatums',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Darbība',
 		method		: 'Metode',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Mērķis',
-		targetNotSet	: '<nav iestatīts>',
-		targetNew	: 'Jaunā logā (_blank)',
-		targetTop	: 'Visredzamākajā logā (_top)',
-		targetSelf	: 'Tajā pašā logā (_self)',
-		targetParent	: 'Esošajā logā (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Attēlpogas īpašības',
 		menu		: 'Attēla īpašības',
-		infoTab	: 'Informācija par attēlu',
+		infoTab		: 'Informācija par attēlu',
 		btnUpload	: 'Nosūtīt serverim',
-		url		: 'URL',
-		upload	: 'Augšupielādēt',
-		alt		: 'Alternatīvais teksts',
+		upload		: 'Augšupielādēt',
+		alt			: 'Alternatīvais teksts',
 		width		: 'Platums',
-		height	: 'Augstums',
+		height		: 'Augstums',
 		lockRatio	: 'Nemainīga Augstuma/Platuma attiecība',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Atjaunot sākotnējo izmēru',
-		border	: 'Rāmis',
-		hSpace	: 'Horizontālā telpa',
-		vSpace	: 'Vertikālā telpa',
+		border		: 'Rāmis',
+		hSpace		: 'Horizontālā telpa',
+		vSpace		: 'Vertikālā telpa',
 		align		: 'Nolīdzināt',
 		alignLeft	: 'Pa kreisi',
-		alignAbsBottom: 'Absolūti apakšā',
-		alignAbsMiddle: 'Absolūti vertikāli centrēts',
-		alignBaseline	: 'Pamatrindā',
-		alignBottom	: 'Apakšā',
-		alignMiddle	: 'Vertikāli centrēts',
 		alignRight	: 'Pa labi',
-		alignTextTop	: 'Teksta augšā',
-		alignTop	: 'Augšā',
-		preview	: 'Pārskats',
 		alertUrl	: 'Lūdzu norādīt attēla hipersaiti',
-		linkTab	: 'Hipersaite',
+		linkTab		: 'Hipersaite',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Flash īpašības',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Flash īpašības',
-		chkPlay		: 'Automātiska atskaņošana',
-		chkLoop		: 'Nepārtraukti',
-		chkMenu		: 'Atļaut Flash izvēlni',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Mainīt izmēru',
+		title			: 'Flash īpašības',
+		chkPlay			: 'Automātiska atskaņošana',
+		chkLoop			: 'Nepārtraukti',
+		chkMenu			: 'Atļaut Flash izvēlni',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Mainīt izmēru',
 		scaleAll		: 'Rādīt visu',
 		scaleNoBorder	: 'Bez rāmja',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Nolīdzināt',
-		alignLeft	: 'Pa kreisi',
-		alignAbsBottom: 'Absolūti apakšā',
-		alignAbsMiddle: 'Absolūti vertikāli centrēts',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Nolīdzināt',
+		alignLeft		: 'Pa kreisi',
+		alignAbsBottom	: 'Absolūti apakšā',
+		alignAbsMiddle	: 'Absolūti vertikāli centrēts',
 		alignBaseline	: 'Pamatrindā',
-		alignBottom	: 'Apakšā',
-		alignMiddle	: 'Vertikāli centrēts',
-		alignRight	: 'Pa labi',
+		alignBottom		: 'Apakšā',
+		alignMiddle		: 'Vertikāli centrēts',
+		alignRight		: 'Pa labi',
 		alignTextTop	: 'Teksta augšā',
-		alignTop	: 'Augšā',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Fona krāsa',
-		width	: 'Platums',
-		height	: 'Augstums',
-		hSpace	: 'Horizontālā telpa',
-		vSpace	: 'Vertikālā telpa',
-		validateSrc : 'Lūdzu norādi hipersaiti',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Augšā',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Fona krāsa',
+		width			: 'Platums',
+		height			: 'Augstums',
+		hSpace			: 'Horizontālā telpa',
+		vSpace			: 'Vertikālā telpa',
+		validateSrc		: 'Lūdzu norādi hipersaiti',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'Smaidiņi',
-		title	: 'Ievietot smaidiņu'
+		title	: 'Ievietot smaidiņu',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Numurēts saraksts',
-	bulletedlist : 'Izcelts saraksts',
-	indent : 'Palielināt atkāpi',
-	outdent : 'Samazināt atkāpi',
+	numberedlist	: 'Numurēts saraksts',
+	bulletedlist	: 'Izcelts saraksts',
+	indent			: 'Palielināt atkāpi',
+	outdent			: 'Samazināt atkāpi',
 
 	justify :
 	{
-		left : 'Izlīdzināt pa kreisi',
-		center : 'Izlīdzināt pret centru',
-		right : 'Izlīdzināt pa labi',
-		block : 'Izlīdzināt malas'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: 'Izlīdzināt pa kreisi',
+		center	: 'Izlīdzināt pret centru',
+		right	: 'Izlīdzināt pa labi',
+		block	: 'Izlīdzināt malas'
+	},
+
+	blockquote : 'Block Quote', // MISSING
 
 	clipboard :
 	{
 		title		: 'Ievietot',
-		cutError	: 'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt izgriešanas darbību.  Lūdzu, izmantojiet (Ctrl+X, lai veiktu šo darbību.',
-		copyError	: 'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt kopēšanas darbību.  Lūdzu, izmantojiet (Ctrl+C), lai veiktu šo darbību.',
-		pasteMsg	: 'Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (<STRONG>Ctrl+V</STRONG>) un apstipriniet ar <STRONG>Darīts!</STRONG>.',
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+		cutError	: 'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt izgriešanas darbību.  Lūdzu, izmantojiet (Ctrl/Cmd+X, lai veiktu šo darbību.',
+		copyError	: 'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt kopēšanas darbību.  Lūdzu, izmantojiet (Ctrl/Cmd+C), lai veiktu šo darbību.',
+		pasteMsg	: 'Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (<STRONG>Ctrl/Cmd+V</STRONG>) un apstipriniet ar <STRONG>Darīts!</STRONG>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Ievietot no Worda',
-		title : 'Ievietot no Worda',
-		advice : 'Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (<STRONG>Ctrl+V</STRONG>) un apstipriniet ar <STRONG>Darīts!</STRONG>.',
-		ignoreFontFace : 'Ignorēt iepriekš norādītos fontus',
-		removeStyle : 'Noņemt norādītos stilus'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Ievietot no Worda',
+		title			: 'Ievietot no Worda',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Ievietot kā vienkāršu tekstu',
-		title : 'Ievietot kā vienkāršu tekstu'
+		button	: 'Ievietot kā vienkāršu tekstu',
+		title	: 'Ievietot kā vienkāršu tekstu'
 	},
 
 	templates :
 	{
-		button : 'Sagataves',
-		title : 'Satura sagataves',
-		insertOption: 'Replace actual contents', // MISSING
-		selectPromptMsg: 'Lūdzu, norādiet sagatavi, ko atvērt editorā<br>(patreizējie dati tiks zaudēti):',
-		emptyListMsg : '(Nav norādītas sagataves)'
+		button			: 'Sagataves',
+		title			: 'Satura sagataves',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Replace actual contents', // MISSING
+		selectPromptMsg	: 'Lūdzu, norādiet sagatavi, ko atvērt editorā<br>(patreizējie dati tiks zaudēti):',
+		emptyListMsg	: '(Nav norādītas sagataves)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Stils',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Stils',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Formāts',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Formāts',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normāls teksts',
-		tag_pre : 'Formatēts teksts',
-		tag_address : 'Adrese',
-		tag_h1 : 'Virsraksts 1',
-		tag_h2 : 'Virsraksts 2',
-		tag_h3 : 'Virsraksts 3',
-		tag_h4 : 'Virsraksts 4',
-		tag_h5 : 'Virsraksts 5',
-		tag_h6 : 'Virsraksts 6',
-		tag_div : 'Rindkopa (DIV)'
-	},
+		label		: 'Formāts',
+		panelTitle	: 'Formāts',
+
+		tag_p		: 'Normāls teksts',
+		tag_pre		: 'Formatēts teksts',
+		tag_address	: 'Adrese',
+		tag_h1		: 'Virsraksts 1',
+		tag_h2		: 'Virsraksts 2',
+		tag_h3		: 'Virsraksts 3',
+		tag_h4		: 'Virsraksts 4',
+		tag_h5		: 'Virsraksts 5',
+		tag_h6		: 'Virsraksts 6',
+		tag_div		: 'Rindkopa (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Šrifts',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Šrifts',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Šrifts',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Šrifts'
 	},
 
 	fontSize :
 	{
-		label : 'Izmērs',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Izmērs',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Izmērs',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Izmērs'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Teksta krāsa',
-		bgColorTitle : 'Fona krāsa',
-		auto : 'Automātiska',
-		more : 'Plašāka palete...'
+		textColorTitle	: 'Teksta krāsa',
+		bgColorTitle	: 'Fona krāsa',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automātiska',
+		more			: 'Plašāka palete...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/mn.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/mn.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/mn.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Форм',
 		checkbox		: 'Чекбокс',
-		radio		: 'Радио товч',
+		radio			: 'Радио товч',
 		textField		: 'Техт талбар',
 		textarea		: 'Техт орчин',
 		hiddenField		: 'Нууц талбар',
 		button			: 'Товч',
-		select	: 'Сонгогч талбар',
+		select			: 'Сонгогч талбар',
 		imageButton		: 'Зурагтай товч',
 		notSet			: '<Оноохгүй>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Болих',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'Нэмэлт',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Онцгой тэмдэгт оруулах',
-		title		: 'Онцгой тэмдэгт сонгох'
+		title		: 'Онцгой тэмдэгт сонгох',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Линк Оруулах/Засварлах',
+		other 		: '<other>', // MISSING
 		menu		: 'Холбоос засварлах',
 		title		: 'Линк',
@@ -117,14 +136,9 @@
 		advanced	: 'Нэмэлт',
 		type		: 'Линкийн төрөл',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Энэ хуудасандах холбоос',
 		toEmail		: 'E-Mail',
-		target		: 'Байрлал',
-		targetNotSet	: '<Оноохгүй>',
-		targetFrame	: '<Агуулах хүрээ>',
-		targetPopup	: '<popup цонх>',
-		targetNew	: 'Шинэ цонх (_blank)',
-		targetTop	: 'Хамгийн түрүүн байх цонх (_top)',
-		targetSelf	: 'Төстэй цонх (_self)',
-		targetParent	: 'Эцэг цонх (_parent)',
+		targetFrame		: '<Агуулах хүрээ>',
+		targetPopup		: '<popup цонх>',
 		targetFrameName	: 'Очих фремын нэр',
 		targetPopupName	: 'Popup цонхны нэр',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Статус хэсэг',
-		popupLocationBar	: 'Location хэсэг',
+		popupLocationBar: 'Location хэсэг',
 		popupToolbar	: 'Багажны хэсэг',
 		popupMenuBar	: 'Meню хэсэг',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Хэлний чиглэл',
-		langDirNotSet	: '<Оноохгүй>',
 		langDirLTR		: 'Зүүнээс баруун (LTR)',
 		langDirRTL		: 'Баруунаас зүүн (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Хүрээний хэмжээ',
 		align		: 'Эгнээ',
-		alignNotSet	: '<Оноохгүй>',
 		alignLeft	: 'Зүүн талд',
 		alignCenter	: 'Төвд',
@@ -211,4 +246,5 @@
 		widthPx		: 'цэг',
 		widthPc		: 'хувь',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Өндөр',
 		cellSpace	: 'Нүх хоорондын зай (spacing)',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Үйлдэл',
 		method		: 'Арга',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Байрлал',
-		targetNotSet	: '<Оноохгүй>',
-		targetNew	: 'Шинэ цонх (_blank)',
-		targetTop	: 'Хамгийн түрүүн байх цонх (_top)',
-		targetSelf	: 'Төстэй цонх (_self)',
-		targetParent	: 'Эцэг цонх (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Зурган товчны шинж чанар',
 		menu		: 'Зураг',
-		infoTab	: 'Зурагны мэдээлэл',
+		infoTab		: 'Зурагны мэдээлэл',
 		btnUpload	: 'Үүнийг сервэррүү илгээ',
-		url		: 'URL',
-		upload	: 'Хуулах',
-		alt		: 'Тайлбар текст',
+		upload		: 'Хуулах',
+		alt			: 'Тайлбар текст',
 		width		: 'Өргөн',
-		height	: 'Өндөр',
+		height		: 'Өндөр',
 		lockRatio	: 'Радио түгжих',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'хэмжээ дахин оноох',
-		border	: 'Хүрээ',
-		hSpace	: 'Хөндлөн зай',
-		vSpace	: 'Босоо зай',
+		border		: 'Хүрээ',
+		hSpace		: 'Хөндлөн зай',
+		vSpace		: 'Босоо зай',
 		align		: 'Эгнээ',
 		alignLeft	: 'Зүүн',
-		alignAbsBottom: 'Abs доод талд',
-		alignAbsMiddle: 'Abs Дунд талд',
-		alignBaseline	: 'Baseline',
-		alignBottom	: 'Доод талд',
-		alignMiddle	: 'Дунд талд',
 		alignRight	: 'Баруун',
-		alignTextTop	: 'Текст дээр',
-		alignTop	: 'Дээд талд',
-		preview	: 'Уридчлан харах',
 		alertUrl	: 'Зурагны URL-ын төрлийн сонгоно уу',
-		linkTab	: 'Линк',
+		linkTab		: 'Линк',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Флаш шинж чанар',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Флаш  шинж чанар',
-		chkPlay		: 'Автоматаар тоглох',
-		chkLoop		: 'Давтах',
-		chkMenu		: 'Флаш цэс идвэхжүүлэх',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Өргөгтгөх',
+		title			: 'Флаш  шинж чанар',
+		chkPlay			: 'Автоматаар тоглох',
+		chkLoop			: 'Давтах',
+		chkMenu			: 'Флаш цэс идвэхжүүлэх',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Өргөгтгөх',
 		scaleAll		: 'Бүгдийг харуулах',
 		scaleNoBorder	: 'Хүрээгүй',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Эгнээ',
-		alignLeft	: 'Зүүн',
-		alignAbsBottom: 'Abs доод талд',
-		alignAbsMiddle: 'Abs Дунд талд',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Эгнээ',
+		alignLeft		: 'Зүүн',
+		alignAbsBottom	: 'Abs доод талд',
+		alignAbsMiddle	: 'Abs Дунд талд',
 		alignBaseline	: 'Baseline',
-		alignBottom	: 'Доод талд',
-		alignMiddle	: 'Дунд талд',
-		alignRight	: 'Баруун',
+		alignBottom		: 'Доод талд',
+		alignMiddle		: 'Дунд талд',
+		alignRight		: 'Баруун',
 		alignTextTop	: 'Текст дээр',
-		alignTop	: 'Дээд талд',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Фонны өнгө',
-		width	: 'Өргөн',
-		height	: 'Өндөр',
-		hSpace	: 'Хөндлөн зай',
-		vSpace	: 'Босоо зай',
-		validateSrc : 'Линк URL-ээ төрөлжүүлнэ үү',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Дээд талд',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Фонны өнгө',
+		width			: 'Өргөн',
+		height			: 'Өндөр',
+		hSpace			: 'Хөндлөн зай',
+		vSpace			: 'Босоо зай',
+		validateSrc		: 'Линк URL-ээ төрөлжүүлнэ үү',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Тодорхойлолт',
-		title	: 'Тодорхойлолт оруулах'
+		title	: 'Тодорхойлолт оруулах',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Дугаарлагдсан жагсаалт',
-	bulletedlist : 'Цэгтэй жагсаалт',
-	indent : 'Догол мөр хасах',
-	outdent : 'Догол мөр нэмэх',
+	numberedlist	: 'Дугаарлагдсан жагсаалт',
+	bulletedlist	: 'Цэгтэй жагсаалт',
+	indent			: 'Догол мөр хасах',
+	outdent			: 'Догол мөр нэмэх',
 
 	justify :
 	{
-		left : 'Зүүн талд байрлуулах',
-		center : 'Төвд байрлуулах',
-		right : 'Баруун талд байрлуулах',
-		block : 'Блок хэлбэрээр байрлуулах'
+		left	: 'Зүүн талд байрлуулах',
+		center	: 'Төвд байрлуулах',
+		right	: 'Баруун талд байрлуулах',
+		block	: 'Блок хэлбэрээр байрлуулах'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Буулгах',
-		cutError	: 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl+X) товчны хослолыг ашиглана уу.',
-		copyError	: 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl+C) товчны хослолыг ашиглана уу.',
-		pasteMsg	: '(<strong>Ctrl+V</strong>) товчийг ашиглан paste хийнэ үү. Мөн <strong>OK</strong> дар.',
-		securityMsg	: 'Таны үзүүлэгч/browser/-н хамгаалалтын тохиргооноос болоод editor clipboard өгөгдөлрүү шууд хандах боломжгүй. Энэ цонход дахин paste хийхийг оролд.'
+		cutError	: 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+X) товчны хослолыг ашиглана уу.',
+		copyError	: 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+C) товчны хослолыг ашиглана уу.',
+		pasteMsg	: '(<strong>Ctrl/Cmd+V</strong>) товчийг ашиглан paste хийнэ үү. Мөн <strong>OK</strong> дар.',
+		securityMsg	: 'Таны үзүүлэгч/browser/-н хамгаалалтын тохиргооноос болоод editor clipboard өгөгдөлрүү шууд хандах боломжгүй. Энэ цонход дахин paste хийхийг оролд.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Word-оос буулгах',
-		title : 'Word-оос буулгах',
-		advice : '(<strong>Ctrl+V</strong>) товчийг ашиглан paste хийнэ үү. Мөн <strong>OK</strong> дар.',
-		ignoreFontFace : 'Тодорхойлогдсон Font Face зөвшөөрнө',
-		removeStyle : 'Тодорхойлогдсон загварыг авах'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Word-оос буулгах',
+		title			: 'Word-оос буулгах',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Plain Text-ээс буулгах',
-		title : 'Plain Text-ээс буулгах'
+		button	: 'Plain Text-ээс буулгах',
+		title	: 'Plain Text-ээс буулгах'
 	},
 
 	templates :
 	{
-		button : 'Загварууд',
-		title : 'Загварын агуулга',
-		insertOption: 'Одоогийн агууллагыг дарж бичих',
-		selectPromptMsg: 'Загварыг нээж editor-рүү сонгож оруулна уу<br />(Одоогийн агууллагыг устаж магадгүй):',
-		emptyListMsg : '(Загвар тодорхойлогдоогүй байна)'
+		button			: 'Загварууд',
+		title			: 'Загварын агуулга',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Одоогийн агууллагыг дарж бичих',
+		selectPromptMsg	: 'Загварыг нээж editor-рүү сонгож оруулна уу<br />(Одоогийн агууллагыг устаж магадгүй):',
+		emptyListMsg	: '(Загвар тодорхойлогдоогүй байна)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Загвар',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Загвар',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Формат',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Формат',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Хэвийн',
-		tag_pre : 'Formatted',
-		tag_address : 'Хаяг',
-		tag_h1 : 'Heading 1',
-		tag_h2 : 'Heading 2',
-		tag_h3 : 'Heading 3',
-		tag_h4 : 'Heading 4',
-		tag_h5 : 'Heading 5',
-		tag_h6 : 'Heading 6',
-		tag_div : 'Paragraph (DIV)'
-	},
+		label		: 'Формат',
+		panelTitle	: 'Формат',
+
+		tag_p		: 'Хэвийн',
+		tag_pre		: 'Formatted',
+		tag_address	: 'Хаяг',
+		tag_h1		: 'Heading 1',
+		tag_h2		: 'Heading 2',
+		tag_h3		: 'Heading 3',
+		tag_h4		: 'Heading 4',
+		tag_h5		: 'Heading 5',
+		tag_h6		: 'Heading 6',
+		tag_div		: 'Paragraph (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Фонт',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Фонт',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Фонт',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Фонт'
 	},
 
 	fontSize :
 	{
-		label : 'Хэмжээ',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Хэмжээ',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Хэмжээ',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Хэмжээ'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Фонтны өнгө',
-		bgColorTitle : 'Фонны өнгө',
-		auto : 'Автоматаар',
-		more : 'Нэмэлт өнгөнүүд...'
+		textColorTitle	: 'Фонтны өнгө',
+		bgColorTitle	: 'Фонны өнгө',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Автоматаар',
+		more			: 'Нэмэлт өнгөнүүд...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/ms.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/ms.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/ms.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Borang',
 		checkbox		: 'Checkbox',
-		radio		: 'Butang Radio',
+		radio			: 'Butang Radio',
 		textField		: 'Text Field',
 		textarea		: 'Textarea',
 		hiddenField		: 'Field Tersembunyi',
 		button			: 'Butang',
-		select	: 'Field Pilihan',
+		select			: 'Field Pilihan',
 		imageButton		: 'Butang Bergambar',
 		notSet			: '<tidak di set>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Batal',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'Advanced',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Masukkan Huruf Istimewa',
-		title		: 'Sila pilih huruf istimewa'
+		title		: 'Sila pilih huruf istimewa',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Masukkan/Sunting Sambungan',
+		other 		: '<lain>',
 		menu		: 'Sunting Sambungan',
 		title		: 'Sambungan',
@@ -117,14 +136,9 @@
 		advanced	: 'Advanced',
 		type		: 'Jenis Sambungan',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Pautan dalam muka surat ini',
 		toEmail		: 'E-Mail',
-		target		: 'Sasaran',
-		targetNotSet	: '<tidak di set>',
-		targetFrame	: '<bingkai>',
-		targetPopup	: '<tetingkap popup>',
-		targetNew	: 'Tetingkap Baru (_blank)',
-		targetTop	: 'Tetingkap yang paling atas (_top)',
-		targetSelf	: 'Tetingkap yang Sama (_self)',
-		targetParent	: 'Tetingkap Parent (_parent)',
+		targetFrame		: '<bingkai>',
+		targetPopup		: '<tetingkap popup>',
 		targetFrameName	: 'Nama Bingkai Sasaran',
 		targetPopupName	: 'Nama Tetingkap Popup',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Bar Status',
-		popupLocationBar	: 'Bar Lokasi',
+		popupLocationBar: 'Bar Lokasi',
 		popupToolbar	: 'Toolbar',
 		popupMenuBar	: 'Bar Menu',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Arah Tulisan',
-		langDirNotSet	: '<tidak di set>',
 		langDirLTR		: 'Kiri ke Kanan (LTR)',
 		langDirRTL		: 'Kanan ke Kiri (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Saiz Border',
 		align		: 'Penjajaran',
-		alignNotSet	: '<Tidak diset>',
 		alignLeft	: 'Kiri',
 		alignCenter	: 'Tengah',
@@ -211,4 +246,5 @@
 		widthPx		: 'piksel-piksel',
 		widthPc		: 'peratus',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Tinggi',
 		cellSpace	: 'Ruangan Antara Sel',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Tindakan borang',
 		method		: 'Cara borang dihantar',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Sasaran',
-		targetNotSet	: '<tidak di set>',
-		targetNew	: 'Tetingkap Baru (_blank)',
-		targetTop	: 'Tetingkap yang paling atas (_top)',
-		targetSelf	: 'Tetingkap yang Sama (_self)',
-		targetParent	: 'Tetingkap Parent (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Ciri-ciri Butang Bergambar',
 		menu		: 'Ciri-ciri Imej',
-		infoTab	: 'Info Imej',
+		infoTab		: 'Info Imej',
 		btnUpload	: 'Hantar ke Server',
-		url		: 'URL',
-		upload	: 'Muat Naik',
-		alt		: 'Text Alternatif',
+		upload		: 'Muat Naik',
+		alt			: 'Text Alternatif',
 		width		: 'Lebar',
-		height	: 'Tinggi',
+		height		: 'Tinggi',
 		lockRatio	: 'Tetapkan Nisbah',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Saiz Set Semula',
-		border	: 'Border',
-		hSpace	: 'Ruang Melintang',
-		vSpace	: 'Ruang Menegak',
+		border		: 'Border',
+		hSpace		: 'Ruang Melintang',
+		vSpace		: 'Ruang Menegak',
 		align		: 'Jajaran',
 		alignLeft	: 'Kiri',
-		alignAbsBottom: 'Bawah Mutlak',
-		alignAbsMiddle: 'Pertengahan Mutlak',
-		alignBaseline	: 'Garis Dasar',
-		alignBottom	: 'Bawah',
-		alignMiddle	: 'Pertengahan',
 		alignRight	: 'Kanan',
-		alignTextTop	: 'Atas Text',
-		alignTop	: 'Atas',
-		preview	: 'Prebiu',
 		alertUrl	: 'Sila taip URL untuk fail gambar',
-		linkTab	: 'Sambungan',
+		linkTab		: 'Sambungan',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Flash Properties', // MISSING
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Flash Properties', // MISSING
-		chkPlay		: 'Auto Play', // MISSING
-		chkLoop		: 'Loop', // MISSING
-		chkMenu		: 'Enable Flash Menu', // MISSING
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Scale', // MISSING
+		title			: 'Flash Properties', // MISSING
+		chkPlay			: 'Auto Play', // MISSING
+		chkLoop			: 'Loop', // MISSING
+		chkMenu			: 'Enable Flash Menu', // MISSING
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Scale', // MISSING
 		scaleAll		: 'Show all', // MISSING
 		scaleNoBorder	: 'No Border', // MISSING
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Jajaran',
-		alignLeft	: 'Kiri',
-		alignAbsBottom: 'Bawah Mutlak',
-		alignAbsMiddle: 'Pertengahan Mutlak',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Jajaran',
+		alignLeft		: 'Kiri',
+		alignAbsBottom	: 'Bawah Mutlak',
+		alignAbsMiddle	: 'Pertengahan Mutlak',
 		alignBaseline	: 'Garis Dasar',
-		alignBottom	: 'Bawah',
-		alignMiddle	: 'Pertengahan',
-		alignRight	: 'Kanan',
+		alignBottom		: 'Bawah',
+		alignMiddle		: 'Pertengahan',
+		alignRight		: 'Kanan',
 		alignTextTop	: 'Atas Text',
-		alignTop	: 'Atas',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Warna Latarbelakang',
-		width	: 'Lebar',
-		height	: 'Tinggi',
-		hSpace	: 'Ruang Melintang',
-		vSpace	: 'Ruang Menegak',
-		validateSrc : 'Sila taip sambungan URL',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Atas',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Warna Latarbelakang',
+		width			: 'Lebar',
+		height			: 'Tinggi',
+		hSpace			: 'Ruang Melintang',
+		vSpace			: 'Ruang Menegak',
+		validateSrc		: 'Sila taip sambungan URL',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'Smiley',
-		title	: 'Masukkan Smiley'
+		title	: 'Masukkan Smiley',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Senarai bernombor',
-	bulletedlist : 'Senarai tidak bernombor',
-	indent : 'Tambahkan Inden',
-	outdent : 'Kurangkan Inden',
+	numberedlist	: 'Senarai bernombor',
+	bulletedlist	: 'Senarai tidak bernombor',
+	indent			: 'Tambahkan Inden',
+	outdent			: 'Kurangkan Inden',
 
 	justify :
 	{
-		left : 'Jajaran Kiri',
-		center : 'Jajaran Tengah',
-		right : 'Jajaran Kanan',
-		block : 'Jajaran Blok'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: 'Jajaran Kiri',
+		center	: 'Jajaran Tengah',
+		right	: 'Jajaran Kanan',
+		block	: 'Jajaran Blok'
+	},
+
+	blockquote : 'Block Quote', // MISSING
 
 	clipboard :
 	{
 		title		: 'Tampal',
-		cutError	: 'Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl+X).',
-		copyError	: 'Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl+C).',
-		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit OK', // MISSING
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+		cutError	: 'Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+X).',
+		copyError	: 'Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+C).',
+		pasteMsg	: 'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK', // MISSING
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Tampal dari Word',
-		title : 'Tampal dari Word',
-		advice : 'Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.', // MISSING
-		ignoreFontFace : 'Ignore Font Face definitions', // MISSING
-		removeStyle : 'Remove Styles definitions' // MISSING
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Tampal dari Word',
+		title			: 'Tampal dari Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Tampal sebagai text biasa',
-		title : 'Tampal sebagai text biasa'
+		button	: 'Tampal sebagai text biasa',
+		title	: 'Tampal sebagai text biasa'
 	},
 
 	templates :
 	{
-		button : 'Templat',
-		title : 'Templat Kandungan',
-		insertOption: 'Replace actual contents', // MISSING
-		selectPromptMsg: 'Sila pilih templat untuk dibuka oleh editor<br>(kandungan sebenar akan hilang):',
-		emptyListMsg : '(Tiada Templat Disimpan)'
+		button			: 'Templat',
+		title			: 'Templat Kandungan',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Replace actual contents', // MISSING
+		selectPromptMsg	: 'Sila pilih templat untuk dibuka oleh editor<br>(kandungan sebenar akan hilang):',
+		emptyListMsg	: '(Tiada Templat Disimpan)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Stail',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Stail',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Format',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Format',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Telah Diformat',
-		tag_address : 'Alamat',
-		tag_h1 : 'Heading 1',
-		tag_h2 : 'Heading 2',
-		tag_h3 : 'Heading 3',
-		tag_h4 : 'Heading 4',
-		tag_h5 : 'Heading 5',
-		tag_h6 : 'Heading 6',
-		tag_div : 'Perenggan (DIV)'
-	},
+		label		: 'Format',
+		panelTitle	: 'Format',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Telah Diformat',
+		tag_address	: 'Alamat',
+		tag_h1		: 'Heading 1',
+		tag_h2		: 'Heading 2',
+		tag_h3		: 'Heading 3',
+		tag_h4		: 'Heading 4',
+		tag_h5		: 'Heading 5',
+		tag_h6		: 'Heading 6',
+		tag_div		: 'Perenggan (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Font',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Font',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Font',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Font'
 	},
 
 	fontSize :
 	{
-		label : 'Saiz',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Saiz',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Saiz',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Saiz'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Warna Text',
-		bgColorTitle : 'Warna Latarbelakang',
-		auto : 'Otomatik',
-		more : 'Warna lain-lain...'
+		textColorTitle	: 'Warna Text',
+		bgColorTitle	: 'Warna Latarbelakang',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Otomatik',
+		more			: 'Warna lain-lain...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/nb.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/nb.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/nb.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rikteksteditor, %1, trykk ALT 0 for hjelp.',
+
+	// ARIA descriptions.
+	toolbar	: 'Verktøylinje',
+	editor	: 'Rikteksteditor',
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Skjema',
 		checkbox		: 'Avmerkingsboks',
-		radio		: 'Alternativknapp',
+		radio			: 'Alternativknapp',
 		textField		: 'Tekstboks',
 		textarea		: 'Tekstområde',
 		hiddenField		: 'Skjult felt',
 		button			: 'Knapp',
-		select	: 'Rullegardinliste',
+		select			: 'Rullegardinliste',
 		imageButton		: 'Bildeknapp',
 		notSet			: '<ikke satt>',
@@ -89,12 +93,25 @@
 		ok				: 'OK',
 		cancel			: 'Avbryt',
+		close			: 'Lukk',
+		preview			: 'Forhåndsvis',
 		generalTab		: 'Generelt',
 		advancedTab		: 'Avansert',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
-		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
-		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		validateNumberFailed : 'Denne verdien er ikke ett nummer',
+		confirmNewPage	: 'Alle endringer som er gjort i dette innholdet vil bli tapt. Er du sikker på at du vil laste en ny side?',
+		confirmCancel	: 'Noen av valgene har blitt endret. Er du sikker på at du vil lukke dialogen?',
+		options			: 'Valg',
+		target			: 'Mål',
+		targetNew		: 'Nytt vindu (_blank)',
+		targetTop		: 'Hele vindu (_top)',
+		targetSelf		: 'Samme vindu (_self)',
+		targetParent	: 'Foreldrevindu (_parent)',
 
 		// Put the voice-only part of the label in the span.
-		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+		unavailable		: '%1<span class="cke_accessibility">, utilgjenglig</span>'
+	},
+
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
 	},
 
@@ -103,5 +120,6 @@
 	{
 		toolbar		: 'Sett inn spesielt tegn',
-		title		: 'Velg spesielt tegn'
+		title		: 'Velg spesielt tegn',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Sett inn/Rediger lenke',
+		other 		: '<other>', // MISSING
 		menu		: 'Rediger lenke',
 		title		: 'Lenke',
@@ -117,20 +136,15 @@
 		advanced	: 'Avansert',
 		type		: 'Lenketype',
+		toUrl		: 'URL',
 		toAnchor	: 'Lenke til anker i teksten',
 		toEmail		: 'E-post',
-		target		: 'Mål',
-		targetNotSet	: '<ikke satt>',
-		targetFrame	: '<ramme>',
-		targetPopup	: '<popup vindu>',
-		targetNew	: 'Nytt vindu (_blank)',
-		targetTop	: 'Hele vindu (_top)',
-		targetSelf	: 'Samme vindu (_self)',
-		targetParent	: 'Foreldrevindu (_parent)',
+		targetFrame		: '<ramme>',
+		targetPopup		: '<popup vindu>',
 		targetFrameName	: 'Målramme',
 		targetPopupName	: 'Navn på popup-vindus',
 		popupFeatures	: 'Egenskaper for popup-vindu',
-		popupResizable	: 'Resizable', // MISSING
+		popupResizable	: 'Skalérbar',
 		popupStatusBar	: 'Statuslinje',
-		popupLocationBar	: 'Adresselinje',
+		popupLocationBar: 'Adresselinje',
 		popupToolbar	: 'Verktøylinje',
 		popupMenuBar	: 'Menylinje',
@@ -142,7 +156,6 @@
 		popupHeight		: 'Høyde',
 		popupTop		: 'Topp-posisjon',
-		id				: 'Id', // MISSING
+		id				: 'Id',
 		langDir			: 'Språkretning',
-		langDirNotSet	: '<ikke satt>',
 		langDirLTR		: 'Venstre til høyre (VTH)',
 		langDirRTL		: 'Høyre til venstre (HTV)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -188,7 +224,7 @@
 		matchCase			: 'Skill mellom store og små bokstaver',
 		matchWord			: 'Bare hele ord',
-		matchCyclic			: 'Match cyclic', // MISSING
+		matchCyclic			: 'Søk i hele dokumentet',
 		replaceAll			: 'Erstatt alle',
-		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+		replaceSuccessMsg	: '%1 tilfelle erstattet.'
 	},
 
@@ -204,5 +240,4 @@
 		border		: 'Rammestørrelse',
 		align		: 'Justering',
-		alignNotSet	: '<Ikke satt>',
 		alignLeft	: 'Venstre',
 		alignCenter	: 'Midtjuster',
@@ -211,4 +246,5 @@
 		widthPx		: 'piksler',
 		widthPc		: 'prosent',
+		widthUnit	: 'Bredde-enhet',
 		height		: 'Høyde',
 		cellSpace	: 'Cellemarg',
@@ -216,16 +252,16 @@
 		caption		: 'Tittel',
 		summary		: 'Sammendrag',
-		headers		: 'Headers', // MISSING
-		headersNone		: 'None', // MISSING
-		headersColumn	: 'First column', // MISSING
-		headersRow		: 'First Row', // MISSING
-		headersBoth		: 'Both', // MISSING
-		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
-		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
-		invalidBorder	: 'Border size must be a number.', // MISSING
-		invalidWidth	: 'Table width must be a number.', // MISSING
-		invalidHeight	: 'Table height must be a number.', // MISSING
-		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
-		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+		headers		: 'Overskrifter',
+		headersNone		: 'Ingen',
+		headersColumn	: 'Første kolonne',
+		headersRow		: 'Første rad',
+		headersBoth		: 'Begge',
+		invalidRows		: 'Antall rader må være ett tall større enn 0.',
+		invalidCols		: 'Antall kolonner må være ett tall større enn 0.',
+		invalidBorder	: 'Rammestørrelse må være ett tall.',
+		invalidWidth	: 'Tabellbredde må være ett nummer.',
+		invalidHeight	: 'Tabellhøyde må være ett nummer.',
+		invalidCellSpacing	: 'Cellemellomrom må være ett nummer.',
+		invalidCellPadding	: 'Cellefyll må være ett nummer.',
 
 		cell :
@@ -240,26 +276,26 @@
 			splitHorizontal	: 'Del celle horisontalt',
 			splitVertical	: 'Del celle vertikalt',
-			title			: 'Cell Properties', // MISSING
-			cellType		: 'Cell Type', // MISSING
-			rowSpan			: 'Rows Span', // MISSING
-			colSpan			: 'Columns Span', // MISSING
-			wordWrap		: 'Word Wrap', // MISSING
-			hAlign			: 'Horizontal Alignment', // MISSING
-			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
-			alignBaseline	: 'Baseline', // MISSING
-			bgColor			: 'Background Color', // MISSING
-			borderColor		: 'Border Color', // MISSING
-			data			: 'Data', // MISSING
-			header			: 'Header', // MISSING
-			yes				: 'Yes', // MISSING
-			no				: 'No', // MISSING
-			invalidWidth	: 'Cell width must be a number.', // MISSING
-			invalidHeight	: 'Cell height must be a number.', // MISSING
-			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
-			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			title			: 'Celleegenskaper',
+			cellType		: 'Celletype',
+			rowSpan			: 'Radspenn',
+			colSpan			: 'Kolonnespenn',
+			wordWrap		: 'Tekstbrytning',
+			hAlign			: 'Horisontal justering',
+			vAlign			: 'Vertikal justering',
+			alignTop		: 'Topp',
+			alignMiddle		: 'Midten',
+			alignBottom		: 'Bunnen',
+			alignBaseline	: 'Grunnlinje',
+			bgColor			: 'Bakgrunnsfarge',
+			borderColor		: 'Rammefarge',
+			data			: 'Data',
+			header			: 'Overskrift',
+			yes				: 'Ja',
+			no				: 'Nei',
+			invalidWidth	: 'Cellebredde må være ett nummer',
+			invalidHeight	: 'Cellehøyde må være ett nummer',
+			invalidRowSpan	: 'Radspenn må være ett nummer.',
+			invalidColSpan	: 'Kolonnespenn må være ett nummer.',
+			chooseColor		: 'Velg'
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Handling',
 		method		: 'Metode',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Mål',
-		targetNotSet	: '<ikke satt>',
-		targetNew	: 'Nytt vindu (_blank)',
-		targetTop	: 'Hele vindu (_top)',
-		targetSelf	: 'Samme vindu (_self)',
-		targetParent	: 'Foreldrevindu (_parent)'
+		encoding	: 'Encoding'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Egenskaper for bildeknapp',
 		menu		: 'Bildeegenskaper',
-		infoTab	: 'Bildeinformasjon',
+		infoTab		: 'Bildeinformasjon',
 		btnUpload	: 'Send det til serveren',
-		url		: 'URL',
-		upload	: 'Last opp',
-		alt		: 'Alternativ tekst',
+		upload		: 'Last opp',
+		alt			: 'Alternativ tekst',
 		width		: 'Bredde',
-		height	: 'Høyde',
+		height		: 'Høyde',
 		lockRatio	: 'Lås forhold',
+		unlockRatio	: 'Ikke lås forhold',
 		resetSize	: 'Tilbakestill størrelse',
-		border	: 'Ramme',
-		hSpace	: 'HMarg',
-		vSpace	: 'VMarg',
+		border		: 'Ramme',
+		hSpace		: 'HMarg',
+		vSpace		: 'VMarg',
 		align		: 'Juster',
 		alignLeft	: 'Venstre',
-		alignAbsBottom: 'Abs bunn',
-		alignAbsMiddle: 'Abs midten',
-		alignBaseline	: 'Bunnlinje',
-		alignBottom	: 'Bunn',
-		alignMiddle	: 'Midten',
 		alignRight	: 'Høyre',
-		alignTextTop	: 'Tekst topp',
-		alignTop	: 'Topp',
-		preview	: 'Forhåndsvis',
 		alertUrl	: 'Vennligst skriv bilde-urlen',
-		linkTab	: 'Lenke',
-		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
-		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		linkTab		: 'Lenke',
+		button2Img	: 'Vil du endre den valgte bildeknappen til ett vanlig bilde?',
+		img2Button	: 'Vil du endre det valgte bildet til en bildeknapp?',
+		urlMissing	: 'Bildets adresse mangler.',
+		validateWidth	: 'Bredde må være ett nummer.',
+		validateHeight	: 'Høyde må være ett nummer.',
+		validateBorder	: 'Ramme må være ett nummer.',
+		validateHSpace	: 'HSpace må være ett nummer.',
+		validateVSpace	: 'VSpace må være ett nummer.'
 	},
 
@@ -406,50 +433,50 @@
 	{
 		properties		: 'Egenskaper for Flash-objekt',
-		propertiesTab	: 'Properties', // MISSING
-		title		: 'Flash-egenskaper',
-		chkPlay		: 'Autospill',
-		chkLoop		: 'Loop',
-		chkMenu		: 'Slå på Flash-meny',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Skaler',
+		propertiesTab	: 'Egenskaper',
+		title			: 'Flash-egenskaper',
+		chkPlay			: 'Autospill',
+		chkLoop			: 'Loop',
+		chkMenu			: 'Slå på Flash-meny',
+		chkFull			: 'Tillat fullskjerm',
+ 		scale			: 'Skaler',
 		scaleAll		: 'Vis alt',
 		scaleNoBorder	: 'Ingen ramme',
 		scaleFit		: 'Skaler til å passe',
-		access			: 'Script Access', // MISSING
-		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Juster',
-		alignLeft	: 'Venstre',
-		alignAbsBottom: 'Abs bunn',
-		alignAbsMiddle: 'Abs midten',
+		access			: 'Scripttilgang',
+		accessAlways	: 'Alltid',
+		accessSameDomain: 'Samme domene',
+		accessNever		: 'Aldri',
+		align			: 'Juster',
+		alignLeft		: 'Venstre',
+		alignAbsBottom	: 'Abs bunn',
+		alignAbsMiddle	: 'Abs midten',
 		alignBaseline	: 'Bunnlinje',
-		alignBottom	: 'Bunn',
-		alignMiddle	: 'Midten',
-		alignRight	: 'Høyre',
+		alignBottom		: 'Bunn',
+		alignMiddle		: 'Midten',
+		alignRight		: 'Høyre',
 		alignTextTop	: 'Tekst topp',
-		alignTop	: 'Topp',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Bakgrunnsfarge',
-		width	: 'Bredde',
-		height	: 'Høyde',
-		hSpace	: 'HMarg',
-		vSpace	: 'VMarg',
-		validateSrc : 'Vennligst skriv inn lenkens url',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Topp',
+		quality			: 'Kvalitet',
+		qualityBest		: 'Best',
+		qualityHigh		: 'Høy',
+		qualityAutoHigh	: 'Auto Høy',
+		qualityMedium	: 'Medium',
+		qualityAutoLow	: 'Auto Lav',
+		qualityLow		: 'Lav',
+		windowModeWindow: 'Vindu',
+		windowModeOpaque: 'Opaque',
+		windowModeTransparent : 'Gjennomsiktig',
+		windowMode		: 'Vindu modus',
+		flashvars		: 'Variabler for flash',
+		bgcolor			: 'Bakgrunnsfarge',
+		width			: 'Bredde',
+		height			: 'Høyde',
+		hSpace			: 'HMarg',
+		vSpace			: 'VMarg',
+		validateSrc		: 'Vennligst skriv inn lenkens url',
+		validateWidth	: 'Bredde må være ett nummer.',
+		validateHeight	: 'Høyde må være ett nummer',
+		validateHSpace	: 'HSpace må være ett nummer.',
+		validateVSpace	: 'VSpace må være ett nummer.'
 	},
 
@@ -458,7 +485,7 @@
 	{
 		toolbar			: 'Stavekontroll',
-		title			: 'Spell Check', // MISSING
-		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
-		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		title			: 'Stavekontroll',
+		notAvailable	: 'Beklager, tjenesten er utilgjenglig nå.',
+		errorLoading	: 'Feil under lasting av applicationstjeneste tjener: %s.',
 		notInDic		: 'Ikke i ordboken',
 		changeTo		: 'Endre til',
@@ -480,26 +507,28 @@
 	{
 		toolbar	: 'Smil',
-		title	: 'Sett inn smil'
+		title	: 'Sett inn smil',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
-	},
-
-	numberedlist : 'Nummerert liste',
-	bulletedlist : 'Uordnet liste',
-	indent : 'Øk nivå',
-	outdent : 'Senk nivå',
+		eleLabel : 'Element-sti',
+		eleTitle : '%1 element'
+	},
+
+	numberedlist	: 'Nummerert liste',
+	bulletedlist	: 'Uordnet liste',
+	indent			: 'Øk nivå',
+	outdent			: 'Senk nivå',
 
 	justify :
 	{
-		left : 'Venstrejuster',
-		center : 'Midtjuster',
-		right : 'Høyrejuster',
-		block : 'Blokkjuster'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: 'Venstrejuster',
+		center	: 'Midtjuster',
+		right	: 'Høyrejuster',
+		block	: 'Blokkjuster'
+	},
+
+	blockquote : 'Blockquote',
 
 	clipboard :
@@ -509,177 +538,210 @@
 		copyError	: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).',
 		pasteMsg	: 'Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.',
-		securityMsg	: 'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.'
+		securityMsg	: 'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.',
+		pasteArea	: 'Innlimingsområde'
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Lim inn fra Word',
-		title : 'Lim inn fra Word',
-		advice : 'Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Fjern skrifttyper',
-		removeStyle : 'Fjern stildefinisjoner'
+		confirmCleanup	: 'Teksten du limer inn ser ut til å være kopiert fra Word. Vil du renske den før du limer den inn?',
+		toolbar			: 'Lim inn fra Word',
+		title			: 'Lim inn fra Word',
+		error			: 'Det var ikke mulig å renske den innlimte teksten på grunn av en intern feil'
 	},
 
 	pasteText :
 	{
-		button : 'Lim inn som ren tekst',
-		title : 'Lim inn som ren tekst'
+		button	: 'Lim inn som ren tekst',
+		title	: 'Lim inn som ren tekst'
 	},
 
 	templates :
 	{
-		button : 'Maler',
-		title : 'Innholdsmaler',
-		insertOption: 'Erstatt faktisk innold',
-		selectPromptMsg: 'Velg malen du vil åpne<br>(innholdet du har skrevet blir tapt!):',
-		emptyListMsg : '(Ingen maler definert)'
-	},
-
-	showBlocks : 'Show Blocks', // MISSING
+		button			: 'Maler',
+		title			: 'Innholdsmaler',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Erstatt faktisk innold',
+		selectPromptMsg	: 'Velg malen du vil åpne<br>(innholdet du har skrevet blir tapt!):',
+		emptyListMsg	: '(Ingen maler definert)'
+	},
+
+	showBlocks : 'Vis blokker',
 
 	stylesCombo :
 	{
-		label : 'Stil',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Stil',
+		panelTitle	: 'Stilformater',
+		panelTitle1	: 'Blokkstiler',
+		panelTitle2	: 'Inlinestiler',
+		panelTitle3	: 'Objektstiler'
 	},
 
 	format :
 	{
-		label : 'Format',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Format',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatert',
-		tag_address : 'Adresse',
-		tag_h1 : 'Tittel 1',
-		tag_h2 : 'Tittel 2',
-		tag_h3 : 'Tittel 3',
-		tag_h4 : 'Tittel 4',
-		tag_h5 : 'Tittel 5',
-		tag_h6 : 'Tittel 6',
-		tag_div : 'Normal (DIV)'
-	},
+		label		: 'Format',
+		panelTitle	: 'Format',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatert',
+		tag_address	: 'Adresse',
+		tag_h1		: 'Tittel 1',
+		tag_h2		: 'Tittel 2',
+		tag_h3		: 'Tittel 3',
+		tag_h4		: 'Tittel 4',
+		tag_h5		: 'Tittel 5',
+		tag_h6		: 'Tittel 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Sett inn Div Container',
+		toolbar				: 'Sett inn Div Container',
+		cssClassInputLabel	: 'Stilark-klasser',
+		styleSelectLabel	: 'Stil',
+		IdInputLabel		: 'Id',
+		languageCodeInputLabel	: ' Språk-kode',
+		inlineStyleInputLabel	: 'Inlinestiler',
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Språkretning',
+		langDirLTRLabel		: 'Venstre til høyre (VTH)',
+		langDirRTLLabel		: 'Høyre til venstre (HTV)',
+		edit				: 'Rediger Div',
+		remove				: 'Fjern Div'
+  	},
 
 	font :
 	{
-		label : 'Skrift',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Skrift',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Skrift',
+		voiceLabel	: 'Font',
+		panelTitle	: 'Skrift'
 	},
 
 	fontSize :
 	{
-		label : 'Størrelse',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Størrelse',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Størrelse',
+		voiceLabel	: 'Font Størrelse',
+		panelTitle	: 'Størrelse'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Tekstfarge',
-		bgColorTitle : 'Bakgrunnsfarge',
-		auto : 'Automatisk',
-		more : 'Flere farger...'
+		textColorTitle	: 'Tekstfarge',
+		bgColorTitle	: 'Bakgrunnsfarge',
+		panelTitle		: 'Farger',
+		auto			: 'Automatisk',
+		more			: 'Flere farger...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Svart',
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Marine',
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Svak grå',
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brun',
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Mørk grå',
+		'40E0D0' : 'Turkis',
+		'0000CD' : 'Medium Blå',
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Grå',
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Mørk oransje',
+		'FFD700' : 'gull',
+		'008000' : 'Grønn',
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blå',
+		'EE82EE' : 'Fiolett',
+		'A9A9A9' : 'Mørk grå',
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Oransje',
+		'FFFF00' : 'gul',
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Lys Blå',
+		'DDA0DD' : 'Plomme',
+		'D3D3D3' : 'Lys grå',
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antikk-hvit',
+		'FFFFE0' : 'Lys gul',
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'Hvit'
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Stavekontroll mens du skriver',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Slå på SCAYT',
+		disable			: 'Slå av SCAYT',
+		about			: 'Om SCAYT',
+		toggle			: 'Veksle SCAYT',
+		options			: 'Valg',
+		langs			: 'Språk',
+		moreSuggestions	: 'Flere forslag',
+		ignore			: 'Ignorer',
+		ignoreAll		: 'Ignorer Alle',
+		addWord			: 'Legg til ord',
+		emptyDic		: 'Ordboknavn skal ikke være tom',
+
+		optionsTab		: 'Valg',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Språk',
+
+		dictionariesTab	: 'Ordbøker',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'Om'
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
-	},
-
-	maximize : 'Maximize', // MISSING
-	minimize : 'Minimize', // MISSING
+		title		: 'Om CKEditor',
+		dlgTitle	: 'Om CKEditor',
+		moreInfo	: 'For lisensieringsinformasjon vennligst besøk vårt nettsted:',
+		copy		: 'Copyright &copy; $1. Alle rettigheter reservert.'
+	},
+
+	maximize : 'Maksimer',
+	minimize : 'Minimer',
 
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
-	},
-
-	resize : 'Drag to resize', // MISSING
+		anchor	: 'Anker',
+		flash	: 'Flash Animasjon',
+		div		: 'Sideskift',
+		unknown	: 'Ukjent objekt'
+	},
+
+	resize : 'Dra for å skalere',
 
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Velg farge',
+		options	:	'Color Options', // MISSING
+		highlight	: 'Merk',
+		selected	: 'Valgt',
+		clear		: 'Tøm'
+	},
+
+	toolbarCollapse	: 'Slå sammen verktøylinje',
+	toolbarExpand	: 'Vis verktøylinje'
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/nl.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/nl.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/nl.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Tekstverwerker, %1, druk op ALT 0 voor hulp.',
+
+	// ARIA descriptions.
+	toolbar	: 'Werkbalk',
+	editor	: 'Tekstverwerker',
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Formulier',
 		checkbox		: 'Aanvinkvakje',
-		radio		: 'Selectievakje',
+		radio			: 'Selectievakje',
 		textField		: 'Tekstveld',
 		textarea		: 'Tekstvak',
 		hiddenField		: 'Verborgen veld',
 		button			: 'Knop',
-		select	: 'Selectieveld',
+		select			: 'Selectieveld',
 		imageButton		: 'Afbeeldingsknop',
 		notSet			: '<niet ingevuld>',
@@ -89,12 +93,25 @@
 		ok				: 'OK',
 		cancel			: 'Annuleren',
+		close			: 'Sluiten',
+		preview			: 'Voorbeeld',
 		generalTab		: 'Algemeen',
 		advancedTab		: 'Geavanceerd',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
-		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
-		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		validateNumberFailed : 'Deze waarde is geen geldig getal.',
+		confirmNewPage	: 'Alle aangebrachte wijzigingen gaan verloren. Weet u zeker dat u een nieuwe pagina wilt openen?',
+		confirmCancel	: 'Enkele opties zijn gewijzigd. Weet u zeker dat u dit dialoogvenster wilt sluiten?',
+		options			: 'Opties',
+		target			: 'Doel',
+		targetNew		: 'Nieuw venster (_blank)',
+		targetTop		: 'Hele venster (_top)',
+		targetSelf		: 'Zelfde venster (_self)',
+		targetParent	: 'Origineel venster (_parent)',
 
 		// Put the voice-only part of the label in the span.
-		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+		unavailable		: '%1<span class="cke_accessibility">, niet beschikbaar</span>'
+	},
+
+	contextmenu :
+	{
+		options : 'Context menu opties'
 	},
 
@@ -103,5 +120,6 @@
 	{
 		toolbar		: 'Speciaal teken invoegen',
-		title		: 'Selecteer speciaal teken'
+		title		: 'Selecteer speciaal teken',
+		options : 'Speciale tekens opties'
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Link invoegen/wijzigen',
+		other 		: '<ander>',
 		menu		: 'Link wijzigen',
 		title		: 'Link',
@@ -117,20 +136,15 @@
 		advanced	: 'Geavanceerd',
 		type		: 'Linktype',
+		toUrl		: 'URL',
 		toAnchor	: 'Interne link in pagina',
 		toEmail		: 'E-mail',
-		target		: 'Doel',
-		targetNotSet	: '<niet ingevuld>',
-		targetFrame	: '<frame>',
-		targetPopup	: '<popup window>',
-		targetNew	: 'Nieuw venster (_blank)',
-		targetTop	: 'Hele venster (_top)',
-		targetSelf	: 'Zelfde venster (_self)',
-		targetParent	: 'Origineel venster (_parent)',
+		targetFrame		: '<frame>',
+		targetPopup		: '<popup window>',
 		targetFrameName	: 'Naam doelframe',
 		targetPopupName	: 'Naam popupvenster',
 		popupFeatures	: 'Instellingen popupvenster',
-		popupResizable	: 'Resizable', // MISSING
+		popupResizable	: 'Herschaalbaar',
 		popupStatusBar	: 'Statusbalk',
-		popupLocationBar	: 'Locatiemenu',
+		popupLocationBar: 'Locatiemenu',
 		popupToolbar	: 'Menubalk',
 		popupMenuBar	: 'Menubalk',
@@ -142,7 +156,6 @@
 		popupHeight		: 'Hoogte',
 		popupTop		: 'Positie boven',
-		id				: 'Id', // MISSING
+		id				: 'Id',
 		langDir			: 'Schrijfrichting',
-		langDirNotSet	: '<niet ingevuld>',
 		langDirLTR		: 'Links naar rechts (LTR)',
 		langDirRTL		: 'Rechts naar links (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -188,7 +224,7 @@
 		matchCase			: 'Hoofdlettergevoelig',
 		matchWord			: 'Hele woord moet voorkomen',
-		matchCyclic			: 'Match cyclic', // MISSING
+		matchCyclic			: 'Doorlopend zoeken',
 		replaceAll			: 'Alles vervangen',
-		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+		replaceSuccessMsg	: '%1 resulaten vervangen.'
 	},
 
@@ -204,5 +240,4 @@
 		border		: 'Breedte rand',
 		align		: 'Uitlijning',
-		alignNotSet	: '<Niet ingevoerd>',
 		alignLeft	: 'Links',
 		alignCenter	: 'Centreren',
@@ -211,21 +246,22 @@
 		widthPx		: 'pixels',
 		widthPc		: 'procent',
+		widthUnit	: 'eenheid breedte',
 		height		: 'Hoogte',
 		cellSpace	: 'Afstand tussen cellen',
-		cellPad		: 'Afstand vanaf rand cel',
+		cellPad		: 'Ruimte in de cel',
 		caption		: 'Naam',
 		summary		: 'Samenvatting',
-		headers		: 'Headers', // MISSING
-		headersNone		: 'None', // MISSING
-		headersColumn	: 'First column', // MISSING
-		headersRow		: 'First Row', // MISSING
-		headersBoth		: 'Both', // MISSING
-		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
-		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
-		invalidBorder	: 'Border size must be a number.', // MISSING
-		invalidWidth	: 'Table width must be a number.', // MISSING
-		invalidHeight	: 'Table height must be a number.', // MISSING
-		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
-		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+		headers		: 'Koppen',
+		headersNone		: 'Geen',
+		headersColumn	: 'Eerste kolom',
+		headersRow		: 'Eerste rij',
+		headersBoth		: 'Beide',
+		invalidRows		: 'Het aantal rijen moet een getal zijn groter dan 0.',
+		invalidCols		: 'Het aantal kolommen moet een getal zijn groter dan 0.',
+		invalidBorder	: 'De rand breedte moet een getal zijn.',
+		invalidWidth	: 'De tabel breedte moet een getal zijn.',
+		invalidHeight	: 'De tabel hoogte moet een getal zijn.',
+		invalidCellSpacing	: 'Afstand tussen cellen moet een getal zijn.',
+		invalidCellPadding	: 'Ruimte in de cel moet een getal zijn.',
 
 		cell :
@@ -240,26 +276,26 @@
 			splitHorizontal	: 'Splits cellen horizontaal',
 			splitVertical	: 'Splits cellen verticaal',
-			title			: 'Cell Properties', // MISSING
-			cellType		: 'Cell Type', // MISSING
-			rowSpan			: 'Rows Span', // MISSING
-			colSpan			: 'Columns Span', // MISSING
-			wordWrap		: 'Word Wrap', // MISSING
-			hAlign			: 'Horizontal Alignment', // MISSING
-			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
-			alignBaseline	: 'Baseline', // MISSING
-			bgColor			: 'Background Color', // MISSING
-			borderColor		: 'Border Color', // MISSING
-			data			: 'Data', // MISSING
-			header			: 'Header', // MISSING
-			yes				: 'Yes', // MISSING
-			no				: 'No', // MISSING
-			invalidWidth	: 'Cell width must be a number.', // MISSING
-			invalidHeight	: 'Cell height must be a number.', // MISSING
-			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
-			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			title			: 'Cel eigenschappen',
+			cellType		: 'Cel type',
+			rowSpan			: 'Rijen samenvoegen',
+			colSpan			: 'Kolommen samenvoegen',
+			wordWrap		: 'Automatische terugloop',
+			hAlign			: 'Horizontale uitlijning',
+			vAlign			: 'Verticale uitlijning',
+			alignTop		: 'Boven',
+			alignMiddle		: 'Midden',
+			alignBottom		: 'Onder',
+			alignBaseline	: 'Basislijn',
+			bgColor			: 'Achtergrondkleur',
+			borderColor		: 'Kleur rand',
+			data			: 'Inhoud',
+			header			: 'Kop',
+			yes				: 'Ja',
+			no				: 'Nee',
+			invalidWidth	: 'De celbreedte moet een getal zijn.',
+			invalidHeight	: 'De celhoogte moet een getal zijn.',
+			invalidRowSpan	: 'Rijen samenvoegen moet een heel getal zijn.',
+			invalidColSpan	: 'Kolommen samenvoegen moet een heel getal zijn.',
+			chooseColor		: 'Kies'
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Actie',
 		method		: 'Methode',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Doel',
-		targetNotSet	: '<niet ingevuld>',
-		targetNew	: 'Nieuw venster (_blank)',
-		targetTop	: 'Hele venster (_top)',
-		targetSelf	: 'Zelfde venster (_self)',
-		targetParent	: 'Origineel venster (_parent)'
+		encoding	: 'Codering'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Eigenschappen afbeeldingsknop',
 		menu		: 'Eigenschappen afbeelding',
-		infoTab	: 'Informatie afbeelding',
+		infoTab		: 'Informatie afbeelding',
 		btnUpload	: 'Naar server verzenden',
-		url		: 'URL',
-		upload	: 'Upload',
-		alt		: 'Alternatieve tekst',
+		upload		: 'Upload',
+		alt			: 'Alternatieve tekst',
 		width		: 'Breedte',
-		height	: 'Hoogte',
+		height		: 'Hoogte',
 		lockRatio	: 'Afmetingen vergrendelen',
+		unlockRatio	: 'Afmetingen ontgrendelen',
 		resetSize	: 'Afmetingen resetten',
-		border	: 'Rand',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
+		border		: 'Rand',
+		hSpace		: 'HSpace',
+		vSpace		: 'VSpace',
 		align		: 'Uitlijning',
 		alignLeft	: 'Links',
-		alignAbsBottom: 'Absoluut-onder',
-		alignAbsMiddle: 'Absoluut-midden',
-		alignBaseline	: 'Basislijn',
-		alignBottom	: 'Beneden',
-		alignMiddle	: 'Midden',
 		alignRight	: 'Rechts',
-		alignTextTop	: 'Boven tekst',
-		alignTop	: 'Boven',
-		preview	: 'Voorbeeld',
 		alertUrl	: 'Geef de URL van de afbeelding',
-		linkTab	: 'Link',
-		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
-		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		linkTab		: 'Link',
+		button2Img	: 'Wilt u de geselecteerde afbeeldingsknop vervangen door een eenvoudige afbeelding?',
+		img2Button	: 'Wilt u de geselecteerde afbeelding vervangen door een afbeeldingsknop?',
+		urlMissing	: 'De URL naar de afbeelding ontbreekt.',
+		validateWidth	: 'Breedte moet een heel nummer zijn.',
+		validateHeight	: 'Hoogte moet een heel nummer zijn.',
+		validateBorder	: 'Rand moet een heel nummer zijn.',
+		validateHSpace	: 'HSpace moet een heel nummer zijn.',
+		validateVSpace	: 'VSpace moet een heel nummer zijn.'
 	},
 
@@ -406,50 +433,50 @@
 	{
 		properties		: 'Eigenschappen Flash',
-		propertiesTab	: 'Properties', // MISSING
-		title		: 'Eigenschappen Flash',
-		chkPlay		: 'Automatisch afspelen',
-		chkLoop		: 'Herhalen',
-		chkMenu		: 'Flashmenu\'s inschakelen',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Schaal',
+		propertiesTab	: 'Eigenschappen',
+		title			: 'Eigenschappen Flash',
+		chkPlay			: 'Automatisch afspelen',
+		chkLoop			: 'Herhalen',
+		chkMenu			: 'Flashmenu\'s inschakelen',
+		chkFull			: 'Schermvullend toestaan',
+ 		scale			: 'Schaal',
 		scaleAll		: 'Alles tonen',
 		scaleNoBorder	: 'Geen rand',
 		scaleFit		: 'Precies passend',
-		access			: 'Script Access', // MISSING
-		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Uitlijning',
-		alignLeft	: 'Links',
-		alignAbsBottom: 'Absoluut-onder',
-		alignAbsMiddle: 'Absoluut-midden',
+		access			: 'Script toegang',
+		accessAlways	: 'Altijd',
+		accessSameDomain: 'Zelfde domeinnaam',
+		accessNever		: 'Nooit',
+		align			: 'Uitlijning',
+		alignLeft		: 'Links',
+		alignAbsBottom	: 'Absoluut-onder',
+		alignAbsMiddle	: 'Absoluut-midden',
 		alignBaseline	: 'Basislijn',
-		alignBottom	: 'Beneden',
-		alignMiddle	: 'Midden',
-		alignRight	: 'Rechts',
+		alignBottom		: 'Beneden',
+		alignMiddle		: 'Midden',
+		alignRight		: 'Rechts',
 		alignTextTop	: 'Boven tekst',
-		alignTop	: 'Boven',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Achtergrondkleur',
-		width	: 'Breedte',
-		height	: 'Hoogte',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
-		validateSrc : 'Geef de link van de URL',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Boven',
+		quality			: 'Kwaliteit',
+		qualityBest		: 'Beste',
+		qualityHigh		: 'Hoog',
+		qualityAutoHigh	: 'Automatisch hoog',
+		qualityMedium	: 'Gemiddeld',
+		qualityAutoLow	: 'Automatisch laag',
+		qualityLow		: 'Laag',
+		windowModeWindow: 'Venster',
+		windowModeOpaque: 'Ondoorzichtig',
+		windowModeTransparent : 'Doorzichtig',
+		windowMode		: 'Venster modus',
+		flashvars		: 'Variabelen voor Flash',
+		bgcolor			: 'Achtergrondkleur',
+		width			: 'Breedte',
+		height			: 'Hoogte',
+		hSpace			: 'HSpace',
+		vSpace			: 'VSpace',
+		validateSrc		: 'Geef de link van de URL',
+		validateWidth	: 'De breedte moet een getal zijn.',
+		validateHeight	: 'De hoogte moet een getal zijn.',
+		validateHSpace	: 'De HSpace moet een getal zijn.',
+		validateVSpace	: 'De VSpace moet een getal zijn.'
 	},
 
@@ -458,7 +485,7 @@
 	{
 		toolbar			: 'Spellingscontrole',
-		title			: 'Spell Check', // MISSING
-		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
-		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		title			: 'Spellingscontrole',
+		notAvailable	: 'Excuses, deze dienst is momenteel niet beschikbaar.',
+		errorLoading	: 'Er is een fout opgetreden bij het laden van de diesnt: %s.',
 		notInDic		: 'Niet in het woordenboek',
 		changeTo		: 'Wijzig in',
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Smiley',
-		title	: 'Smiley invoegen'
+		title	: 'Smiley invoegen',
+		options : 'Smiley opties'
 	},
 
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
-	},
-
-	numberedlist : 'Genummerde lijst',
-	bulletedlist : 'Opsomming',
-	indent : 'Inspringen vergroten',
-	outdent : 'Inspringen verkleinen',
+		eleLabel : 'Elementenpad',
+		eleTitle : '%1 element'
+	},
+
+	numberedlist	: 'Genummerde lijst',
+	bulletedlist	: 'Opsomming',
+	indent			: 'Inspringen vergroten',
+	outdent			: 'Inspringen verkleinen',
 
 	justify :
 	{
-		left : 'Links uitlijnen',
-		center : 'Centreren',
-		right : 'Rechts uitlijnen',
-		block : 'Uitvullen'
+		left	: 'Links uitlijnen',
+		center	: 'Centreren',
+		right	: 'Rechts uitlijnen',
+		block	: 'Uitvullen'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Plakken',
-		cutError	: 'De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl+X van het toetsenbord.',
-		copyError	: 'De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl+C van het toetsenbord.',
-		pasteMsg	: 'Plak de tekst in het volgende vak gebruik makend van uw toetsenbord (<strong>Ctrl+V</strong>) en klik op <strong>OK</strong>.',
-		securityMsg	: 'Door de beveiligingsinstellingen van uw browser is het niet mogelijk om direct vanuit het klembord in de editor te plakken. Middels opnieuw plakken in dit venster kunt u de tekst alsnog plakken in de editor.'
+		cutError	: 'De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl/Cmd+X van het toetsenbord.',
+		copyError	: 'De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl/Cmd+C van het toetsenbord.',
+		pasteMsg	: 'Plak de tekst in het volgende vak gebruik makend van uw toetsenbord (<strong>Ctrl/Cmd+V</strong>) en klik op <strong>OK</strong>.',
+		securityMsg	: 'Door de beveiligingsinstellingen van uw browser is het niet mogelijk om direct vanuit het klembord in de editor te plakken. Middels opnieuw plakken in dit venster kunt u de tekst alsnog plakken in de editor.',
+		pasteArea	: 'Plakgebied'
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Plakken als Word-gegevens',
-		title : 'Plakken als Word-gegevens',
-		advice : 'Plak de tekst in het volgende vak gebruik makend van uw toetsenbord (<strong>Ctrl+V</strong>) en klik op <strong>OK</strong>.',
-		ignoreFontFace : 'Negeer "Font Face"-definities',
-		removeStyle : 'Verwijder "Style"-definities'
+		confirmCleanup	: 'De tekst die u plakte lijkt gekopieerd te zijn vanuit Word. Wilt u de tekst opschonen voordat deze geplakt wordt?',
+		toolbar			: 'Plakken als Word-gegevens',
+		title			: 'Plakken als Word-gegevens',
+		error			: 'Het was niet mogelijk om de geplakte tekst op te schonen door een interne fout'
 	},
 
 	pasteText :
 	{
-		button : 'Plakken als platte tekst',
-		title : 'Plakken als platte tekst'
+		button	: 'Plakken als platte tekst',
+		title	: 'Plakken als platte tekst'
 	},
 
 	templates :
 	{
-		button : 'Sjablonen',
-		title : 'Inhoud sjabonen',
-		insertOption: 'Vervang de huidige inhoud',
-		selectPromptMsg: 'Selecteer het sjabloon dat in de editor geopend moet worden (de actuele inhoud gaat verloren):',
-		emptyListMsg : '(Geen sjablonen gedefinieerd)'
+		button			: 'Sjablonen',
+		title			: 'Inhoud sjabonen',
+		options : 'Template opties',
+		insertOption	: 'Vervang de huidige inhoud',
+		selectPromptMsg	: 'Selecteer het sjabloon dat in de editor geopend moet worden (de actuele inhoud gaat verloren):',
+		emptyListMsg	: '(Geen sjablonen gedefinieerd)'
 	},
 
@@ -540,146 +570,178 @@
 	stylesCombo :
 	{
-		label : 'Stijl',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Stijl',
+		panelTitle	: 'Opmaakstijlen',
+		panelTitle1	: 'Blok stijlen',
+		panelTitle2	: 'In-line stijlen',
+		panelTitle3	: 'Object stijlen'
 	},
 
 	format :
 	{
-		label : 'Opmaak',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Opmaak',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normaal',
-		tag_pre : 'Met opmaak',
-		tag_address : 'Adres',
-		tag_h1 : 'Kop 1',
-		tag_h2 : 'Kop 2',
-		tag_h3 : 'Kop 3',
-		tag_h4 : 'Kop 4',
-		tag_h5 : 'Kop 5',
-		tag_h6 : 'Kop 6',
-		tag_div : 'Normaal (DIV)'
-	},
+		label		: 'Opmaak',
+		panelTitle	: 'Opmaak',
+
+		tag_p		: 'Normaal',
+		tag_pre		: 'Met opmaak',
+		tag_address	: 'Adres',
+		tag_h1		: 'Kop 1',
+		tag_h2		: 'Kop 2',
+		tag_h3		: 'Kop 3',
+		tag_h4		: 'Kop 4',
+		tag_h5		: 'Kop 5',
+		tag_h6		: 'Kop 6',
+		tag_div		: 'Normaal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Div aanmaken',
+		toolbar				: 'Div aanmaken',
+		cssClassInputLabel	: 'Stylesheet klassen',
+		styleSelectLabel	: 'Stijl',
+		IdInputLabel		: 'Id',
+		languageCodeInputLabel	: ' Taalcode',
+		inlineStyleInputLabel	: 'Inline stijl',
+		advisoryTitleInputLabel	: 'informatieve titel',
+		langDirLabel		: 'Schrijfrichting',
+		langDirLTRLabel		: 'Links naar rechts (LTR)',
+		langDirRTLLabel		: 'Rechts naar links (RTL)',
+		edit				: 'Div wijzigen',
+		remove				: 'Div verwijderen'
+  	},
 
 	font :
 	{
-		label : 'Lettertype',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Lettertype',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Lettertype',
+		voiceLabel	: 'Lettertype',
+		panelTitle	: 'Lettertype'
 	},
 
 	fontSize :
 	{
-		label : 'Grootte',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Grootte',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Lettergrootte',
+		voiceLabel	: 'Lettergrootte',
+		panelTitle	: 'Lettergrootte'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Tekstkleur',
-		bgColorTitle : 'Achtergrondkleur',
-		auto : 'Automatisch',
-		more : 'Meer kleuren...'
+		textColorTitle	: 'Tekstkleur',
+		bgColorTitle	: 'Achtergrondkleur',
+		panelTitle		: 'Kleuren',
+		auto			: 'Automatisch',
+		more			: 'Meer kleuren...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
+		'000' : 'Zwart',
+		'800000' : 'Kastanjebruin',
+		'8B4513' : 'Chocoladebruin',
+		'2F4F4F' : 'Donkerleigrijs',
+		'008080' : 'Blauwgroen',
+		'000080' : 'Marine',
 		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
+		'696969' : 'Donkergrijs',
+		'B22222' : 'Baksteen',
+		'A52A2A' : 'Bruin',
+		'DAA520' : 'Donkergeel',
+		'006400' : 'Donkergroen',
 		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
+		'0000CD' : 'Middenblauw',
+		'800080' : 'Paars',
+		'808080' : 'Grijs',
+		'F00' : 'Rood',
+		'FF8C00' : 'Donkeroranje',
+		'FFD700' : 'Goud',
+		'008000' : 'Groen',
+		'0FF' : 'Cyaan',
+		'00F' : 'Blauw',
 		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'A9A9A9' : 'Donkergrijs',
+		'FFA07A' : 'Lichtzalm',
+		'FFA500' : 'Oranje',
+		'FFFF00' : 'Geel',
+		'00FF00' : 'Felgroen',
+		'AFEEEE' : 'Lichtturquoise',
+		'ADD8E6' : 'Lichtblauw',
+		'DDA0DD' : 'Pruim',
+		'D3D3D3' : 'Lichtgrijs',
+		'FFF0F5' : 'Linnen',
+		'FAEBD7' : 'Ivoor',
+		'FFFFE0' : 'Lichtgeel',
+		'F0FFF0' : 'Honingdauw',
+		'F0FFFF' : 'Azuur',
+		'F0F8FF' : 'Licht hemelsblauw',
+		'E6E6FA' : 'Lavendel',
+		'FFF' : 'Wit'
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Controleer de spelling tijdens het typen',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'SCAYT inschakelen',
+		disable			: 'SCAYT uitschakelen',
+		about			: 'Over SCAYT',
+		toggle			: 'SCAYT in/uitschakelen',
+		options			: 'Opties',
+		langs			: 'Talen',
+		moreSuggestions	: 'Meer suggesties',
+		ignore			: 'Negeren',
+		ignoreAll		: 'Alles negeren',
+		addWord			: 'Woord toevoegen',
+		emptyDic		: 'De naam van het woordenboek mag niet leeg zijn.',
+
+		optionsTab		: 'Opties',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Talen',
+
+		dictionariesTab	: 'Woordenboeken',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'Over'
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
-	},
-
-	maximize : 'Maximize', // MISSING
-	minimize : 'Minimize', // MISSING
+		title		: 'Over CKEditor',
+		dlgTitle	: 'Over CKEditor',
+		moreInfo	: 'Voor licentie informatie, bezoek onze website:',
+		copy		: 'Copyright &copy; $1. Alle rechten voorbehouden.'
+	},
+
+	maximize : 'Maximaliseren',
+	minimize : 'Minimaliseren',
 
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
-	},
-
-	resize : 'Drag to resize', // MISSING
+		anchor	: 'Anker',
+		flash	: 'Flash animatie',
+		div		: 'Pagina einde',
+		unknown	: 'Onbekend object'
+	},
+
+	resize : 'Sleep om te herschalen',
 
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Selecteer kleur',
+		options	:	'Color Options', // MISSING
+		highlight	: 'Actief',
+		selected	: 'Geselecteerd',
+		clear		: 'Wissen'
+	},
+
+	toolbarCollapse	: 'Werkbalk inklappen',
+	toolbarExpand	: 'Werkbalk uitklappen'
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/no.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/no.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/no.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rikteksteditor, %1, trykk ALT 0 for hjelp.',
+
+	// ARIA descriptions.
+	toolbar	: 'Verktøylinje',
+	editor	: 'Rikteksteditor',
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Skjema',
 		checkbox		: 'Avmerkingsboks',
-		radio		: 'Alternativknapp',
+		radio			: 'Alternativknapp',
 		textField		: 'Tekstboks',
 		textarea		: 'Tekstområde',
 		hiddenField		: 'Skjult felt',
 		button			: 'Knapp',
-		select	: 'Rullegardinliste',
+		select			: 'Rullegardinliste',
 		imageButton		: 'Bildeknapp',
 		notSet			: '<ikke satt>',
@@ -89,12 +93,25 @@
 		ok				: 'OK',
 		cancel			: 'Avbryt',
+		close			: 'Lukk',
+		preview			: 'Forhåndsvis',
 		generalTab		: 'Generelt',
 		advancedTab		: 'Avansert',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
-		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
-		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		validateNumberFailed : 'Denne verdien er ikke ett nummer',
+		confirmNewPage	: 'Alle endringer som er gjort i dette innholdet vil bli tapt. Er du sikker på at du vil laste en ny side?',
+		confirmCancel	: 'Noen av valgene har blitt endret. Er du sikker på at du vil lukke dialogen?',
+		options			: 'Valg',
+		target			: 'Mål',
+		targetNew		: 'Nytt vindu (_blank)',
+		targetTop		: 'Hele vindu (_top)',
+		targetSelf		: 'Samme vindu (_self)',
+		targetParent	: 'Foreldrevindu (_parent)',
 
 		// Put the voice-only part of the label in the span.
-		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+		unavailable		: '%1<span class="cke_accessibility">, utilgjenglig</span>'
+	},
+
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
 	},
 
@@ -103,5 +120,6 @@
 	{
 		toolbar		: 'Sett inn spesielt tegn',
-		title		: 'Velg spesielt tegn'
+		title		: 'Velg spesielt tegn',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Sett inn/Rediger lenke',
+		other 		: '<other>', // MISSING
 		menu		: 'Rediger lenke',
 		title		: 'Lenke',
@@ -117,20 +136,15 @@
 		advanced	: 'Avansert',
 		type		: 'Lenketype',
+		toUrl		: 'URL',
 		toAnchor	: 'Lenke til anker i teksten',
 		toEmail		: 'E-post',
-		target		: 'Mål',
-		targetNotSet	: '<ikke satt>',
-		targetFrame	: '<ramme>',
-		targetPopup	: '<popup vindu>',
-		targetNew	: 'Nytt vindu (_blank)',
-		targetTop	: 'Hele vindu (_top)',
-		targetSelf	: 'Samme vindu (_self)',
-		targetParent	: 'Foreldrevindu (_parent)',
+		targetFrame		: '<ramme>',
+		targetPopup		: '<popup vindu>',
 		targetFrameName	: 'Målramme',
 		targetPopupName	: 'Navn på popup-vindus',
 		popupFeatures	: 'Egenskaper for popup-vindu',
-		popupResizable	: 'Resizable', // MISSING
+		popupResizable	: 'Skalérbar',
 		popupStatusBar	: 'Statuslinje',
-		popupLocationBar	: 'Adresselinje',
+		popupLocationBar: 'Adresselinje',
 		popupToolbar	: 'Verktøylinje',
 		popupMenuBar	: 'Menylinje',
@@ -142,7 +156,6 @@
 		popupHeight		: 'Høyde',
 		popupTop		: 'Topp-posisjon',
-		id				: 'Id', // MISSING
+		id				: 'Id',
 		langDir			: 'Språkretning',
-		langDirNotSet	: '<ikke satt>',
 		langDirLTR		: 'Venstre til høyre (VTH)',
 		langDirRTL		: 'Høyre til venstre (HTV)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -188,7 +224,7 @@
 		matchCase			: 'Skill mellom store og små bokstaver',
 		matchWord			: 'Bare hele ord',
-		matchCyclic			: 'Match cyclic', // MISSING
+		matchCyclic			: 'Søk i hele dokumentet',
 		replaceAll			: 'Erstatt alle',
-		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+		replaceSuccessMsg	: '%1 tilfelle erstattet.'
 	},
 
@@ -204,5 +240,4 @@
 		border		: 'Rammestørrelse',
 		align		: 'Justering',
-		alignNotSet	: '<Ikke satt>',
 		alignLeft	: 'Venstre',
 		alignCenter	: 'Midtjuster',
@@ -211,4 +246,5 @@
 		widthPx		: 'piksler',
 		widthPc		: 'prosent',
+		widthUnit	: 'Bredde-enhet',
 		height		: 'Høyde',
 		cellSpace	: 'Cellemarg',
@@ -216,16 +252,16 @@
 		caption		: 'Tittel',
 		summary		: 'Sammendrag',
-		headers		: 'Headers', // MISSING
-		headersNone		: 'None', // MISSING
-		headersColumn	: 'First column', // MISSING
-		headersRow		: 'First Row', // MISSING
-		headersBoth		: 'Both', // MISSING
-		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
-		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
-		invalidBorder	: 'Border size must be a number.', // MISSING
-		invalidWidth	: 'Table width must be a number.', // MISSING
-		invalidHeight	: 'Table height must be a number.', // MISSING
-		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
-		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+		headers		: 'Overskrifter',
+		headersNone		: 'Ingen',
+		headersColumn	: 'Første kolonne',
+		headersRow		: 'Første rad',
+		headersBoth		: 'Begge',
+		invalidRows		: 'Antall rader må være ett tall større enn 0.',
+		invalidCols		: 'Antall kolonner må være ett tall større enn 0.',
+		invalidBorder	: 'Rammestørrelse må være ett tall.',
+		invalidWidth	: 'Tabellbredde må være ett nummer.',
+		invalidHeight	: 'Tabellhøyde må være ett nummer.',
+		invalidCellSpacing	: 'Cellemellomrom må være ett nummer.',
+		invalidCellPadding	: 'Cellefyll må være ett nummer.',
 
 		cell :
@@ -240,26 +276,26 @@
 			splitHorizontal	: 'Del celle horisontalt',
 			splitVertical	: 'Del celle vertikalt',
-			title			: 'Cell Properties', // MISSING
-			cellType		: 'Cell Type', // MISSING
-			rowSpan			: 'Rows Span', // MISSING
-			colSpan			: 'Columns Span', // MISSING
-			wordWrap		: 'Word Wrap', // MISSING
-			hAlign			: 'Horizontal Alignment', // MISSING
-			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
-			alignBaseline	: 'Baseline', // MISSING
-			bgColor			: 'Background Color', // MISSING
-			borderColor		: 'Border Color', // MISSING
-			data			: 'Data', // MISSING
-			header			: 'Header', // MISSING
-			yes				: 'Yes', // MISSING
-			no				: 'No', // MISSING
-			invalidWidth	: 'Cell width must be a number.', // MISSING
-			invalidHeight	: 'Cell height must be a number.', // MISSING
-			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
-			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			title			: 'Celleegenskaper',
+			cellType		: 'Celletype',
+			rowSpan			: 'Radspenn',
+			colSpan			: 'Kolonnespenn',
+			wordWrap		: 'Tekstbrytning',
+			hAlign			: 'Horisontal justering',
+			vAlign			: 'Vertikal justering',
+			alignTop		: 'Topp',
+			alignMiddle		: 'Midten',
+			alignBottom		: 'Bunnen',
+			alignBaseline	: 'Grunnlinje',
+			bgColor			: 'Bakgrunnsfarge',
+			borderColor		: 'Rammefarge',
+			data			: 'Data',
+			header			: 'Overskrift',
+			yes				: 'Ja',
+			no				: 'Nei',
+			invalidWidth	: 'Cellebredde må være ett nummer',
+			invalidHeight	: 'Cellehøyde må være ett nummer',
+			invalidRowSpan	: 'Radspenn må være ett nummer.',
+			invalidColSpan	: 'Kolonnespenn må være ett nummer.',
+			chooseColor		: 'Velg'
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Handling',
 		method		: 'Metode',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Mål',
-		targetNotSet	: '<ikke satt>',
-		targetNew	: 'Nytt vindu (_blank)',
-		targetTop	: 'Hele vindu (_top)',
-		targetSelf	: 'Samme vindu (_self)',
-		targetParent	: 'Foreldrevindu (_parent)'
+		encoding	: 'Encoding'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Egenskaper for bildeknapp',
 		menu		: 'Bildeegenskaper',
-		infoTab	: 'Bildeinformasjon',
+		infoTab		: 'Bildeinformasjon',
 		btnUpload	: 'Send det til serveren',
-		url		: 'URL',
-		upload	: 'Last opp',
-		alt		: 'Alternativ tekst',
+		upload		: 'Last opp',
+		alt			: 'Alternativ tekst',
 		width		: 'Bredde',
-		height	: 'Høyde',
+		height		: 'Høyde',
 		lockRatio	: 'Lås forhold',
+		unlockRatio	: 'Ikke lås forhold',
 		resetSize	: 'Tilbakestill størrelse',
-		border	: 'Ramme',
-		hSpace	: 'HMarg',
-		vSpace	: 'VMarg',
+		border		: 'Ramme',
+		hSpace		: 'HMarg',
+		vSpace		: 'VMarg',
 		align		: 'Juster',
 		alignLeft	: 'Venstre',
-		alignAbsBottom: 'Abs bunn',
-		alignAbsMiddle: 'Abs midten',
-		alignBaseline	: 'Bunnlinje',
-		alignBottom	: 'Bunn',
-		alignMiddle	: 'Midten',
 		alignRight	: 'Høyre',
-		alignTextTop	: 'Tekst topp',
-		alignTop	: 'Topp',
-		preview	: 'Forhåndsvis',
 		alertUrl	: 'Vennligst skriv bilde-urlen',
-		linkTab	: 'Lenke',
-		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
-		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		linkTab		: 'Lenke',
+		button2Img	: 'Vil du endre den valgte bildeknappen til ett vanlig bilde?',
+		img2Button	: 'Vil du endre det valgte bildet til en bildeknapp?',
+		urlMissing	: 'Bildets adresse mangler.',
+		validateWidth	: 'Bredde må være ett nummer.',
+		validateHeight	: 'Høyde må være ett nummer.',
+		validateBorder	: 'Ramme må være ett nummer.',
+		validateHSpace	: 'HSpace må være ett nummer.',
+		validateVSpace	: 'VSpace må være ett nummer.'
 	},
 
@@ -406,50 +433,50 @@
 	{
 		properties		: 'Egenskaper for Flash-objekt',
-		propertiesTab	: 'Properties', // MISSING
-		title		: 'Flash-egenskaper',
-		chkPlay		: 'Autospill',
-		chkLoop		: 'Loop',
-		chkMenu		: 'Slå på Flash-meny',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Skaler',
+		propertiesTab	: 'Egenskaper',
+		title			: 'Flash-egenskaper',
+		chkPlay			: 'Autospill',
+		chkLoop			: 'Loop',
+		chkMenu			: 'Slå på Flash-meny',
+		chkFull			: 'Tillat fullskjerm',
+ 		scale			: 'Skaler',
 		scaleAll		: 'Vis alt',
 		scaleNoBorder	: 'Ingen ramme',
 		scaleFit		: 'Skaler til å passe',
-		access			: 'Script Access', // MISSING
-		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Juster',
-		alignLeft	: 'Venstre',
-		alignAbsBottom: 'Abs bunn',
-		alignAbsMiddle: 'Abs midten',
+		access			: 'Scripttilgang',
+		accessAlways	: 'Alltid',
+		accessSameDomain: 'Samme domene',
+		accessNever		: 'Aldri',
+		align			: 'Juster',
+		alignLeft		: 'Venstre',
+		alignAbsBottom	: 'Abs bunn',
+		alignAbsMiddle	: 'Abs midten',
 		alignBaseline	: 'Bunnlinje',
-		alignBottom	: 'Bunn',
-		alignMiddle	: 'Midten',
-		alignRight	: 'Høyre',
+		alignBottom		: 'Bunn',
+		alignMiddle		: 'Midten',
+		alignRight		: 'Høyre',
 		alignTextTop	: 'Tekst topp',
-		alignTop	: 'Topp',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Bakgrunnsfarge',
-		width	: 'Bredde',
-		height	: 'Høyde',
-		hSpace	: 'HMarg',
-		vSpace	: 'VMarg',
-		validateSrc : 'Vennligst skriv inn lenkens url',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Topp',
+		quality			: 'Kvalitet',
+		qualityBest		: 'Best',
+		qualityHigh		: 'Høy',
+		qualityAutoHigh	: 'Auto Høy',
+		qualityMedium	: 'Medium',
+		qualityAutoLow	: 'Auto Lav',
+		qualityLow		: 'Lav',
+		windowModeWindow: 'Vindu',
+		windowModeOpaque: 'Opaque',
+		windowModeTransparent : 'Gjennomsiktig',
+		windowMode		: 'Vindu modus',
+		flashvars		: 'Variabler for flash',
+		bgcolor			: 'Bakgrunnsfarge',
+		width			: 'Bredde',
+		height			: 'Høyde',
+		hSpace			: 'HMarg',
+		vSpace			: 'VMarg',
+		validateSrc		: 'Vennligst skriv inn lenkens url',
+		validateWidth	: 'Bredde må være ett nummer.',
+		validateHeight	: 'Høyde må være ett nummer',
+		validateHSpace	: 'HSpace må være ett nummer.',
+		validateVSpace	: 'VSpace må være ett nummer.'
 	},
 
@@ -458,7 +485,7 @@
 	{
 		toolbar			: 'Stavekontroll',
-		title			: 'Spell Check', // MISSING
-		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
-		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		title			: 'Stavekontroll',
+		notAvailable	: 'Beklager, tjenesten er utilgjenglig nå.',
+		errorLoading	: 'Feil under lasting av applicationstjeneste tjener: %s.',
 		notInDic		: 'Ikke i ordboken',
 		changeTo		: 'Endre til',
@@ -480,26 +507,28 @@
 	{
 		toolbar	: 'Smil',
-		title	: 'Sett inn smil'
+		title	: 'Sett inn smil',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
-	},
-
-	numberedlist : 'Nummerert liste',
-	bulletedlist : 'Uordnet liste',
-	indent : 'Øk nivå',
-	outdent : 'Senk nivå',
+		eleLabel : 'Element-sti',
+		eleTitle : '%1 element'
+	},
+
+	numberedlist	: 'Nummerert liste',
+	bulletedlist	: 'Uordnet liste',
+	indent			: 'Øk nivå',
+	outdent			: 'Senk nivå',
 
 	justify :
 	{
-		left : 'Venstrejuster',
-		center : 'Midtjuster',
-		right : 'Høyrejuster',
-		block : 'Blokkjuster'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: 'Venstrejuster',
+		center	: 'Midtjuster',
+		right	: 'Høyrejuster',
+		block	: 'Blokkjuster'
+	},
+
+	blockquote : 'Blockquote',
 
 	clipboard :
@@ -509,177 +538,210 @@
 		copyError	: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).',
 		pasteMsg	: 'Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.',
-		securityMsg	: 'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.'
+		securityMsg	: 'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.',
+		pasteArea	: 'Innlimingsområde'
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Lim inn fra Word',
-		title : 'Lim inn fra Word',
-		advice : 'Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Fjern skrifttyper',
-		removeStyle : 'Fjern stildefinisjoner'
+		confirmCleanup	: 'Teksten du limer inn ser ut til å være kopiert fra Word. Vil du renske den før du limer den inn?',
+		toolbar			: 'Lim inn fra Word',
+		title			: 'Lim inn fra Word',
+		error			: 'Det var ikke mulig å renske den innlimte teksten på grunn av en intern feil'
 	},
 
 	pasteText :
 	{
-		button : 'Lim inn som ren tekst',
-		title : 'Lim inn som ren tekst'
+		button	: 'Lim inn som ren tekst',
+		title	: 'Lim inn som ren tekst'
 	},
 
 	templates :
 	{
-		button : 'Maler',
-		title : 'Innholdsmaler',
-		insertOption: 'Erstatt faktisk innold',
-		selectPromptMsg: 'Velg malen du vil åpne<br>(innholdet du har skrevet blir tapt!):',
-		emptyListMsg : '(Ingen maler definert)'
-	},
-
-	showBlocks : 'Show Blocks', // MISSING
+		button			: 'Maler',
+		title			: 'Innholdsmaler',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Erstatt faktisk innold',
+		selectPromptMsg	: 'Velg malen du vil åpne<br>(innholdet du har skrevet blir tapt!):',
+		emptyListMsg	: '(Ingen maler definert)'
+	},
+
+	showBlocks : 'Vis blokker',
 
 	stylesCombo :
 	{
-		label : 'Stil',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Stil',
+		panelTitle	: 'Stilformater',
+		panelTitle1	: 'Blokkstiler',
+		panelTitle2	: 'Inlinestiler',
+		panelTitle3	: 'Objektstiler'
 	},
 
 	format :
 	{
-		label : 'Format',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Format',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatert',
-		tag_address : 'Adresse',
-		tag_h1 : 'Tittel 1',
-		tag_h2 : 'Tittel 2',
-		tag_h3 : 'Tittel 3',
-		tag_h4 : 'Tittel 4',
-		tag_h5 : 'Tittel 5',
-		tag_h6 : 'Tittel 6',
-		tag_div : 'Normal (DIV)'
-	},
+		label		: 'Format',
+		panelTitle	: 'Format',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatert',
+		tag_address	: 'Adresse',
+		tag_h1		: 'Tittel 1',
+		tag_h2		: 'Tittel 2',
+		tag_h3		: 'Tittel 3',
+		tag_h4		: 'Tittel 4',
+		tag_h5		: 'Tittel 5',
+		tag_h6		: 'Tittel 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Sett inn Div Container',
+		toolbar				: 'Sett inn Div Container',
+		cssClassInputLabel	: 'Stilark-klasser',
+		styleSelectLabel	: 'Stil',
+		IdInputLabel		: 'Id',
+		languageCodeInputLabel	: ' Språk-kode',
+		inlineStyleInputLabel	: 'Inlinestiler',
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Språkretning',
+		langDirLTRLabel		: 'Venstre til høyre (VTH)',
+		langDirRTLLabel		: 'Høyre til venstre (HTV)',
+		edit				: 'Rediger Div',
+		remove				: 'Fjern Div'
+  	},
 
 	font :
 	{
-		label : 'Skrift',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Skrift',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Skrift',
+		voiceLabel	: 'Font',
+		panelTitle	: 'Skrift'
 	},
 
 	fontSize :
 	{
-		label : 'Størrelse',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Størrelse',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Størrelse',
+		voiceLabel	: 'Font Størrelse',
+		panelTitle	: 'Størrelse'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Tekstfarge',
-		bgColorTitle : 'Bakgrunnsfarge',
-		auto : 'Automatisk',
-		more : 'Flere farger...'
+		textColorTitle	: 'Tekstfarge',
+		bgColorTitle	: 'Bakgrunnsfarge',
+		panelTitle		: 'Farger',
+		auto			: 'Automatisk',
+		more			: 'Flere farger...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Svart',
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Marine',
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Svak grå',
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brun',
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Mørk grå',
+		'40E0D0' : 'Turkis',
+		'0000CD' : 'Medium Blå',
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Grå',
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Mørk oransje',
+		'FFD700' : 'gull',
+		'008000' : 'Grønn',
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blå',
+		'EE82EE' : 'Fiolett',
+		'A9A9A9' : 'Mørk grå',
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Oransje',
+		'FFFF00' : 'gul',
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Lys Blå',
+		'DDA0DD' : 'Plomme',
+		'D3D3D3' : 'Lys grå',
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antikk-hvit',
+		'FFFFE0' : 'Lys gul',
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'Hvit'
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Stavekontroll mens du skriver',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Slå på SCAYT',
+		disable			: 'Slå av SCAYT',
+		about			: 'Om SCAYT',
+		toggle			: 'Veksle SCAYT',
+		options			: 'Valg',
+		langs			: 'Språk',
+		moreSuggestions	: 'Flere forslag',
+		ignore			: 'Ignorer',
+		ignoreAll		: 'Ignorer Alle',
+		addWord			: 'Legg til ord',
+		emptyDic		: 'Ordboknavn skal ikke være tom',
+
+		optionsTab		: 'Valg',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Språk',
+
+		dictionariesTab	: 'Ordbøker',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'Om'
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
-	},
-
-	maximize : 'Maximize', // MISSING
-	minimize : 'Minimize', // MISSING
+		title		: 'Om CKEditor',
+		dlgTitle	: 'Om CKEditor',
+		moreInfo	: 'For lisensieringsinformasjon vennligst besøk vårt nettsted:',
+		copy		: 'Copyright &copy; $1. Alle rettigheter reservert.'
+	},
+
+	maximize : 'Maksimer',
+	minimize : 'Minimer',
 
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
-	},
-
-	resize : 'Drag to resize', // MISSING
+		anchor	: 'Anker',
+		flash	: 'Flash Animasjon',
+		div		: 'Sideskift',
+		unknown	: 'Ukjent objekt'
+	},
+
+	resize : 'Dra for å skalere',
 
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Velg farge',
+		options	:	'Color Options', // MISSING
+		highlight	: 'Merk',
+		selected	: 'Valgt',
+		clear		: 'Tøm'
+	},
+
+	toolbarCollapse	: 'Slå sammen verktøylinje',
+	toolbarExpand	: 'Vis verktøylinje'
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/pl.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/pl.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/pl.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Wzbogacony edytor treści, %1',
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Formularz',
 		checkbox		: 'Pole wyboru (checkbox)',
-		radio		: 'Pole wyboru (radio)',
+		radio			: 'Pole wyboru (radio)',
 		textField		: 'Pole tekstowe',
 		textarea		: 'Obszar tekstowy',
 		hiddenField		: 'Pole ukryte',
 		button			: 'Przycisk',
-		select	: 'Lista wyboru',
+		select			: 'Lista wyboru',
 		imageButton		: 'Przycisk-obrazek',
 		notSet			: '<nie ustawione>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Anuluj',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'Ogólne',
 		advancedTab		: 'Zaawansowane',
-		validateNumberFailed	: 'Ta wartość nie jest liczbą.',
-		confirmNewPage	: 'Wszystkie niezapisane zmiany zostaną utracone. Czy na pewno wczytać nową stronę ?',
-		confirmCancel	: 'Pewne opcje zostały zmienione. Czy na pewno zamknąć okno dialogowe ?',
+		validateNumberFailed : 'Ta wartość nie jest liczbą.',
+		confirmNewPage	: 'Wszystkie niezapisane zmiany zostaną utracone. Czy na pewno wczytać nową stronę?',
+		confirmCancel	: 'Pewne opcje zostały zmienione. Czy na pewno zamknąć okno dialogowe?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Wstaw znak specjalny',
-		title		: 'Wybierz znak specjalny'
+		title		: 'Wybierz znak specjalny',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Wstaw/edytuj hiperłącze',
+		other 		: '<inny>',
 		menu		: 'Edytuj hiperłącze',
 		title		: 'Hiperłącze',
@@ -117,14 +136,9 @@
 		advanced	: 'Zaawansowane',
 		type		: 'Typ hiperłącza',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Odnośnik wewnątrz strony',
 		toEmail		: 'Adres e-mail',
-		target		: 'Cel',
-		targetNotSet	: '<nie ustawione>',
-		targetFrame	: '<ramka>',
-		targetPopup	: '<wyskakujące okno>',
-		targetNew	: 'Nowe okno (_blank)',
-		targetTop	: 'Okno najwyższe w hierarchii (_top)',
-		targetSelf	: 'To samo okno (_self)',
-		targetParent	: 'Okno nadrzędne (_parent)',
+		targetFrame		: '<ramka>',
+		targetPopup		: '<wyskakujące okno>',
 		targetFrameName	: 'Nazwa Ramki Docelowej',
 		targetPopupName	: 'Nazwa wyskakującego okna',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Skalowalny',
 		popupStatusBar	: 'Pasek statusu',
-		popupLocationBar	: 'Pasek adresu',
+		popupLocationBar: 'Pasek adresu',
 		popupToolbar	: 'Pasek narzędzi',
 		popupMenuBar	: 'Pasek menu',
@@ -144,5 +158,4 @@
 		id				: 'Id',
 		langDir			: 'Kierunek tekstu',
-		langDirNotSet	: '<nie ustawione>',
 		langDirLTR		: 'Od lewej do prawej (LTR)',
 		langDirRTL		: 'Od prawej do lewej (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Grubość ramki',
 		align		: 'Wyrównanie',
-		alignNotSet	: '<brak ustawień>',
 		alignLeft	: 'Do lewej',
 		alignCenter	: 'Do środka',
@@ -211,4 +246,5 @@
 		widthPx		: 'piksele',
 		widthPc		: '%',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Wysokość',
 		cellSpace	: 'Odstęp pomiędzy komórkami',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Scalenie wierszy musi być liczbą całkowitą.',
 			invalidColSpan	: 'Scalenie komórek musi być liczbą całkowitą.',
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Wybierz'
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Akcja',
 		method		: 'Metoda',
-		encoding	: 'Kodowanie',
-		target		: 'Cel',
-		targetNotSet	: '<nie ustawione>',
-		targetNew	: 'Nowe okno (_blank)',
-		targetTop	: 'Okno najwyższe w hierarchii (_top)',
-		targetSelf	: 'To samo okno (_self)',
-		targetParent	: 'Okno nadrzędne (_parent)'
+		encoding	: 'Kodowanie'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Właściwości przycisku obrazka',
 		menu		: 'Właściwości obrazka',
-		infoTab	: 'Informacje o obrazku',
+		infoTab		: 'Informacje o obrazku',
 		btnUpload	: 'Wyślij',
-		url		: 'Adres URL',
-		upload	: 'Wyślij',
-		alt		: 'Tekst zastępczy',
+		upload		: 'Wyślij',
+		alt			: 'Tekst zastępczy',
 		width		: 'Szerokość',
-		height	: 'Wysokość',
+		height		: 'Wysokość',
 		lockRatio	: 'Zablokuj proporcje',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Przywróć rozmiar',
-		border	: 'Ramka',
-		hSpace	: 'Odstęp poziomy',
-		vSpace	: 'Odstęp pionowy',
+		border		: 'Ramka',
+		hSpace		: 'Odstęp poziomy',
+		vSpace		: 'Odstęp pionowy',
 		align		: 'Wyrównaj',
 		alignLeft	: 'Do lewej',
-		alignAbsBottom: 'Do dołu',
-		alignAbsMiddle: 'Do środka w pionie',
-		alignBaseline	: 'Do linii bazowej',
-		alignBottom	: 'Do dołu',
-		alignMiddle	: 'Do środka',
 		alignRight	: 'Do prawej',
-		alignTextTop	: 'Do góry tekstu',
-		alignTop	: 'Do góry',
-		preview	: 'Podgląd',
 		alertUrl	: 'Podaj adres obrazka.',
-		linkTab	: 'Hiperłącze',
+		linkTab		: 'Hiperłącze',
 		button2Img	: 'Czy chcesz przekonwertować zaznaczony przycisk graficzny do zwykłego obrazka?',
 		img2Button	: 'Czy chcesz przekonwertować zaznaczony obrazek do przycisku graficznego?',
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Podaj adres URL obrazka.',
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Właściwości elementu Flash',
 		propertiesTab	: 'Właściwości',
-		title		: 'Właściwości elementu Flash',
-		chkPlay		: 'Auto Odtwarzanie',
-		chkLoop		: 'Pętla',
-		chkMenu		: 'Włącz menu',
-		chkFull		: 'Dopuść pełny ekran',
- 		scale		: 'Skaluj',
+		title			: 'Właściwości elementu Flash',
+		chkPlay			: 'Autoodtwarzanie',
+		chkLoop			: 'Pętla',
+		chkMenu			: 'Włącz menu',
+		chkFull			: 'Dopuść pełny ekran',
+ 		scale			: 'Skaluj',
 		scaleAll		: 'Pokaż wszystko',
 		scaleNoBorder	: 'Bez Ramki',
@@ -418,38 +445,38 @@
 		access			: 'Dostęp skryptów',
 		accessAlways	: 'Zawsze',
-		accessSameDomain	: 'Ta sama domena',
-		accessNever	: 'Nigdy',
-		align		: 'Wyrównaj',
-		alignLeft	: 'Do lewej',
-		alignAbsBottom: 'Do dołu',
-		alignAbsMiddle: 'Do środka w pionie',
+		accessSameDomain: 'Ta sama domena',
+		accessNever		: 'Nigdy',
+		align			: 'Wyrównaj',
+		alignLeft		: 'Do lewej',
+		alignAbsBottom	: 'Do dołu',
+		alignAbsMiddle	: 'Do środka w pionie',
 		alignBaseline	: 'Do linii bazowej',
-		alignBottom	: 'Do dołu',
-		alignMiddle	: 'Do środka',
-		alignRight	: 'Do prawej',
+		alignBottom		: 'Do dołu',
+		alignMiddle		: 'Do środka',
+		alignRight		: 'Do prawej',
 		alignTextTop	: 'Do góry tekstu',
-		alignTop	: 'Do góry',
-		quality		: 'Jakość',
-		qualityBest		 : 'Najlepsza',
-		qualityHigh		 : 'Wysoka',
-		qualityAutoHigh	 : 'Auto wysoka',
-		qualityMedium	 : 'Średnia',
-		qualityAutoLow	 : 'Auto niska',
-		qualityLow		 : 'Niska',
-		windowModeWindow	 : 'Okno',
-		windowModeOpaque	 : 'Nieprzeźroczyste',
-		windowModeTransparent	 : 'Przeźroczyste',
-		windowMode	: 'Tryb okna',
-		flashvars	: 'Zmienne dla Flash\'a',
-		bgcolor	: 'Kolor tła',
-		width	: 'Szerokość',
-		height	: 'Wysokość',
-		hSpace	: 'Odstęp poziomy',
-		vSpace	: 'Odstęp pionowy',
-		validateSrc : 'Podaj adres URL',
-		validateWidth : 'Szerokość musi być liczbą.',
-		validateHeight : 'Wysokość musi być liczbą.',
-		validateHSpace : 'Odstęp poziomy musi być liczbą.',
-		validateVSpace : 'Odstęp pionowy musi być liczbą.'
+		alignTop		: 'Do góry',
+		quality			: 'Jakość',
+		qualityBest		: 'Najlepsza',
+		qualityHigh		: 'Wysoka',
+		qualityAutoHigh	: 'Auto wysoka',
+		qualityMedium	: 'Średnia',
+		qualityAutoLow	: 'Auto niska',
+		qualityLow		: 'Niska',
+		windowModeWindow: 'Okno',
+		windowModeOpaque: 'Nieprzeźroczyste',
+		windowModeTransparent : 'Przeźroczyste',
+		windowMode		: 'Tryb okna',
+		flashvars		: 'Zmienne dla Flasha',
+		bgcolor			: 'Kolor tła',
+		width			: 'Szerokość',
+		height			: 'Wysokość',
+		hSpace			: 'Odstęp poziomy',
+		vSpace			: 'Odstęp pionowy',
+		validateSrc		: 'Podaj adres URL',
+		validateWidth	: 'Szerokość musi być liczbą.',
+		validateHeight	: 'Wysokość musi być liczbą.',
+		validateHSpace	: 'Odstęp poziomy musi być liczbą.',
+		validateVSpace	: 'Odstęp pionowy musi być liczbą.'
 	},
 
@@ -469,5 +496,5 @@
 		btnUndo			: 'Cofnij',
 		noSuggestions	: '- Brak sugestii -',
-		progress		: 'Trwa sprawdzanie ...',
+		progress		: 'Trwa sprawdzanie...',
 		noMispell		: 'Sprawdzanie zakończone: nie znaleziono błędów',
 		noChanges		: 'Sprawdzanie zakończone: nie zmieniono żadnego słowa',
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Emotikona',
-		title	: 'Wstaw emotikonę'
+		title	: 'Wstaw emotikonę',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : 'element %1'
 	},
 
-	numberedlist : 'Lista numerowana',
-	bulletedlist : 'Lista wypunktowana',
-	indent : 'Zwiększ wcięcie',
-	outdent : 'Zmniejsz wcięcie',
+	numberedlist	: 'Lista numerowana',
+	bulletedlist	: 'Lista wypunktowana',
+	indent			: 'Zwiększ wcięcie',
+	outdent			: 'Zmniejsz wcięcie',
 
 	justify :
 	{
-		left : 'Wyrównaj do lewej',
-		center : 'Wyrównaj do środka',
-		right : 'Wyrównaj do prawej',
-		block : 'Wyrównaj do lewej i prawej'
+		left	: 'Wyrównaj do lewej',
+		center	: 'Wyrównaj do środka',
+		right	: 'Wyrównaj do prawej',
+		block	: 'Wyrównaj do lewej i prawej'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Wklej',
-		cutError	: 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl+X.',
-		copyError	: 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl+C.',
-		pasteMsg	: 'Proszę wkleić w poniższym polu używając klawiaturowego skrótu (<STRONG>Ctrl+V</STRONG>) i kliknąć <STRONG>OK</STRONG>.',
-		securityMsg	: 'Zabezpieczenia przeglądarki uniemożliwiają wklejenie danych bezpośrednio do edytora. Proszę dane wkleić ponownie w tym okienku.'
+		cutError	: 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+X.',
+		copyError	: 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+C.',
+		pasteMsg	: 'Proszę wkleić w poniższym polu używając klawiaturowego skrótu (<STRONG>Ctrl/Cmd+V</STRONG>) i kliknąć <STRONG>OK</STRONG>.',
+		securityMsg	: 'Zabezpieczenia przeglądarki uniemożliwiają wklejenie danych bezpośrednio do edytora. Proszę dane wkleić ponownie w tym okienku.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Wklej z Worda',
-		title : 'Wklej z Worda',
-		advice : 'Proszę wkleić w poniższym polu używając klawiaturowego skrótu (<STRONG>Ctrl+V</STRONG>) i kliknąć <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignoruj definicje \'Font Face\'',
-		removeStyle : 'Usuń definicje Stylów'
+		confirmCleanup	: 'Tekst, który chcesz wkleić, prawdopodobnie pochodzi z programu Word. Czy chcesz go wyczyścic przed wklejeniem?',
+		toolbar			: 'Wklej z Worda',
+		title			: 'Wklej z Worda',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Wklej jako czysty tekst',
-		title : 'Wklej jako czysty tekst'
+		button	: 'Wklej jako czysty tekst',
+		title	: 'Wklej jako czysty tekst'
 	},
 
 	templates :
 	{
-		button : 'Sablony',
-		title : 'Szablony zawartości',
-		insertOption: 'Zastąp aktualną zawartość',
-		selectPromptMsg: 'Wybierz szablon do otwarcia w edytorze<br>(obecna zawartość okna edytora zostanie utracona):',
-		emptyListMsg : '(Brak zdefiniowanych szablonów)'
+		button			: 'Szablony',
+		title			: 'Szablony zawartości',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Zastąp aktualną zawartość',
+		selectPromptMsg	: 'Wybierz szablon do otwarcia w edytorze<br>(obecna zawartość okna edytora zostanie utracona):',
+		emptyListMsg	: '(Brak zdefiniowanych szablonów)'
 	},
 
@@ -540,136 +570,164 @@
 	stylesCombo :
 	{
-		label : 'Styl',
-		voiceLabel : 'Style',
-		panelVoiceLabel : 'Wybierz styl',
-		panelTitle1 : 'Style blokowe',
-		panelTitle2 : 'Style liniowe',
-		panelTitle3 : 'Style obiektowe'
+		label		: 'Styl',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Style blokowe',
+		panelTitle2	: 'Style liniowe',
+		panelTitle3	: 'Style obiektowe'
 	},
 
 	format :
 	{
-		label : 'Format',
-		voiceLabel : 'Format',
-		panelTitle : 'Format',
-		panelVoiceLabel : 'Wybierz paragraf do sformatowania',
-
-		tag_p : 'Normalny',
-		tag_pre : 'Tekst sformatowany',
-		tag_address : 'Adres',
-		tag_h1 : 'Nagłówek 1',
-		tag_h2 : 'Nagłówek 2',
-		tag_h3 : 'Nagłówek 3',
-		tag_h4 : 'Nagłówek 4',
-		tag_h5 : 'Nagłówek 5',
-		tag_h6 : 'Nagłówek 6',
-		tag_div : 'Normalny (DIV)'
-	},
+		label		: 'Format',
+		panelTitle	: 'Format',
+
+		tag_p		: 'Normalny',
+		tag_pre		: 'Tekst sformatowany',
+		tag_address	: 'Adres',
+		tag_h1		: 'Nagłówek 1',
+		tag_h2		: 'Nagłówek 2',
+		tag_h3		: 'Nagłówek 3',
+		tag_h4		: 'Nagłówek 4',
+		tag_h5		: 'Nagłówek 5',
+		tag_h6		: 'Nagłówek 6',
+		tag_div		: 'Normalny (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Czcionka',
-		voiceLabel : 'Czcionka',
-		panelTitle : 'Czcionka',
-		panelVoiceLabel : 'Select a font'
+		label		: 'Czcionka',
+		voiceLabel	: 'Czcionka',
+		panelTitle	: 'Czcionka'
 	},
 
 	fontSize :
 	{
-		label : 'Rozmiar',
-		voiceLabel : 'Rozmiar czcionki',
-		panelTitle : 'Rozmiar',
-		panelVoiceLabel : 'Select a font size'
+		label		: 'Rozmiar',
+		voiceLabel	: 'Rozmiar czcionki',
+		panelTitle	: 'Rozmiar'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Kolor tekstu',
-		bgColorTitle : 'Kolor tła',
-		auto : 'Automatycznie',
-		more : 'Więcej kolorów...'
+		textColorTitle	: 'Kolor tekstu',
+		bgColorTitle	: 'Kolor tła',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatycznie',
+		more			: 'Więcej kolorów...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Sprawdź pisowanie podczas pisania (SCAYT)',
-		enable : 'Włącz SCAYT',
-		disable : 'Wyłącz SCAYT',
-		about : 'Na temat SCAYT',
-		toggle : 'Toggle SCAYT',
-		options : 'Opcje',
-		langs : 'Języki',
-		moreSuggestions : 'Więcej sugestii',
-		ignore : 'Ignoruj',
-		ignoreAll : 'Ignoruj wszystkie',
-		addWord : 'Dodaj słowo',
-		emptyDic : 'Nazwa słownika nie może być pusta.',
-		optionsTab : 'Opcje',
-		languagesTab : 'Języki',
-		dictionariesTab : 'Słowniki',
-		aboutTab : 'Na temat SCAYT'
+		title			: 'Sprawdź pisownię podczas pisania (SCAYT)',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Włącz SCAYT',
+		disable			: 'Wyłącz SCAYT',
+		about			: 'Na temat SCAYT',
+		toggle			: 'Przełącz SCAYT',
+		options			: 'Opcje',
+		langs			: 'Języki',
+		moreSuggestions	: 'Więcej sugestii',
+		ignore			: 'Ignoruj',
+		ignoreAll		: 'Ignoruj wszystkie',
+		addWord			: 'Dodaj słowo',
+		emptyDic		: 'Nazwa słownika nie może być pusta.',
+
+		optionsTab		: 'Opcje',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Języki',
+
+		dictionariesTab	: 'Słowniki',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'Na temat SCAYT'
 	},
 
 	about :
 	{
-		title : 'Na temat CKEditor',
-		dlgTitle : 'Na temat CKEditor',
-		moreInfo : 'Informacje na temat licencji można znaleźć na naszej stronie:',
-		copy : 'Copyright &copy; $1. Wszelkie prawa zastrzeżone.'
+		title		: 'Na temat CKEditor',
+		dlgTitle	: 'Na temat CKEditor',
+		moreInfo	: 'Informacje na temat licencji można znaleźć na naszej stronie:',
+		copy		: 'Copyright &copy; $1. Wszelkie prawa zastrzeżone.'
 	},
 
 	maximize : 'Maksymalizuj',
-	minimize : 'Minimize', // MISSING
+	minimize : 'Minimalizuj',
 
 	fakeobjects :
 	{
-		anchor : 'Kotwica',
-		flash : 'Animacja Flash',
-		div : 'Separator stron',
-		unknown : 'Nieznany obiekt'
+		anchor	: 'Kotwica',
+		flash	: 'Animacja Flash',
+		div		: 'Separator stron',
+		unknown	: 'Nieznany obiekt'
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Wybierz kolor',
+		options	:	'Color Options', // MISSING
+		highlight	: 'Zaznacz',
+		selected	: 'Wybrany',
+		clear		: 'Wyczyść'
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/pt-br.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/pt-br.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/pt-br.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Editor de texto formatado, %1',
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Formulário',
 		checkbox		: 'Caixa de Seleção',
-		radio		: 'Botão de Opção',
+		radio			: 'Botão de Opção',
 		textField		: 'Caixa de Texto',
 		textarea		: 'Área de Texto',
 		hiddenField		: 'Campo Oculto',
 		button			: 'Botão',
-		select	: 'Caixa de Listagem',
+		select			: 'Caixa de Listagem',
 		imageButton		: 'Botão de Imagem',
 		notSet			: '<não ajustado>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Cancelar',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'Geral',
 		advancedTab		: 'Avançado',
-		validateNumberFailed	: 'Este valor não é um número.',
+		validateNumberFailed : 'Este valor não é um número.',
 		confirmNewPage	: 'Todas as mudanças não salvas serão perdidas. Tem certeza de que quer carregar outra página?',
 		confirmCancel	: 'Algumas opções foram alteradas. Tem certeza de que quer fechar a caixa de diálogo?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Inserir Caractere Especial',
-		title		: 'Selecione um Caractere Especial'
+		title		: 'Selecione um Caractere Especial',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Inserir/Editar Hiperlink',
+		other 		: '<other>', // MISSING
 		menu		: 'Editar Hiperlink',
 		title		: 'Hiperlink',
@@ -117,14 +136,9 @@
 		advanced	: 'Avançado',
 		type		: 'Tipo de hiperlink',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Âncora nesta página',
 		toEmail		: 'E-Mail',
-		target		: 'Destino',
-		targetNotSet	: '<não ajustado>',
-		targetFrame	: '<frame>',
-		targetPopup	: '<janela popup>',
-		targetNew	: 'Nova Janela (_blank)',
-		targetTop	: 'Janela Superior (_top)',
-		targetSelf	: 'Mesma Janela (_self)',
-		targetParent	: 'Janela Pai (_parent)',
+		targetFrame		: '<frame>',
+		targetPopup		: '<janela popup>',
 		targetFrameName	: 'Nome do Frame de Destino',
 		targetPopupName	: 'Nome da Janela Pop-up',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Redimensionável',
 		popupStatusBar	: 'Barra de Status',
-		popupLocationBar	: 'Barra de Endereços',
+		popupLocationBar: 'Barra de Endereços',
 		popupToolbar	: 'Barra de Ferramentas',
 		popupMenuBar	: 'Barra de Menus',
@@ -144,5 +158,4 @@
 		id				: 'Id',
 		langDir			: 'Direção do idioma',
-		langDirNotSet	: '<não ajustado>',
 		langDirLTR		: 'Esquerda para Direita (LTR)',
 		langDirRTL		: 'Direita para Esquerda (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Borda',
 		align		: 'Alinhamento',
-		alignNotSet	: '<Não ajustado>',
 		alignLeft	: 'Esquerda',
 		alignCenter	: 'Centralizado',
@@ -211,4 +246,5 @@
 		widthPx		: 'pixels',
 		widthPc		: '%',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Altura',
 		cellSpace	: 'Espaçamento',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: '"Linhas cobertas" tem que ser um número inteiro.',
 			invalidColSpan	: '"Colunas cobertas" tem que ser um número inteiro.',
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Action',
 		method		: 'Método',
-		encoding	: 'Codificação',
-		target		: 'Destino',
-		targetNotSet	: '<não ajustado>',
-		targetNew	: 'Nova Janela (_blank)',
-		targetTop	: 'Janela Superior (_top)',
-		targetSelf	: 'Mesma Janela (_self)',
-		targetParent	: 'Janela Pai (_parent)'
+		encoding	: 'Codificação'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Formatar Botão de Imagem',
 		menu		: 'Formatar Figura',
-		infoTab	: 'Informações da Figura',
+		infoTab		: 'Informações da Figura',
 		btnUpload	: 'Enviar para o Servidor',
-		url		: 'URL',
-		upload	: 'Submeter',
-		alt		: 'Texto Alternativo',
+		upload		: 'Submeter',
+		alt			: 'Texto Alternativo',
 		width		: 'Largura',
-		height	: 'Altura',
+		height		: 'Altura',
 		lockRatio	: 'Manter proporções',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Redefinir para o Tamanho Original',
-		border	: 'Borda',
-		hSpace	: 'Horizontal',
-		vSpace	: 'Vertical',
+		border		: 'Borda',
+		hSpace		: 'Horizontal',
+		vSpace		: 'Vertical',
 		align		: 'Alinhamento',
 		alignLeft	: 'Esquerda',
-		alignAbsBottom: 'Inferior Absoluto',
-		alignAbsMiddle: 'Centralizado Absoluto',
-		alignBaseline	: 'Baseline',
-		alignBottom	: 'Inferior',
-		alignMiddle	: 'Centralizado',
 		alignRight	: 'Direita',
-		alignTextTop	: 'Superior Absoluto',
-		alignTop	: 'Superior',
-		preview	: 'Visualização',
 		alertUrl	: 'Por favor, digite o URL da figura.',
-		linkTab	: 'Hiperlink',
+		linkTab		: 'Hiperlink',
 		button2Img	: 'Você deseja transformar o botão de imagem selecionado em uma imagem comum?',
 		img2Button	: 'Você deseja transformar a imagem selecionada em um botão de imagem?',
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Propriedades do Flash',
 		propertiesTab	: 'Propriedades',
-		title		: 'Propriedades do Flash',
-		chkPlay		: 'Tocar Automaticamente',
-		chkLoop		: 'Loop',
-		chkMenu		: 'Habilita Menu Flash',
-		chkFull		: 'Permitir tela cheia',
- 		scale		: 'Escala',
+		title			: 'Propriedades do Flash',
+		chkPlay			: 'Tocar Automaticamente',
+		chkLoop			: 'Loop',
+		chkMenu			: 'Habilita Menu Flash',
+		chkFull			: 'Permitir tela cheia',
+ 		scale			: 'Escala',
 		scaleAll		: 'Mostrar tudo',
 		scaleNoBorder	: 'Sem Borda',
@@ -418,38 +445,38 @@
 		access			: 'Acesso ao script',
 		accessAlways	: 'Sempre',
-		accessSameDomain	: 'Mesmo domínio',
-		accessNever	: 'Nunca',
-		align		: 'Alinhamento',
-		alignLeft	: 'Esquerda',
-		alignAbsBottom: 'Inferior Absoluto',
-		alignAbsMiddle: 'Centralizado Absoluto',
+		accessSameDomain: 'Mesmo domínio',
+		accessNever		: 'Nunca',
+		align			: 'Alinhamento',
+		alignLeft		: 'Esquerda',
+		alignAbsBottom	: 'Inferior Absoluto',
+		alignAbsMiddle	: 'Centralizado Absoluto',
 		alignBaseline	: 'Baseline',
-		alignBottom	: 'Inferior',
-		alignMiddle	: 'Centralizado',
-		alignRight	: 'Direita',
+		alignBottom		: 'Inferior',
+		alignMiddle		: 'Centralizado',
+		alignRight		: 'Direita',
 		alignTextTop	: 'Superior Absoluto',
-		alignTop	: 'Superior',
-		quality		: 'Qualidade',
-		qualityBest		 : 'Melhor',
-		qualityHigh		 : 'Alta',
-		qualityAutoHigh	 : 'Alta automático',
-		qualityMedium	 : 'Média',
-		qualityAutoLow	 : 'Média automático',
-		qualityLow		 : 'Baixa',
-		windowModeWindow	 : 'Janela',
-		windowModeOpaque	 : 'Opaca',
-		windowModeTransparent	 : 'Transparente',
-		windowMode	: 'Modo da janela',
-		flashvars	: 'Variáveis do Flash',
-		bgcolor	: 'Cor do Plano de Fundo',
-		width	: 'Largura',
-		height	: 'Altura',
-		hSpace	: 'Horizontal',
-		vSpace	: 'Vertical',
-		validateSrc : 'Por favor, digite o endereço do Hiperlink',
-		validateWidth : '"Largura" tem que ser um número.',
-		validateHeight : '"Altura" tem que ser um número',
-		validateHSpace : '"HSpace" tem que ser um número',
-		validateVSpace : '"VSpace" tem que ser um número.'
+		alignTop		: 'Superior',
+		quality			: 'Qualidade',
+		qualityBest		: 'Melhor',
+		qualityHigh		: 'Alta',
+		qualityAutoHigh	: 'Alta automático',
+		qualityMedium	: 'Média',
+		qualityAutoLow	: 'Média automático',
+		qualityLow		: 'Baixa',
+		windowModeWindow: 'Janela',
+		windowModeOpaque: 'Opaca',
+		windowModeTransparent : 'Transparente',
+		windowMode		: 'Modo da janela',
+		flashvars		: 'Variáveis do Flash',
+		bgcolor			: 'Cor do Plano de Fundo',
+		width			: 'Largura',
+		height			: 'Altura',
+		hSpace			: 'Horizontal',
+		vSpace			: 'Vertical',
+		validateSrc		: 'Por favor, digite o endereço do Hiperlink',
+		validateWidth	: '"Largura" tem que ser um número.',
+		validateHeight	: '"Altura" tem que ser um número',
+		validateHSpace	: '"HSpace" tem que ser um número',
+		validateVSpace	: '"VSpace" tem que ser um número.'
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Emoticon',
-		title	: 'Inserir Emoticon'
+		title	: 'Inserir Emoticon',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : 'Elemento %1'
 	},
 
-	numberedlist : 'Numeração',
-	bulletedlist : 'Marcadores',
-	indent : 'Aumentar Recuo',
-	outdent : 'Diminuir Recuo',
+	numberedlist	: 'Numeração',
+	bulletedlist	: 'Marcadores',
+	indent			: 'Aumentar Recuo',
+	outdent			: 'Diminuir Recuo',
 
 	justify :
 	{
-		left : 'Alinhar Esquerda',
-		center : 'Centralizar',
-		right : 'Alinhar Direita',
-		block : 'Justificado'
+		left	: 'Alinhar Esquerda',
+		center	: 'Centralizar',
+		right	: 'Alinhar Direita',
+		block	: 'Justificado'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Colar',
-		cutError	: 'As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl+X).',
-		copyError	: 'As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl+C).',
-		pasteMsg	: 'Transfira o link usado no box usando o teclado com (<STRONG>Ctrl+V</STRONG>) e <STRONG>OK</STRONG>.',
-		securityMsg	: 'As configurações de segurança do seu navegador não permitem que o editor acesse os dados da área de transferência diretamente. Por favor cole o conteúdo novamente nesta janela.'
+		cutError	: 'As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl/Cmd+X).',
+		copyError	: 'As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl/Cmd+C).',
+		pasteMsg	: 'Transfira o link usado no box usando o teclado com (<STRONG>Ctrl/Cmd+V</STRONG>) e <STRONG>OK</STRONG>.',
+		securityMsg	: 'As configurações de segurança do seu navegador não permitem que o editor acesse os dados da área de transferência diretamente. Por favor cole o conteúdo novamente nesta janela.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Colar do Word',
-		title : 'Colar do Word',
-		advice : 'Transfira o link usado no box usando o teclado com (<STRONG>Ctrl+V</STRONG>) e <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignorar definições de fonte',
-		removeStyle : 'Remove definições de estilo'
+		confirmCleanup	: 'O texto que você deseja colar parece ter sido copiado do Word. Você gostaria de remover a formatação antes de colar?',
+		toolbar			: 'Colar do Word',
+		title			: 'Colar do Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Colar como Texto sem Formatação',
-		title : 'Colar como Texto sem Formatação'
+		button	: 'Colar como Texto sem Formatação',
+		title	: 'Colar como Texto sem Formatação'
 	},
 
 	templates :
 	{
-		button : 'Modelos de layout',
-		title : 'Modelo de layout do conteúdo',
-		insertOption: 'Substituir o conteúdo atual',
-		selectPromptMsg: 'Selecione um modelo de layout para ser aberto no editor<br>(o conteúdo atual será perdido):',
-		emptyListMsg : '(Não foram definidos modelos de layout)'
+		button			: 'Modelos de layout',
+		title			: 'Modelo de layout do conteúdo',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Substituir o conteúdo atual',
+		selectPromptMsg	: 'Selecione um modelo de layout para ser aberto no editor<br>(o conteúdo atual será perdido):',
+		emptyListMsg	: '(Não foram definidos modelos de layout)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Estilo',
-		voiceLabel : 'Estilo',
-		panelVoiceLabel : 'Selecione um estilo',
-		panelTitle1 : 'Estilos de bloco',
-		panelTitle2 : 'Estilos em texto corrido',
-		panelTitle3 : 'Estilos de objeto'
+		label		: 'Estilo',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Estilos de bloco',
+		panelTitle2	: 'Estilos em texto corrido',
+		panelTitle3	: 'Estilos de objeto'
 	},
 
 	format :
 	{
-		label : 'Formatação',
-		voiceLabel : 'Formatação',
-		panelTitle : 'Formatação',
-		panelVoiceLabel : 'Selecione uma formatação de parágrafo',
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatado',
-		tag_address : 'Endereço',
-		tag_h1 : 'Título 1',
-		tag_h2 : 'Título 2',
-		tag_h3 : 'Título 3',
-		tag_h4 : 'Título 4',
-		tag_h5 : 'Título 5',
-		tag_h6 : 'Título 6',
-		tag_div : 'Normal (DIV)'
-	},
+		label		: 'Formatação',
+		panelTitle	: 'Formatação',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatado',
+		tag_address	: 'Endereço',
+		tag_h1		: 'Título 1',
+		tag_h2		: 'Título 2',
+		tag_h3		: 'Título 3',
+		tag_h4		: 'Título 4',
+		tag_h5		: 'Título 5',
+		tag_h6		: 'Título 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Fonte',
-		voiceLabel : 'Fonte',
-		panelTitle : 'Fonte',
-		panelVoiceLabel : 'Selecione uma fonte'
+		label		: 'Fonte',
+		voiceLabel	: 'Fonte',
+		panelTitle	: 'Fonte'
 	},
 
 	fontSize :
 	{
-		label : 'Tamanho',
-		voiceLabel : 'Tamanho da fonte',
-		panelTitle : 'Tamanho',
-		panelVoiceLabel : 'Selecione um tamanho de fonte'
+		label		: 'Tamanho',
+		voiceLabel	: 'Tamanho da fonte',
+		panelTitle	: 'Tamanho'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Cor do Texto',
-		bgColorTitle : 'Cor do Plano de Fundo',
-		auto : 'Automático',
-		more : 'Mais Cores...'
+		textColorTitle	: 'Cor do Texto',
+		bgColorTitle	: 'Cor do Plano de Fundo',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automático',
+		more			: 'Mais Cores...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Correção gramatical durante a digitação',
-		enable : 'Habilitar SCAYT',
-		disable : 'Desabilitar SCAYT',
-		about : 'Sobre o SCAYT',
-		toggle : 'Ativar/desativar SCAYT',
-		options : 'Opções',
-		langs : 'Línguas',
-		moreSuggestions : 'Mais sugestões',
-		ignore : 'Ignorar',
-		ignoreAll : 'Ignorar todas',
-		addWord : 'Adicionar palavra',
-		emptyDic : 'O nome do dicionário não deveria estar vazio.',
-		optionsTab : 'Opções',
-		languagesTab : 'Línguas',
-		dictionariesTab : 'Dicionários',
-		aboutTab : 'Sobre'
+		title			: 'Correção gramatical durante a digitação',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Habilitar SCAYT',
+		disable			: 'Desabilitar SCAYT',
+		about			: 'Sobre o SCAYT',
+		toggle			: 'Ativar/desativar SCAYT',
+		options			: 'Opções',
+		langs			: 'Línguas',
+		moreSuggestions	: 'Mais sugestões',
+		ignore			: 'Ignorar',
+		ignoreAll		: 'Ignorar todas',
+		addWord			: 'Adicionar palavra',
+		emptyDic		: 'O nome do dicionário não deveria estar vazio.',
+
+		optionsTab		: 'Opções',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Línguas',
+
+		dictionariesTab	: 'Dicionários',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'Sobre'
 	},
 
 	about :
 	{
-		title : 'Sobre o CKEditor',
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'Para informações sobre a licença, por favor, visite o nosso site na Internet:',
-		copy : 'Direito de reprodução &copy; $1. Todos os direitos reservados.'
+		title		: 'Sobre o CKEditor',
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'Para informações sobre a licença, por favor, visite o nosso site na Internet:',
+		copy		: 'Direito de reprodução &copy; $1. Todos os direitos reservados.'
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Âncora',
-		flash : 'Animação em Flash',
-		div : 'Quebra de página',
-		unknown : 'Objeto desconhecido'
+		anchor	: 'Âncora',
+		flash	: 'Animação em Flash',
+		div		: 'Quebra de página',
+		unknown	: 'Objeto desconhecido'
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/pt.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/pt.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/pt.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Formulário',
 		checkbox		: 'Caixa de Verificação',
-		radio		: 'Botão de Opção',
+		radio			: 'Botão de Opção',
 		textField		: 'Campo de Texto',
 		textarea		: 'Área de Texto',
 		hiddenField		: 'Campo Escondido',
 		button			: 'Botão',
-		select	: 'Caixa de Combinação',
+		select			: 'Caixa de Combinação',
 		imageButton		: 'Botão de Imagem',
 		notSet			: '<Não definido>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Cancelar',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'Avançado',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Inserir Caracter Especial',
-		title		: 'Seleccione um caracter especial'
+		title		: 'Seleccione um caracter especial',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Inserir/Editar Hiperligação',
+		other 		: '<outro>',
 		menu		: 'Editar Hiperligação',
 		title		: 'Hiperligação',
@@ -117,14 +136,9 @@
 		advanced	: 'Avançado',
 		type		: 'Tipo de Hiperligação',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Referência a esta página',
 		toEmail		: 'E-Mail',
-		target		: 'Destino',
-		targetNotSet	: '<Não definido>',
-		targetFrame	: '<Frame>',
-		targetPopup	: '<Janela de popup>',
-		targetNew	: 'Nova Janela(_blank)',
-		targetTop	: 'Janela primaria (_top)',
-		targetSelf	: 'Mesma janela (_self)',
-		targetParent	: 'Janela Pai (_parent)',
+		targetFrame		: '<Frame>',
+		targetPopup		: '<Janela de popup>',
 		targetFrameName	: 'Nome do Frame Destino',
 		targetPopupName	: 'Nome da Janela de Popup',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Barra de Estado',
-		popupLocationBar	: 'Barra de localização',
+		popupLocationBar: 'Barra de localização',
 		popupToolbar	: 'Barra de Ferramentas',
 		popupMenuBar	: 'Barra de Menu',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Orientação de idioma',
-		langDirNotSet	: '<Não definido>',
 		langDirLTR		: 'Esquerda à Direita (LTR)',
 		langDirRTL		: 'Direita a Esquerda (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Tamanho do Limite',
 		align		: 'Alinhamento',
-		alignNotSet	: '<Não definido>',
 		alignLeft	: 'Esquerda',
 		alignCenter	: 'Centrado',
@@ -211,4 +246,5 @@
 		widthPx		: 'pixeis',
 		widthPc		: 'percentagem',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Altura',
 		cellSpace	: 'Esp. e/células',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Acção',
 		method		: 'Método',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Destino',
-		targetNotSet	: '<Não definido>',
-		targetNew	: 'Nova Janela(_blank)',
-		targetTop	: 'Janela primaria (_top)',
-		targetSelf	: 'Mesma janela (_self)',
-		targetParent	: 'Janela Pai (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Propriedades do Botão de imagens',
 		menu		: 'Propriedades da Imagem',
-		infoTab	: 'Informação da Imagem',
+		infoTab		: 'Informação da Imagem',
 		btnUpload	: 'Enviar para o Servidor',
-		url		: 'URL',
-		upload	: 'Carregar',
-		alt		: 'Texto Alternativo',
+		upload		: 'Carregar',
+		alt			: 'Texto Alternativo',
 		width		: 'Largura',
-		height	: 'Altura',
+		height		: 'Altura',
 		lockRatio	: 'Proporcional',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Tamanho Original',
-		border	: 'Limite',
-		hSpace	: 'Esp.Horiz',
-		vSpace	: 'Esp.Vert',
+		border		: 'Limite',
+		hSpace		: 'Esp.Horiz',
+		vSpace		: 'Esp.Vert',
 		align		: 'Alinhamento',
 		alignLeft	: 'Esquerda',
-		alignAbsBottom: 'Abs inferior',
-		alignAbsMiddle: 'Abs centro',
-		alignBaseline	: 'Linha de base',
-		alignBottom	: 'Fundo',
-		alignMiddle	: 'Centro',
 		alignRight	: 'Direita',
-		alignTextTop	: 'Topo do texto',
-		alignTop	: 'Topo',
-		preview	: 'Pré-visualizar',
 		alertUrl	: 'Por favor introduza o URL da imagem',
-		linkTab	: 'Hiperligação',
+		linkTab		: 'Hiperligação',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Propriedades do Flash',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Propriedades do Flash',
-		chkPlay		: 'Reproduzir automaticamente',
-		chkLoop		: 'Loop',
-		chkMenu		: 'Permitir Menu do Flash',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Escala',
+		title			: 'Propriedades do Flash',
+		chkPlay			: 'Reproduzir automaticamente',
+		chkLoop			: 'Loop',
+		chkMenu			: 'Permitir Menu do Flash',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Escala',
 		scaleAll		: 'Mostrar tudo',
 		scaleNoBorder	: 'Sem Limites',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Alinhamento',
-		alignLeft	: 'Esquerda',
-		alignAbsBottom: 'Abs inferior',
-		alignAbsMiddle: 'Abs centro',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Alinhamento',
+		alignLeft		: 'Esquerda',
+		alignAbsBottom	: 'Abs inferior',
+		alignAbsMiddle	: 'Abs centro',
 		alignBaseline	: 'Linha de base',
-		alignBottom	: 'Fundo',
-		alignMiddle	: 'Centro',
-		alignRight	: 'Direita',
+		alignBottom		: 'Fundo',
+		alignMiddle		: 'Centro',
+		alignRight		: 'Direita',
 		alignTextTop	: 'Topo do texto',
-		alignTop	: 'Topo',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Cor de Fundo',
-		width	: 'Largura',
-		height	: 'Altura',
-		hSpace	: 'Esp.Horiz',
-		vSpace	: 'Esp.Vert',
-		validateSrc : 'Por favor introduza a hiperligação URL',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Topo',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Cor de Fundo',
+		width			: 'Largura',
+		height			: 'Altura',
+		hSpace			: 'Esp.Horiz',
+		vSpace			: 'Esp.Vert',
+		validateSrc		: 'Por favor introduza a hiperligação URL',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'Emoticons',
-		title	: 'Inserir um Emoticon'
+		title	: 'Inserir um Emoticon',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Numeração',
-	bulletedlist : 'Marcas',
-	indent : 'Aumentar Avanço',
-	outdent : 'Diminuir Avanço',
+	numberedlist	: 'Numeração',
+	bulletedlist	: 'Marcas',
+	indent			: 'Aumentar Avanço',
+	outdent			: 'Diminuir Avanço',
 
 	justify :
 	{
-		left : 'Alinhar à Esquerda',
-		center : 'Alinhar ao Centro',
-		right : 'Alinhar à Direita',
-		block : 'Justificado'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: 'Alinhar à Esquerda',
+		center	: 'Alinhar ao Centro',
+		right	: 'Alinhar à Direita',
+		block	: 'Justificado'
+	},
+
+	blockquote : 'Block Quote', // MISSING
 
 	clipboard :
 	{
 		title		: 'Colar',
-		cutError	: 'A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl+X).',
-		copyError	: 'A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl+C).',
-		pasteMsg	: 'Por favor, cole dentro da seguinte caixa usando o teclado (<STRONG>Ctrl+V</STRONG>) e prima <STRONG>OK</STRONG>.',
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+		cutError	: 'A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl/Cmd+X).',
+		copyError	: 'A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl/Cmd+C).',
+		pasteMsg	: 'Por favor, cole dentro da seguinte caixa usando o teclado (<STRONG>Ctrl/Cmd+V</STRONG>) e prima <STRONG>OK</STRONG>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Colar do Word',
-		title : 'Colar do Word',
-		advice : 'Por favor, cole dentro da seguinte caixa usando o teclado (<STRONG>Ctrl+V</STRONG>) e prima <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignorar da definições do Tipo de Letra ',
-		removeStyle : 'Remover as definições de Estilos'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Colar do Word',
+		title			: 'Colar do Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Colar como Texto Simples',
-		title : 'Colar como Texto Simples'
+		button	: 'Colar como Texto Simples',
+		title	: 'Colar como Texto Simples'
 	},
 
 	templates :
 	{
-		button : 'Modelos',
-		title : 'Modelo de Conteúdo',
-		insertOption: 'Replace actual contents', // MISSING
-		selectPromptMsg: 'Por favor, seleccione o modelo a abrir no editor<br>(o conteúdo actual será perdido):',
-		emptyListMsg : '(Sem modelos definidos)'
+		button			: 'Modelos',
+		title			: 'Modelo de Conteúdo',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Replace actual contents', // MISSING
+		selectPromptMsg	: 'Por favor, seleccione o modelo a abrir no editor<br>(o conteúdo actual será perdido):',
+		emptyListMsg	: '(Sem modelos definidos)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Estilo',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Estilo',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Formato',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Formato',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatado',
-		tag_address : 'Endereço',
-		tag_h1 : 'Título 1',
-		tag_h2 : 'Título 2',
-		tag_h3 : 'Título 3',
-		tag_h4 : 'Título 4',
-		tag_h5 : 'Título 5',
-		tag_h6 : 'Título 6',
-		tag_div : 'Normal (DIV)' // MISSING
-	},
+		label		: 'Formato',
+		panelTitle	: 'Formato',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatado',
+		tag_address	: 'Endereço',
+		tag_h1		: 'Título 1',
+		tag_h2		: 'Título 2',
+		tag_h3		: 'Título 3',
+		tag_h4		: 'Título 4',
+		tag_h5		: 'Título 5',
+		tag_h6		: 'Título 6',
+		tag_div		: 'Normal (DIV)' // MISSING
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Tipo de Letra',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Tipo de Letra',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Tipo de Letra',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Tipo de Letra'
 	},
 
 	fontSize :
 	{
-		label : 'Tamanho',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Tamanho',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Tamanho',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Tamanho'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Cor do Texto',
-		bgColorTitle : 'Cor de Fundo',
-		auto : 'Automático',
-		more : 'Mais Cores...'
+		textColorTitle	: 'Cor do Texto',
+		bgColorTitle	: 'Cor de Fundo',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automático',
+		more			: 'Mais Cores...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/ro.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/ro.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/ro.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Formular (Form)',
 		checkbox		: 'Bifă (Checkbox)',
-		radio		: 'Buton radio (RadioButton)',
+		radio			: 'Buton radio (RadioButton)',
 		textField		: 'Câmp text (TextField)',
 		textarea		: 'Suprafaţă text (Textarea)',
 		hiddenField		: 'Câmp ascuns (HiddenField)',
 		button			: 'Buton',
-		select	: 'Câmp selecţie (SelectionField)',
+		select			: 'Câmp selecţie (SelectionField)',
 		imageButton		: 'Buton imagine (ImageButton)',
 		notSet			: '<nesetat>',
@@ -89,9 +93,17 @@
 		ok				: 'Bine',
 		cancel			: 'Anulare',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'Avansat',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Inserează caracter special',
-		title		: 'Selectează caracter special'
+		title		: 'Selectează caracter special',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Inserează/Editează link (legătură web)',
+		other 		: '<alt>',
 		menu		: 'Editează Link',
 		title		: 'Link (Legătură web)',
@@ -117,14 +136,9 @@
 		advanced	: 'Avansat',
 		type		: 'Tipul link-ului (al legăturii web)',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Ancoră în această pagină',
 		toEmail		: 'E-Mail',
-		target		: 'Ţintă (Target)',
-		targetNotSet	: '<nesetat>',
-		targetFrame	: '<frame>',
-		targetPopup	: '<fereastra popup>',
-		targetNew	: 'Fereastră nouă (_blank)',
-		targetTop	: 'Fereastra din topul ierarhiei (_top)',
-		targetSelf	: 'Aceeaşi fereastră (_self)',
-		targetParent	: 'Fereastra părinte (_parent)',
+		targetFrame		: '<frame>',
+		targetPopup		: '<fereastra popup>',
 		targetFrameName	: 'Numele frame-ului ţintă',
 		targetPopupName	: 'Numele ferestrei popup',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Bara de status',
-		popupLocationBar	: 'Bara de locaţie',
+		popupLocationBar: 'Bara de locaţie',
 		popupToolbar	: 'Bara de opţiuni',
 		popupMenuBar	: 'Bara de meniu',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Direcţia cuvintelor',
-		langDirNotSet	: '<nesetat>',
 		langDirLTR		: 'stânga-dreapta (LTR)',
 		langDirRTL		: 'dreapta-stânga (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Mărimea marginii',
 		align		: 'Aliniament',
-		alignNotSet	: '<Nesetat>',
 		alignLeft	: 'Stânga',
 		alignCenter	: 'Centru',
@@ -211,4 +246,5 @@
 		widthPx		: 'pixeli',
 		widthPc		: 'procente',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Înălţime',
 		cellSpace	: 'Spaţiu între celule',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Acţiune',
 		method		: 'Metodă',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Ţintă (Target)',
-		targetNotSet	: '<nesetat>',
-		targetNew	: 'Fereastră nouă (_blank)',
-		targetTop	: 'Fereastra din topul ierarhiei (_top)',
-		targetSelf	: 'Aceeaşi fereastră (_self)',
-		targetParent	: 'Fereastra părinte (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Proprietăţi buton imagine (Image Button)',
 		menu		: 'Proprietăţile imaginii',
-		infoTab	: 'Informaţii despre imagine',
+		infoTab		: 'Informaţii despre imagine',
 		btnUpload	: 'Trimite la server',
-		url		: 'URL',
-		upload	: 'Încarcă',
-		alt		: 'Text alternativ',
+		upload		: 'Încarcă',
+		alt			: 'Text alternativ',
 		width		: 'Lăţime',
-		height	: 'Înălţime',
+		height		: 'Înălţime',
 		lockRatio	: 'Păstrează proporţiile',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Resetează mărimea',
-		border	: 'Margine',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
+		border		: 'Margine',
+		hSpace		: 'HSpace',
+		vSpace		: 'VSpace',
 		align		: 'Aliniere',
 		alignLeft	: 'Stânga',
-		alignAbsBottom: 'Jos absolut (Abs Bottom)',
-		alignAbsMiddle: 'Mijloc absolut (Abs Middle)',
-		alignBaseline	: 'Linia de jos (Baseline)',
-		alignBottom	: 'Jos',
-		alignMiddle	: 'Mijloc',
 		alignRight	: 'Dreapta',
-		alignTextTop	: 'Text sus',
-		alignTop	: 'Sus',
-		preview	: 'Previzualizare',
 		alertUrl	: 'Vă rugăm să scrieţi URL-ul imaginii',
-		linkTab	: 'Link (Legătură web)',
+		linkTab		: 'Link (Legătură web)',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Proprietăţile flash-ului',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Proprietăţile flash-ului',
-		chkPlay		: 'Rulează automat',
-		chkLoop		: 'Repetă (Loop)',
-		chkMenu		: 'Activează meniul flash',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Scală',
+		title			: 'Proprietăţile flash-ului',
+		chkPlay			: 'Rulează automat',
+		chkLoop			: 'Repetă (Loop)',
+		chkMenu			: 'Activează meniul flash',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Scală',
 		scaleAll		: 'Arată tot',
 		scaleNoBorder	: 'Fără margini (No border)',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Aliniere',
-		alignLeft	: 'Stânga',
-		alignAbsBottom: 'Jos absolut (Abs Bottom)',
-		alignAbsMiddle: 'Mijloc absolut (Abs Middle)',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Aliniere',
+		alignLeft		: 'Stânga',
+		alignAbsBottom	: 'Jos absolut (Abs Bottom)',
+		alignAbsMiddle	: 'Mijloc absolut (Abs Middle)',
 		alignBaseline	: 'Linia de jos (Baseline)',
-		alignBottom	: 'Jos',
-		alignMiddle	: 'Mijloc',
-		alignRight	: 'Dreapta',
+		alignBottom		: 'Jos',
+		alignMiddle		: 'Mijloc',
+		alignRight		: 'Dreapta',
 		alignTextTop	: 'Text sus',
-		alignTop	: 'Sus',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Coloarea fundalului',
-		width	: 'Lăţime',
-		height	: 'Înălţime',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
-		validateSrc : 'Vă rugăm să scrieţi URL-ul',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Sus',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Coloarea fundalului',
+		width			: 'Lăţime',
+		height			: 'Înălţime',
+		hSpace			: 'HSpace',
+		vSpace			: 'VSpace',
+		validateSrc		: 'Vă rugăm să scrieţi URL-ul',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Figură expresivă (Emoticon)',
-		title	: 'Inserează o figură expresivă (Emoticon)'
+		title	: 'Inserează o figură expresivă (Emoticon)',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Listă numerotată',
-	bulletedlist : 'Listă cu puncte',
-	indent : 'Creşte indentarea',
-	outdent : 'Scade indentarea',
+	numberedlist	: 'Listă numerotată',
+	bulletedlist	: 'Listă cu puncte',
+	indent			: 'Creşte indentarea',
+	outdent			: 'Scade indentarea',
 
 	justify :
 	{
-		left : 'Aliniere la stânga',
-		center : 'Aliniere centrală',
-		right : 'Aliniere la dreapta',
-		block : 'Aliniere în bloc (Block Justify)'
+		left	: 'Aliniere la stânga',
+		center	: 'Aliniere centrală',
+		right	: 'Aliniere la dreapta',
+		block	: 'Aliniere în bloc (Block Justify)'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Adaugă',
-		cutError	: 'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de tăiere. Vă rugăm folosiţi tastatura (Ctrl+X).',
-		copyError	: 'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de copiere. Vă rugăm folosiţi tastatura (Ctrl+C).',
-		pasteMsg	: 'Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (<STRONG>Ctrl+V</STRONG>) şi apăsaţi <STRONG>OK</STRONG>.',
-		securityMsg	: 'Din cauza setărilor de securitate ale programului dvs. cu care navigaţi pe internet (browser), editorul nu poate accesa direct datele din clipboard. Va trebui să adăugaţi din nou datele în această fereastră.'
+		cutError	: 'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de tăiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+X).',
+		copyError	: 'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de copiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+C).',
+		pasteMsg	: 'Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (<STRONG>Ctrl/Cmd+V</STRONG>) şi apăsaţi <STRONG>OK</STRONG>.',
+		securityMsg	: 'Din cauza setărilor de securitate ale programului dvs. cu care navigaţi pe internet (browser), editorul nu poate accesa direct datele din clipboard. Va trebui să adăugaţi din nou datele în această fereastră.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Adaugă din Word',
-		title : 'Adaugă din Word',
-		advice : 'Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (<STRONG>Ctrl+V</STRONG>) şi apăsaţi <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignoră definiţiile Font Face',
-		removeStyle : 'Şterge definiţiile stilurilor'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Adaugă din Word',
+		title			: 'Adaugă din Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Adaugă ca text simplu (Plain Text)',
-		title : 'Adaugă ca text simplu (Plain Text)'
+		button	: 'Adaugă ca text simplu (Plain Text)',
+		title	: 'Adaugă ca text simplu (Plain Text)'
 	},
 
 	templates :
 	{
-		button : 'Template-uri (şabloane)',
-		title : 'Template-uri (şabloane) de conţinut',
-		insertOption: 'Înlocuieşte cuprinsul actual',
-		selectPromptMsg: 'Vă rugăm selectaţi template-ul (şablonul) ce se va deschide în editor<br>(conţinutul actual va fi pierdut):',
-		emptyListMsg : '(Niciun template (şablon) definit)'
+		button			: 'Template-uri (şabloane)',
+		title			: 'Template-uri (şabloane) de conţinut',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Înlocuieşte cuprinsul actual',
+		selectPromptMsg	: 'Vă rugăm selectaţi template-ul (şablonul) ce se va deschide în editor<br>(conţinutul actual va fi pierdut):',
+		emptyListMsg	: '(Niciun template (şablon) definit)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Stil',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Stil',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Formatare',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Formatare',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatted',
-		tag_address : 'Address',
-		tag_h1 : 'Heading 1',
-		tag_h2 : 'Heading 2',
-		tag_h3 : 'Heading 3',
-		tag_h4 : 'Heading 4',
-		tag_h5 : 'Heading 5',
-		tag_h6 : 'Heading 6',
-		tag_div : 'Normal (DIV)'
-	},
+		label		: 'Formatare',
+		panelTitle	: 'Formatare',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatted',
+		tag_address	: 'Address',
+		tag_h1		: 'Heading 1',
+		tag_h2		: 'Heading 2',
+		tag_h3		: 'Heading 3',
+		tag_h4		: 'Heading 4',
+		tag_h5		: 'Heading 5',
+		tag_h6		: 'Heading 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Font',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Font',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Font',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Font'
 	},
 
 	fontSize :
 	{
-		label : 'Mărime',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Mărime',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Mărime',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Mărime'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Culoarea textului',
-		bgColorTitle : 'Coloarea fundalului',
-		auto : 'Automatic',
-		more : 'Mai multe culori...'
+		textColorTitle	: 'Culoarea textului',
+		bgColorTitle	: 'Coloarea fundalului',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatic',
+		more			: 'Mai multe culori...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/ru.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/ru.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/ru.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Форма',
 		checkbox		: 'Флаговая кнопка',
-		radio		: 'Кнопка выбора',
+		radio			: 'Кнопка выбора',
 		textField		: 'Текстовое поле',
 		textarea		: 'Текстовая область',
 		hiddenField		: 'Скрытое поле',
 		button			: 'Кнопка',
-		select	: 'Список',
+		select			: 'Список',
 		imageButton		: 'Кнопка с изображением',
 		notSet			: '<не определено>',
@@ -89,12 +93,25 @@
 		ok				: 'ОК',
 		cancel			: 'Отмена',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'Информация',
 		advancedTab		: 'Расширенный',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
-		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
-		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		validateNumberFailed : 'Это значение не является числом.',
+		confirmNewPage	: 'Все несохраненные изменения будут утеряны. Вы уверены, что хотите перейти на другую страницу?',
+		confirmCancel	: 'Некоторые опции были изменены. Вы уверены, что хотите закрыть диалог?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
-		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+		unavailable		: '%1<span class="cke_accessibility">, недоступно</span>'
+	},
+
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
 	},
 
@@ -103,5 +120,6 @@
 	{
 		toolbar		: 'Вставить специальный символ',
-		title		: 'Выберите специальный символ'
+		title		: 'Выберите специальный символ',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Вставить/Редактировать ссылку',
+		other 		: '<другой>',
 		menu		: 'Вставить ссылку',
 		title		: 'Ссылка',
@@ -117,20 +136,15 @@
 		advanced	: 'Расширенный',
 		type		: 'Тип ссылки',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Якорь на эту страницу',
 		toEmail		: 'Эл. почта',
-		target		: 'Цель',
-		targetNotSet	: '<не определено>',
-		targetFrame	: '<фрейм>',
-		targetPopup	: '<всплывающее окно>',
-		targetNew	: 'Новое окно (_blank)',
-		targetTop	: 'Самое верхнее окно (_top)',
-		targetSelf	: 'Тоже окно (_self)',
-		targetParent	: 'Родительское окно (_parent)',
+		targetFrame		: '<фрейм>',
+		targetPopup		: '<всплывающее окно>',
 		targetFrameName	: 'Имя целевого фрейма',
 		targetPopupName	: 'Имя всплывающего окна',
 		popupFeatures	: 'Свойства всплывающего окна',
-		popupResizable	: 'Resizable', // MISSING
+		popupResizable	: 'Изменяемый размер',
 		popupStatusBar	: 'Строка состояния',
-		popupLocationBar	: 'Панель локации',
+		popupLocationBar: 'Панель локации',
 		popupToolbar	: 'Панель инструментов',
 		popupMenuBar	: 'Панель меню',
@@ -142,12 +156,11 @@
 		popupHeight		: 'Высота',
 		popupTop		: 'Позиция сверху',
-		id				: 'Id', // MISSING
+		id				: 'Id',
 		langDir			: 'Направление языка',
-		langDirNotSet	: '<не определено>',
-		langDirLTR		: 'Слева на право (LTR)',
-		langDirRTL		: 'Справа на лево (RTL)',
+		langDirLTR		: 'Слева направо (LTR)',
+		langDirRTL		: 'Справа налево (RTL)',
 		acccessKey		: 'Горячая клавиша',
 		name			: 'Имя',
-		langCode		: 'Направление языка',
+		langCode		: 'Код языка',
 		tabIndex		: 'Последовательность перехода',
 		advisoryTitle	: 'Заголовок',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -187,8 +223,8 @@
 		notFoundMsg			: 'Указанный текст не найден.',
 		matchCase			: 'Учитывать регистр',
-		matchWord			: 'Совпадение целых слов',
-		matchCyclic			: 'Match cyclic', // MISSING
+		matchWord			: 'Только слово целиком',
+		matchCyclic			: 'Начинать с начала после достижения конца',
 		replaceAll			: 'Заменить все',
-		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+		replaceSuccessMsg	: '%1 совпадение(й) заменено.'
 	},
 
@@ -204,5 +240,4 @@
 		border		: 'Размер бордюра',
 		align		: 'Выравнивание',
-		alignNotSet	: '<Не уст.>',
 		alignLeft	: 'Слева',
 		alignCenter	: 'По центру',
@@ -211,4 +246,5 @@
 		widthPx		: 'пикселей',
 		widthPc		: 'процентов',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Высота',
 		cellSpace	: 'Промежуток (spacing)',
@@ -221,11 +257,11 @@
 		headersRow		: 'Первая строка',
 		headersBoth		: 'Оба варианта',
-		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
-		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
-		invalidBorder	: 'Border size must be a number.', // MISSING
-		invalidWidth	: 'Table width must be a number.', // MISSING
-		invalidHeight	: 'Table height must be a number.', // MISSING
-		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
-		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+		invalidRows		: 'Число строк должно быть больше 0.',
+		invalidCols		: 'Число столбцов должно быть больше 0.',
+		invalidBorder	: 'Ширина бордюра должна быть числом.',
+		invalidWidth	: 'Ширина таблицы должна быть числом.',
+		invalidHeight	: 'Высота таблицы должна быть числом.',
+		invalidCellSpacing	: 'Размер промежутков (cellspacing) между ячейками должны быть числом.',
+		invalidCellPadding	: 'Отступы внутри ячеек (cellpadding) должны быть числом.',
 
 		cell :
@@ -235,31 +271,31 @@
 			insertAfter		: 'Вставить ячейку после',
 			deleteCell		: 'Удалить ячейки',
-			merge			: 'Соединить ячейки',
-			mergeRight		: 'Соединить вправо',
-			mergeDown		: 'Соединить вниз',
+			merge			: 'Объединить ячейки',
+			mergeRight		: 'Объединить с правой',
+			mergeDown		: 'Объединить с нижней',
 			splitHorizontal	: 'Разбить ячейку горизонтально',
 			splitVertical	: 'Разбить ячейку вертикально',
-			title			: 'Cell Properties', // MISSING
-			cellType		: 'Cell Type', // MISSING
-			rowSpan			: 'Rows Span', // MISSING
-			colSpan			: 'Columns Span', // MISSING
-			wordWrap		: 'Word Wrap', // MISSING
-			hAlign			: 'Horizontal Alignment', // MISSING
-			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
-			alignBaseline	: 'Baseline', // MISSING
-			bgColor			: 'Background Color', // MISSING
-			borderColor		: 'Border Color', // MISSING
-			data			: 'Data', // MISSING
-			header			: 'Header', // MISSING
-			yes				: 'Yes', // MISSING
-			no				: 'No', // MISSING
-			invalidWidth	: 'Cell width must be a number.', // MISSING
-			invalidHeight	: 'Cell height must be a number.', // MISSING
-			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
-			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			title			: 'Свойства ячейки',
+			cellType		: 'Тип ячейки',
+			rowSpan			: 'Rows Span',
+			colSpan			: 'Columns Span',
+			wordWrap		: 'Перенос по словам',
+			hAlign			: 'Выравнивание по горизонтали',
+			vAlign			: 'Выравнивание по вертикали',
+			alignTop		: 'По верху',
+			alignMiddle		: 'Посередине',
+			alignBottom		: 'По низу',
+			alignBaseline	: 'По базовой линии',
+			bgColor			: 'Цвет фона',
+			borderColor		: 'Цвет границы',
+			data			: 'Данные',
+			header			: 'Заголовок',
+			yes				: 'Да',
+			no				: 'Нет',
+			invalidWidth	: 'Ширина ячейки должна быть числом.',
+			invalidHeight	: 'Высота ячейки должна быть числом.',
+			invalidRowSpan	: 'Rows span must be a whole number.',
+			invalidColSpan	: 'Columns span must be a whole number.',
+			chooseColor		: 'Выберите'
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Действие',
 		method		: 'Метод',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Цель',
-		targetNotSet	: '<не определено>',
-		targetNew	: 'Новое окно (_blank)',
-		targetTop	: 'Самое верхнее окно (_top)',
-		targetSelf	: 'Тоже окно (_self)',
-		targetParent	: 'Родительское окно (_parent)'
+		encoding	: 'Кодировка'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Свойства кнопки с изображением',
 		menu		: 'Свойства изображения',
-		infoTab	: 'Информация о изображении',
-		btnUpload	: 'Послать на сервер',
-		url		: 'URL',
-		upload	: 'Закачать',
-		alt		: 'Альтернативный текст',
+		infoTab		: 'Информация о изображении',
+		btnUpload	: 'Отправить на сервер',
+		upload		: 'Закачать',
+		alt			: 'Альтернативный текст',
 		width		: 'Ширина',
-		height	: 'Высота',
+		height		: 'Высота',
 		lockRatio	: 'Сохранять пропорции',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Сбросить размер',
-		border	: 'Бордюр',
-		hSpace	: 'Горизонтальный отступ',
-		vSpace	: 'Вертикальный отступ',
+		border		: 'Бордюр',
+		hSpace		: 'Горизонтальный отступ',
+		vSpace		: 'Вертикальный отступ',
 		align		: 'Выравнивание',
 		alignLeft	: 'По левому краю',
-		alignAbsBottom: 'Абс понизу',
-		alignAbsMiddle: 'Абс посередине',
-		alignBaseline	: 'По базовой линии',
-		alignBottom	: 'Понизу',
-		alignMiddle	: 'Посередине',
 		alignRight	: 'По правому краю',
-		alignTextTop	: 'Текст наверху',
-		alignTop	: 'По верху',
-		preview	: 'Предварительный просмотр',
 		alertUrl	: 'Пожалуйста, введите URL изображения',
-		linkTab	: 'Ссылка',
-		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
-		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		linkTab		: 'Ссылка',
+		button2Img	: 'Do you want to transform the selected image button on a simple image?',
+		img2Button	: 'Do you want to transform the selected image on a image button?',
+		urlMissing	: 'Отсутствует URL картинки.',
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -406,50 +433,50 @@
 	{
 		properties		: 'Свойства Flash',
-		propertiesTab	: 'Properties', // MISSING
-		title		: 'Свойства Flash',
-		chkPlay		: 'Авто проигрывание',
-		chkLoop		: 'Повтор',
-		chkMenu		: 'Включить меню Flash',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Масштабировать',
+		propertiesTab	: 'Свойства',
+		title			: 'Свойства Flash',
+		chkPlay			: 'Авто проигрывание',
+		chkLoop			: 'Повтор',
+		chkMenu			: 'Включить меню Flash',
+		chkFull			: 'разрешить полноэкранный режим',
+ 		scale			: 'Масштабировать',
 		scaleAll		: 'Показывать все',
 		scaleNoBorder	: 'Без бордюра',
 		scaleFit		: 'Точное совпадение',
-		access			: 'Script Access', // MISSING
-		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Выравнивание',
-		alignLeft	: 'По левому краю',
-		alignAbsBottom: 'Абс понизу',
-		alignAbsMiddle: 'Абс посередине',
+		access			: 'Область доступа скрипта',
+		accessAlways	: 'Всегда',
+		accessSameDomain: 'Тот же домен',
+		accessNever		: 'Никогда',
+		align			: 'Выравнивание',
+		alignLeft		: 'По левому краю',
+		alignAbsBottom	: 'Абс понизу',
+		alignAbsMiddle	: 'Абс посередине',
 		alignBaseline	: 'По базовой линии',
-		alignBottom	: 'Понизу',
-		alignMiddle	: 'Посередине',
-		alignRight	: 'По правому краю',
+		alignBottom		: 'Понизу',
+		alignMiddle		: 'Посередине',
+		alignRight		: 'По правому краю',
 		alignTextTop	: 'Текст наверху',
-		alignTop	: 'По верху',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Цвет фона',
-		width	: 'Ширина',
-		height	: 'Высота',
-		hSpace	: 'Горизонтальный отступ',
-		vSpace	: 'Вертикальный отступ',
-		validateSrc : 'Пожалуйста, введите URL ссылки',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'По верху',
+		quality			: 'Качество',
+		qualityBest		: 'Лучшее',
+		qualityHigh		: 'Высокое',
+		qualityAutoHigh	: 'Высокое (авто)',
+		qualityMedium	: 'Среднее',
+		qualityAutoLow	: 'Низкое (авто)',
+		qualityLow		: 'Низкое',
+		windowModeWindow: 'Окно',
+		windowModeOpaque: 'Непрозрачный',
+		windowModeTransparent : 'Прозрачный',
+		windowMode		: 'Оконный режим',
+		flashvars		: 'Переменные для Flash',
+		bgcolor			: 'Цвет фона',
+		width			: 'Ширина',
+		height			: 'Высота',
+		hSpace			: 'Горизонтальный отступ',
+		vSpace			: 'Вертикальный отступ',
+		validateSrc		: 'Пожалуйста, введите URL ссылки',
+		validateWidth	: 'Ширина задается числом.',
+		validateHeight	: 'Высота задается числом.',
+		validateHSpace	: 'Горизонтальный отступ задается числом.',
+		validateVSpace	: 'Вертикальный отступ задается числом.'
 	},
 
@@ -458,7 +485,7 @@
 	{
 		toolbar			: 'Проверить орфографию',
-		title			: 'Spell Check', // MISSING
-		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
-		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		title			: 'Проверка правописания',
+		notAvailable	: 'Извините, сервис сейчас недоступен.',
+		errorLoading	: 'Ошибка при загрузке служебного хоста приложения: %s.',
 		notInDic		: 'Нет в словаре',
 		changeTo		: 'Заменить на',
@@ -473,5 +500,5 @@
 		noChanges		: 'Проверка орфографии закончена: ни одного слова не изменено',
 		oneChange		: 'Проверка орфографии закончена: одно слово изменено',
-		manyChanges		: 'Проверка орфографии закончена: 1% слов изменен',
+		manyChanges		: 'Проверка орфографии закончена: 1% слов изменено',
 		ieSpellDownload	: 'Модуль проверки орфографии не установлен. Хотите скачать его сейчас?'
 	},
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Смайлик',
-		title	: 'Вставить смайлик'
+		title	: 'Вставить смайлик',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
-	},
-
-	numberedlist : 'Нумерованный список',
-	bulletedlist : 'Маркированный список',
-	indent : 'Увеличить отступ',
-	outdent : 'Уменьшить отступ',
+		eleLabel : 'Elements path', // MISSING
+		eleTitle : '%1 элемент'
+	},
+
+	numberedlist	: 'Нумерованный список',
+	bulletedlist	: 'Маркированный список',
+	indent			: 'Увеличить отступ',
+	outdent			: 'Уменьшить отступ',
 
 	justify :
 	{
-		left : 'По левому краю',
-		center : 'По центру',
-		right : 'По правому краю',
-		block : 'По ширине'
+		left	: 'По левому краю',
+		center	: 'По центру',
+		right	: 'По правому краю',
+		block	: 'По ширине'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Вставить',
-		cutError	: 'Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции вырезания. Пожалуйста, используйте клавиатуру для этого (Ctrl+X).',
-		copyError	: 'Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции копирования. Пожалуйста, используйте клавиатуру для этого (Ctrl+C).',
-		pasteMsg	: 'Пожалуйста, вставьте текст в прямоугольник, используя сочетание клавиш (<STRONG>Ctrl+V</STRONG>), и нажмите <STRONG>OK</STRONG>.',
-		securityMsg	: 'По причине настроек безопасности браузера, редактор не имеет доступа к данным буфера обмена напрямую. Вам необходимо вставить текст снова в это окно.'
+		cutError	: 'Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции вырезания. Пожалуйста, используйте клавиатуру для этого (Ctrl/Cmd+X).',
+		copyError	: 'Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции копирования. Пожалуйста, используйте клавиатуру для этого (Ctrl/Cmd+C).',
+		pasteMsg	: 'Пожалуйста, вставьте текст в прямоугольник, используя сочетание клавиш (<STRONG>Ctrl/Cmd+V</STRONG>), и нажмите <STRONG>OK</STRONG>.',
+		securityMsg	: 'По причине настроек безопасности браузера, редактор не имеет доступа к данным буфера обмена напрямую. Вам необходимо вставить текст снова в это окно.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Вставить из Word',
-		title : 'Вставить из Word',
-		advice : 'Пожалуйста, вставьте текст в прямоугольник, используя сочетание клавиш (<STRONG>Ctrl+V</STRONG>), и нажмите <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Игнорировать определения гарнитуры',
-		removeStyle : 'Убрать определения стилей'
+		confirmCleanup	: 'Текст, который вы хотите вставить, похож на копируемый из Word. Вы хотите очистить его перед вставкой?',
+		toolbar			: 'Вставить из Word',
+		title			: 'Вставить из Word',
+		error			: 'Невозможно очистить вставленные данные из-за внутренней ошибки'
 	},
 
 	pasteText :
 	{
-		button : 'Вставить только текст',
-		title : 'Вставить только текст'
+		button	: 'Вставить только текст',
+		title	: 'Вставить только текст'
 	},
 
 	templates :
 	{
-		button : 'Шаблоны',
-		title : 'Шаблоны содержимого',
-		insertOption: 'Заменить текущее содержание',
-		selectPromptMsg: 'Пожалуйста, выберете шаблон для открытия в редакторе<br>(текущее содержимое будет потеряно):',
-		emptyListMsg : '(Ни одного шаблона не определено)'
+		button			: 'Шаблоны',
+		title			: 'Шаблоны содержимого',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Заменить текущее содержание',
+		selectPromptMsg	: 'Пожалуйста, выберете шаблон для открытия в редакторе<br>(текущее содержимое будет потеряно):',
+		emptyListMsg	: '(Ни одного шаблона не определено)'
 	},
 
@@ -540,146 +570,178 @@
 	stylesCombo :
 	{
-		label : 'Стиль',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Стиль',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles',
+		panelTitle2	: 'Inline Styles',
+		panelTitle3	: 'Стили объекта'
 	},
 
 	format :
 	{
-		label : 'Форматирование',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Форматирование',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		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)'
-	},
+		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	: 'Классы таблицы стилей',
+		styleSelectLabel	: 'Стиль',
+		IdInputLabel		: 'Id',
+		languageCodeInputLabel	: 'Код языка',
+		inlineStyleInputLabel	: 'Локальный стиль',
+		advisoryTitleInputLabel	: 'Advisory Title',
+		langDirLabel		: 'Направление письма',
+		langDirLTRLabel		: 'Слева направо (LTR)',
+		langDirRTLLabel		: 'Справа налево (RTL)',
+		edit				: 'Редактировать Div',
+		remove				: 'Убрать Div'
+  	},
 
 	font :
 	{
-		label : 'Шрифт',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Шрифт',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Шрифт',
+		voiceLabel	: 'Шрифт',
+		panelTitle	: 'Шрифт'
 	},
 
 	fontSize :
 	{
-		label : 'Размер',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Размер',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Размер',
+		voiceLabel	: 'Размер шрифта',
+		panelTitle	: 'Размер'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Цвет текста',
-		bgColorTitle : 'Цвет фона',
-		auto : 'Автоматический',
-		more : 'Цвета...'
+		textColorTitle	: 'Цвет текста',
+		bgColorTitle	: 'Цвет фона',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Автоматический',
+		more			: 'Цвета...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'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' : 'Лазурь',
+		'F0F8FF' : 'Бледно-голубой',
+		'E6E6FA' : 'Бледно-лиловый',
+		'FFF' : 'Белый'
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Проверка Орфографии по Мере Ввода',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Включить ПОМВ',
+		disable			: 'Отключить ПОМВ',
+		about			: 'О ПОМВ',
+		toggle			: 'Переключить ПОМВ',
+		options			: 'Настройки',
+		langs			: 'Языки',
+		moreSuggestions	: 'Больше вариантов',
+		ignore			: 'Пропустить',
+		ignoreAll		: 'Пропустить всё',
+		addWord			: 'Добавить слово',
+		emptyDic		: 'Имя словаря должно быть не пустым.',
+
+		optionsTab		: 'Настройки',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Языки',
+
+		dictionariesTab	: 'Словари',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'О словарях'
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
-	},
-
-	maximize : 'Maximize', // MISSING
-	minimize : 'Minimize', // MISSING
+		title		: 'О программе CKEditor',
+		dlgTitle	: 'О программе CKEditor',
+		moreInfo	: 'По вопросам лицензирования обращайтесь на наш сайт:',
+		copy		: 'Copyright &copy; $1. Все права защищены.'
+	},
+
+	maximize : 'Максимизировать',
+	minimize : 'Минимизировать',
 
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
-	},
-
-	resize : 'Drag to resize', // MISSING
+		anchor	: 'Якорь',
+		flash	: 'Flash-анимация',
+		div		: 'Разрыв страницы',
+		unknown	: 'Неизвестный объект'
+	},
+
+	resize : 'Перетащите для изменения размера',
 
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Выберите цвет',
+		options	:	'Color Options', // MISSING
+		highlight	: 'Выделить',
+		selected	: 'Выбранное',
+		clear		: 'Очистить'
+	},
+
+	toolbarCollapse	: 'Свернуть панель инструментов',
+	toolbarExpand	: 'Развернуть панель инструментов'
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/sk.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/sk.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/sk.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Formulár',
 		checkbox		: 'Zaškrtávacie políčko',
-		radio		: 'Prepínač',
+		radio			: 'Prepínač',
 		textField		: 'Textové pole',
 		textarea		: 'Textová oblasť',
 		hiddenField		: 'Skryté pole',
 		button			: 'Tlačidlo',
-		select	: 'Rozbaľovací zoznam',
+		select			: 'Rozbaľovací zoznam',
 		imageButton		: 'Obrázkové tlačidlo',
 		notSet			: '<nenastavené>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Zrušiť',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'Hlavné',
 		advancedTab		: 'Rozšírené',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Vložiť špeciálne znaky',
-		title		: 'Výber špeciálneho znaku'
+		title		: 'Výber špeciálneho znaku',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Vložiť/zmeniť odkaz',
+		other 		: '<iný>',
 		menu		: 'Zmeniť odkaz',
 		title		: 'Odkaz',
@@ -117,14 +136,9 @@
 		advanced	: 'Rozšírené',
 		type		: 'Typ odkazu',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Kotva v tejto stránke',
 		toEmail		: 'E-Mail',
-		target		: 'Cieľ',
-		targetNotSet	: '<nenastavené>',
-		targetFrame	: '<rámec>',
-		targetPopup	: '<vyskakovacie okno>',
-		targetNew	: 'Nové okno (_blank)',
-		targetTop	: 'Hlavné okno (_top)',
-		targetSelf	: 'Rovnaké okno (_self)',
-		targetParent	: 'Rodičovské okno (_parent)',
+		targetFrame		: '<rámec>',
+		targetPopup		: '<vyskakovacie okno>',
 		targetFrameName	: 'Meno rámu cieľa',
 		targetPopupName	: 'Názov vyskakovacieho okna',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Stavový riadok',
-		popupLocationBar	: 'Panel umiestnenia',
+		popupLocationBar: 'Panel umiestnenia',
 		popupToolbar	: 'Panel nástrojov',
 		popupMenuBar	: 'Panel ponuky',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Orientácia jazyka',
-		langDirNotSet	: '<nenastavené>',
 		langDirLTR		: 'Zľava doprava (LTR)',
 		langDirRTL		: 'Sprava doľava (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Ohraničenie',
 		align		: 'Zarovnanie',
-		alignNotSet	: '<nenastavené>',
 		alignLeft	: 'Vľavo',
 		alignCenter	: 'Na stred',
@@ -211,4 +246,5 @@
 		widthPx		: 'pixelov',
 		widthPc		: 'percent',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Výška',
 		cellSpace	: 'Vzdialenosť buniek',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Akcie',
 		method		: 'Metóda',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Cieľ',
-		targetNotSet	: '<nenastavené>',
-		targetNew	: 'Nové okno (_blank)',
-		targetTop	: 'Hlavné okno (_top)',
-		targetSelf	: 'Rovnaké okno (_self)',
-		targetParent	: 'Rodičovské okno (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Vlastnosti obrázkového tlačidla',
 		menu		: 'Vlastnosti obrázku',
-		infoTab	: 'Informácie o obrázku',
+		infoTab		: 'Informácie o obrázku',
 		btnUpload	: 'Odoslať na server',
-		url		: 'URL',
-		upload	: 'Odoslať',
-		alt		: 'Alternatívny text',
+		upload		: 'Odoslať',
+		alt			: 'Alternatívny text',
 		width		: 'Šírka',
-		height	: 'Výška',
+		height		: 'Výška',
 		lockRatio	: 'Zámok',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Pôvodná veľkosť',
-		border	: 'Okraje',
-		hSpace	: 'H-medzera',
-		vSpace	: 'V-medzera',
+		border		: 'Okraje',
+		hSpace		: 'H-medzera',
+		vSpace		: 'V-medzera',
 		align		: 'Zarovnanie',
 		alignLeft	: 'Vľavo',
-		alignAbsBottom: 'Úplne dole',
-		alignAbsMiddle: 'Do stredu',
-		alignBaseline	: 'Na základňu',
-		alignBottom	: 'Dole',
-		alignMiddle	: 'Na stred',
 		alignRight	: 'Vpravo',
-		alignTextTop	: 'Na horný okraj textu',
-		alignTop	: 'Nahor',
-		preview	: 'Náhľad',
 		alertUrl	: 'Zadajte prosím URL obrázku',
-		linkTab	: 'Odkaz',
+		linkTab		: 'Odkaz',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Vlastnosti Flashu',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Vlastnosti Flashu',
-		chkPlay		: 'Automatické prehrávanie',
-		chkLoop		: 'Opakovanie',
-		chkMenu		: 'Povoliť Flash Menu',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Mierka',
+		title			: 'Vlastnosti Flashu',
+		chkPlay			: 'Automatické prehrávanie',
+		chkLoop			: 'Opakovanie',
+		chkMenu			: 'Povoliť Flash Menu',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Mierka',
 		scaleAll		: 'Zobraziť mierku',
 		scaleNoBorder	: 'Bez okrajov',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Zarovnanie',
-		alignLeft	: 'Vľavo',
-		alignAbsBottom: 'Úplne dole',
-		alignAbsMiddle: 'Do stredu',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Zarovnanie',
+		alignLeft		: 'Vľavo',
+		alignAbsBottom	: 'Úplne dole',
+		alignAbsMiddle	: 'Do stredu',
 		alignBaseline	: 'Na základňu',
-		alignBottom	: 'Dole',
-		alignMiddle	: 'Na stred',
-		alignRight	: 'Vpravo',
+		alignBottom		: 'Dole',
+		alignMiddle		: 'Na stred',
+		alignRight		: 'Vpravo',
 		alignTextTop	: 'Na horný okraj textu',
-		alignTop	: 'Nahor',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Farba pozadia',
-		width	: 'Šírka',
-		height	: 'Výška',
-		hSpace	: 'H-medzera',
-		vSpace	: 'V-medzera',
-		validateSrc : 'Zadajte prosím URL odkazu',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Nahor',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Farba pozadia',
+		width			: 'Šírka',
+		height			: 'Výška',
+		hSpace			: 'H-medzera',
+		vSpace			: 'V-medzera',
+		validateSrc		: 'Zadajte prosím URL odkazu',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Smajlíky',
-		title	: 'Vkladanie smajlíkov'
+		title	: 'Vkladanie smajlíkov',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Číslovanie',
-	bulletedlist : 'Odrážky',
-	indent : 'Zväčšiť odsadenie',
-	outdent : 'Zmenšiť odsadenie',
+	numberedlist	: 'Číslovanie',
+	bulletedlist	: 'Odrážky',
+	indent			: 'Zväčšiť odsadenie',
+	outdent			: 'Zmenšiť odsadenie',
 
 	justify :
 	{
-		left : 'Zarovnať vľavo',
-		center : 'Zarovnať na stred',
-		right : 'Zarovnať vpravo',
-		block : 'Zarovnať do bloku'
+		left	: 'Zarovnať vľavo',
+		center	: 'Zarovnať na stred',
+		right	: 'Zarovnať vpravo',
+		block	: 'Zarovnať do bloku'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Vložiť',
-		cutError	: 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre vystrihnutie zvoleného textu do schránky. Prosím vystrihnite zvolený text do schránky pomocou klávesnice (Ctrl+X).',
-		copyError	: 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre kopírovanie zvoleného textu do schránky. Prosím skopírujte zvolený text do schránky pomocou klávesnice (Ctrl+C).',
-		pasteMsg	: 'Prosím vložte nasledovný rámček použitím klávesnice (<STRONG>Ctrl+V</STRONG>) a stlačte <STRONG>OK</STRONG>.',
-		securityMsg	: 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru pristupovať priamo k datám v schránke. Musíte ich vložiť znovu do tohto okna.'
+		cutError	: 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre vystrihnutie zvoleného textu do schránky. Prosím vystrihnite zvolený text do schránky pomocou klávesnice (Ctrl/Cmd+X).',
+		copyError	: 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre kopírovanie zvoleného textu do schránky. Prosím skopírujte zvolený text do schránky pomocou klávesnice (Ctrl/Cmd+C).',
+		pasteMsg	: 'Prosím vložte nasledovný rámček použitím klávesnice (<STRONG>Ctrl/Cmd+V</STRONG>) a stlačte <STRONG>OK</STRONG>.',
+		securityMsg	: 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru pristupovať priamo k datám v schránke. Musíte ich vložiť znovu do tohto okna.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Vložiť z Wordu',
-		title : 'Vložiť z Wordu',
-		advice : 'Prosím vložte nasledovný rámček použitím klávesnice (<STRONG>Ctrl+V</STRONG>) a stlačte <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignorovať nastavenia typu písma',
-		removeStyle : 'Odstrániť formátovanie'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Vložiť z Wordu',
+		title			: 'Vložiť z Wordu',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Vložiť ako čistý text',
-		title : 'Vložiť ako čistý text'
+		button	: 'Vložiť ako čistý text',
+		title	: 'Vložiť ako čistý text'
 	},
 
 	templates :
 	{
-		button : 'Šablóny',
-		title : 'Šablóny obsahu',
-		insertOption: 'Nahradiť aktuálny obsah',
-		selectPromptMsg: 'Prosím vyberte šablóny na otvorenie v editore<br>(súšasný obsah bude stratený):',
-		emptyListMsg : '(žiadne šablóny nenájdené)'
+		button			: 'Šablóny',
+		title			: 'Šablóny obsahu',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Nahradiť aktuálny obsah',
+		selectPromptMsg	: 'Prosím vyberte šablóny na otvorenie v editore<br>(súšasný obsah bude stratený):',
+		emptyListMsg	: '(žiadne šablóny nenájdené)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Štýl',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Štýl',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Formát',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Formát',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normálny',
-		tag_pre : 'Formátovaný',
-		tag_address : 'Adresa',
-		tag_h1 : 'Nadpis 1',
-		tag_h2 : 'Nadpis 2',
-		tag_h3 : 'Nadpis 3',
-		tag_h4 : 'Nadpis 4',
-		tag_h5 : 'Nadpis 5',
-		tag_h6 : 'Nadpis 6',
-		tag_div : 'Odsek (DIV)'
-	},
+		label		: 'Formát',
+		panelTitle	: 'Formát',
+
+		tag_p		: 'Normálny',
+		tag_pre		: 'Formátovaný',
+		tag_address	: 'Adresa',
+		tag_h1		: 'Nadpis 1',
+		tag_h2		: 'Nadpis 2',
+		tag_h3		: 'Nadpis 3',
+		tag_h4		: 'Nadpis 4',
+		tag_h5		: 'Nadpis 5',
+		tag_h6		: 'Nadpis 6',
+		tag_div		: 'Odsek (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Písmo',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Písmo',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Písmo',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Písmo'
 	},
 
 	fontSize :
 	{
-		label : 'Veľkosť',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Veľkosť',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Veľkosť',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Veľkosť'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Farba textu',
-		bgColorTitle : 'Farba pozadia',
-		auto : 'Automaticky',
-		more : 'Viac farieb...'
+		textColorTitle	: 'Farba textu',
+		bgColorTitle	: 'Farba pozadia',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automaticky',
+		more			: 'Viac farieb...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/sl.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/sl.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/sl.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Obrazec',
 		checkbox		: 'Potrditveno polje',
-		radio		: 'Izbirno polje',
+		radio			: 'Izbirno polje',
 		textField		: 'Vnosno polje',
 		textarea		: 'Vnosno območje',
 		hiddenField		: 'Skrito polje',
 		button			: 'Gumb',
-		select	: 'Spustni seznam',
+		select			: 'Spustni seznam',
 		imageButton		: 'Gumb s sliko',
 		notSet			: '<ni postavljen>',
@@ -89,12 +93,25 @@
 		ok				: 'V redu',
 		cancel			: 'Prekliči',
-		generalTab		: 'General', // MISSING
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
+		generalTab		: 'Splošno',
 		advancedTab		: 'Napredno',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
-		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
-		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		validateNumberFailed : 'Ta vrednost ni število.',
+		confirmNewPage	: 'Vse neshranjene spremembe te vsebine bodo izgubljene. Ali gotovo želiš naložiti novo stran?',
+		confirmCancel	: 'Nekaj možnosti je bilo spremenjenih. Ali gotovo želiš zapreti okno?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
-		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+		unavailable		: '%1<span class="cke_accessibility">, nedosegljiv</span>'
+	},
+
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
 	},
 
@@ -103,5 +120,6 @@
 	{
 		toolbar		: 'Vstavi posebni znak',
-		title		: 'Izberi posebni znak'
+		title		: 'Izberi posebni znak',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Vstavi/uredi povezavo',
+		other 		: '<drug>',
 		menu		: 'Uredi povezavo',
 		title		: 'Povezava',
@@ -117,20 +136,15 @@
 		advanced	: 'Napredno',
 		type		: 'Vrsta povezave',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Zaznamek na tej strani',
 		toEmail		: 'Elektronski naslov',
-		target		: 'Cilj',
-		targetNotSet	: '<ni postavljen>',
-		targetFrame	: '<okvir>',
-		targetPopup	: '<pojavno okno>',
-		targetNew	: 'Novo okno (_blank)',
-		targetTop	: 'Najvišje okno (_top)',
-		targetSelf	: 'Isto okno (_self)',
-		targetParent	: 'Starševsko okno (_parent)',
+		targetFrame		: '<okvir>',
+		targetPopup		: '<pojavno okno>',
 		targetFrameName	: 'Ime ciljnega okvirja',
 		targetPopupName	: 'Ime pojavnega okna',
 		popupFeatures	: 'Značilnosti pojavnega okna',
-		popupResizable	: 'Resizable', // MISSING
+		popupResizable	: 'Spremenljive velikosti',
 		popupStatusBar	: 'Vrstica stanja',
-		popupLocationBar	: 'Naslovna vrstica',
+		popupLocationBar: 'Naslovna vrstica',
 		popupToolbar	: 'Orodna vrstica',
 		popupMenuBar	: 'Menijska vrstica',
@@ -142,7 +156,6 @@
 		popupHeight		: 'Višina',
 		popupTop		: 'Lega na vrhu',
-		id				: 'Id', // MISSING
+		id				: 'Id',
 		langDir			: 'Smer jezika',
-		langDirNotSet	: '<ni postavljen>',
 		langDirLTR		: 'Od leve proti desni (LTR)',
 		langDirRTL		: 'Od desne proti levi (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -188,7 +224,7 @@
 		matchCase			: 'Razlikuj velike in male črke',
 		matchWord			: 'Samo cele besede',
-		matchCyclic			: 'Match cyclic', // MISSING
+		matchCyclic			: 'Primerjaj znake v cirilici',
 		replaceAll			: 'Zamenjaj vse',
-		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+		replaceSuccessMsg	: '%1 pojavitev je bilo zamenjano.'
 	},
 
@@ -204,5 +240,4 @@
 		border		: 'Velikost obrobe',
 		align		: 'Poravnava',
-		alignNotSet	: '<Ni nastavljeno>',
 		alignLeft	: 'Levo',
 		alignCenter	: 'Sredinsko',
@@ -211,4 +246,5 @@
 		widthPx		: 'pik',
 		widthPc		: 'procentov',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Višina',
 		cellSpace	: 'Razmik med celicami',
@@ -216,16 +252,16 @@
 		caption		: 'Naslov',
 		summary		: 'Povzetek',
-		headers		: 'Headers', // MISSING
-		headersNone		: 'None', // MISSING
-		headersColumn	: 'First column', // MISSING
-		headersRow		: 'First Row', // MISSING
-		headersBoth		: 'Both', // MISSING
-		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
-		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
-		invalidBorder	: 'Border size must be a number.', // MISSING
-		invalidWidth	: 'Table width must be a number.', // MISSING
-		invalidHeight	: 'Table height must be a number.', // MISSING
-		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
-		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+		headers		: 'Glave',
+		headersNone		: 'Brez',
+		headersColumn	: 'Prvi stolpec',
+		headersRow		: 'Prva vrstica',
+		headersBoth		: 'Oboje',
+		invalidRows		: 'Število vrstic mora biti večje od 0.',
+		invalidCols		: 'Število stolpcev mora biti večje od 0.',
+		invalidBorder	: 'Širina obrobe mora biti število.',
+		invalidWidth	: 'Širina tabele mora biti število.',
+		invalidHeight	: 'Višina tabele mora biti število.',
+		invalidCellSpacing	: 'Razmik med celicami mora biti število.',
+		invalidCellPadding	: 'Zamik celic mora biti število',
 
 		cell :
@@ -240,26 +276,26 @@
 			splitHorizontal	: 'Razdeli celico vodoravno',
 			splitVertical	: 'Razdeli celico navpično',
-			title			: 'Cell Properties', // MISSING
-			cellType		: 'Cell Type', // MISSING
-			rowSpan			: 'Rows Span', // MISSING
-			colSpan			: 'Columns Span', // MISSING
-			wordWrap		: 'Word Wrap', // MISSING
-			hAlign			: 'Horizontal Alignment', // MISSING
-			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
-			alignBaseline	: 'Baseline', // MISSING
-			bgColor			: 'Background Color', // MISSING
-			borderColor		: 'Border Color', // MISSING
-			data			: 'Data', // MISSING
-			header			: 'Header', // MISSING
-			yes				: 'Yes', // MISSING
-			no				: 'No', // MISSING
-			invalidWidth	: 'Cell width must be a number.', // MISSING
-			invalidHeight	: 'Cell height must be a number.', // MISSING
-			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
-			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			title			: 'Lastnosti celice',
+			cellType		: 'Vrsta celice',
+			rowSpan			: 'Razpon vrstic',
+			colSpan			: 'Razpon stolpcev',
+			wordWrap		: 'Prelom besedila',
+			hAlign			: 'Vodoravna poravnava',
+			vAlign			: 'Navpična poravnava',
+			alignTop		: 'Vrh',
+			alignMiddle		: 'Sredina',
+			alignBottom		: 'Dno',
+			alignBaseline	: 'Osnovnica',
+			bgColor			: 'Barva ozadja',
+			borderColor		: 'Barva obrobe',
+			data			: 'Podatki',
+			header			: 'Glava',
+			yes				: 'Da',
+			no				: 'Ne',
+			invalidWidth	: 'Širina celice mora biti število.',
+			invalidHeight	: 'Višina celice mora biti število.',
+			invalidRowSpan	: 'Razpon vrstic mora biti celo število.',
+			invalidColSpan	: 'Razpon stolpcev mora biti celo število.',
+			chooseColor		: 'Izberi'
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Akcija',
 		method		: 'Metoda',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Cilj',
-		targetNotSet	: '<ni postavljen>',
-		targetNew	: 'Novo okno (_blank)',
-		targetTop	: 'Najvišje okno (_top)',
-		targetSelf	: 'Isto okno (_self)',
-		targetParent	: 'Starševsko okno (_parent)'
+		encoding	: 'Kodiranje znakov'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Lastnosti gumba s sliko',
 		menu		: 'Lastnosti slike',
-		infoTab	: 'Podatki o sliki',
+		infoTab		: 'Podatki o sliki',
 		btnUpload	: 'Pošlji na strežnik',
-		url		: 'URL',
-		upload	: 'Pošlji',
-		alt		: 'Nadomestno besedilo',
+		upload		: 'Pošlji',
+		alt			: 'Nadomestno besedilo',
 		width		: 'Širina',
-		height	: 'Višina',
+		height		: 'Višina',
 		lockRatio	: 'Zakleni razmerje',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Ponastavi velikost',
-		border	: 'Obroba',
-		hSpace	: 'Vodoravni razmik',
-		vSpace	: 'Navpični razmik',
+		border		: 'Obroba',
+		hSpace		: 'Vodoravni razmik',
+		vSpace		: 'Navpični razmik',
 		align		: 'Poravnava',
 		alignLeft	: 'Levo',
-		alignAbsBottom: 'Popolnoma na dno',
-		alignAbsMiddle: 'Popolnoma v sredino',
-		alignBaseline	: 'Na osnovno črto',
-		alignBottom	: 'Na dno',
-		alignMiddle	: 'V sredino',
 		alignRight	: 'Desno',
-		alignTextTop	: 'Besedilo na vrh',
-		alignTop	: 'Na vrh',
-		preview	: 'Predogled',
 		alertUrl	: 'Vnesite URL slike',
-		linkTab	: 'Povezava',
-		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
-		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		linkTab		: 'Povezava',
+		button2Img	: 'Želiš pretvoriti izbrani gumb s sliko v preprosto sliko?',
+		img2Button	: 'Želiš pretvoriti izbrano sliko v gumb s sliko?',
+		urlMissing	: 'Manjka vir (URL) slike.',
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -406,50 +433,50 @@
 	{
 		properties		: 'Lastnosti Flash',
-		propertiesTab	: 'Properties', // MISSING
-		title		: 'Lastnosti Flash',
-		chkPlay		: 'Samodejno predvajaj',
-		chkLoop		: 'Ponavljanje',
-		chkMenu		: 'Omogoči Flash Meni',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Povečava',
+		propertiesTab	: 'Lastnosti',
+		title			: 'Lastnosti Flash',
+		chkPlay			: 'Samodejno predvajaj',
+		chkLoop			: 'Ponavljanje',
+		chkMenu			: 'Omogoči Flash Meni',
+		chkFull			: 'Dovoli celozaslonski način',
+ 		scale			: 'Povečava',
 		scaleAll		: 'Pokaži vse',
 		scaleNoBorder	: 'Brez obrobe',
 		scaleFit		: 'Natančno prileganje',
-		access			: 'Script Access', // MISSING
-		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Poravnava',
-		alignLeft	: 'Levo',
-		alignAbsBottom: 'Popolnoma na dno',
-		alignAbsMiddle: 'Popolnoma v sredino',
+		access			: 'Dostop skript',
+		accessAlways	: 'Vedno',
+		accessSameDomain: 'Samo ista domena',
+		accessNever		: 'Nikoli',
+		align			: 'Poravnava',
+		alignLeft		: 'Levo',
+		alignAbsBottom	: 'Popolnoma na dno',
+		alignAbsMiddle	: 'Popolnoma v sredino',
 		alignBaseline	: 'Na osnovno črto',
-		alignBottom	: 'Na dno',
-		alignMiddle	: 'V sredino',
-		alignRight	: 'Desno',
+		alignBottom		: 'Na dno',
+		alignMiddle		: 'V sredino',
+		alignRight		: 'Desno',
 		alignTextTop	: 'Besedilo na vrh',
-		alignTop	: 'Na vrh',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Barva ozadja',
-		width	: 'Širina',
-		height	: 'Višina',
-		hSpace	: 'Vodoravni razmik',
-		vSpace	: 'Navpični razmik',
-		validateSrc : 'Vnesite URL povezave',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Na vrh',
+		quality			: 'Kakovost',
+		qualityBest		: 'Najvišja',
+		qualityHigh		: 'Visoka',
+		qualityAutoHigh	: 'Samodejno visoka',
+		qualityMedium	: 'Srednja',
+		qualityAutoLow	: 'Samodejno nizka',
+		qualityLow		: 'Nizka',
+		windowModeWindow: 'Okno',
+		windowModeOpaque: 'Motno',
+		windowModeTransparent : 'Prosojno',
+		windowMode		: 'Vrsta okna',
+		flashvars		: 'Spremenljivke za Flash',
+		bgcolor			: 'Barva ozadja',
+		width			: 'Širina',
+		height			: 'Višina',
+		hSpace			: 'Vodoravni razmik',
+		vSpace			: 'Navpični razmik',
+		validateSrc		: 'Vnesite URL povezave',
+		validateWidth	: 'Širina mora biti število.',
+		validateHeight	: 'Višina mora biti število.',
+		validateHSpace	: 'Vodoravni razmik mora biti število.',
+		validateVSpace	: 'Navpični razmik mora biti število.'
 	},
 
@@ -458,7 +485,7 @@
 	{
 		toolbar			: 'Preveri črkovanje',
-		title			: 'Spell Check', // MISSING
-		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
-		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		title			: 'Črkovalnik',
+		notAvailable	: 'Oprostite, storitev trenutno ni dosegljiva.',
+		errorLoading	: 'Napaka pri nalaganju storitve programa na naslovu %s.',
 		notInDic		: 'Ni v slovarju',
 		changeTo		: 'Spremeni v',
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Smeško',
-		title	: 'Vstavi smeška'
+		title	: 'Vstavi smeška',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
-	},
-
-	numberedlist : 'Oštevilčen seznam',
-	bulletedlist : 'Označen seznam',
-	indent : 'Povečaj zamik',
-	outdent : 'Zmanjšaj zamik',
+		eleLabel : 'Elements path', // MISSING
+		eleTitle : '%1 element'
+	},
+
+	numberedlist	: 'Oštevilčen seznam',
+	bulletedlist	: 'Označen seznam',
+	indent			: 'Povečaj zamik',
+	outdent			: 'Zmanjšaj zamik',
 
 	justify :
 	{
-		left : 'Leva poravnava',
-		center : 'Sredinska poravnava',
-		right : 'Desna poravnava',
-		block : 'Obojestranska poravnava'
+		left	: 'Leva poravnava',
+		center	: 'Sredinska poravnava',
+		right	: 'Desna poravnava',
+		block	: 'Obojestranska poravnava'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Prilepi',
-		cutError	: 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl+X).',
-		copyError	: 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl+C).',
-		pasteMsg	: 'Prosim prilepite v sleči okvir s pomočjo tipkovnice (<STRONG>Ctrl+V</STRONG>) in pritisnite <STRONG>V redu</STRONG>.',
-		securityMsg	: 'Zaradi varnostnih nastavitev vašega brskalnika urejevalnik ne more neposredno dostopati do odložišča. Vsebino odložišča ponovno prilepite v to okno.'
+		cutError	: 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+X).',
+		copyError	: 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+C).',
+		pasteMsg	: 'Prosim prilepite v sleči okvir s pomočjo tipkovnice (<STRONG>Ctrl/Cmd+V</STRONG>) in pritisnite <STRONG>V redu</STRONG>.',
+		securityMsg	: 'Zaradi varnostnih nastavitev vašega brskalnika urejevalnik ne more neposredno dostopati do odložišča. Vsebino odložišča ponovno prilepite v to okno.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Prilepi iz Worda',
-		title : 'Prilepi iz Worda',
-		advice : 'Prosim prilepite v sleči okvir s pomočjo tipkovnice (<STRONG>Ctrl+V</STRONG>) in pritisnite <STRONG>V redu</STRONG>.',
-		ignoreFontFace : 'Prezri obliko pisave',
-		removeStyle : 'Odstrani nastavitve stila'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Prilepi iz Worda',
+		title			: 'Prilepi iz Worda',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Prilepi kot golo besedilo',
-		title : 'Prilepi kot golo besedilo'
+		button	: 'Prilepi kot golo besedilo',
+		title	: 'Prilepi kot golo besedilo'
 	},
 
 	templates :
 	{
-		button : 'Predloge',
-		title : 'Vsebinske predloge',
-		insertOption: 'Zamenjaj trenutno vsebino',
-		selectPromptMsg: 'Izberite predlogo, ki jo želite odpreti v urejevalniku<br>(trenutna vsebina bo izgubljena):',
-		emptyListMsg : '(Ni pripravljenih predlog)'
+		button			: 'Predloge',
+		title			: 'Vsebinske predloge',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Zamenjaj trenutno vsebino',
+		selectPromptMsg	: 'Izberite predlogo, ki jo želite odpreti v urejevalniku<br>(trenutna vsebina bo izgubljena):',
+		emptyListMsg	: '(Ni pripravljenih predlog)'
 	},
 
@@ -540,146 +570,178 @@
 	stylesCombo :
 	{
-		label : 'Slog',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Slog',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Slogi odstavkov',
+		panelTitle2	: 'Slogi besedila',
+		panelTitle3	: 'Slogi objektov'
 	},
 
 	format :
 	{
-		label : 'Oblika',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Oblika',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Navaden',
-		tag_pre : 'Oblikovan',
-		tag_address : 'Napis',
-		tag_h1 : 'Naslov 1',
-		tag_h2 : 'Naslov 2',
-		tag_h3 : 'Naslov 3',
-		tag_h4 : 'Naslov 4',
-		tag_h5 : 'Naslov 5',
-		tag_h6 : 'Naslov 6',
-		tag_div : 'Normal (DIV)' // MISSING
-	},
+		label		: 'Oblika',
+		panelTitle	: 'Oblika',
+
+		tag_p		: 'Navaden',
+		tag_pre		: 'Oblikovan',
+		tag_address	: 'Napis',
+		tag_h1		: 'Naslov 1',
+		tag_h2		: 'Naslov 2',
+		tag_h3		: 'Naslov 3',
+		tag_h4		: 'Naslov 4',
+		tag_h5		: 'Naslov 5',
+		tag_h6		: 'Naslov 6',
+		tag_div		: 'Navaden (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Pisava',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Pisava',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Pisava',
+		voiceLabel	: 'Pisava',
+		panelTitle	: 'Pisava'
 	},
 
 	fontSize :
 	{
-		label : 'Velikost',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Velikost',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Velikost',
+		voiceLabel	: 'Velikost',
+		panelTitle	: 'Velikost'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Barva besedila',
-		bgColorTitle : 'Barva ozadja',
-		auto : 'Samodejno',
-		more : 'Več barv...'
+		textColorTitle	: 'Barva besedila',
+		bgColorTitle	: 'Barva ozadja',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Samodejno',
+		more			: 'Več barv...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Črkovanje med tipkanjem',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Omogoči SCAYT',
+		disable			: 'Onemogoči SCAYT',
+		about			: 'O storitvi SCAYT',
+		toggle			: 'Preklopi SCAYT',
+		options			: 'Možnosti',
+		langs			: 'Jeziki',
+		moreSuggestions	: 'Več predlogov',
+		ignore			: 'Prezri',
+		ignoreAll		: 'Prezri vse',
+		addWord			: 'Dodaj besedo',
+		emptyDic		: 'Ime slovarja ne more biti prazno.',
+
+		optionsTab		: 'Možnosti',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Jeziki',
+
+		dictionariesTab	: 'Slovarji',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'O storitvi'
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
-	},
-
-	maximize : 'Maximize', // MISSING
-	minimize : 'Minimize', // MISSING
+		title		: 'O programu CKEditor',
+		dlgTitle	: 'O programu CKEditor',
+		moreInfo	: 'Za informacijo o licenci prostim obiščite našo spletno stran:',
+		copy		: 'Copyright &copy; $1. Vse pravice pridržane.'
+	},
+
+	maximize : 'Maksimiraj',
+	minimize : 'Minimiraj',
 
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
-	},
-
-	resize : 'Drag to resize', // MISSING
+		anchor	: 'Sidro',
+		flash	: 'Flash animacija',
+		div		: 'Prelom strani',
+		unknown	: 'Neznan objekt'
+	},
+
+	resize : 'Potegni za spremembo velikosti',
 
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Izberi barvo',
+		options	:	'Color Options', // MISSING
+		highlight	: 'Poudarjeno',
+		selected	: 'Izbrano',
+		clear		: 'Počisti'
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/sr-latn.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/sr-latn.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/sr-latn.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Forma',
 		checkbox		: 'Polje za potvrdu',
-		radio		: 'Radio-dugme',
+		radio			: 'Radio-dugme',
 		textField		: 'Tekstualno polje',
 		textarea		: 'Zona teksta',
 		hiddenField		: 'Skriveno polje',
 		button			: 'Dugme',
-		select	: 'Izborno polje',
+		select			: 'Izborno polje',
 		imageButton		: 'Dugme sa slikom',
 		notSet			: '<nije postavljeno>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Otkaži',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'Napredni tagovi',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Unesi specijalni karakter',
-		title		: 'Odaberite specijalni karakter'
+		title		: 'Odaberite specijalni karakter',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Unesi/izmeni link',
+		other 		: '<остало>',
 		menu		: 'Izmeni link',
 		title		: 'Link',
@@ -117,14 +136,9 @@
 		advanced	: 'Napredni tagovi',
 		type		: 'Vrsta linka',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Sidro na ovoj stranici',
 		toEmail		: 'E-Mail',
-		target		: 'Meta',
-		targetNotSet	: '<nije postavljeno>',
-		targetFrame	: '<okvir>',
-		targetPopup	: '<popup prozor>',
-		targetNew	: 'Novi prozor (_blank)',
-		targetTop	: 'Prozor na vrhu (_top)',
-		targetSelf	: 'Isti prozor (_self)',
-		targetParent	: 'Roditeljski prozor (_parent)',
+		targetFrame		: '<okvir>',
+		targetPopup		: '<popup prozor>',
 		targetFrameName	: 'Naziv odredišnog frejma',
 		targetPopupName	: 'Naziv popup prozora',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Statusna linija',
-		popupLocationBar	: 'Lokacija',
+		popupLocationBar: 'Lokacija',
 		popupToolbar	: 'Toolbar',
 		popupMenuBar	: 'Kontekstni meni',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Smer jezika',
-		langDirNotSet	: '<nije postavljeno>',
 		langDirLTR		: 'S leva na desno (LTR)',
 		langDirRTL		: 'S desna na levo (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Veličina okvira',
 		align		: 'Ravnanje',
-		alignNotSet	: '<nije postavljeno>',
 		alignLeft	: 'Levo',
 		alignCenter	: 'Sredina',
@@ -211,4 +246,5 @@
 		widthPx		: 'piksela',
 		widthPc		: 'procenata',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Visina',
 		cellSpace	: 'Ćelijski prostor',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Akcija',
 		method		: 'Metoda',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Meta',
-		targetNotSet	: '<nije postavljeno>',
-		targetNew	: 'Novi prozor (_blank)',
-		targetTop	: 'Prozor na vrhu (_top)',
-		targetSelf	: 'Isti prozor (_self)',
-		targetParent	: 'Roditeljski prozor (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Osobine dugmeta sa slikom',
 		menu		: 'Osobine slika',
-		infoTab	: 'Info slike',
+		infoTab		: 'Info slike',
 		btnUpload	: 'Pošalji na server',
-		url		: 'URL',
-		upload	: 'Pošalji',
-		alt		: 'Alternativni tekst',
+		upload		: 'Pošalji',
+		alt			: 'Alternativni tekst',
 		width		: 'Širina',
-		height	: 'Visina',
+		height		: 'Visina',
 		lockRatio	: 'Zaključaj odnos',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Resetuj veličinu',
-		border	: 'Okvir',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
+		border		: 'Okvir',
+		hSpace		: 'HSpace',
+		vSpace		: 'VSpace',
 		align		: 'Ravnanje',
 		alignLeft	: 'Levo',
-		alignAbsBottom: 'Abs dole',
-		alignAbsMiddle: 'Abs sredina',
-		alignBaseline	: 'Bazno',
-		alignBottom	: 'Dole',
-		alignMiddle	: 'Sredina',
 		alignRight	: 'Desno',
-		alignTextTop	: 'Vrh teksta',
-		alignTop	: 'Vrh',
-		preview	: 'Izgled',
 		alertUrl	: 'Unesite URL slike',
-		linkTab	: 'Link',
+		linkTab		: 'Link',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Osobine fleša',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Osobine fleša',
-		chkPlay		: 'Automatski start',
-		chkLoop		: 'Ponavljaj',
-		chkMenu		: 'Uključi fleš meni',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Skaliraj',
+		title			: 'Osobine fleša',
+		chkPlay			: 'Automatski start',
+		chkLoop			: 'Ponavljaj',
+		chkMenu			: 'Uključi fleš meni',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Skaliraj',
 		scaleAll		: 'Prikaži sve',
 		scaleNoBorder	: 'Bez ivice',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Ravnanje',
-		alignLeft	: 'Levo',
-		alignAbsBottom: 'Abs dole',
-		alignAbsMiddle: 'Abs sredina',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Ravnanje',
+		alignLeft		: 'Levo',
+		alignAbsBottom	: 'Abs dole',
+		alignAbsMiddle	: 'Abs sredina',
 		alignBaseline	: 'Bazno',
-		alignBottom	: 'Dole',
-		alignMiddle	: 'Sredina',
-		alignRight	: 'Desno',
+		alignBottom		: 'Dole',
+		alignMiddle		: 'Sredina',
+		alignRight		: 'Desno',
 		alignTextTop	: 'Vrh teksta',
-		alignTop	: 'Vrh',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Boja pozadine',
-		width	: 'Širina',
-		height	: 'Visina',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
-		validateSrc : 'Unesite URL linka',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Vrh',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Boja pozadine',
+		width			: 'Širina',
+		height			: 'Visina',
+		hSpace			: 'HSpace',
+		vSpace			: 'VSpace',
+		validateSrc		: 'Unesite URL linka',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'Smajli',
-		title	: 'Unesi smajlija'
+		title	: 'Unesi smajlija',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Nabrojiva lista',
-	bulletedlist : 'Nenabrojiva lista',
-	indent : 'Uvećaj levu marginu',
-	outdent : 'Smanji levu marginu',
+	numberedlist	: 'Nabrojiva lista',
+	bulletedlist	: 'Nenabrojiva lista',
+	indent			: 'Uvećaj levu marginu',
+	outdent			: 'Smanji levu marginu',
 
 	justify :
 	{
-		left : 'Levo ravnanje',
-		center : 'Centriran tekst',
-		right : 'Desno ravnanje',
-		block : 'Obostrano ravnanje'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: 'Levo ravnanje',
+		center	: 'Centriran tekst',
+		right	: 'Desno ravnanje',
+		block	: 'Obostrano ravnanje'
+	},
+
+	blockquote : 'Block Quote', // MISSING
 
 	clipboard :
 	{
 		title		: 'Zalepi',
-		cutError	: 'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl+X).',
-		copyError	: 'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl+C).',
-		pasteMsg	: 'Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu prečicu (<STRONG>Ctrl+V</STRONG>) i da pritisnete <STRONG>OK</STRONG>.',
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+		cutError	: 'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl/Cmd+X).',
+		copyError	: 'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl/Cmd+C).',
+		pasteMsg	: 'Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu prečicu (<STRONG>Ctrl/Cmd+V</STRONG>) i da pritisnete <STRONG>OK</STRONG>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Zalepi iz Worda',
-		title : 'Zalepi iz Worda',
-		advice : 'Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu prečicu (<STRONG>Ctrl+V</STRONG>) i da pritisnete <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignoriši definicije fontova',
-		removeStyle : 'Ukloni definicije stilova'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Zalepi iz Worda',
+		title			: 'Zalepi iz Worda',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Zalepi kao čist tekst',
-		title : 'Zalepi kao čist tekst'
+		button	: 'Zalepi kao čist tekst',
+		title	: 'Zalepi kao čist tekst'
 	},
 
 	templates :
 	{
-		button : 'Obrasci',
-		title : 'Obrasci za sadržaj',
-		insertOption: 'Replace actual contents', // MISSING
-		selectPromptMsg: 'Molimo Vas da odaberete obrazac koji ce biti primenjen na stranicu (trenutni sadržaj ce biti obrisan):',
-		emptyListMsg : '(Nema definisanih obrazaca)'
+		button			: 'Obrasci',
+		title			: 'Obrasci za sadržaj',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Replace actual contents', // MISSING
+		selectPromptMsg	: 'Molimo Vas da odaberete obrazac koji ce biti primenjen na stranicu (trenutni sadržaj ce biti obrisan):',
+		emptyListMsg	: '(Nema definisanih obrazaca)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Stil',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Stil',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Format',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Format',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatirano',
-		tag_address : 'Adresa',
-		tag_h1 : 'Naslov 1',
-		tag_h2 : 'Naslov 2',
-		tag_h3 : 'Naslov 3',
-		tag_h4 : 'Naslov 4',
-		tag_h5 : 'Naslov 5',
-		tag_h6 : 'Naslov 6',
-		tag_div : 'Normal (DIV)' // MISSING
-	},
+		label		: 'Format',
+		panelTitle	: 'Format',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatirano',
+		tag_address	: 'Adresa',
+		tag_h1		: 'Naslov 1',
+		tag_h2		: 'Naslov 2',
+		tag_h3		: 'Naslov 3',
+		tag_h4		: 'Naslov 4',
+		tag_h5		: 'Naslov 5',
+		tag_h6		: 'Naslov 6',
+		tag_div		: 'Normal (DIV)' // MISSING
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Font',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Font',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Font',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Font'
 	},
 
 	fontSize :
 	{
-		label : 'Veličina fonta',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Veličina fonta',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Veličina fonta',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Veličina fonta'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Boja teksta',
-		bgColorTitle : 'Boja pozadine',
-		auto : 'Automatski',
-		more : 'Više boja...'
+		textColorTitle	: 'Boja teksta',
+		bgColorTitle	: 'Boja pozadine',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatski',
+		more			: 'Više boja...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/sr.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/sr.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/sr.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Форма',
 		checkbox		: 'Поље за потврду',
-		radio		: 'Радио-дугме',
+		radio			: 'Радио-дугме',
 		textField		: 'Текстуално поље',
 		textarea		: 'Зона текста',
 		hiddenField		: 'Скривено поље',
 		button			: 'Дугме',
-		select	: 'Изборно поље',
+		select			: 'Изборно поље',
 		imageButton		: 'Дугме са сликом',
 		notSet			: '<није постављено>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Oткажи',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'Напредни тагови',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Унеси специјални карактер',
-		title		: 'Одаберите специјални карактер'
+		title		: 'Одаберите специјални карактер',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Унеси/измени линк',
+		other 		: '<other>', // MISSING
 		menu		: 'Промени линк',
 		title		: 'Линк',
@@ -117,14 +136,9 @@
 		advanced	: 'Напредни тагови',
 		type		: 'Врста линка',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Сидро на овој страници',
 		toEmail		: 'Eлектронска пошта',
-		target		: 'Meтa',
-		targetNotSet	: '<није постављено>',
-		targetFrame	: '<оквир>',
-		targetPopup	: '<искачући прозор>',
-		targetNew	: 'Нови прозор (_blank)',
-		targetTop	: 'Прозор на врху (_top)',
-		targetSelf	: 'Исти прозор (_self)',
-		targetParent	: 'Родитељски прозор (_parent)',
+		targetFrame		: '<оквир>',
+		targetPopup		: '<искачући прозор>',
 		targetFrameName	: 'Назив одредишног фрејма',
 		targetPopupName	: 'Назив искачућег прозора',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Статусна линија',
-		popupLocationBar	: 'Локација',
+		popupLocationBar: 'Локација',
 		popupToolbar	: 'Toolbar',
 		popupMenuBar	: 'Контекстни мени',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Смер језика',
-		langDirNotSet	: '<није постављено>',
 		langDirLTR		: 'С лева на десно (LTR)',
 		langDirRTL		: 'С десна на лево (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Величина оквира',
 		align		: 'Равнање',
-		alignNotSet	: '<није постављено>',
 		alignLeft	: 'Лево',
 		alignCenter	: 'Средина',
@@ -211,4 +246,5 @@
 		widthPx		: 'пиксела',
 		widthPc		: 'процената',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Висина',
 		cellSpace	: 'Ћелијски простор',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Aкција',
 		method		: 'Mетода',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Meтa',
-		targetNotSet	: '<није постављено>',
-		targetNew	: 'Нови прозор (_blank)',
-		targetTop	: 'Прозор на врху (_top)',
-		targetSelf	: 'Исти прозор (_self)',
-		targetParent	: 'Родитељски прозор (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Особине дугмета са сликом',
 		menu		: 'Особине слика',
-		infoTab	: 'Инфо слике',
+		infoTab		: 'Инфо слике',
 		btnUpload	: 'Пошаљи на сервер',
-		url		: 'УРЛ',
-		upload	: 'Пошаљи',
-		alt		: 'Алтернативни текст',
+		upload		: 'Пошаљи',
+		alt			: 'Алтернативни текст',
 		width		: 'Ширина',
-		height	: 'Висина',
+		height		: 'Висина',
 		lockRatio	: 'Закључај однос',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Ресетуј величину',
-		border	: 'Оквир',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
+		border		: 'Оквир',
+		hSpace		: 'HSpace',
+		vSpace		: 'VSpace',
 		align		: 'Равнање',
 		alignLeft	: 'Лево',
-		alignAbsBottom: 'Abs доле',
-		alignAbsMiddle: 'Abs средина',
-		alignBaseline	: 'Базно',
-		alignBottom	: 'Доле',
-		alignMiddle	: 'Средина',
 		alignRight	: 'Десно',
-		alignTextTop	: 'Врх текста',
-		alignTop	: 'Врх',
-		preview	: 'Изглед',
 		alertUrl	: 'Унесите УРЛ слике',
-		linkTab	: 'Линк',
+		linkTab		: 'Линк',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Особине Флеша',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Особине флеша',
-		chkPlay		: 'Аутоматски старт',
-		chkLoop		: 'Понављај',
-		chkMenu		: 'Укључи флеш мени',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Скалирај',
+		title			: 'Особине флеша',
+		chkPlay			: 'Аутоматски старт',
+		chkLoop			: 'Понављај',
+		chkMenu			: 'Укључи флеш мени',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Скалирај',
 		scaleAll		: 'Прикажи све',
 		scaleNoBorder	: 'Без ивице',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Равнање',
-		alignLeft	: 'Лево',
-		alignAbsBottom: 'Abs доле',
-		alignAbsMiddle: 'Abs средина',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Равнање',
+		alignLeft		: 'Лево',
+		alignAbsBottom	: 'Abs доле',
+		alignAbsMiddle	: 'Abs средина',
 		alignBaseline	: 'Базно',
-		alignBottom	: 'Доле',
-		alignMiddle	: 'Средина',
-		alignRight	: 'Десно',
+		alignBottom		: 'Доле',
+		alignMiddle		: 'Средина',
+		alignRight		: 'Десно',
 		alignTextTop	: 'Врх текста',
-		alignTop	: 'Врх',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Боја позадине',
-		width	: 'Ширина',
-		height	: 'Висина',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
-		validateSrc : 'Унесите УРЛ линка',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Врх',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Боја позадине',
+		width			: 'Ширина',
+		height			: 'Висина',
+		hSpace			: 'HSpace',
+		vSpace			: 'VSpace',
+		validateSrc		: 'Унесите УРЛ линка',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'Смајли',
-		title	: 'Унеси смајлија'
+		title	: 'Унеси смајлија',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Набројиву листу',
-	bulletedlist : 'Ненабројива листа',
-	indent : 'Увећај леву маргину',
-	outdent : 'Смањи леву маргину',
+	numberedlist	: 'Набројиву листу',
+	bulletedlist	: 'Ненабројива листа',
+	indent			: 'Увећај леву маргину',
+	outdent			: 'Смањи леву маргину',
 
 	justify :
 	{
-		left : 'Лево равнање',
-		center : 'Центриран текст',
-		right : 'Десно равнање',
-		block : 'Обострано равнање'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: 'Лево равнање',
+		center	: 'Центриран текст',
+		right	: 'Десно равнање',
+		block	: 'Обострано равнање'
+	},
+
+	blockquote : 'Block Quote', // MISSING
 
 	clipboard :
 	{
 		title		: 'Залепи',
-		cutError	: 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског исецања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl+X).',
-		copyError	: 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског копирања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl+C).',
-		pasteMsg	: 'Молимо Вас да залепите унутар доње површине користећи тастатурну пречицу (<STRONG>Ctrl+V</STRONG>) и да притиснете <STRONG>OK</STRONG>.',
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+		cutError	: 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског исецања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+X).',
+		copyError	: 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског копирања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+C).',
+		pasteMsg	: 'Молимо Вас да залепите унутар доње површине користећи тастатурну пречицу (<STRONG>Ctrl/Cmd+V</STRONG>) и да притиснете <STRONG>OK</STRONG>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Залепи из Worda',
-		title : 'Залепи из Worda',
-		advice : 'Молимо Вас да залепите унутар доње површине користећи тастатурну пречицу (<STRONG>Ctrl+V</STRONG>) и да притиснете <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Игнориши Font Face дефиниције',
-		removeStyle : 'Уклони дефиниције стилова'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Залепи из Worda',
+		title			: 'Залепи из Worda',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Залепи као чист текст',
-		title : 'Залепи као чист текст'
+		button	: 'Залепи као чист текст',
+		title	: 'Залепи као чист текст'
 	},
 
 	templates :
 	{
-		button : 'Обрасци',
-		title : 'Обрасци за садржај',
-		insertOption: 'Replace actual contents', // MISSING
-		selectPromptMsg: 'Молимо Вас да одаберете образац који ће бити примењен на страницу (тренутни садржај ће бити обрисан):',
-		emptyListMsg : '(Нема дефинисаних образаца)'
+		button			: 'Обрасци',
+		title			: 'Обрасци за садржај',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Replace actual contents', // MISSING
+		selectPromptMsg	: 'Молимо Вас да одаберете образац који ће бити примењен на страницу (тренутни садржај ће бити обрисан):',
+		emptyListMsg	: '(Нема дефинисаних образаца)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Стил',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Стил',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Формат',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Формат',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatirano',
-		tag_address : 'Adresa',
-		tag_h1 : 'Heading 1',
-		tag_h2 : 'Heading 2',
-		tag_h3 : 'Heading 3',
-		tag_h4 : 'Heading 4',
-		tag_h5 : 'Heading 5',
-		tag_h6 : 'Heading 6',
-		tag_div : 'Normal (DIV)' // MISSING
-	},
+		label		: 'Формат',
+		panelTitle	: 'Формат',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatirano',
+		tag_address	: 'Adresa',
+		tag_h1		: 'Heading 1',
+		tag_h2		: 'Heading 2',
+		tag_h3		: 'Heading 3',
+		tag_h4		: 'Heading 4',
+		tag_h5		: 'Heading 5',
+		tag_h6		: 'Heading 6',
+		tag_div		: 'Normal (DIV)' // MISSING
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Фонт',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Фонт',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Фонт',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Фонт'
 	},
 
 	fontSize :
 	{
-		label : 'Величина фонта',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Величина фонта',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Величина фонта',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Величина фонта'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Боја текста',
-		bgColorTitle : 'Боја позадине',
-		auto : 'Аутоматски',
-		more : 'Више боја...'
+		textColorTitle	: 'Боја текста',
+		bgColorTitle	: 'Боја позадине',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Аутоматски',
+		more			: 'Више боја...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/sv.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/sv.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/sv.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Formulär',
 		checkbox		: 'Kryssruta',
-		radio		: 'Alternativknapp',
+		radio			: 'Alternativknapp',
 		textField		: 'Textfält',
 		textarea		: 'Textruta',
 		hiddenField		: 'Dolt fält',
 		button			: 'Knapp',
-		select	: 'Flervalslista',
+		select			: 'Flervalslista',
 		imageButton		: 'Bildknapp',
 		notSet			: '<ej angivet>',
@@ -89,9 +93,17 @@
 		ok				: 'OK',
 		cancel			: 'Avbryt',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'Avancerad',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Klistra in utökat tecken',
-		title		: 'Välj utökat tecken'
+		title		: 'Välj utökat tecken',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Infoga/Redigera länk',
+		other 		: '<annan>',
 		menu		: 'Redigera länk',
 		title		: 'Länk',
@@ -117,14 +136,9 @@
 		advanced	: 'Avancerad',
 		type		: 'Länktyp',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Ankare i sidan',
 		toEmail		: 'E-post',
-		target		: 'Mål',
-		targetNotSet	: '<ej angivet>',
-		targetFrame	: '<ram>',
-		targetPopup	: '<popup-fönster>',
-		targetNew	: 'Nytt fönster (_blank)',
-		targetTop	: 'Översta fönstret (_top)',
-		targetSelf	: 'Detta fönstret (_self)',
-		targetParent	: 'Föregående Window (_parent)',
+		targetFrame		: '<ram>',
+		targetPopup		: '<popup-fönster>',
 		targetFrameName	: 'Målets ramnamn',
 		targetPopupName	: 'Popup-fönstrets namn',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'Statusfält',
-		popupLocationBar	: 'Adressfält',
+		popupLocationBar: 'Adressfält',
 		popupToolbar	: 'Verktygsfält',
 		popupMenuBar	: 'Menyfält',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'Språkriktning',
-		langDirNotSet	: '<ej angivet>',
 		langDirLTR		: 'Vänster till Höger (VTH)',
 		langDirRTL		: 'Höger till Vänster (HTV)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Kantstorlek',
 		align		: 'Justering',
-		alignNotSet	: '<ej angivet>',
 		alignLeft	: 'Vänster',
 		alignCenter	: 'Centrerad',
@@ -211,4 +246,5 @@
 		widthPx		: 'pixlar',
 		widthPc		: 'procent',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Höjd',
 		cellSpace	: 'Cellavstånd',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Funktion',
 		method		: 'Metod',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Mål',
-		targetNotSet	: '<ej angivet>',
-		targetNew	: 'Nytt fönster (_blank)',
-		targetTop	: 'Översta fönstret (_top)',
-		targetSelf	: 'Detta fönstret (_self)',
-		targetParent	: 'Föregående Window (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Egenskaper för bildknapp',
 		menu		: 'Bildegenskaper',
-		infoTab	: 'Bildinformation',
+		infoTab		: 'Bildinformation',
 		btnUpload	: 'Skicka till server',
-		url		: 'URL',
-		upload	: 'Ladda upp',
-		alt		: 'Alternativ text',
+		upload		: 'Ladda upp',
+		alt			: 'Alternativ text',
 		width		: 'Bredd',
-		height	: 'Höjd',
+		height		: 'Höjd',
 		lockRatio	: 'Lås höjd/bredd förhållanden',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Återställ storlek',
-		border	: 'Kant',
-		hSpace	: 'Horis. marginal',
-		vSpace	: 'Vert. marginal',
+		border		: 'Kant',
+		hSpace		: 'Horis. marginal',
+		vSpace		: 'Vert. marginal',
 		align		: 'Justering',
 		alignLeft	: 'Vänster',
-		alignAbsBottom: 'Absolut nederkant',
-		alignAbsMiddle: 'Absolut centrering',
-		alignBaseline	: 'Baslinje',
-		alignBottom	: 'Nederkant',
-		alignMiddle	: 'Mitten',
 		alignRight	: 'Höger',
-		alignTextTop	: 'Text överkant',
-		alignTop	: 'Överkant',
-		preview	: 'Förhandsgranska',
 		alertUrl	: 'Var god och ange bildens URL',
-		linkTab	: 'Länk',
+		linkTab		: 'Länk',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Flashegenskaper',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'Flashegenskaper',
-		chkPlay		: 'Automatisk uppspelning',
-		chkLoop		: 'Upprepa/Loopa',
-		chkMenu		: 'Aktivera Flashmeny',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Skala',
+		title			: 'Flashegenskaper',
+		chkPlay			: 'Automatisk uppspelning',
+		chkLoop			: 'Upprepa/Loopa',
+		chkMenu			: 'Aktivera Flashmeny',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'Skala',
 		scaleAll		: 'Visa allt',
 		scaleNoBorder	: 'Ingen ram',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Justering',
-		alignLeft	: 'Vänster',
-		alignAbsBottom: 'Absolut nederkant',
-		alignAbsMiddle: 'Absolut centrering',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'Justering',
+		alignLeft		: 'Vänster',
+		alignAbsBottom	: 'Absolut nederkant',
+		alignAbsMiddle	: 'Absolut centrering',
 		alignBaseline	: 'Baslinje',
-		alignBottom	: 'Nederkant',
-		alignMiddle	: 'Mitten',
-		alignRight	: 'Höger',
+		alignBottom		: 'Nederkant',
+		alignMiddle		: 'Mitten',
+		alignRight		: 'Höger',
 		alignTextTop	: 'Text överkant',
-		alignTop	: 'Överkant',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Bakgrundsfärg',
-		width	: 'Bredd',
-		height	: 'Höjd',
-		hSpace	: 'Horis. marginal',
-		vSpace	: 'Vert. marginal',
-		validateSrc : 'Var god ange länkens URL',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Överkant',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'Bakgrundsfärg',
+		width			: 'Bredd',
+		height			: 'Höjd',
+		hSpace			: 'Horis. marginal',
+		vSpace			: 'Vert. marginal',
+		validateSrc		: 'Var god ange länkens URL',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'Smiley',
-		title	: 'Infoga smiley'
+		title	: 'Infoga smiley',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'Numrerad lista',
-	bulletedlist : 'Punktlista',
-	indent : 'Öka indrag',
-	outdent : 'Minska indrag',
+	numberedlist	: 'Numrerad lista',
+	bulletedlist	: 'Punktlista',
+	indent			: 'Öka indrag',
+	outdent			: 'Minska indrag',
 
 	justify :
 	{
-		left : 'Vänsterjustera',
-		center : 'Centrera',
-		right : 'Högerjustera',
-		block : 'Justera till marginaler'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: 'Vänsterjustera',
+		center	: 'Centrera',
+		right	: 'Högerjustera',
+		block	: 'Justera till marginaler'
+	},
+
+	blockquote : 'Block Quote', // MISSING
 
 	clipboard :
 	{
 		title		: 'Klistra in',
-		cutError	: 'Säkerhetsinställningar i Er webläsare tillåter inte åtgården Klipp ut. Använd (Ctrl+X) istället.',
-		copyError	: 'Säkerhetsinställningar i Er webläsare tillåter inte åtgården Kopiera. Använd (Ctrl+C) istället',
-		pasteMsg	: 'Var god och klistra in Er text i rutan nedan genom att använda (<STRONG>Ctrl+V</STRONG>) klicka sen på <STRONG>OK</STRONG>.',
-		securityMsg	: 'På grund av din webläsares säkerhetsinställningar kan verktyget inte få åtkomst till urklippsdatan. Var god och använd detta fönster istället.'
+		cutError	: 'Säkerhetsinställningar i Er webläsare tillåter inte åtgården Klipp ut. Använd (Ctrl/Cmd+X) istället.',
+		copyError	: 'Säkerhetsinställningar i Er webläsare tillåter inte åtgården Kopiera. Använd (Ctrl/Cmd+C) istället',
+		pasteMsg	: 'Var god och klistra in Er text i rutan nedan genom att använda (<STRONG>Ctrl/Cmd+V</STRONG>) klicka sen på <STRONG>OK</STRONG>.',
+		securityMsg	: 'På grund av din webläsares säkerhetsinställningar kan verktyget inte få åtkomst till urklippsdatan. Var god och använd detta fönster istället.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Klistra in från Word',
-		title : 'Klistra in från Word',
-		advice : 'Var god och klistra in Er text i rutan nedan genom att använda (<STRONG>Ctrl+V</STRONG>) klicka sen på <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ignorera typsnittsdefinitioner',
-		removeStyle : 'Radera Stildefinitioner'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'Klistra in från Word',
+		title			: 'Klistra in från Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Klistra in som vanlig text',
-		title : 'Klistra in som vanlig text'
+		button	: 'Klistra in som vanlig text',
+		title	: 'Klistra in som vanlig text'
 	},
 
 	templates :
 	{
-		button : 'Sidmallar',
-		title : 'Sidmallar',
-		insertOption: 'Ersätt aktuellt innehåll',
-		selectPromptMsg: 'Var god välj en mall att använda med editorn<br>(allt nuvarande innehåll raderas):',
-		emptyListMsg : '(Ingen mall är vald)'
+		button			: 'Sidmallar',
+		title			: 'Sidmallar',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Ersätt aktuellt innehåll',
+		selectPromptMsg	: 'Var god välj en mall att använda med editorn<br>(allt nuvarande innehåll raderas):',
+		emptyListMsg	: '(Ingen mall är vald)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Anpassad stil',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Anpassad stil',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'Teckenformat',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Teckenformat',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Formaterad',
-		tag_address : 'Adress',
-		tag_h1 : 'Rubrik 1',
-		tag_h2 : 'Rubrik 2',
-		tag_h3 : 'Rubrik 3',
-		tag_h4 : 'Rubrik 4',
-		tag_h5 : 'Rubrik 5',
-		tag_h6 : 'Rubrik 6',
-		tag_div : 'Normal (DIV)'
-	},
+		label		: 'Teckenformat',
+		panelTitle	: 'Teckenformat',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formaterad',
+		tag_address	: 'Adress',
+		tag_h1		: 'Rubrik 1',
+		tag_h2		: 'Rubrik 2',
+		tag_h3		: 'Rubrik 3',
+		tag_h4		: 'Rubrik 4',
+		tag_h5		: 'Rubrik 5',
+		tag_h6		: 'Rubrik 6',
+		tag_div		: 'Normal (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Typsnitt',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Typsnitt',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Typsnitt',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'Typsnitt'
 	},
 
 	fontSize :
 	{
-		label : 'Storlek',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Storlek',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Storlek',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'Storlek'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Textfärg',
-		bgColorTitle : 'Bakgrundsfärg',
-		auto : 'Automatisk',
-		more : 'Fler färger...'
+		textColorTitle	: 'Textfärg',
+		bgColorTitle	: 'Bakgrundsfärg',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Automatisk',
+		more			: 'Fler färger...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/th.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/th.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/th.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'แบบฟอร์ม',
 		checkbox		: 'เช็คบ๊อก',
-		radio		: 'เรดิโอบัตตอน',
+		radio			: 'เรดิโอบัตตอน',
 		textField		: 'เท็กซ์ฟิลด์',
 		textarea		: 'เท็กซ์แอเรีย',
 		hiddenField		: 'ฮิดเดนฟิลด์',
 		button			: 'ปุ่ม',
-		select	: 'แถบตัวเลือก',
+		select			: 'แถบตัวเลือก',
 		imageButton		: 'ปุ่มแบบรูปภาพ',
 		notSet			: '<ไม่ระบุ>',
@@ -89,9 +93,17 @@
 		ok				: 'ตกลง',
 		cancel			: 'ยกเลิก',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'General', // MISSING
 		advancedTab		: 'ขั้นสูง',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
+		validateNumberFailed : 'This value is not a number.', // MISSING
 		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
 		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'แทรกตัวอักษรพิเศษ',
-		title		: 'แทรกตัวอักษรพิเศษ'
+		title		: 'แทรกตัวอักษรพิเศษ',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'แทรก/แก้ไข ลิงค์',
+		other 		: '<อื่น ๆ>',
 		menu		: 'แก้ไข ลิงค์',
 		title		: 'ลิงค์เชื่อมโยงเว็บ อีเมล์ รูปภาพ หรือไฟล์อื่นๆ',
@@ -117,14 +136,9 @@
 		advanced	: 'ขั้นสูง',
 		type		: 'ประเภทของลิงค์',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'จุดเชื่อมโยง (Anchor)',
 		toEmail		: 'ส่งอีเมล์ (E-Mail)',
-		target		: 'การเปิดหน้าลิงค์',
-		targetNotSet	: '<ไม่ระบุ>',
-		targetFrame	: '<เปิดในเฟรม>',
-		targetPopup	: '<เปิดหน้าจอเล็ก (Pop-up)>',
-		targetNew	: 'เปิดหน้าจอใหม่ (_blank)',
-		targetTop	: 'เปิดในหน้าบนสุด (_top)',
-		targetSelf	: 'เปิดในหน้าปัจจุบัน (_self)',
-		targetParent	: 'เปิดในหน้าหลัก (_parent)',
+		targetFrame		: '<เปิดในเฟรม>',
+		targetPopup		: '<เปิดหน้าจอเล็ก (Pop-up)>',
 		targetFrameName	: 'ชื่อทาร์เก็ตเฟรม',
 		targetPopupName	: 'ระบุชื่อหน้าจอเล็ก (Pop-up)',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Resizable', // MISSING
 		popupStatusBar	: 'แสดงแถบสถานะ',
-		popupLocationBar	: 'แสดงที่อยู่ของไฟล์',
+		popupLocationBar: 'แสดงที่อยู่ของไฟล์',
 		popupToolbar	: 'แสดงแถบเครื่องมือ',
 		popupMenuBar	: 'แสดงแถบเมนู',
@@ -144,5 +158,4 @@
 		id				: 'Id', // MISSING
 		langDir			: 'การเขียน-อ่านภาษา',
-		langDirNotSet	: '<ไม่ระบุ>',
 		langDirLTR		: 'จากซ้ายไปขวา (LTR)',
 		langDirRTL		: 'จากขวามาซ้าย (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'ขนาดเส้นขอบ',
 		align		: 'การจัดตำแหน่ง',
-		alignNotSet	: '<ไม่ระบุ>',
 		alignLeft	: 'ชิดซ้าย',
 		alignCenter	: 'กึ่งกลาง',
@@ -211,4 +246,5 @@
 		widthPx		: 'จุดสี',
 		widthPc		: 'เปอร์เซ็น',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'สูง',
 		cellSpace	: 'ระยะแนวนอนน',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
 			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'แอคชั่น',
 		method		: 'เมธอด',
-		encoding	: 'Encoding', // MISSING
-		target		: 'การเปิดหน้าลิงค์',
-		targetNotSet	: '<ไม่ระบุ>',
-		targetNew	: 'เปิดหน้าจอใหม่ (_blank)',
-		targetTop	: 'เปิดในหน้าบนสุด (_top)',
-		targetSelf	: 'เปิดในหน้าปัจจุบัน (_self)',
-		targetParent	: 'เปิดในหน้าหลัก (_parent)'
+		encoding	: 'Encoding' // MISSING
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'คุณสมบัติของ ปุ่มแบบรูปภาพ',
 		menu		: 'คุณสมบัติของ รูปภาพ',
-		infoTab	: 'ข้อมูลของรูปภาพ',
+		infoTab		: 'ข้อมูลของรูปภาพ',
 		btnUpload	: 'อัพโหลดไฟล์ไปเก็บไว้ที่เครื่องแม่ข่าย (เซิร์ฟเวอร์)',
-		url		: 'ที่อยู่อ้างอิง URL',
-		upload	: 'อัพโหลดไฟล์',
-		alt		: 'คำประกอบรูปภาพ',
+		upload		: 'อัพโหลดไฟล์',
+		alt			: 'คำประกอบรูปภาพ',
 		width		: 'ความกว้าง',
-		height	: 'ความสูง',
+		height		: 'ความสูง',
 		lockRatio	: 'กำหนดอัตราส่วน กว้าง-สูง แบบคงที่',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'กำหนดรูปเท่าขนาดจริง',
-		border	: 'ขนาดขอบรูป',
-		hSpace	: 'ระยะแนวนอน',
-		vSpace	: 'ระยะแนวตั้ง',
+		border		: 'ขนาดขอบรูป',
+		hSpace		: 'ระยะแนวนอน',
+		vSpace		: 'ระยะแนวตั้ง',
 		align		: 'การจัดวาง',
 		alignLeft	: 'ชิดซ้าย',
-		alignAbsBottom: 'ชิดด้านล่างสุด',
-		alignAbsMiddle: 'กึ่งกลาง',
-		alignBaseline	: 'ชิดบรรทัด',
-		alignBottom	: 'ชิดด้านล่าง',
-		alignMiddle	: 'กึ่งกลางแนวตั้ง',
 		alignRight	: 'ชิดขวา',
-		alignTextTop	: 'ใต้ตัวอักษร',
-		alignTop	: 'บนสุด',
-		preview	: 'หน้าเอกสารตัวอย่าง',
 		alertUrl	: 'กรุณาระบุที่อยู่อ้างอิงออนไลน์ของไฟล์รูปภาพ (URL)',
-		linkTab	: 'ลิ้งค์',
+		linkTab		: 'ลิ้งค์',
 		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'คุณสมบัติของไฟล์ Flash',
 		propertiesTab	: 'Properties', // MISSING
-		title		: 'คุณสมบัติของไฟล์ Flash',
-		chkPlay		: 'เล่นอัตโนมัติ Auto Play',
-		chkLoop		: 'เล่นวนรอบ Loop',
-		chkMenu		: 'ให้ใช้งานเมนูของ Flash',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'อัตราส่วน Scale',
+		title			: 'คุณสมบัติของไฟล์ Flash',
+		chkPlay			: 'เล่นอัตโนมัติ Auto Play',
+		chkLoop			: 'เล่นวนรอบ Loop',
+		chkMenu			: 'ให้ใช้งานเมนูของ Flash',
+		chkFull			: 'Allow Fullscreen', // MISSING
+ 		scale			: 'อัตราส่วน Scale',
 		scaleAll		: 'แสดงให้เห็นทั้งหมด Show all',
 		scaleNoBorder	: 'ไม่แสดงเส้นขอบ No Border',
@@ -418,38 +445,38 @@
 		access			: 'Script Access', // MISSING
 		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'การจัดวาง',
-		alignLeft	: 'ชิดซ้าย',
-		alignAbsBottom: 'ชิดด้านล่างสุด',
-		alignAbsMiddle: 'กึ่งกลาง',
+		accessSameDomain: 'Same domain', // MISSING
+		accessNever		: 'Never', // MISSING
+		align			: 'การจัดวาง',
+		alignLeft		: 'ชิดซ้าย',
+		alignAbsBottom	: 'ชิดด้านล่างสุด',
+		alignAbsMiddle	: 'กึ่งกลาง',
 		alignBaseline	: 'ชิดบรรทัด',
-		alignBottom	: 'ชิดด้านล่าง',
-		alignMiddle	: 'กึ่งกลางแนวตั้ง',
-		alignRight	: 'ชิดขวา',
+		alignBottom		: 'ชิดด้านล่าง',
+		alignMiddle		: 'กึ่งกลางแนวตั้ง',
+		alignRight		: 'ชิดขวา',
 		alignTextTop	: 'ใต้ตัวอักษร',
-		alignTop	: 'บนสุด',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'สีพื้นหลัง',
-		width	: 'ความกว้าง',
-		height	: 'ความสูง',
-		hSpace	: 'ระยะแนวนอน',
-		vSpace	: 'ระยะแนวตั้ง',
-		validateSrc : 'กรุณาระบุที่อยู่อ้างอิงออนไลน์ (URL)',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'บนสุด',
+		quality			: 'Quality', // MISSING
+		qualityBest		: 'Best', // MISSING
+		qualityHigh		: 'High', // MISSING
+		qualityAutoHigh	: 'Auto High', // MISSING
+		qualityMedium	: 'Medium', // MISSING
+		qualityAutoLow	: 'Auto Low', // MISSING
+		qualityLow		: 'Low', // MISSING
+		windowModeWindow: 'Window', // MISSING
+		windowModeOpaque: 'Opaque', // MISSING
+		windowModeTransparent : 'Transparent', // MISSING
+		windowMode		: 'Window mode', // MISSING
+		flashvars		: 'Variables for Flash', // MISSING
+		bgcolor			: 'สีพื้นหลัง',
+		width			: 'ความกว้าง',
+		height			: 'ความสูง',
+		hSpace			: 'ระยะแนวนอน',
+		vSpace			: 'ระยะแนวตั้ง',
+		validateSrc		: 'กรุณาระบุที่อยู่อ้างอิงออนไลน์ (URL)',
+		validateWidth	: 'Width must be a number.', // MISSING
+		validateHeight	: 'Height must be a number.', // MISSING
+		validateHSpace	: 'HSpace must be a number.', // MISSING
+		validateVSpace	: 'VSpace must be a number.' // MISSING
 	},
 
@@ -480,58 +507,61 @@
 	{
 		toolbar	: 'รูปสื่ออารมณ์',
-		title	: 'แทรกสัญลักษณ์สื่ออารมณ์'
+		title	: 'แทรกสัญลักษณ์สื่ออารมณ์',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 element' // MISSING
 	},
 
-	numberedlist : 'ลำดับรายการแบบตัวเลข',
-	bulletedlist : 'ลำดับรายการแบบสัญลักษณ์',
-	indent : 'เพิ่มระยะย่อหน้า',
-	outdent : 'ลดระยะย่อหน้า',
+	numberedlist	: 'ลำดับรายการแบบตัวเลข',
+	bulletedlist	: 'ลำดับรายการแบบสัญลักษณ์',
+	indent			: 'เพิ่มระยะย่อหน้า',
+	outdent			: 'ลดระยะย่อหน้า',
 
 	justify :
 	{
-		left : 'จัดชิดซ้าย',
-		center : 'จัดกึ่งกลาง',
-		right : 'จัดชิดขวา',
-		block : 'จัดพอดีหน้ากระดาษ'
-	},
-
-	blockquote : 'Blockquote', // MISSING
+		left	: 'จัดชิดซ้าย',
+		center	: 'จัดกึ่งกลาง',
+		right	: 'จัดชิดขวา',
+		block	: 'จัดพอดีหน้ากระดาษ'
+	},
+
+	blockquote : 'Block Quote', // MISSING
 
 	clipboard :
 	{
 		title		: 'วาง',
-		cutError	: 'ไม่สามารถตัดข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl และตัว X พร้อมกัน).',
-		copyError	: 'ไม่สามารถสำเนาข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl และตัว C พร้อมกัน).',
-		pasteMsg	: 'กรุณาใช้คีย์บอร์ดเท่านั้น โดยกดปุ๋ม (<strong>Ctrl และ V</strong>)พร้อมๆกัน และกด <strong>OK</strong>.',
-		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.' // MISSING
+		cutError	: 'ไม่สามารถตัดข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว X พร้อมกัน).',
+		copyError	: 'ไม่สามารถสำเนาข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว C พร้อมกัน).',
+		pasteMsg	: 'กรุณาใช้คีย์บอร์ดเท่านั้น โดยกดปุ๋ม (<strong>Ctrl/Cmd และ V</strong>)พร้อมๆกัน และกด <strong>OK</strong>.',
+		securityMsg	: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'วางสำเนาจากตัวอักษรเวิร์ด',
-		title : 'วางสำเนาจากตัวอักษรเวิร์ด',
-		advice : 'กรุณาใช้คีย์บอร์ดเท่านั้น โดยกดปุ๋ม (<strong>Ctrl และ V</strong>)พร้อมๆกัน และกด <strong>OK</strong>.',
-		ignoreFontFace : 'ไม่สนใจ Font Face definitions',
-		removeStyle : 'ลบ Styles definitions'
+		confirmCleanup	: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING
+		toolbar			: 'วางสำเนาจากตัวอักษรเวิร์ด',
+		title			: 'วางสำเนาจากตัวอักษรเวิร์ด',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'วางแบบตัวอักษรธรรมดา',
-		title : 'วางแบบตัวอักษรธรรมดา'
+		button	: 'วางแบบตัวอักษรธรรมดา',
+		title	: 'วางแบบตัวอักษรธรรมดา'
 	},
 
 	templates :
 	{
-		button : 'เทมเพลต',
-		title : 'เทมเพลตของส่วนเนื้อหาเว็บไซต์',
-		insertOption: 'แทนที่เนื้อหาเว็บไซต์ที่เลือก',
-		selectPromptMsg: 'กรุณาเลือก เทมเพลต เพื่อนำไปแก้ไขในอีดิตเตอร์<br />(เนื้อหาส่วนนี้จะหายไป):',
-		emptyListMsg : '(ยังไม่มีการกำหนดเทมเพลต)'
+		button			: 'เทมเพลต',
+		title			: 'เทมเพลตของส่วนเนื้อหาเว็บไซต์',
+		options : 'Template Options', // MISSING
+		insertOption	: 'แทนที่เนื้อหาเว็บไซต์ที่เลือก',
+		selectPromptMsg	: 'กรุณาเลือก เทมเพลต เพื่อนำไปแก้ไขในอีดิตเตอร์<br />(เนื้อหาส่วนนี้จะหายไป):',
+		emptyListMsg	: '(ยังไม่มีการกำหนดเทมเพลต)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'ลักษณะ',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'ลักษณะ',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block Styles', // MISSING
+		panelTitle2	: 'Inline Styles', // MISSING
+		panelTitle3	: 'Object Styles' // MISSING
 	},
 
 	format :
 	{
-		label : 'รูปแบบ',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'รูปแบบ',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatted',
-		tag_address : 'Address',
-		tag_h1 : 'Heading 1',
-		tag_h2 : 'Heading 2',
-		tag_h3 : 'Heading 3',
-		tag_h4 : 'Heading 4',
-		tag_h5 : 'Heading 5',
-		tag_h6 : 'Heading 6',
-		tag_div : 'Paragraph (DIV)'
-	},
+		label		: 'รูปแบบ',
+		panelTitle	: 'รูปแบบ',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Formatted',
+		tag_address	: 'Address',
+		tag_h1		: 'Heading 1',
+		tag_h2		: 'Heading 2',
+		tag_h3		: 'Heading 3',
+		tag_h4		: 'Heading 4',
+		tag_h5		: 'Heading 5',
+		tag_h6		: 'Heading 6',
+		tag_div		: 'Paragraph (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'แบบอักษร',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'แบบอักษร',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'แบบอักษร',
+		voiceLabel	: 'Font', // MISSING
+		panelTitle	: 'แบบอักษร'
 	},
 
 	fontSize :
 	{
-		label : 'ขนาด',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'ขนาด',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'ขนาด',
+		voiceLabel	: 'Font Size', // MISSING
+		panelTitle	: 'ขนาด'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'สีตัวอักษร',
-		bgColorTitle : 'สีพื้นหลัง',
-		auto : 'สีอัตโนมัติ',
-		more : 'เลือกสีอื่นๆ...'
+		textColorTitle	: 'สีตัวอักษร',
+		bgColorTitle	: 'สีพื้นหลัง',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'สีอัตโนมัติ',
+		more			: 'เลือกสีอื่นๆ...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Spell Check As You Type', // MISSING
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Enable SCAYT', // MISSING
+		disable			: 'Disable SCAYT', // MISSING
+		about			: 'About SCAYT', // MISSING
+		toggle			: 'Toggle SCAYT', // MISSING
+		options			: 'Options', // MISSING
+		langs			: 'Languages', // MISSING
+		moreSuggestions	: 'More suggestions', // MISSING
+		ignore			: 'Ignore', // MISSING
+		ignoreAll		: 'Ignore All', // MISSING
+		addWord			: 'Add Word', // MISSING
+		emptyDic		: 'Dictionary name should not be empty.', // MISSING
+
+		optionsTab		: 'Options', // MISSING
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Languages', // MISSING
+
+		dictionariesTab	: 'Dictionaries', // MISSING
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'About' // MISSING
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
+		title		: 'About CKEditor', // MISSING
+		dlgTitle	: 'About CKEditor', // MISSING
+		moreInfo	: 'For licensing information please visit our web site:', // MISSING
+		copy		: 'Copyright &copy; $1. All rights reserved.' // MISSING
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
+		anchor	: 'Anchor', // MISSING
+		flash	: 'Flash Animation', // MISSING
+		div		: 'Page Break', // MISSING
+		unknown	: 'Unknown Object' // MISSING
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/tr.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/tr.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/tr.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle : 'Zengin metin editörü, %1, yardım için ALT 0 tuşuna basın.',
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar',
+	editor	: 'Zengin Metin Editörü',
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Form',
 		checkbox		: 'Onay Kutusu',
-		radio		: 'Seçenek Düğmesi',
+		radio			: 'Seçenek Düğmesi',
 		textField		: 'Metin Girişi',
 		textarea		: 'Çok Satırlı Metin',
 		hiddenField		: 'Gizli Veri',
 		button			: 'Düğme',
-		select	: 'Seçim Menüsü',
+		select			: 'Seçim Menüsü',
 		imageButton		: 'Resimli Düğme',
 		notSet			: '<tanımlanmamış>',
@@ -89,12 +93,25 @@
 		ok				: 'Tamam',
 		cancel			: 'İptal',
+		close			: 'Kapat',
+		preview			: 'Ön gösterim',
 		generalTab		: 'Genel',
 		advancedTab		: 'Gelişmiş',
-		validateNumberFailed	: 'This value is not a number.', // MISSING
-		confirmNewPage	: 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING
-		confirmCancel	: 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING
+		validateNumberFailed : 'Bu değer sayı değildir.',
+		confirmNewPage	: 'İceriğiniz kayıt edilmediğinden dolayı kaybolacaktır. Yeni bir sayfa yüklemek istediğinize eminsiniz?',
+		confirmCancel	: 'Bazı seçenekler değişmiştir. Dialog penceresini kapatmak istediğinize eminmisiniz?',
+		options			: 'Seçenekler',
+		target			: 'Hedef',
+		targetNew		: 'Yeni Pencere (_blank)',
+		targetTop		: 'Enüst Pencere (_top)',
+		targetSelf		: 'Aynı Pencere (_self)',
+		targetParent	: 'Ana Pencere (_parent)',
 
 		// Put the voice-only part of the label in the span.
-		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>' // MISSING
+		unavailable		: '%1<span class="cke_accessibility">, unavailable</span>'
+	},
+
+	contextmenu :
+	{
+		options : 'İçerik Menüsü Seçenekleri'
 	},
 
@@ -103,5 +120,6 @@
 	{
 		toolbar		: 'Özel Karakter Ekle',
-		title		: 'Özel Karakter Seç'
+		title		: 'Özel Karakter Seç',
+		options : 'Özel Karakter Seçenekleri'
 	},
 
@@ -109,28 +127,24 @@
 	link :
 	{
-		toolbar		: 'Köprü Ekle/Düzenle',
-		menu		: 'Köprü Düzenle',
-		title		: 'Köprü',
-		info		: 'Köprü Bilgisi',
+		toolbar		: 'Link Ekle/Düzenle',
+		other 		: '<diğer>',
+		menu		: 'Link Düzenle',
+		title		: 'Link',
+		info		: 'Link Bilgisi',
 		target		: 'Hedef',
 		upload		: 'Karşıya Yükle',
 		advanced	: 'Gelişmiş',
-		type		: 'Köprü Türü',
+		type		: 'Link Türü',
+		toUrl		: 'URL',
 		toAnchor	: 'Bu sayfada çapa',
 		toEmail		: 'E-Posta',
-		target		: 'Hedef',
-		targetNotSet	: '<tanımlanmamış>',
-		targetFrame	: '<çerçeve>',
-		targetPopup	: '<yeni açılan pencere>',
-		targetNew	: 'Yeni Pencere(_blank)',
-		targetTop	: 'En Üst Pencere (_top)',
-		targetSelf	: 'Kendi Penceresi (_self)',
-		targetParent	: 'Anne Pencere (_parent)',
+		targetFrame		: '<çerçeve>',
+		targetPopup		: '<yeni açılan pencere>',
 		targetFrameName	: 'Hedef Çerçeve Adı',
 		targetPopupName	: 'Yeni Açılan Pencere Adı',
 		popupFeatures	: 'Yeni Açılan Pencere Özellikleri',
-		popupResizable	: 'Resizable', // MISSING
+		popupResizable	: 'Resizable',
 		popupStatusBar	: 'Durum Çubuğu',
-		popupLocationBar	: 'Yer Çubuğu',
+		popupLocationBar: 'Yer Çubuğu',
 		popupToolbar	: 'Araç Çubuğu',
 		popupMenuBar	: 'Menü Çubuğu',
@@ -142,7 +156,6 @@
 		popupHeight		: 'Yükseklik',
 		popupTop		: 'Yukarıya Göre Konum',
-		id				: 'Id', // MISSING
+		id				: 'Id',
 		langDir			: 'Dil Yönü',
-		langDirNotSet	: '<tanımlanmamış>',
 		langDirLTR		: 'Soldan Sağa (LTR)',
 		langDirRTL		: 'Sağdan Sola (RTL)',
@@ -156,6 +169,6 @@
 		charset			: 'Bağlı Kaynak Karakter Gurubu',
 		styles			: 'Biçem',
-		selectAnchor	: 'Çapa Seç',
-		anchorName		: 'Çapa Adı ile',
+		selectAnchor	: 'Bağlantı Seç',
+		anchorName		: 'Bağlantı Adı ile',
 		anchorId		: 'Eleman Kimlik Numarası ile',
 		emailAddress	: 'E-Posta Adresi',
@@ -163,5 +176,5 @@
 		emailBody		: 'İleti Gövdesi',
 		noAnchors		: '(Bu belgede hiç çapa yok)',
-		noUrl			: 'Lütfen köprü URL\'sini yazın',
+		noUrl			: 'Lütfen Link URL\'sini yazın',
 		noEmail			: 'Lütfen E-posta adresini yazın'
 	},
@@ -170,9 +183,32 @@
 	anchor :
 	{
-		toolbar		: 'Çapa Ekle/Düzenle',
-		menu		: 'Çapa Özellikleri',
-		title		: 'Çapa Özellikleri',
-		name		: 'Çapa Adı',
-		errorName	: 'Lütfen çapa için ad giriniz'
+		toolbar		: 'Bağlantı Ekle/Düzenle',
+		menu		: 'Bağlantı Özellikleri',
+		title		: 'Bağlantı Özellikleri',
+		name		: 'Bağlantı Adı',
+		errorName	: 'Lütfen bağlantı için ad giriniz'
+	},
+
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
 	},
 
@@ -188,7 +224,7 @@
 		matchCase			: 'Büyük/küçük harf duyarlı',
 		matchWord			: 'Kelimenin tamamı uysun',
-		matchCyclic			: 'Match cyclic', // MISSING
+		matchCyclic			: 'Eşleşen döngü',
 		replaceAll			: 'Tümünü Değiştir',
-		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+		replaceSuccessMsg	: '%1 bulunanlardan değiştirildi.'
 	},
 
@@ -204,5 +240,4 @@
 		border		: 'Kenar Kalınlığı',
 		align		: 'Hizalama',
-		alignNotSet	: '<Tanımlanmamış>',
 		alignLeft	: 'Sol',
 		alignCenter	: 'Merkez',
@@ -211,4 +246,5 @@
 		widthPx		: 'piksel',
 		widthPc		: 'yüzde',
+		widthUnit	: 'genişlik birimi',
 		height		: 'Yükseklik',
 		cellSpace	: 'Izgara kalınlığı',
@@ -221,11 +257,11 @@
 		headersRow		: 'İlk Satır',
 		headersBoth		: 'Her İkisi',
-		invalidRows		: 'Number of rows must be a number greater than 0.', // MISSING
-		invalidCols		: 'Number of columns must be a number greater than 0.', // MISSING
-		invalidBorder	: 'Border size must be a number.', // MISSING
-		invalidWidth	: 'Table width must be a number.', // MISSING
-		invalidHeight	: 'Table height must be a number.', // MISSING
-		invalidCellSpacing	: 'Cell spacing must be a number.', // MISSING
-		invalidCellPadding	: 'Cell padding must be a number.', // MISSING
+		invalidRows		: 'Satır sayısı 0 sayısından büyük olmalıdır.',
+		invalidCols		: 'Sütün sayısı 0 sayısından büyük olmalıdır.',
+		invalidBorder	: 'Çerceve büyüklüklüğü sayı olmalıdır.',
+		invalidWidth	: 'Tablo genişliği sayı olmalıdır.',
+		invalidHeight	: 'Tablo yüksekliği sayı olmalıdır.',
+		invalidCellSpacing	: 'Hücre boşluğu (spacing) sayı olmalıdır.',
+		invalidCellPadding	: 'Hücre aralığı (padding) sayı olmalıdır.',
 
 		cell :
@@ -240,26 +276,26 @@
 			splitHorizontal	: 'Hücreyi Yatay Böl',
 			splitVertical	: 'Hücreyi Dikey Böl',
-			title			: 'Cell Properties', // MISSING
-			cellType		: 'Cell Type', // MISSING
-			rowSpan			: 'Rows Span', // MISSING
-			colSpan			: 'Columns Span', // MISSING
-			wordWrap		: 'Word Wrap', // MISSING
-			hAlign			: 'Horizontal Alignment', // MISSING
-			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
-			alignBaseline	: 'Baseline', // MISSING
-			bgColor			: 'Background Color', // MISSING
-			borderColor		: 'Border Color', // MISSING
-			data			: 'Data', // MISSING
-			header			: 'Header', // MISSING
-			yes				: 'Yes', // MISSING
-			no				: 'No', // MISSING
-			invalidWidth	: 'Cell width must be a number.', // MISSING
-			invalidHeight	: 'Cell height must be a number.', // MISSING
-			invalidRowSpan	: 'Rows span must be a whole number.', // MISSING
-			invalidColSpan	: 'Columns span must be a whole number.', // MISSING
-			chooseColor : 'Choose' // MISSING
+			title			: 'Hücre Özellikleri',
+			cellType		: 'Hücre Tipi',
+			rowSpan			: 'Satırlar Mesafesi (Span)',
+			colSpan			: 'Sütünlar Mesafesi (Span)',
+			wordWrap		: 'Kelime Kaydırma',
+			hAlign			: 'Düşey Hizalama',
+			vAlign			: 'Yataş Hizalama',
+			alignTop		: 'Üst',
+			alignMiddle		: 'Orta',
+			alignBottom		: 'Alt',
+			alignBaseline	: 'Tabana',
+			bgColor			: 'Arkaplan Rengi',
+			borderColor		: 'Çerçeve Rengi',
+			data			: 'Veri',
+			header			: 'Başlık',
+			yes				: 'Evet',
+			no				: 'Hayır',
+			invalidWidth	: 'Hücre genişliği sayı olmalıdır.',
+			invalidHeight	: 'Hücre yüksekliği sayı olmalıdır.',
+			invalidRowSpan	: 'Satırların mesafesi tam sayı olmalıdır.',
+			invalidColSpan	: 'Sütünların mesafesi tam sayı olmalıdır.',
+			chooseColor		: 'Seçiniz'
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'İşlem',
 		method		: 'Yöntem',
-		encoding	: 'Encoding', // MISSING
-		target		: 'Hedef',
-		targetNotSet	: '<tanımlanmamış>',
-		targetNew	: 'Yeni Pencere(_blank)',
-		targetTop	: 'En Üst Pencere (_top)',
-		targetSelf	: 'Kendi Penceresi (_self)',
-		targetParent	: 'Anne Pencere (_parent)'
+		encoding	: 'Kodlama'
 	},
 
@@ -355,5 +385,5 @@
 		type		: 'Tür',
 		typeText	: 'Metin',
-		typePass	: 'Parola'
+		typePass	: 'Şifre'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Resimli Düğme Özellikleri',
 		menu		: 'Resim Özellikleri',
-		infoTab	: 'Resim Bilgisi',
+		infoTab		: 'Resim Bilgisi',
 		btnUpload	: 'Sunucuya Yolla',
-		url		: 'URL',
-		upload	: 'Karşıya Yükle',
-		alt		: 'Alternatif Yazı',
+		upload		: 'Karşıya Yükle',
+		alt			: 'Alternatif Yazı',
 		width		: 'Genişlik',
-		height	: 'Yükseklik',
+		height		: 'Yükseklik',
 		lockRatio	: 'Oranı Kilitle',
+		unlockRatio	: 'Kilitli Oran',
 		resetSize	: 'Boyutu Başa Döndür',
-		border	: 'Kenar',
-		hSpace	: 'Yatay Boşluk',
-		vSpace	: 'Dikey Boşluk',
+		border		: 'Kenar',
+		hSpace		: 'Yatay Boşluk',
+		vSpace		: 'Dikey Boşluk',
 		align		: 'Hizalama',
 		alignLeft	: 'Sol',
-		alignAbsBottom: 'Tam Altı',
-		alignAbsMiddle: 'Tam Ortası',
-		alignBaseline	: 'Taban Çizgisi',
-		alignBottom	: 'Alt',
-		alignMiddle	: 'Orta',
 		alignRight	: 'Sağ',
-		alignTextTop	: 'Yazı Tepeye',
-		alignTop	: 'Tepe',
-		preview	: 'Ön İzleme',
 		alertUrl	: 'Lütfen resmin URL\'sini yazınız',
-		linkTab	: 'Köprü',
-		button2Img	: 'Do you want to transform the selected image button on a simple image?', // MISSING
-		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
-		urlMissing : 'Image source URL is missing.' // MISSING
+		linkTab		: 'Köprü',
+		button2Img	: 'Seçili resim butonunu basit resime çevirmek istermisiniz?',
+		img2Button	: 'Seçili olan resimi, resimli butona çevirmek istermisiniz?',
+		urlMissing	: 'Resmin URL kaynağı eksiktir.',
+		validateWidth	: 'Genişlik tam sayı olmalıdır.',
+		validateHeight	: 'Yükseklik tam sayı olmalıdır.',
+		validateBorder	: 'Çerçeve tam sayı olmalıdır.',
+		validateHSpace	: 'HSpace tam sayı olmalıdır.',
+		validateVSpace	: 'VSpace tam sayı olmalıdır.'
 	},
 
@@ -406,50 +433,50 @@
 	{
 		properties		: 'Flash Özellikleri',
-		propertiesTab	: 'Properties', // MISSING
-		title		: 'Flash Özellikleri',
-		chkPlay		: 'Otomatik Oynat',
-		chkLoop		: 'Döngü',
-		chkMenu		: 'Flash Menüsünü Kullan',
-		chkFull		: 'Allow Fullscreen', // MISSING
- 		scale		: 'Boyutlandır',
+		propertiesTab	: 'Özellikler',
+		title			: 'Flash Özellikleri',
+		chkPlay			: 'Otomatik Oynat',
+		chkLoop			: 'Döngü',
+		chkMenu			: 'Flash Menüsünü Kullan',
+		chkFull			: 'Tam ekrana İzinver',
+ 		scale			: 'Boyutlandır',
 		scaleAll		: 'Hepsini Göster',
 		scaleNoBorder	: 'Kenar Yok',
 		scaleFit		: 'Tam Sığdır',
-		access			: 'Script Access', // MISSING
-		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
-		align		: 'Hizalama',
-		alignLeft	: 'Sol',
-		alignAbsBottom: 'Tam Altı',
-		alignAbsMiddle: 'Tam Ortası',
+		access			: 'Kod İzni',
+		accessAlways	: 'Herzaman',
+		accessSameDomain: 'Aynı domain',
+		accessNever		: 'Asla',
+		align			: 'Hizalama',
+		alignLeft		: 'Sol',
+		alignAbsBottom	: 'Tam Altı',
+		alignAbsMiddle	: 'Tam Ortası',
 		alignBaseline	: 'Taban Çizgisi',
-		alignBottom	: 'Alt',
-		alignMiddle	: 'Orta',
-		alignRight	: 'Sağ',
+		alignBottom		: 'Alt',
+		alignMiddle		: 'Orta',
+		alignRight		: 'Sağ',
 		alignTextTop	: 'Yazı Tepeye',
-		alignTop	: 'Tepe',
-		quality		: 'Quality', // MISSING
-		qualityBest		 : 'Best', // MISSING
-		qualityHigh		 : 'High', // MISSING
-		qualityAutoHigh	 : 'Auto High', // MISSING
-		qualityMedium	 : 'Medium', // MISSING
-		qualityAutoLow	 : 'Auto Low', // MISSING
-		qualityLow		 : 'Low', // MISSING
-		windowModeWindow	 : 'Window', // MISSING
-		windowModeOpaque	 : 'Opaque', // MISSING
-		windowModeTransparent	 : 'Transparent', // MISSING
-		windowMode	: 'Window mode', // MISSING
-		flashvars	: 'Variables for Flash', // MISSING
-		bgcolor	: 'Arka Renk',
-		width	: 'Genişlik',
-		height	: 'Yükseklik',
-		hSpace	: 'Yatay Boşluk',
-		vSpace	: 'Dikey Boşluk',
-		validateSrc : 'Lütfen köprü URL\'sini yazın',
-		validateWidth : 'Width must be a number.', // MISSING
-		validateHeight : 'Height must be a number.', // MISSING
-		validateHSpace : 'HSpace must be a number.', // MISSING
-		validateVSpace : 'VSpace must be a number.' // MISSING
+		alignTop		: 'Tepe',
+		quality			: 'Kalite',
+		qualityBest		: 'En iyi',
+		qualityHigh		: 'Yüksek',
+		qualityAutoHigh	: 'Otomatik Yükseklik',
+		qualityMedium	: 'Orta',
+		qualityAutoLow	: 'Otomatik Düşüklük',
+		qualityLow		: 'Düşük',
+		windowModeWindow: 'Pencere',
+		windowModeOpaque: 'Opak',
+		windowModeTransparent : 'Şeffaf',
+		windowMode		: 'Pencere modu',
+		flashvars		: 'Flash Değerleri',
+		bgcolor			: 'Arka Renk',
+		width			: 'Genişlik',
+		height			: 'Yükseklik',
+		hSpace			: 'Yatay Boşluk',
+		vSpace			: 'Dikey Boşluk',
+		validateSrc		: 'Lütfen köprü URL\'sini yazın',
+		validateWidth	: 'Width must be a number.',
+		validateHeight	: 'Yükseklik sayı olmalıdır.',
+		validateHSpace	: 'HSpace sayı olmalıdır.',
+		validateVSpace	: 'VSpace sayı olmalıdır.'
 	},
 
@@ -458,7 +485,7 @@
 	{
 		toolbar			: 'Yazım Denetimi',
-		title			: 'Spell Check', // MISSING
-		notAvailable	: 'Sorry, but service is unavailable now.', // MISSING
-		errorLoading	: 'Error loading application service host: %s.', // MISSING
+		title			: 'Yazımı Denetle',
+		notAvailable	: 'Üzügünüz, bu servis şuanda hizmet dışıdır.',
+		errorLoading	: 'Uygulamada yüklerken hata oluştu: %s.',
 		notInDic		: 'Sözlükte Yok',
 		changeTo		: 'Şuna değiştir:',
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'İfade',
-		title	: 'İfade Ekle'
+		title	: 'İfade Ekle',
+		options : 'İfade Seçenekleri'
 	},
 
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
-	},
-
-	numberedlist : 'Numaralı Liste',
-	bulletedlist : 'Simgeli Liste',
-	indent : 'Sekme Arttır',
-	outdent : 'Sekme Azalt',
+		eleLabel : 'Elementlerin yolu',
+		eleTitle : '%1 element'
+	},
+
+	numberedlist	: 'Numaralı Liste',
+	bulletedlist	: 'Simgeli Liste',
+	indent			: 'Sekme Arttır',
+	outdent			: 'Sekme Azalt',
 
 	justify :
 	{
-		left : 'Sola Dayalı',
-		center : 'Ortalanmış',
-		right : 'Sağa Dayalı',
-		block : 'İki Kenara Yaslanmış'
+		left	: 'Sola Dayalı',
+		center	: 'Ortalanmış',
+		right	: 'Sağa Dayalı',
+		block	: 'İki Kenara Yaslanmış'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Yapıştır',
-		cutError	: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kesme işlemine izin vermiyor. İşlem için (Ctrl+X) tuşlarını kullanın.',
-		copyError	: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kopyalama işlemine izin vermiyor. İşlem için (Ctrl+C) tuşlarını kullanın.',
-		pasteMsg	: 'Lütfen aşağıdaki kutunun içine yapıştırın. (<STRONG>Ctrl+V</STRONG>) ve <STRONG>Tamam</STRONG> butonunu tıklayın.',
-		securityMsg	: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin direkt olarak panoya erişimine izin vermiyor. Bu pencere içine tekrar yapıştırmalısınız..'
+		cutError	: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kesme işlemine izin vermiyor. İşlem için (Ctrl/Cmd+X) tuşlarını kullanın.',
+		copyError	: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kopyalama işlemine izin vermiyor. İşlem için (Ctrl/Cmd+C) tuşlarını kullanın.',
+		pasteMsg	: 'Lütfen aşağıdaki kutunun içine yapıştırın. (<STRONG>Ctrl/Cmd+V</STRONG>) ve <STRONG>Tamam</STRONG> butonunu tıklayın.',
+		securityMsg	: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin direkt olarak panoya erişimine izin vermiyor. Bu pencere içine tekrar yapıştırmalısınız..',
+		pasteArea	: 'Paste Area'
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Word\'den Yapıştır',
-		title : 'Word\'den Yapıştır',
-		advice : 'Lütfen aşağıdaki kutunun içine yapıştırın. (<STRONG>Ctrl+V</STRONG>) ve <STRONG>Tamam</STRONG> butonunu tıklayın.',
-		ignoreFontFace : 'Yazı Tipi tanımlarını yoksay',
-		removeStyle : 'Biçem Tanımlarını çıkar'
+		confirmCleanup	: 'Yapıştırmaya çalıştığınız metin Word\'den kopyalanmıştır. Yapıştırmadan önce silmek istermisiniz?',
+		toolbar			: 'Word\'den Yapıştır',
+		title			: 'Word\'den Yapıştır',
+		error			: 'Yapıştırmadaki veri bilgisi hata düzelene kadar silinmeyecektir'
 	},
 
 	pasteText :
 	{
-		button : 'Düz Metin Olarak Yapıştır',
-		title : 'Düz Metin Olarak Yapıştır'
+		button	: 'Düz Metin Olarak Yapıştır',
+		title	: 'Düz Metin Olarak Yapıştır'
 	},
 
 	templates :
 	{
-		button : 'Şablonlar',
-		title : 'İçerik Şablonları',
-		insertOption: 'Mevcut içerik ile değiştir',
-		selectPromptMsg: 'Düzenleyicide açmak için lütfen bir şablon seçin.<br>(hali hazırdaki içerik kaybolacaktır.):',
-		emptyListMsg : '(Belirli bir şablon seçilmedi)'
+		button			: 'Şablonlar',
+		title			: 'İçerik Şablonları',
+		options : 'Şablon Seçenekleri',
+		insertOption	: 'Mevcut içerik ile değiştir',
+		selectPromptMsg	: 'Düzenleyicide açmak için lütfen bir şablon seçin.<br>(hali hazırdaki içerik kaybolacaktır.):',
+		emptyListMsg	: '(Belirli bir şablon seçilmedi)'
 	},
 
@@ -540,146 +570,178 @@
 	stylesCombo :
 	{
-		label : 'Biçem',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label		: 'Biçem',
+		panelTitle	: 'Stilleri Düzenliyor',
+		panelTitle1	: 'Blok Stilleri',
+		panelTitle2	: 'Inline Stilleri',
+		panelTitle3	: 'Nesne Stilleri'
 	},
 
 	format :
 	{
-		label : 'Biçim',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'Biçim',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
-
-		tag_p : 'Normal',
-		tag_pre : 'Biçimli',
-		tag_address : 'Adres',
-		tag_h1 : 'Başlık 1',
-		tag_h2 : 'Başlık 2',
-		tag_h3 : 'Başlık 3',
-		tag_h4 : 'Başlık 4',
-		tag_h5 : 'Başlık 5',
-		tag_h6 : 'Başlık 6',
-		tag_div : 'Paragraf (DIV)'
-	},
+		label		: 'Biçim',
+		panelTitle	: 'Biçim',
+
+		tag_p		: 'Normal',
+		tag_pre		: 'Biçimli',
+		tag_address	: 'Adres',
+		tag_h1		: 'Başlık 1',
+		tag_h2		: 'Başlık 2',
+		tag_h3		: 'Başlık 3',
+		tag_h4		: 'Başlık 4',
+		tag_h5		: 'Başlık 5',
+		tag_h6		: 'Başlık 6',
+		tag_div		: 'Paragraf (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Div İçeriği Oluştur',
+		toolbar				: 'Div İçeriği Oluştur',
+		cssClassInputLabel	: 'Stilltipi Sınıfı',
+		styleSelectLabel	: 'Stil',
+		IdInputLabel		: 'Id',
+		languageCodeInputLabel	: ' Dil Kodu',
+		inlineStyleInputLabel	: 'Inline Stili',
+		advisoryTitleInputLabel	: 'Tavsiye Başlığı',
+		langDirLabel		: 'Dil Yönü',
+		langDirLTRLabel		: 'Soldan sağa (LTR)',
+		langDirRTLLabel		: 'Sağdan sola (RTL)',
+		edit				: 'Div Düzenle',
+		remove				: 'Div Kaldır'
+  	},
 
 	font :
 	{
-		label : 'Yazı Türü',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'Yazı Türü',
-		panelVoiceLabel : 'Select a font' // MISSING
+		label		: 'Yazı Türü',
+		voiceLabel	: 'Font',
+		panelTitle	: 'Yazı Türü'
 	},
 
 	fontSize :
 	{
-		label : 'Boyut',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Boyut',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label		: 'Boyut',
+		voiceLabel	: 'Font Size',
+		panelTitle	: 'Boyut'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Yazı Rengi',
-		bgColorTitle : 'Arka Renk',
-		auto : 'Otomatik',
-		more : 'Diğer renkler...'
+		textColorTitle	: 'Yazı Rengi',
+		bgColorTitle	: 'Arka Renk',
+		panelTitle		: 'Renkler',
+		auto			: 'Otomatik',
+		more			: 'Diğer renkler...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
+		'000' : 'Siyah',
+		'800000' : 'Kestane',
+		'8B4513' : 'Koyu Kahverengi',
+		'2F4F4F' : 'Koyu Kurşuni Gri',
 		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000080' : 'Mavi',
+		'4B0082' : 'Çivit Mavisi',
+		'696969' : 'Silik Gri',
+		'B22222' : 'Ateş Tuğlası',
+		'A52A2A' : 'Kahverengi',
+		'DAA520' : 'Altun Sırık',
+		'006400' : 'Koyu Yeşil',
+		'40E0D0' : 'Turkuaz',
+		'0000CD' : 'Orta Mavi',
+		'800080' : 'Pembe',
+		'808080' : 'Gri',
+		'F00' : 'Kırmızı',
+		'FF8C00' : 'Koyu Portakal',
+		'FFD700' : 'Altın',
+		'008000' : 'Yeşil',
+		'0FF' : 'Ciyan',
+		'00F' : 'Mavi',
+		'EE82EE' : 'Menekşe',
+		'A9A9A9' : 'Koyu Gri',
+		'FFA07A' : 'Açık Sarımsı',
+		'FFA500' : 'Portakal',
+		'FFFF00' : 'Sarı',
+		'00FF00' : 'Açık Yeşil',
+		'AFEEEE' : 'Sönük Turkuaz',
+		'ADD8E6' : 'Açık Mavi',
+		'DDA0DD' : 'Mor',
+		'D3D3D3' : 'Açık Gri',
+		'FFF0F5' : 'Eflatun Pembe',
+		'FAEBD7' : 'Antik Beyaz',
+		'FFFFE0' : 'Açık Sarı',
+		'F0FFF0' : 'Balsarısı',
+		'F0FFFF' : 'Gök Mavisi',
+		'F0F8FF' : 'Reha Mavi',
+		'E6E6FA' : 'Eflatun',
+		'FFF' : 'Beyaz'
 	},
 
 	scayt :
 	{
-		title : 'Spell Check As You Type', // MISSING
-		enable : 'Enable SCAYT', // MISSING
-		disable : 'Disable SCAYT', // MISSING
-		about : 'About SCAYT', // MISSING
-		toggle : 'Toggle SCAYT', // MISSING
-		options : 'Options', // MISSING
-		langs : 'Languages', // MISSING
-		moreSuggestions : 'More suggestions', // MISSING
-		ignore : 'Ignore', // MISSING
-		ignoreAll : 'Ignore All', // MISSING
-		addWord : 'Add Word', // MISSING
-		emptyDic : 'Dictionary name should not be empty.', // MISSING
-		optionsTab : 'Options', // MISSING
-		languagesTab : 'Languages', // MISSING
-		dictionariesTab : 'Dictionaries', // MISSING
-		aboutTab : 'About' // MISSING
+		title			: 'Girmiş olduğunuz kelime denetimi',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'SCAYT etkinleştir',
+		disable			: 'SCAYT pasifleştir',
+		about			: 'SCAYT hakkında',
+		toggle			: 'SCAYT değiştir',
+		options			: 'Seçenekler',
+		langs			: 'Diller',
+		moreSuggestions	: 'Daha fazla öneri',
+		ignore			: 'Yoksay',
+		ignoreAll		: 'Tümünü Yoksay',
+		addWord			: 'Kelime Ekle',
+		emptyDic		: 'Sözlük adı boş olamaz.',
+
+		optionsTab		: 'Seçenekler',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Diller',
+
+		dictionariesTab	: 'Sözlükler',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'Hakkında'
 	},
 
 	about :
 	{
-		title : 'About CKEditor', // MISSING
-		dlgTitle : 'About CKEditor', // MISSING
-		moreInfo : 'For licensing information please visit our web site:', // MISSING
-		copy : 'Copyright &copy; $1. All rights reserved.' // MISSING
-	},
-
-	maximize : 'Maximize', // MISSING
-	minimize : 'Minimize', // MISSING
+		title		: 'CKEditor Hakkında',
+		dlgTitle	: 'CKEditor Hakkında',
+		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.'
+	},
+
+	maximize : 'Büyült',
+	minimize : 'Küçült',
 
 	fakeobjects :
 	{
-		anchor : 'Anchor', // MISSING
-		flash : 'Flash Animation', // MISSING
-		div : 'Page Break', // MISSING
-		unknown : 'Unknown Object' // MISSING
-	},
-
-	resize : 'Drag to resize', // MISSING
+		anchor	: 'Bağlantı',
+		flash	: 'Flash Animasyonu',
+		div		: 'Sayfa Kesimi',
+		unknown	: 'Bilinmeyen Nesne'
+	},
+
+	resize : 'Boyutlandırmak için sürükle',
 
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Renk seç',
+		options	:	'Color Options', // MISSING
+		highlight	: 'İşaretle',
+		selected	: 'Seçilmiş',
+		clear		: 'Temizle'
+	},
+
+	toolbarCollapse	: 'Toolbar\'ı topla',
+	toolbarExpand	: 'Toolbar\'ı aç'
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/uk.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/uk.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/uk.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Візуальний текстовий редактор, %1',
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: 'Форма',
 		checkbox		: 'Флагова кнопка',
-		radio		: 'Кнопка вибору',
+		radio			: 'Кнопка вибору',
 		textField		: 'Текстове поле',
 		textarea		: 'Текстова область',
 		hiddenField		: 'Приховане поле',
 		button			: 'Кнопка',
-		select	: 'Список',
+		select			: 'Список',
 		imageButton		: 'Кнопка із зображенням',
 		notSet			: '<не визначено>',
@@ -89,9 +93,17 @@
 		ok				: 'ОК',
 		cancel			: 'Скасувати',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: 'Загальна',
 		advancedTab		: 'Розширений',
-		validateNumberFailed	: 'Значення не є числом.',
+		validateNumberFailed : 'Значення не є числом.',
 		confirmNewPage	: 'Всі не збережені зміни будуть втрачені. Ви впевнені, що хочете завантажити нову сторінку?',
 		confirmCancel	: 'Деякі опції були змінені. Закрити вікно?',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: 'Вставити спеціальний символ',
-		title		: 'Оберіть спеціальний символ'
+		title		: 'Оберіть спеціальний символ',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: 'Вставити/Редагувати посилання',
+		other 		: '<інший>',
 		menu		: 'Вставити посилання',
 		title		: 'Посилання',
@@ -117,14 +136,9 @@
 		advanced	: 'Розширений',
 		type		: 'Тип посилання',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: 'Якір на цю сторінку',
 		toEmail		: 'Эл. пошта',
-		target		: 'Ціль',
-		targetNotSet	: '<не визначено>',
-		targetFrame	: '<фрейм>',
-		targetPopup	: '<спливаюче вікно>',
-		targetNew	: 'Нове вікно (_blank)',
-		targetTop	: 'Найвище вікно (_top)',
-		targetSelf	: 'Теж вікно (_self)',
-		targetParent	: 'Батьківське вікно (_parent)',
+		targetFrame		: '<фрейм>',
+		targetPopup		: '<спливаюче вікно>',
 		targetFrameName	: 'Ім\'я целевого фрейма',
 		targetPopupName	: 'Ім\'я спливаючого вікна',
@@ -132,5 +146,5 @@
 		popupResizable	: 'Масштабоване',
 		popupStatusBar	: 'Строка статусу',
-		popupLocationBar	: 'Панель локації',
+		popupLocationBar: 'Панель локації',
 		popupToolbar	: 'Панель інструментів',
 		popupMenuBar	: 'Панель меню',
@@ -144,5 +158,4 @@
 		id				: 'Ідентифікатор (Id)',
 		langDir			: 'Напрямок мови',
-		langDirNotSet	: '<не визначено>',
 		langDirLTR		: 'Зліва на право (LTR)',
 		langDirRTL		: 'Зправа на ліво (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: 'Розмір бордюра',
 		align		: 'Вирівнювання',
-		alignNotSet	: '<Не вст.>',
 		alignLeft	: 'Зліва',
 		alignCenter	: 'По центру',
@@ -211,4 +246,5 @@
 		widthPx		: 'пікселів',
 		widthPc		: 'відсотків',
+		widthUnit	: 'width unit', // MISSING
 		height		: 'Висота',
 		cellSpace	: 'Проміжок (spacing)',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: 'Кількість обєднуваних рядків повинна бути цілим числом.',
 			invalidColSpan	: 'Кількість обєднуваних стовпчиків повинна бути цілим числом.',
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: 'Дія',
 		method		: 'Метод',
-		encoding	: 'Кодування',
-		target		: 'Ціль',
-		targetNotSet	: '<не визначено>',
-		targetNew	: 'Нове вікно (_blank)',
-		targetTop	: 'Найвище вікно (_top)',
-		targetSelf	: 'Теж вікно (_self)',
-		targetParent	: 'Батьківське вікно (_parent)'
+		encoding	: 'Кодування'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: 'Властивості кнопки із зображенням',
 		menu		: 'Властивості зображення',
-		infoTab	: 'Інформація про изображении',
+		infoTab		: 'Інформація про изображении',
 		btnUpload	: 'Надіслати на сервер',
-		url		: 'URL',
-		upload	: 'Закачати',
-		alt		: 'Альтернативний текст',
+		upload		: 'Закачати',
+		alt			: 'Альтернативний текст',
 		width		: 'Ширина',
-		height	: 'Висота',
+		height		: 'Висота',
 		lockRatio	: 'Зберегти пропорції',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: 'Скинути розмір',
-		border	: 'Бордюр',
-		hSpace	: 'Горизонтальний відступ',
-		vSpace	: 'Вертикальний відступ',
+		border		: 'Бордюр',
+		hSpace		: 'Горизонтальний відступ',
+		vSpace		: 'Вертикальний відступ',
 		align		: 'Вирівнювання',
 		alignLeft	: 'По лівому краю',
-		alignAbsBottom: 'Абс по низу',
-		alignAbsMiddle: 'Абс по середині',
-		alignBaseline	: 'По базовій лінії',
-		alignBottom	: 'По низу',
-		alignMiddle	: 'По середині',
 		alignRight	: 'По правому краю',
-		alignTextTop	: 'Текст на верху',
-		alignTop	: 'По верху',
-		preview	: 'Попередній перегляд',
 		alertUrl	: 'Будь ласка, введіть URL зображення',
-		linkTab	: 'Посилання',
+		linkTab		: 'Посилання',
 		button2Img	: 'Ви хочете перетворити обрану кнопку-зображення на просте зображення?',
 		img2Button	: 'Ви хочете перетворити обране зображення на кнопку-зображення?',
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Властивості Flash',
 		propertiesTab	: 'Властивості',
-		title		: 'Властивості Flash',
-		chkPlay		: 'Авто програвання',
-		chkLoop		: 'Зациклити',
-		chkMenu		: 'Дозволити меню Flash',
-		chkFull		: 'Дозволити повноекранний перегляд',
- 		scale		: 'Масштаб',
+		title			: 'Властивості Flash',
+		chkPlay			: 'Авто програвання',
+		chkLoop			: 'Зациклити',
+		chkMenu			: 'Дозволити меню Flash',
+		chkFull			: 'Дозволити повноекранний перегляд',
+ 		scale			: 'Масштаб',
 		scaleAll		: 'Показати всі',
 		scaleNoBorder	: 'Без рамки',
@@ -418,38 +445,38 @@
 		access			: 'Доступ до скрипта',
 		accessAlways	: 'Завжди',
-		accessSameDomain	: 'З того ж домена',
-		accessNever	: 'Ніколи',
-		align		: 'Вирівнювання',
-		alignLeft	: 'По лівому краю',
-		alignAbsBottom: 'Абс по низу',
-		alignAbsMiddle: 'Абс по середині',
+		accessSameDomain: 'З того ж домена',
+		accessNever		: 'Ніколи',
+		align			: 'Вирівнювання',
+		alignLeft		: 'По лівому краю',
+		alignAbsBottom	: 'Абс по низу',
+		alignAbsMiddle	: 'Абс по середині',
 		alignBaseline	: 'По базовій лінії',
-		alignBottom	: 'По низу',
-		alignMiddle	: 'По середині',
-		alignRight	: 'По правому краю',
+		alignBottom		: 'По низу',
+		alignMiddle		: 'По середині',
+		alignRight		: 'По правому краю',
 		alignTextTop	: 'Текст на верху',
-		alignTop	: 'По верху',
-		quality		: 'Якість',
-		qualityBest		 : 'Відмінна',
-		qualityHigh		 : 'Висока',
-		qualityAutoHigh	 : 'Авто відмінна',
-		qualityMedium	 : 'Середня',
-		qualityAutoLow	 : 'Авто низька',
-		qualityLow		 : 'Низька',
-		windowModeWindow	 : 'Вікно',
-		windowModeOpaque	 : 'Непрозорість (Opaque)',
-		windowModeTransparent	 : 'Прозорість (Transparent)',
-		windowMode	: 'Режим вікна',
-		flashvars	: 'Змінні Flash',
-		bgcolor	: 'Колір фону',
-		width	: 'Ширина',
-		height	: 'Висота',
-		hSpace	: 'Горизонтальний відступ',
-		vSpace	: 'Вертикальний відступ',
-		validateSrc : 'Будь ласка, занесіть URL посилання',
-		validateWidth : 'Ширина повинна бути числом.',
-		validateHeight : 'Висота повинна бути числом.',
-		validateHSpace : 'HSpace повинна бути числом.',
-		validateVSpace : 'VSpace повинна бути числом.'
+		alignTop		: 'По верху',
+		quality			: 'Якість',
+		qualityBest		: 'Відмінна',
+		qualityHigh		: 'Висока',
+		qualityAutoHigh	: 'Авто відмінна',
+		qualityMedium	: 'Середня',
+		qualityAutoLow	: 'Авто низька',
+		qualityLow		: 'Низька',
+		windowModeWindow: 'Вікно',
+		windowModeOpaque: 'Непрозорість (Opaque)',
+		windowModeTransparent : 'Прозорість (Transparent)',
+		windowMode		: 'Режим вікна',
+		flashvars		: 'Змінні Flash',
+		bgcolor			: 'Колір фону',
+		width			: 'Ширина',
+		height			: 'Висота',
+		hSpace			: 'Горизонтальний відступ',
+		vSpace			: 'Вертикальний відступ',
+		validateSrc		: 'Будь ласка, занесіть URL посилання',
+		validateWidth	: 'Ширина повинна бути числом.',
+		validateHeight	: 'Висота повинна бути числом.',
+		validateHSpace	: 'HSpace повинна бути числом.',
+		validateVSpace	: 'VSpace повинна бути числом.'
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: 'Смайлик',
-		title	: 'Вставити смайлик'
+		title	: 'Вставити смайлик',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 елемент'
 	},
 
-	numberedlist : 'Нумерований список',
-	bulletedlist : 'Маркований список',
-	indent : 'Збільшити відступ',
-	outdent : 'Зменшити відступ',
+	numberedlist	: 'Нумерований список',
+	bulletedlist	: 'Маркований список',
+	indent			: 'Збільшити відступ',
+	outdent			: 'Зменшити відступ',
 
 	justify :
 	{
-		left : 'По лівому краю',
-		center : 'По центру',
-		right : 'По правому краю',
-		block : 'По ширині'
+		left	: 'По лівому краю',
+		center	: 'По центру',
+		right	: 'По правому краю',
+		block	: 'По ширині'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: 'Вставити',
-		cutError	: 'Настройки безпеки вашого браузера не дозволяють редактору автоматично виконувати операції вирізування. Будь ласка, використовуйте клавіатуру для цього (Ctrl+X).',
-		copyError	: 'Настройки безпеки вашого браузера не дозволяють редактору автоматично виконувати операції копіювання. Будь ласка, використовуйте клавіатуру для цього (Ctrl+C).',
-		pasteMsg	: 'Будь ласка, вставте з буфера обміну в цю область, користуючись комбінацією клавіш (<STRONG>Ctrl+V</STRONG>) та натисніть <STRONG>OK</STRONG>.',
-		securityMsg	: 'Редактор не може отримати прямий доступ до буферу обміну у зв\'язку з налаштуваннями вашого браузера. Вам потрібно вставити інформацію повторно в це вікно.'
+		cutError	: 'Настройки безпеки вашого браузера не дозволяють редактору автоматично виконувати операції вирізування. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+X).',
+		copyError	: 'Настройки безпеки вашого браузера не дозволяють редактору автоматично виконувати операції копіювання. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+C).',
+		pasteMsg	: 'Будь ласка, вставте з буфера обміну в цю область, користуючись комбінацією клавіш (<STRONG>Ctrl/Cmd+V</STRONG>) та натисніть <STRONG>OK</STRONG>.',
+		securityMsg	: 'Редактор не може отримати прямий доступ до буферу обміну у зв\'язку з налаштуваннями вашого браузера. Вам потрібно вставити інформацію повторно в це вікно.',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Вставити з Word',
-		title : 'Вставити з Word',
-		advice : 'Будь-ласка, вставте з буфера обміну в цю область, користуючись комбінацією клавіш (<STRONG>Ctrl+V</STRONG>) та натисніть <STRONG>OK</STRONG>.',
-		ignoreFontFace : 'Ігнорувати налаштування шрифтів',
-		removeStyle : 'Видалити налаштування стилів'
+		confirmCleanup	: 'Текст, що ви хочете вставити, схожий на копійований з Word. Ви хочете очистити його перед вставкою?',
+		toolbar			: 'Вставити з Word',
+		title			: 'Вставити з Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Вставити тільки текст',
-		title : 'Вставити тільки текст'
+		button	: 'Вставити тільки текст',
+		title	: 'Вставити тільки текст'
 	},
 
 	templates :
 	{
-		button : 'Шаблони',
-		title : 'Шаблони змісту',
-		insertOption: 'Замінити поточний вміст',
-		selectPromptMsg: 'Оберіть, будь ласка, шаблон для відкриття в редакторі<br>(поточний зміст буде втрачено):',
-		emptyListMsg : '(Не визначено жодного шаблону)'
+		button			: 'Шаблони',
+		title			: 'Шаблони змісту',
+		options : 'Template Options', // MISSING
+		insertOption	: 'Замінити поточний вміст',
+		selectPromptMsg	: 'Оберіть, будь ласка, шаблон для відкриття в редакторі<br>(поточний зміст буде втрачено):',
+		emptyListMsg	: '(Не визначено жодного шаблону)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : 'Стиль',
-		voiceLabel : 'Стилі',
-		panelVoiceLabel : 'Оберіть стиль',
-		panelTitle1 : 'Block стилі',
-		panelTitle2 : 'Inline стилі',
-		panelTitle3 : 'Object стилі'
+		label		: 'Стиль',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: 'Block стилі',
+		panelTitle2	: 'Inline стилі',
+		panelTitle3	: 'Object стилі'
 	},
 
 	format :
 	{
-		label : 'Форматування',
-		voiceLabel : 'Формат',
-		panelTitle : 'Форматування',
-		panelVoiceLabel : 'Оберіть формат абзацу',
-
-		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)'
-	},
+		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				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : 'Шрифт',
-		voiceLabel : 'Шрифт',
-		panelTitle : 'Шрифт',
-		panelVoiceLabel : 'Оберіть шрифт'
+		label		: 'Шрифт',
+		voiceLabel	: 'Шрифт',
+		panelTitle	: 'Шрифт'
 	},
 
 	fontSize :
 	{
-		label : 'Розмір',
-		voiceLabel : 'Розмір шрифта',
-		panelTitle : 'Розмір',
-		panelVoiceLabel : 'Оберіть розмір шрифта'
+		label		: 'Розмір',
+		voiceLabel	: 'Розмір шрифта',
+		panelTitle	: 'Розмір'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Колір тексту',
-		bgColorTitle : 'Колір фону',
-		auto : 'Автоматичний',
-		more : 'Кольори...'
+		textColorTitle	: 'Колір тексту',
+		bgColorTitle	: 'Колір фону',
+		panelTitle		: 'Colors', // MISSING
+		auto			: 'Автоматичний',
+		more			: 'Кольори...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Перефірка орфографії по мірі набору',
-		enable : 'Включити SCAYT',
-		disable : 'Відключити SCAYT',
-		about : 'Про SCAYT',
-		toggle : 'Перемкнути SCAYT',
-		options : 'Опції',
-		langs : 'Мови',
-		moreSuggestions : 'Більше пропозицій',
-		ignore : 'Ігнорувати',
-		ignoreAll : 'Ігнорувати всі',
-		addWord : 'Додати слово',
-		emptyDic : 'Назва словника повинна бути заповнена.',
-		optionsTab : 'Опції',
-		languagesTab : 'Мови',
-		dictionariesTab : 'Словники',
-		aboutTab : 'Про'
+		title			: 'Перефірка орфографії по мірі набору',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: 'Включити SCAYT',
+		disable			: 'Відключити SCAYT',
+		about			: 'Про SCAYT',
+		toggle			: 'Перемкнути SCAYT',
+		options			: 'Опції',
+		langs			: 'Мови',
+		moreSuggestions	: 'Більше пропозицій',
+		ignore			: 'Ігнорувати',
+		ignoreAll		: 'Ігнорувати всі',
+		addWord			: 'Додати слово',
+		emptyDic		: 'Назва словника повинна бути заповнена.',
+
+		optionsTab		: 'Опції',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: 'Мови',
+
+		dictionariesTab	: 'Словники',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'Про'
 	},
 
 	about :
 	{
-		title : 'Про CKEditor',
-		dlgTitle : 'Про CKEditor',
-		moreInfo : 'Щодо інформації з ліцензування завітайте до нашого сайту:',
-		copy : 'Copyright &copy; $1. Всі права застережено.'
+		title		: 'Про CKEditor',
+		dlgTitle	: 'Про CKEditor',
+		moreInfo	: 'Щодо інформації з ліцензування завітайте до нашого сайту:',
+		copy		: 'Copyright &copy; $1. Всі права застережено.'
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : 'Якір',
-		flash : 'Flash анімація',
-		div : 'Розрив сторінки',
-		unknown : 'Невідомий об`єкт'
+		anchor	: 'Якір',
+		flash	: 'Flash анімація',
+		div		: 'Розрив сторінки',
+		unknown	: 'Невідомий об`єкт'
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/vi.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/vi.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/vi.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Trình biên tập trực quan, %1',
+	editorTitle : 'Bộ soạn thảo, %1, nhấn ALT + 0 để xem hướng dẫn.',
+
+	// ARIA descriptions.
+	toolbar	: 'Thanh công cụ',
+	editor	: 'Bộ soạn thảo',
 
 	// Toolbar buttons without dialogs.
@@ -46,12 +50,12 @@
 	bold			: 'Đậm',
 	italic			: 'Nghiêng',
-	selectAll		: 'Chọn Tất cả',
-	removeFormat	: 'Xoá Định dạng',
+	selectAll		: 'Chọn tất cả',
+	removeFormat	: 'Xoá định dạng',
 	strike			: 'Gạch xuyên ngang',
 	subscript		: 'Chỉ số dưới',
 	superscript		: 'Chỉ số trên',
-	horizontalrule	: 'Chèn Đường phân cách ngang',
-	pagebreak		: 'Chèn Ngắt trang',
-	unlink			: 'Xoá Liên kết',
+	horizontalrule	: 'Chèn đường phân cách ngang',
+	pagebreak		: 'Chèn ngắt trang',
+	unlink			: 'Xoá liên kết',
 	undo			: 'Khôi phục thao tác',
 	redo			: 'Làm lại thao tác',
@@ -64,34 +68,42 @@
 		protocol		: 'Giao thức',
 		upload			: 'Tải lên',
-		uploadSubmit	: 'Tải lên Máy chủ',
+		uploadSubmit	: 'Tải lên máy chủ',
 		image			: 'Hình ảnh',
 		flash			: 'Flash',
 		form			: 'Biểu mẫu',
 		checkbox		: 'Nút kiểm',
-		radio		: 'Nút chọn',
+		radio			: 'Nút chọn',
 		textField		: 'Trường văn bản',
 		textarea		: 'Vùng văn bản',
 		hiddenField		: 'Trường ẩn',
 		button			: 'Nút',
-		select	: 'Ô chọn',
+		select			: 'Ô chọn',
 		imageButton		: 'Nút hình ảnh',
 		notSet			: '<không thiết lập>',
 		id				: 'Định danh',
 		name			: 'Tên',
-		langDir			: 'Đường dẫn Ngôn ngữ',
-		langDirLtr		: 'Trái sang Phải (LTR)',
-		langDirRtl		: 'Phải sang Trái (RTL)',
-		langCode		: 'Mã Ngôn ngữ',
+		langDir			: 'Hướng ngôn ngữ',
+		langDirLtr		: 'Trái sang phải (LTR)',
+		langDirRtl		: 'Phải sang trái (RTL)',
+		langCode		: 'Mã ngôn ngữ',
 		longDescr		: 'Mô tả URL',
 		cssClass		: 'Lớp Stylesheet',
-		advisoryTitle	: 'Advisory Title',
-		cssStyle		: 'Mẫu',
+		advisoryTitle	: 'Nhan đề hướng dẫn',
+		cssStyle		: 'Kiểu (style)',
 		ok				: 'Đồng ý',
 		cancel			: 'Bỏ qua',
-		generalTab		: 'Chung',
-		advancedTab		: 'Mở rộng',
-		validateNumberFailed	: 'Giá trị này không phải là số.',
-		confirmNewPage	: 'Mọi thay đổi không được không được lưu lại của nội dung này sẽ bị mất. Bạn có chắc chắn muốn tải một trang mới?',
+		close			: 'Đóng',
+		preview			: 'Xem trước',
+		generalTab		: 'Tab chung',
+		advancedTab		: 'Tab mở rộng',
+		validateNumberFailed : 'Giá trị này không phải là số.',
+		confirmNewPage	: 'Mọi thay đổi không được lưu lại, nội dung này sẽ bị mất. Bạn có chắc chắn muốn tải một trang mới?',
 		confirmCancel	: 'Một vài tùy chọn đã bị thay đổi. Bạn có chắc chắn muốn đóng hộp thoại?',
+		options			: 'Tùy chọn',
+		target			: 'Đích đến',
+		targetNew		: 'Cửa sổ mới (_blank)',
+		targetTop		: 'Cửa sổ trên cùng (_top)',
+		targetSelf		: 'Tại trang (_self)',
+		targetParent	: 'Cửa sổ cha (_parent)',
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Tùy chọn menu bổ xung'
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
-		toolbar		: 'Chèn Ký tự đặc biệt',
-		title		: 'Hãy chọn Ký tự đặc biệt'
+		toolbar		: 'Chèn ký tự đặc biệt',
+		title		: 'Hãy chọn ký tự đặc biệt',
+		options : 'Tùy chọn các ký tự đặc biệt'
 	},
 
@@ -109,28 +127,24 @@
 	link :
 	{
-		toolbar		: 'Chèn/Sửa Liên kết',
-		menu		: 'Sửa Liên kết',
+		toolbar		: 'Chèn/Sửa liên kết',
+		other 		: '<khác>',
+		menu		: 'Sửa liên kết',
 		title		: 'Liên kết',
-		info		: 'Thông tin Liên kết',
+		info		: 'Thông tin liên kết',
 		target		: 'Đích',
 		upload		: 'Tải lên',
 		advanced	: 'Mở rộng',
-		type		: 'Kiểu Liên kết',
+		type		: 'Kiểu liên kết',
+		toUrl		: 'URL',
 		toAnchor	: 'Neo trong trang này',
 		toEmail		: 'Thư điện tử',
-		target		: 'Đích',
-		targetNotSet	: '<không thiết lập>',
-		targetFrame	: '<khung>',
-		targetPopup	: '<cửa sổ popup>',
-		targetNew	: 'Cửa sổ mới (_blank)',
-		targetTop	: 'Cửa sổ trên cùng(_top)',
-		targetSelf	: 'Cùng cửa sổ (_self)',
-		targetParent	: 'Cửa sổ cha (_parent)',
-		targetFrameName	: 'Tên Khung đích',
-		targetPopupName	: 'Tên Cửa sổ Popup',
-		popupFeatures	: 'Đặc điểm của Cửa sổ Popup',
+		targetFrame		: '<khung>',
+		targetPopup		: '<cửa sổ popup>',
+		targetFrameName	: 'Tên khung đích',
+		targetPopupName	: 'Tên cửa sổ Popup',
+		popupFeatures	: 'Đặc điểm của cửa sổ Popup',
 		popupResizable	: 'Có thể thay đổi kích cỡ',
 		popupStatusBar	: 'Thanh trạng thái',
-		popupLocationBar	: 'Thanh vị trí',
+		popupLocationBar: 'Thanh vị trí',
 		popupToolbar	: 'Thanh công cụ',
 		popupMenuBar	: 'Thanh Menu',
@@ -139,29 +153,28 @@
 		popupDependent	: 'Phụ thuộc (Netscape)',
 		popupWidth		: 'Rộng',
-		popupLeft		: 'Vị trí Trái',
+		popupLeft		: 'Vị trí bên trái',
 		popupHeight		: 'Cao',
-		popupTop		: 'Vị trí Trên',
+		popupTop		: 'Vị trí phía trên',
 		id				: 'Định danh',
-		langDir			: 'Đường dẫn Ngôn ngữ',
-		langDirNotSet	: '<không thiết lập>',
-		langDirLTR		: 'Trái sang Phải (LTR)',
-		langDirRTL		: 'Phải sang Trái (RTL)',
-		acccessKey		: 'Phím Hỗ trợ truy cập',
+		langDir			: 'Hướng ngôn ngữ',
+		langDirLTR		: 'Trái sang phải (LTR)',
+		langDirRTL		: 'Phải sang trái (RTL)',
+		acccessKey		: 'Phím hỗ trợ truy cập',
 		name			: 'Tên',
-		langCode		: 'Đường dẫn Ngôn ngữ',
+		langCode		: 'Mã ngôn ngữ',
 		tabIndex		: 'Chỉ số của Tab',
-		advisoryTitle	: 'Advisory Title',
-		advisoryContentType	: 'Advisory Content Type',
+		advisoryTitle	: 'Nhan đề hướng dẫn',
+		advisoryContentType	: 'Nội dung hướng dẫn',
 		cssClasses		: 'Lớp Stylesheet',
 		charset			: 'Bảng mã của tài nguyên được liên kết đến',
-		styles			: 'Mẫu',
-		selectAnchor	: 'Chọn một Neo',
-		anchorName		: 'Theo Tên Neo',
-		anchorId		: 'Theo Định danh Thành phần',
+		styles			: 'Kiểu (style)',
+		selectAnchor	: 'Chọn một điểm neo',
+		anchorName		: 'Theo tên điểm neo',
+		anchorId		: 'Theo định danh thành phần',
 		emailAddress	: 'Thư điện tử',
-		emailSubject	: 'Tiêu đề Thông điệp',
-		emailBody		: 'Nội dung Thông điệp',
-		noAnchors		: '(Không có Neo nào trong tài liệu)',
-		noUrl			: 'Hãy đưa vào Liên kết URL',
+		emailSubject	: 'Tiêu đề thông điệp',
+		emailBody		: 'Nội dung thông điệp',
+		noAnchors		: '(Không có điểm neo nào trong tài liệu)',
+		noUrl			: 'Hãy đưa vào đường dẫn liên kết (URL)',
 		noEmail			: 'Hãy đưa vào địa chỉ thư điện tử'
 	},
@@ -170,9 +183,32 @@
 	anchor :
 	{
-		toolbar		: 'Chèn/Sửa Neo',
-		menu		: 'Thuộc tính Neo',
-		title		: 'Thuộc tính Neo',
-		name		: 'Tên của Neo',
-		errorName	: 'Hãy nhập vào tên của Neo'
+		toolbar		: 'Chèn/Sửa điểm neo',
+		menu		: 'Thuộc tính điểm neo',
+		title		: 'Thuộc tính điểm neo',
+		name		: 'Tên của điểm neo',
+		errorName	: 'Hãy nhập vào tên của điểm neo'
+	},
+
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Thuộc tính danh sách có thứ tự',
+		bulletedTitle		: 'Thuộc tính danh sách không thứ tự',
+		type				: 'Kiểu loại',
+		start				: 'Bắt đầu',
+		circle				: 'Khuyên tròn',
+		disc				: 'Hình đĩa',
+		square				: 'Hình vuông',
+		none				: 'Không gì cả',
+		notset				: '<không thiết lập>',
+		armenian			: 'Số theo kiểu Armenian',
+		georgian			: 'Số theo kiểu Georgian (an, ban, gan...)',
+		lowerRoman			: 'Số La Mã kiểu thường (i, ii, iii, iv, v...)',
+		upperRoman			: 'Số La Mã kiểu HOA (I, II, III, IV, V...)',
+		lowerAlpha			: 'Kiểu abc thường (a, b, c, d, e...)',
+		upperAlpha			: 'Kiểu ABC HOA (A, B, C, D, E...)',
+		lowerGreek			: 'Kiểu Hy Lạp (alpha, beta, gamma...)',
+		decimal				: 'Kiểu số (1, 2, 3 ...)',
+		decimalLeadingZero	: 'Kiểu số (01, 02, 03...)'
 	},
 
@@ -180,5 +216,5 @@
 	findAndReplace :
 	{
-		title				: 'Tìm kiếm và Thay Thế',
+		title				: 'Tìm kiếm và thay thế',
 		find				: 'Tìm kiếm',
 		replace				: 'Thay thế',
@@ -189,5 +225,5 @@
 		matchWord			: 'Giống toàn bộ từ',
 		matchCyclic			: 'Giống một phần',
-		replaceAll			: 'Thay thế Tất cả',
+		replaceAll			: 'Thay thế tất cả',
 		replaceSuccessMsg	: '%1 vị trí đã được thay thế.'
 	},
@@ -199,50 +235,50 @@
 		title		: 'Thuộc tính bảng',
 		menu		: 'Thuộc tính bảng',
-		deleteTable	: 'Xóa Bảng',
-		rows		: 'Hàng',
-		columns		: 'Cột',
-		border		: 'Cỡ Đường viền',
+		deleteTable	: 'Xóa bảng',
+		rows		: 'Số hàng',
+		columns		: 'Số cột',
+		border		: 'Kích thước đường viền',
 		align		: 'Canh lề',
-		alignNotSet	: '<Chưa thiết lập>',
 		alignLeft	: 'Trái',
 		alignCenter	: 'Giữa',
 		alignRight	: 'Phải',
 		width		: 'Rộng',
-		widthPx		: 'điểm (px)',
-		widthPc		: '%',
-		height		: 'Cao',
-		cellSpace	: 'Khoảng cách Ô',
-		cellPad		: 'Đệm Ô',
+		widthPx		: 'Điểm ảnh (px)',
+		widthPc		: 'Phần trăm (%)',
+		widthUnit	: 'Đơn vị',
+		height		: 'Chiều cao',
+		cellSpace	: 'Khoảng cách giữa các ô',
+		cellPad		: 'Khoảng đệm giữ ô và nội dung',
 		caption		: 'Đầu đề',
 		summary		: 'Tóm lược',
 		headers		: 'Đầu đề',
 		headersNone		: 'Không có',
-		headersColumn	: 'Cột Đầu tiên',
-		headersRow		: 'Hàng Đầu tiên',
+		headersColumn	: 'Cột đầu tiên',
+		headersRow		: 'Hàng đầu tiên',
 		headersBoth		: 'Cả hai',
 		invalidRows		: 'Số lượng hàng phải là một số lớn hơn 0.',
 		invalidCols		: 'Số lượng cột phải là một số lớn hơn 0.',
 		invalidBorder	: 'Kích cỡ của đường biên phải là một số nguyên.',
-		invalidWidth	: 'Chiều rộng của Bảng phải là một số nguyên.',
-		invalidHeight	: 'Chiều cao của Bảng phải là một số nguyên.',
+		invalidWidth	: 'Chiều rộng của bảng phải là một số nguyên.',
+		invalidHeight	: 'Chiều cao của bảng phải là một số nguyên.',
 		invalidCellSpacing	: 'Khoảng cách giữa các ô phải là một số nguyên.',
-		invalidCellPadding	: 'Đệm giữa các ô phải là một số nguyên.',
+		invalidCellPadding	: 'Khoảng đệm giữa ô và nội dung phải là một số nguyên.',
 
 		cell :
 		{
 			menu			: 'Ô',
-			insertBefore	: 'Chèn Ô Phía trước',
-			insertAfter		: 'Chèn Ô Phía sau',
-			deleteCell		: 'Xoá Ô',
-			merge			: 'Kết hợp Ô',
-			mergeRight		: 'Kết hợp Sang phải',
-			mergeDown		: 'Kết hợp Xuống dưới',
-			splitHorizontal	: 'Tách ngang Ô',
-			splitVertical	: 'Tách dọc Ô',
-			title			: 'Thuộc tính của Ô',
-			cellType		: 'Kiểu của Ô',
+			insertBefore	: 'Chèn ô Phía trước',
+			insertAfter		: 'Chèn ô Phía sau',
+			deleteCell		: 'Xoá ô',
+			merge			: 'Kết hợp ô',
+			mergeRight		: 'Kết hợp sang phải',
+			mergeDown		: 'Kết hợp xuống dưới',
+			splitHorizontal	: 'Phân tách ô theo chiều ngang',
+			splitVertical	: 'Phân tách ô theo chiều dọc',
+			title			: 'Thuộc tính của ô',
+			cellType		: 'Kiểu của ô',
 			rowSpan			: 'Kết hợp hàng',
 			colSpan			: 'Kết hợp cột',
-			wordWrap		: 'Word Wrap',
+			wordWrap		: 'Chữ liền hàng',
 			hAlign			: 'Canh lề ngang',
 			vAlign			: 'Canh lề dọc',
@@ -257,9 +293,9 @@
 			yes				: 'Có',
 			no				: 'Không',
-			invalidWidth	: 'Chiều rộng của Ô phải là một số nguyên.',
-			invalidHeight	: 'Chiều cao của Ô phải là một số nguyên.',
+			invalidWidth	: 'Chiều rộng của ô phải là một số nguyên.',
+			invalidHeight	: 'Chiều cao của ô phải là một số nguyên.',
 			invalidRowSpan	: 'Số hàng kết hợp phải là một số nguyên.',
 			invalidColSpan	: 'Số cột kết hợp phải là một số nguyên.',
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Chọn màu'
 		},
 
@@ -267,7 +303,7 @@
 		{
 			menu			: 'Hàng',
-			insertBefore	: 'Chèn Hàng Phía trước',
-			insertAfter		: 'Chèn Hàng Phía sau',
-			deleteRow		: 'Xoá Hàng'
+			insertBefore	: 'Chèn hàng phía trước',
+			insertAfter		: 'Chèn hàng phía sau',
+			deleteRow		: 'Xoá hàng'
 		},
 
@@ -275,7 +311,7 @@
 		{
 			menu			: 'Cột',
-			insertBefore	: 'Chèn Cột Phía trước',
-			insertAfter		: 'Chèn Cột Phía sau',
-			deleteColumn	: 'Xoá Cột'
+			insertBefore	: 'Chèn cột phía trước',
+			insertAfter		: 'Chèn cột phía sau',
+			deleteColumn	: 'Xoá cột'
 		}
 	},
@@ -284,10 +320,10 @@
 	button :
 	{
-		title		: 'Thuộc tính Nút',
-		text		: 'Chuỗi hiển thị (Giá trị)',
+		title		: 'Thuộc tính của nút',
+		text		: 'Chuỗi hiển thị (giá trị)',
 		type		: 'Kiểu',
-		typeBtn		: 'Nút Bấm',
-		typeSbm		: 'Nút Gửi',
-		typeRst		: 'Nút Nhập lại'
+		typeBtn		: 'Nút bấm',
+		typeSbm		: 'Nút gửi',
+		typeRst		: 'Nút nhập lại'
 	},
 
@@ -295,6 +331,6 @@
 	checkboxAndRadio :
 	{
-		checkboxTitle : 'Thuộc tính Nút kiểm',
-		radioTitle	: 'Thuộc tính Nút chọn',
+		checkboxTitle : 'Thuộc tính nút kiểm',
+		radioTitle	: 'Thuộc tính nút chọn',
 		value		: 'Giá trị',
 		selected	: 'Được chọn'
@@ -304,15 +340,9 @@
 	form :
 	{
-		title		: 'Thuộc tính Biểu mẫu',
-		menu		: 'Thuộc tính Biểu mẫu',
+		title		: 'Thuộc tính biểu mẫu',
+		menu		: 'Thuộc tính biểu mẫu',
 		action		: 'Hành động',
 		method		: 'Phương thức',
-		encoding	: 'Bảng mã',
-		target		: 'Đích',
-		targetNotSet	: '<không thiết lập>',
-		targetNew	: 'Cửa sổ mới (_blank)',
-		targetTop	: 'Cửa sổ trên cùng(_top)',
-		targetSelf	: 'Cùng cửa sổ (_self)',
-		targetParent	: 'Cửa sổ cha (_parent)'
+		encoding	: 'Bảng mã'
 	},
 
@@ -320,5 +350,5 @@
 	select :
 	{
-		title		: 'Thuộc tính Ô chọn',
+		title		: 'Thuộc tính ô chọn',
 		selectInfo	: 'Thông tin',
 		opAvail		: 'Các tùy chọn có thể sử dụng',
@@ -334,5 +364,5 @@
 		btnDown		: 'Xuống',
 		btnSetValue : 'Giá trị được chọn',
-		btnDelete	: 'Xoá'
+		btnDelete	: 'Nút xoá'
 	},
 
@@ -340,7 +370,7 @@
 	textarea :
 	{
-		title		: 'Thuộc tính Vùng văn bản',
-		cols		: 'Cột',
-		rows		: 'Hàng'
+		title		: 'Thuộc tính vùng văn bản',
+		cols		: 'Số cột',
+		rows		: 'Số hàng'
 	},
 
@@ -348,9 +378,9 @@
 	textfield :
 	{
-		title		: 'Thuộc tính Trường văn bản',
+		title		: 'Thuộc tính trường văn bản',
 		name		: 'Tên',
 		value		: 'Giá trị',
-		charWidth	: 'Rộng',
-		maxChars	: 'Số Ký tự tối đa',
+		charWidth	: 'Độ rộng của ký tự',
+		maxChars	: 'Số ký tự tối đa',
 		type		: 'Kiểu',
 		typeText	: 'Ký tự',
@@ -361,5 +391,5 @@
 	hidden :
 	{
-		title	: 'Thuộc tính Trường ẩn',
+		title	: 'Thuộc tính trường ẩn',
 		name	: 'Tên',
 		value	: 'Giá trị'
@@ -369,35 +399,32 @@
 	image :
 	{
-		title		: 'Thuộc tính Hình ảnh',
-		titleButton	: 'Thuộc tính Nút hình ảnh',
-		menu		: 'Thuộc tính Hình ảnh',
-		infoTab	: 'Thông tin Hình ảnh',
-		btnUpload	: 'Tải lên Máy chủ',
-		url		: 'URL',
-		upload	: 'Tải lên',
-		alt		: 'Chú thích Hình ảnh',
-		width		: 'Rộng',
-		height	: 'Cao',
+		title		: 'Thuộc tính của ảnh',
+		titleButton	: 'Thuộc tính nút của ảnh',
+		menu		: 'Thuộc tính của ảnh',
+		infoTab		: 'Thông tin của ảnh',
+		btnUpload	: 'Tải lên máy chủ',
+		upload		: 'Tải lên',
+		alt			: 'Chú thích ảnh',
+		width		: 'Chiều rộng',
+		height		: 'chiều cao',
 		lockRatio	: 'Giữ nguyên tỷ lệ',
+		unlockRatio	: 'Phá bỏ tỷ lệ',
 		resetSize	: 'Kích thước gốc',
-		border	: 'Đường viền',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
+		border		: 'Đường viền',
+		hSpace		: 'Khoảng đệm ngang',
+		vSpace		: 'Khoảng đệm dọc',
 		align		: 'Vị trí',
-		alignLeft	: 'Trái',
-		alignAbsBottom: 'Dưới tuyệt đối',
-		alignAbsMiddle: 'Giữa tuyệt đối',
-		alignBaseline	: 'Đường cơ sở',
-		alignBottom	: 'Dưới',
-		alignMiddle	: 'Giữa',
-		alignRight	: 'Phải',
-		alignTextTop	: 'Phía trên chữ',
-		alignTop	: 'Trên',
-		preview	: 'Xem trước',
-		alertUrl	: 'Hãy đưa vào URL của hình ảnh',
-		linkTab	: 'Liên kết',
-		button2Img	: 'Bạn có muốn chuyển nút bấm bằng hình ảnh được chọn thành hình ảnh?',
-		img2Button	: 'Bạn có muốn chuyển đổi hình ảnh được chọn thành nút bấm bằng hình ảnh?',
-		urlMissing : 'Image source URL is missing.' // MISSING
+		alignLeft	: 'Bên trái',
+		alignRight	: 'Bên phải',
+		alertUrl	: 'Hãy đưa vào đường dẫn của ảnh',
+		linkTab		: 'Tab liên kết',
+		button2Img	: 'Bạn có muốn chuyển nút bấm bằng ảnh được chọn thành ảnh?',
+		img2Button	: 'Bạn có muốn chuyển đổi ảnh được chọn thành nút bấm bằng ảnh?',
+		urlMissing	: 'Thiếu đường dẫn hình ảnh',
+		validateWidth	: 'Chiều rộng của ảnh phải là một số nguyên dương',
+		validateHeight	: 'Chiều cao của ảnh phải là một số nguyên dương',
+		validateBorder	: 'Chiều rộng của đường viền phải là một số nguyên dương',
+		validateHSpace	: 'Khoảng đệm ngang phải là một số nguyên dương',
+		validateVSpace	: 'Khoảng đệm dọc phải là một số nguyên dương'
 	},
 
@@ -407,49 +434,49 @@
 		properties		: 'Thuộc tính Flash',
 		propertiesTab	: 'Thuộc tính',
-		title		: 'Thuộc tính Flash',
-		chkPlay		: 'Tự động chạy',
-		chkLoop		: 'Lặp',
-		chkMenu		: 'Cho phép bật Menu của Flash',
-		chkFull		: 'Cho phép Toàn màn hình',
- 		scale		: 'Tỷ lệ',
+		title			: 'Thuộc tính Flash',
+		chkPlay			: 'Tự động chạy',
+		chkLoop			: 'Lặp',
+		chkMenu			: 'Cho phép bật menu của Flash',
+		chkFull			: 'Cho phép toàn màn hình',
+ 		scale			: 'Tỷ lệ',
 		scaleAll		: 'Hiển thị tất cả',
 		scaleNoBorder	: 'Không đường viền',
 		scaleFit		: 'Vừa vặn',
-		access			: 'Truy cập Mã',
+		access			: 'Truy cập mã',
 		accessAlways	: 'Luôn luôn',
-		accessSameDomain	: 'Cùng tên miền',
-		accessNever	: 'Không bao giờ',
-		align		: 'Vị trí',
-		alignLeft	: 'Trái',
-		alignAbsBottom: 'Dưới tuyệt đối',
-		alignAbsMiddle: 'Giữa tuyệt đối',
+		accessSameDomain: 'Cùng tên miền',
+		accessNever		: 'Không bao giờ',
+		align			: 'Vị trí',
+		alignLeft		: 'Trái',
+		alignAbsBottom	: 'Dưới tuyệt đối',
+		alignAbsMiddle	: 'Giữa tuyệt đối',
 		alignBaseline	: 'Đường cơ sở',
-		alignBottom	: 'Dưới',
-		alignMiddle	: 'Giữa',
-		alignRight	: 'Phải',
+		alignBottom		: 'Dưới',
+		alignMiddle		: 'Giữa',
+		alignRight		: 'Phải',
 		alignTextTop	: 'Phía trên chữ',
-		alignTop	: 'Trên',
-		quality		: 'Chất lượng',
-		qualityBest		 : 'TỐt nhất',
-		qualityHigh		 : 'Cao',
-		qualityAutoHigh	 : 'Cao Tự động',
-		qualityMedium	 : 'Trung bình',
-		qualityAutoLow	 : 'Thấp Tự động',
-		qualityLow		 : 'Thấp',
-		windowModeWindow	 : 'Cửa sổ',
-		windowModeOpaque	 : 'Mờ đục',
-		windowModeTransparent	 : 'Trong suốt',
-		windowMode	: 'Chế độ Cửa sổ',
-		flashvars	: 'Các biến số dành cho Flash',
-		bgcolor	: 'Màu nền',
-		width	: 'Rộng',
-		height	: 'Cao',
-		hSpace	: 'HSpace',
-		vSpace	: 'VSpace',
-		validateSrc : 'Hãy đưa vào Liên kết URL',
-		validateWidth : 'Chiều rộng phải là số nguyên.',
-		validateHeight : 'Chiều cao phải là số nguyên.',
-		validateHSpace : 'HSpace phải là số nguyên.',
-		validateVSpace : 'VSpace phải là số nguyên.'
+		alignTop		: 'Trên',
+		quality			: 'Chất lượng',
+		qualityBest		: 'Tốt nhất',
+		qualityHigh		: 'Cao',
+		qualityAutoHigh	: 'Cao tự động',
+		qualityMedium	: 'Trung bình',
+		qualityAutoLow	: 'Thấp tự động',
+		qualityLow		: 'Thấp',
+		windowModeWindow: 'Cửa sổ',
+		windowModeOpaque: 'Mờ đục',
+		windowModeTransparent : 'Trong suốt',
+		windowMode		: 'Chế độ cửa sổ',
+		flashvars		: 'Các biến số dành cho Flash',
+		bgcolor			: 'Màu nền',
+		width			: 'Rộng',
+		height			: 'Cao',
+		hSpace			: 'Khoảng đệm ngang',
+		vSpace			: 'Khoảng đệm dọc',
+		validateSrc		: 'Hãy đưa vào đường dẫn liên kết',
+		validateWidth	: 'Chiều rộng phải là số nguyên.',
+		validateHeight	: 'Chiều cao phải là số nguyên.',
+		validateHSpace	: 'Khoảng đệm ngang phải là số nguyên.',
+		validateVSpace	: 'Khoảng đệm dọc phải là số nguyên.'
 	},
 
@@ -457,6 +484,6 @@
 	spellCheck :
 	{
-		toolbar			: 'Kiểm tra Chính tả',
-		title			: 'Kiểm tra Chính tả',
+		toolbar			: 'Kiểm tra chính tả',
+		title			: 'Kiểm tra chính tả',
 		notAvailable	: 'Xin lỗi, dịch vụ này hiện tại không có.',
 		errorLoading	: 'Lỗi khi đang nạp dịch vụ ứng dụng: %s.',
@@ -464,7 +491,7 @@
 		changeTo		: 'Chuyển thành',
 		btnIgnore		: 'Bỏ qua',
-		btnIgnoreAll	: 'Bỏ qua Tất cả',
+		btnIgnoreAll	: 'Bỏ qua tất cả',
 		btnReplace		: 'Thay thế',
-		btnReplaceAll	: 'Thay thế Tất cả',
+		btnReplaceAll	: 'Thay thế tất cả',
 		btnUndo			: 'Phục hồi lại',
 		noSuggestions	: '- Không đưa ra gợi ý về từ -',
@@ -480,196 +507,227 @@
 	{
 		toolbar	: 'Hình biểu lộ cảm xúc (mặt cười)',
-		title	: 'Chèn Hình biểu lộ cảm xúc (mặt cười)'
+		title	: 'Chèn hình biểu lộ cảm xúc (mặt cười)',
+		options : 'Tùy chọn hình  biểu lộ cảm xúc'
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Nhãn thành phần',
 		eleTitle : '%1 thành phần'
 	},
 
-	numberedlist : 'Danh sách có thứ tự',
-	bulletedlist : 'Danh sách không thứ tự',
-	indent : 'Dịch vào trong',
-	outdent : 'Dịch ra ngoài',
+	numberedlist	: 'Danh sách có thứ tự',
+	bulletedlist	: 'Danh sách không thứ tự',
+	indent			: 'Dịch vào trong',
+	outdent			: 'Dịch ra ngoài',
 
 	justify :
 	{
-		left : 'Canh trái',
-		center : 'Canh giữa',
-		right : 'Canh phải',
-		block : 'Canh đều'
-	},
-
-	blockquote : 'Khối Trích dẫn',
+		left	: 'Canh trái',
+		center	: 'Canh giữa',
+		right	: 'Canh phải',
+		block	: 'Canh đều'
+	},
+
+	blockquote : 'Khối trích dẫn',
 
 	clipboard :
 	{
 		title		: 'Dán',
-		cutError	: 'Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh cắt. Hãy sử dụng bàn phím cho lệnh này (Ctrl+X).',
-		copyError	: 'Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh sao chép. Hãy sử dụng bàn phím cho lệnh này (Ctrl+C).',
-		pasteMsg	: 'Hãy dán nội dung vào trong khung bên dưới, sử dụng tổ hợp phím (<STRONG>Ctrl+V</STRONG>) và nhấn vào nút <STRONG>Đồng ý</STRONG>.',
-		securityMsg	: 'Do thiết lập bảo mật của trình duyệt nên trình biên tập không thể truy cập trực tiếp vào nội dung đã sao chép. Bạn cần phải dán lại nội dung vào cửa sổ này.'
+		cutError	: 'Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh cắt. Hãy sử dụng bàn phím cho lệnh này (Ctrl/Cmd+X).',
+		copyError	: 'Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh sao chép. Hãy sử dụng bàn phím cho lệnh này (Ctrl/Cmd+C).',
+		pasteMsg	: 'Hãy dán nội dung vào trong khung bên dưới, sử dụng tổ hợp phím (<STRONG>Ctrl/Cmd+V</STRONG>) và nhấn vào nút <STRONG>Đồng ý</STRONG>.',
+		securityMsg	: 'Do thiết lập bảo mật của trình duyệt nên trình biên tập không thể truy cập trực tiếp vào nội dung đã sao chép. Bạn cần phải dán lại nội dung vào cửa sổ này.',
+		pasteArea	: 'Khu vực dán'
 	},
 
 	pastefromword :
 	{
-		toolbar : 'Dán với định dạng Word',
-		title : 'Dán với định dạng Word',
-		advice : 'Hãy dán nội dung vào trong khung bên dưới, sử dụng tổ hợp phím (<STRONG>Ctrl+V</STRONG>) và nhấn vào nút <STRONG>Đồng ý</STRONG>.',
-		ignoreFontFace : 'Chấp nhận các định dạng phông',
-		removeStyle : 'Gỡ bỏ các định dạng Styles'
+		confirmCleanup	: 'Văn bản bạn muốn dán có kèm định dạng của Word. Bạn có muốn loại bỏ định dạng Word trước khi dán?',
+		toolbar			: 'Dán với định dạng Word',
+		title			: 'Dán với định dạng Word',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : 'Dán theo định dạng văn bản thuần',
-		title : 'Dán theo định dạng văn bản thuần'
+		button	: 'Dán theo định dạng văn bản thuần',
+		title	: 'Dán theo định dạng văn bản thuần'
 	},
 
 	templates :
 	{
-		button : 'Mẫu dựng sẵn',
-		title : 'Nội dung Mẫu dựng sẵn',
-		insertOption: 'Thay thế nội dung hiện tại',
-		selectPromptMsg: 'Hãy chọn Mẫu dựng sẵn để mở trong trình biên tập<br>(nội dung hiện tại sẽ bị mất):',
-		emptyListMsg : '(Không có Mẫu dựng sẵn nào được định nghĩa)'
-	},
-
-	showBlocks : 'Hiển thị các Khối',
+		button			: 'Mẫu dựng sẵn',
+		title			: 'Nội dung Mẫu dựng sẵn',
+		options : 'Tùy chọn mẫu dựng sẵn',
+		insertOption	: 'Thay thế nội dung hiện tại',
+		selectPromptMsg	: 'Hãy chọn mẫu dựng sẵn để mở trong trình biên tập<br>(nội dung hiện tại sẽ bị mất):',
+		emptyListMsg	: '(Không có mẫu dựng sẵn nào được định nghĩa)'
+	},
+
+	showBlocks : 'Hiển thị các khối',
 
 	stylesCombo :
 	{
-		label : 'Kiểu',
-		voiceLabel : 'Kiểu',
-		panelVoiceLabel : 'Chọn một kiểu',
-		panelTitle1 : 'Kiểu Khối',
-		panelTitle2 : 'Kiểu Trực tiếp',
-		panelTitle3 : 'Kiểu Đối tượng'
+		label		: 'Kiểu',
+		panelTitle	: 'Phong cách định dạng',
+		panelTitle1	: 'Kiểu khối',
+		panelTitle2	: 'Kiểu trực tiếp',
+		panelTitle3	: 'Kiểu đối tượng'
 	},
 
 	format :
 	{
-		label : 'Định dạng',
-		voiceLabel : 'Định dạng',
-		panelTitle : 'Định dạng',
-		panelVoiceLabel : 'Chọn định dạng đoạn văn bản',
-
-		tag_p : 'Normal',
-		tag_pre : 'Formatted',
-		tag_address : 'Address',
-		tag_h1 : 'Heading 1',
-		tag_h2 : 'Heading 2',
-		tag_h3 : 'Heading 3',
-		tag_h4 : 'Heading 4',
-		tag_h5 : 'Heading 5',
-		tag_h6 : 'Heading 6',
-		tag_div : 'Normal (DIV)'
-	},
+		label		: 'Định dạng',
+		panelTitle	: 'Định dạng',
+
+		tag_p		: 'Bình thường (P)',
+		tag_pre		: 'Đã thiết lập',
+		tag_address	: 'Address',
+		tag_h1		: 'Heading 1',
+		tag_h2		: 'Heading 2',
+		tag_h3		: 'Heading 3',
+		tag_h4		: 'Heading 4',
+		tag_h5		: 'Heading 5',
+		tag_h6		: 'Heading 6',
+		tag_div		: 'Bình thường (DIV)'
+	},
+
+	div :
+	{
+		title				: 'Tạo khối các thành phần',
+		toolbar				: 'Tạo khối các thành phần',
+		cssClassInputLabel	: 'Các lớp CSS',
+		styleSelectLabel	: 'Kiểu (style)',
+		IdInputLabel		: 'Định danh (id)',
+		languageCodeInputLabel	: 'Mã ngôn ngữ',
+		inlineStyleInputLabel	: 'Kiểu nội dòng',
+		advisoryTitleInputLabel	: 'Nhan đề hướng dẫn',
+		langDirLabel		: 'Hướng ngôn ngữ',
+		langDirLTRLabel		: 'Trái sang phải (LTR)',
+		langDirRTLLabel		: 'Phải qua trái (RTL)',
+		edit				: 'Chỉnh sửa',
+		remove				: 'Xóa bỏ'
+  	},
 
 	font :
 	{
-		label : 'Phông',
-		voiceLabel : 'Phông',
-		panelTitle : 'Phông',
-		panelVoiceLabel : 'Chọn phông'
+		label		: 'Phông',
+		voiceLabel	: 'Phông',
+		panelTitle	: 'Phông'
 	},
 
 	fontSize :
 	{
-		label : 'Cỡ chữ',
-		voiceLabel : 'Kích cỡ phông',
-		panelTitle : 'Cỡ chữ',
-		panelVoiceLabel : 'Chọn kích cỡ phông'
+		label		: 'Cỡ chữ',
+		voiceLabel	: 'Kích cỡ phông',
+		panelTitle	: 'Cỡ chữ'
 	},
 
 	colorButton :
 	{
-		textColorTitle : 'Màu chữ',
-		bgColorTitle : 'Màu nền',
-		auto : 'Tự động',
-		more : 'Màu khác...'
+		textColorTitle	: 'Màu chữ',
+		bgColorTitle	: 'Màu nền',
+		panelTitle		: 'Màu sắc',
+		auto			: 'Tự động',
+		more			: 'Màu khác...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : 'Kiểm tra chính tả ngay khi gõ chữ (SCAYT)',
-		enable : 'Bật SCAYT',
-		disable : 'Tắt SCAYT',
-		about : 'Thông tin về SCAYT',
-		toggle : 'Bật tắt SCAYT',
-		options : 'Tùy chọn',
-		langs : 'Ngôn ngữ',
-		moreSuggestions : 'Đề xuất thêm',
-		ignore : 'Bỏ qua',
-		ignoreAll : 'Bỏ qua Tất cả',
-		addWord : 'Thêm Từ',
-		emptyDic : 'Tên của từ điển không được để trống.',
-		optionsTab : 'Tùy chọn',
-		languagesTab : 'Ngôn ngữ',
-		dictionariesTab : 'Từ điển',
-		aboutTab : 'Thông tin'
+		title			: 'Kiểm tra chính tả ngay khi gõ chữ (SCAYT)',
+		opera_title		: 'Không hỗ trợ trên trình duyệt Opera',
+		enable			: 'Bật SCAYT',
+		disable			: 'Tắt SCAYT',
+		about			: 'Thông tin về SCAYT',
+		toggle			: 'Bật tắt SCAYT',
+		options			: 'Tùy chọn',
+		langs			: 'Ngôn ngữ',
+		moreSuggestions	: 'Đề xuất thêm',
+		ignore			: 'Bỏ qua',
+		ignoreAll		: 'Bỏ qua tất cả',
+		addWord			: 'Thêm từ',
+		emptyDic		: 'Tên của từ điển không được để trống.',
+
+		optionsTab		: 'Tùy chọn',
+		allCaps			: 'Không phân biệt chữ HOA chữ thường',
+		ignoreDomainNames : 'Bỏ qua tên miền',
+		mixedCase		: 'Không phân biệt loại chữ',
+		mixedWithDigits	: 'Không phân biệt chữ và số',
+
+		languagesTab	: 'Tab ngôn ngữ',
+
+		dictionariesTab	: 'Từ điển',
+		dic_field_name	: 'Tên từ điển',
+		dic_create		: 'Tạo',
+		dic_restore		: 'Phục hồi',
+		dic_delete		: 'Xóa',
+		dic_rename		: 'Thay tên',
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: 'Thông tin'
 	},
 
 	about :
 	{
-		title : 'Thông tin về CKEditor',
-		dlgTitle : 'Thông tin về CKEditor',
-		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.'
+		title		: 'Thông tin về CKEditor',
+		dlgTitle	: 'Thông tin về CKEditor',
+		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.'
 	},
 
 	maximize : 'Phóng to tối đa',
-	minimize : 'Minimize', // MISSING
+	minimize : 'Thu nhỏ',
 
 	fakeobjects :
 	{
-		anchor : 'Neo',
-		flash : 'Hoạt họa Flash',
-		div : 'Ngắt Trang',
-		unknown : 'Đối tượng không rõ ràng'
+		anchor	: 'Điểm neo',
+		flash	: 'Flash',
+		div		: 'Ngắt trang',
+		unknown	: 'Đối tượng không rõ ràng'
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Chọn màu',
+		options	:	'Color Options', // MISSING
+		highlight	: 'Màu chọn',
+		selected	: 'Màu đã chọn',
+		clear		: 'Xóa bỏ'
+	},
+
+	toolbarCollapse	: 'Thu gọn thanh công cụ',
+	toolbarExpand	: 'Mở rộng thnah công cụ'
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/zh-cn.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/zh-cn.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/zh-cn.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: '富文本编辑器, %1',
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: '表单',
 		checkbox		: '复选框',
-		radio		: '单选按钮',
+		radio			: '单选按钮',
 		textField		: '单行文本',
 		textarea		: '多行文本',
 		hiddenField		: '隐藏域',
 		button			: '按钮',
-		select	: '列表/菜单',
+		select			: '列表/菜单',
 		imageButton		: '图像域',
 		notSet			: '<没有设置>',
@@ -89,9 +93,17 @@
 		ok				: '确定',
 		cancel			: '取消',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: '常规',
 		advancedTab		: '高级',
-		validateNumberFailed	: '需要输入数字格式',
+		validateNumberFailed : '需要输入数字格式',
 		confirmNewPage	: '当前文档内容未保存,是否确认新建文档？',
 		confirmCancel	: '部分选项尚未保存，是否确认关闭对话框？',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: '插入特殊符号',
-		title		: '选择特殊符号'
+		title		: '选择特殊符号',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: '插入/编辑超链接',
+		other 		: '<其他>',
 		menu		: '编辑超链接',
 		title		: '超链接',
@@ -117,14 +136,9 @@
 		advanced	: '高级',
 		type		: '超链接类型',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: '页内锚点链接',
 		toEmail		: '电子邮件',
-		target		: '目标',
-		targetNotSet	: '<没有设置>',
-		targetFrame	: '<框架>',
-		targetPopup	: '<弹出窗口>',
-		targetNew	: '新窗口 (_blank)',
-		targetTop	: '整页 (_top)',
-		targetSelf	: '本窗口 (_self)',
-		targetParent	: '父窗口 (_parent)',
+		targetFrame		: '<框架>',
+		targetPopup		: '<弹出窗口>',
 		targetFrameName	: '目标框架名称',
 		targetPopupName	: '弹出窗口名称',
@@ -132,5 +146,5 @@
 		popupResizable	: '可缩放',
 		popupStatusBar	: '状态栏',
-		popupLocationBar	: '地址栏',
+		popupLocationBar: '地址栏',
 		popupToolbar	: '工具栏',
 		popupMenuBar	: '菜单栏',
@@ -144,5 +158,4 @@
 		id				: 'ID',
 		langDir			: '语言方向',
-		langDirNotSet	: '<没有设置>',
 		langDirLTR		: '从左到右 (LTR)',
 		langDirRTL		: '从右到左 (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: '边框',
 		align		: '对齐',
-		alignNotSet	: '<没有设置>',
 		alignLeft	: '左对齐',
 		alignCenter	: '居中',
@@ -211,4 +246,5 @@
 		widthPx		: '像素',
 		widthPc		: '百分比',
+		widthUnit	: 'width unit', // MISSING
 		height		: '高度',
 		cellSpace	: '间距',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: '行跨度必须为整数格式',
 			invalidColSpan	: '列跨度必须为整数格式',
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: '动作',
 		method		: '方法',
-		encoding	: '表单编码',
-		target		: '目标',
-		targetNotSet	: '<没有设置>',
-		targetNew	: '新窗口 (_blank)',
-		targetTop	: '整页 (_top)',
-		targetSelf	: '本窗口 (_self)',
-		targetParent	: '父窗口 (_parent)'
+		encoding	: '表单编码'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: '图像域属性',
 		menu		: '图象属性',
-		infoTab	: '图象',
+		infoTab		: '图象',
 		btnUpload	: '发送到服务器上',
-		url		: '源文件',
-		upload	: '上传',
-		alt		: '替换文本',
+		upload		: '上传',
+		alt			: '替换文本',
 		width		: '宽度',
-		height	: '高度',
+		height		: '高度',
 		lockRatio	: '锁定比例',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: '恢复尺寸',
-		border	: '边框大小',
-		hSpace	: '水平间距',
-		vSpace	: '垂直间距',
+		border		: '边框大小',
+		hSpace		: '水平间距',
+		vSpace		: '垂直间距',
 		align		: '对齐方式',
 		alignLeft	: '左对齐',
-		alignAbsBottom: '绝对底边',
-		alignAbsMiddle: '绝对居中',
-		alignBaseline	: '基线',
-		alignBottom	: '底边',
-		alignMiddle	: '居中',
 		alignRight	: '右对齐',
-		alignTextTop	: '文本上方',
-		alignTop	: '顶端',
-		preview	: '预览',
 		alertUrl	: '请输入图象地址',
-		linkTab	: '链接',
+		linkTab		: '链接',
 		button2Img	: '确定要把当前按钮改变为图像吗?',
 		img2Button	: '确定要把当前图像改变为按钮吗?',
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Flash 属性',
 		propertiesTab	: '属性',
-		title		: '标题',
-		chkPlay		: '自动播放',
-		chkLoop		: '循环',
-		chkMenu		: '启用 Flash 菜单',
-		chkFull		: '启用全屏',
- 		scale		: '缩放',
+		title			: '标题',
+		chkPlay			: '自动播放',
+		chkLoop			: '循环',
+		chkMenu			: '启用 Flash 菜单',
+		chkFull			: '启用全屏',
+ 		scale			: '缩放',
 		scaleAll		: '全部显示',
 		scaleNoBorder	: '无边框',
@@ -418,38 +445,38 @@
 		access			: '允许脚本访问',
 		accessAlways	: '总是',
-		accessSameDomain	: '同域',
-		accessNever	: '从不',
-		align		: '对齐方式',
-		alignLeft	: '左对齐',
-		alignAbsBottom: '绝对底边',
-		alignAbsMiddle: '绝对居中',
+		accessSameDomain: '同域',
+		accessNever		: '从不',
+		align			: '对齐方式',
+		alignLeft		: '左对齐',
+		alignAbsBottom	: '绝对底边',
+		alignAbsMiddle	: '绝对居中',
 		alignBaseline	: '基线',
-		alignBottom	: '底边',
-		alignMiddle	: '居中',
-		alignRight	: '右对齐',
+		alignBottom		: '底边',
+		alignMiddle		: '居中',
+		alignRight		: '右对齐',
 		alignTextTop	: '文本上方',
-		alignTop	: '顶端',
-		quality		: '质量',
-		qualityBest		 : '最好',
-		qualityHigh		 : '高',
-		qualityAutoHigh	 : '高（自动）',
-		qualityMedium	 : '中（自动）',
-		qualityAutoLow	 : '低（自动）',
-		qualityLow		 : '低',
-		windowModeWindow	 : '窗体',
-		windowModeOpaque	 : '不透明',
-		windowModeTransparent	 : '透明',
-		windowMode	: '窗体模式',
-		flashvars	: 'Flash变量',
-		bgcolor	: '背景颜色',
-		width	: '宽度',
-		height	: '高度',
-		hSpace	: '水平间距',
-		vSpace	: '垂直间距',
-		validateSrc : '请输入超链接地址',
-		validateWidth : '宽度必须为数字格式',
-		validateHeight : '高度必须为数字格式',
-		validateHSpace : '水平间距必须为数字格式',
-		validateVSpace : '垂直间距必须为数字格式'
+		alignTop		: '顶端',
+		quality			: '质量',
+		qualityBest		: '最好',
+		qualityHigh		: '高',
+		qualityAutoHigh	: '高（自动）',
+		qualityMedium	: '中（自动）',
+		qualityAutoLow	: '低（自动）',
+		qualityLow		: '低',
+		windowModeWindow: '窗体',
+		windowModeOpaque: '不透明',
+		windowModeTransparent : '透明',
+		windowMode		: '窗体模式',
+		flashvars		: 'Flash变量',
+		bgcolor			: '背景颜色',
+		width			: '宽度',
+		height			: '高度',
+		hSpace			: '水平间距',
+		vSpace			: '垂直间距',
+		validateSrc		: '请输入超链接地址',
+		validateWidth	: '宽度必须为数字格式',
+		validateHeight	: '高度必须为数字格式',
+		validateHSpace	: '水平间距必须为数字格式',
+		validateVSpace	: '垂直间距必须为数字格式'
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: '表情符',
-		title	: '插入表情图标'
+		title	: '插入表情图标',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 元素'
 	},
 
-	numberedlist : '编号列表',
-	bulletedlist : '项目列表',
-	indent : '增加缩进量',
-	outdent : '减少缩进量',
+	numberedlist	: '编号列表',
+	bulletedlist	: '项目列表',
+	indent			: '增加缩进量',
+	outdent			: '减少缩进量',
 
 	justify :
 	{
-		left : '左对齐',
-		center : '居中对齐',
-		right : '右对齐',
-		block : '两端对齐'
+		left	: '左对齐',
+		center	: '居中对齐',
+		right	: '右对齐',
+		block	: '两端对齐'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: '粘贴',
-		cutError	: '您的浏览器安全设置不允许编辑器自动执行剪切操作，请使用键盘快捷键(Ctrl+X)来完成',
-		copyError	: '您的浏览器安全设置不允许编辑器自动执行复制操作，请使用键盘快捷键(Ctrl+C)来完成',
-		pasteMsg	: '请使用键盘快捷键(<STRONG>Ctrl+V</STRONG>)把内容粘贴到下面的方框里，再按 <STRONG>确定</STRONG>',
-		securityMsg	: '因为你的浏览器的安全设置原因，本编辑器不能直接访问你的剪贴板内容，你需要在本窗口重新粘贴一次'
+		cutError	: '您的浏览器安全设置不允许编辑器自动执行剪切操作，请使用键盘快捷键(Ctrl/Cmd+X)来完成',
+		copyError	: '您的浏览器安全设置不允许编辑器自动执行复制操作，请使用键盘快捷键(Ctrl/Cmd+C)来完成',
+		pasteMsg	: '请使用键盘快捷键(<STRONG>Ctrl/Cmd+V</STRONG>)把内容粘贴到下面的方框里，再按 <STRONG>确定</STRONG>',
+		securityMsg	: '因为你的浏览器的安全设置原因，本编辑器不能直接访问你的剪贴板内容，你需要在本窗口重新粘贴一次',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : '从 MS Word 粘贴',
-		title : '从 MS Word 粘贴',
-		advice : '请使用键盘快捷键(<STRONG>Ctrl+V</STRONG>)把内容粘贴到下面的方框里，再按 <STRONG>确定</STRONG>',
-		ignoreFontFace : '忽略 Font 标签',
-		removeStyle : '清理 CSS 样式'
+		confirmCleanup	: '您要粘贴的内容好像是来自 MS Word，是否要清除 MS Word 格式后再粘贴？',
+		toolbar			: '从 MS Word 粘贴',
+		title			: '从 MS Word 粘贴',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : '粘贴为无格式文本',
-		title : '粘贴为无格式文本'
+		button	: '粘贴为无格式文本',
+		title	: '粘贴为无格式文本'
 	},
 
 	templates :
 	{
-		button : '模板',
-		title : '内容模板',
-		insertOption: '替换当前内容',
-		selectPromptMsg: '请选择编辑器内容模板:',
-		emptyListMsg : '(没有模板)'
+		button			: '模板',
+		title			: '内容模板',
+		options : 'Template Options', // MISSING
+		insertOption	: '替换当前内容',
+		selectPromptMsg	: '请选择编辑器内容模板:',
+		emptyListMsg	: '(没有模板)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : '样式',
-		voiceLabel : '样式',
-		panelVoiceLabel : '选择样式',
-		panelTitle1 : '块级元素样式',
-		panelTitle2 : '内联元素样式',
-		panelTitle3 : '对象元素样式'
+		label		: '样式',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: '块级元素样式',
+		panelTitle2	: '内联元素样式',
+		panelTitle3	: '对象元素样式'
 	},
 
 	format :
 	{
-		label : '格式',
-		voiceLabel : '格式',
-		panelTitle : '格式',
-		panelVoiceLabel : '选择格式',
-
-		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)'
-	},
+		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				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : '字体',
-		voiceLabel : '字体',
-		panelTitle : '字体',
-		panelVoiceLabel : '选择字体'
+		label		: '字体',
+		voiceLabel	: '字体',
+		panelTitle	: '字体'
 	},
 
 	fontSize :
 	{
-		label : '大小',
-		voiceLabel : '文字大小',
-		panelTitle : '大小',
-		panelVoiceLabel : '选择文字大小'
+		label		: '大小',
+		voiceLabel	: '文字大小',
+		panelTitle	: '大小'
 	},
 
 	colorButton :
 	{
-		textColorTitle : '文本颜色',
-		bgColorTitle : '背景颜色',
-		auto : '自动',
-		more : '其它颜色...'
+		textColorTitle	: '文本颜色',
+		bgColorTitle	: '背景颜色',
+		panelTitle		: 'Colors', // MISSING
+		auto			: '自动',
+		more			: '其它颜色...'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : '即时拼写检查',
-		enable : '启用即时拼写检查',
-		disable : '禁用即时拼写检查',
-		about : '关于即时拼写检查',
-		toggle : '暂停/启用即时拼写检查',
-		options : '选项',
-		langs : '语言',
-		moreSuggestions : '更多拼写建议',
-		ignore : '忽略',
-		ignoreAll : '全部忽略',
-		addWord : '添加单词',
-		emptyDic : '字典名不应为空.',
-		optionsTab : '选项',
-		languagesTab : '语言',
-		dictionariesTab : '字典',
-		aboutTab : '关于'
+		title			: '即时拼写检查',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: '启用即时拼写检查',
+		disable			: '禁用即时拼写检查',
+		about			: '关于即时拼写检查',
+		toggle			: '暂停/启用即时拼写检查',
+		options			: '选项',
+		langs			: '语言',
+		moreSuggestions	: '更多拼写建议',
+		ignore			: '忽略',
+		ignoreAll		: '全部忽略',
+		addWord			: '添加单词',
+		emptyDic		: '字典名不应为空.',
+
+		optionsTab		: '选项',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: '语言',
+
+		dictionariesTab	: '字典',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: '关于'
 	},
 
 	about :
 	{
-		title : '关于CKEditor',
-		dlgTitle : '关于CKEditor',
-		moreInfo : '访问我们的网站以获取更多关于协议的信息',
-		copy : 'Copyright &copy; $1. All rights reserved.'
+		title		: '关于CKEditor',
+		dlgTitle	: '关于CKEditor',
+		moreInfo	: '访问我们的网站以获取更多关于协议的信息',
+		copy		: 'Copyright &copy; $1. All rights reserved.'
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : '锚点',
-		flash : 'Flash',
-		div : '分页',
-		unknown : '位置对象'
+		anchor	: '锚点',
+		flash	: 'Flash',
+		div		: '分页',
+		unknown	: '位置对象'
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/lang/zh.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/lang/zh.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/lang/zh.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,5 +32,9 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: '文書處理器, %1',
+	editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING
+
+	// ARIA descriptions.
+	toolbar	: 'Toolbar', // MISSING
+	editor	: 'Rich Text Editor', // MISSING
 
 	// Toolbar buttons without dialogs.
@@ -69,10 +73,10 @@
 		form			: '表單',
 		checkbox		: '核取方塊',
-		radio		: '選項按鈕',
+		radio			: '選項按鈕',
 		textField		: '文字方塊',
 		textarea		: '文字區域',
 		hiddenField		: '隱藏欄位',
 		button			: '按鈕',
-		select	: '清單/選單',
+		select			: '清單/選單',
 		imageButton		: '影像按鈕',
 		notSet			: '<尚未設定>',
@@ -89,9 +93,17 @@
 		ok				: '確定',
 		cancel			: '取消',
+		close			: 'Close', // MISSING
+		preview			: 'Preview', // MISSING
 		generalTab		: '一般',
 		advancedTab		: '進階',
-		validateNumberFailed	: '需要輸入數字格式',
+		validateNumberFailed : '需要輸入數字格式',
 		confirmNewPage	: '現存的修改尚未儲存，要開新檔案？',
 		confirmCancel	: '部份選項尚未儲存，要關閉對話盒？',
+		options			: 'Options', // MISSING
+		target			: 'Target', // MISSING
+		targetNew		: 'New Window (_blank)', // MISSING
+		targetTop		: 'Topmost Window (_top)', // MISSING
+		targetSelf		: 'Same Window (_self)', // MISSING
+		targetParent	: 'Parent Window (_parent)', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -99,9 +111,15 @@
 	},
 
+	contextmenu :
+	{
+		options : 'Context Menu Options' // MISSING
+	},
+
 	// Special char dialog.
 	specialChar		:
 	{
 		toolbar		: '插入特殊符號',
-		title		: '請選擇特殊符號'
+		title		: '請選擇特殊符號',
+		options : 'Special Character Options' // MISSING
 	},
 
@@ -110,4 +128,5 @@
 	{
 		toolbar		: '插入/編輯超連結',
+		other 		: '<其他>',
 		menu		: '編輯超連結',
 		title		: '超連結',
@@ -117,14 +136,9 @@
 		advanced	: '進階',
 		type		: '超連接類型',
+		toUrl		: 'URL', // MISSING
 		toAnchor	: '本頁錨點',
 		toEmail		: '電子郵件',
-		target		: '目標',
-		targetNotSet	: '<尚未設定>',
-		targetFrame	: '<框架>',
-		targetPopup	: '<快顯視窗>',
-		targetNew	: '新視窗 (_blank)',
-		targetTop	: '最上層視窗 (_top)',
-		targetSelf	: '本視窗 (_self)',
-		targetParent	: '父視窗 (_parent)',
+		targetFrame		: '<框架>',
+		targetPopup		: '<快顯視窗>',
 		targetFrameName	: '目標框架名稱',
 		targetPopupName	: '快顯視窗名稱',
@@ -132,5 +146,5 @@
 		popupResizable	: '可縮放',
 		popupStatusBar	: '狀態列',
-		popupLocationBar	: '網址列',
+		popupLocationBar: '網址列',
 		popupToolbar	: '工具列',
 		popupMenuBar	: '選單列',
@@ -144,5 +158,4 @@
 		id				: 'ID',
 		langDir			: '語言方向',
-		langDirNotSet	: '<尚未設定>',
 		langDirLTR		: '由左而右 (LTR)',
 		langDirRTL		: '由右而左 (RTL)',
@@ -177,4 +190,27 @@
 	},
 
+	// List style dialog
+	list:
+	{
+		numberedTitle		: 'Numbered List Properties', // MISSING
+		bulletedTitle		: 'Bulleted List Properties', // MISSING
+		type				: 'Type', // MISSING
+		start				: 'Start', // MISSING
+		circle				: 'Circle', // MISSING
+		disc				: 'Disc', // MISSING
+		square				: 'Square', // MISSING
+		none				: 'None', // MISSING
+		notset				: '<not set>', // MISSING
+		armenian			: 'Armenian numbering', // MISSING
+		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
+		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
+		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
+		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
+		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
+		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
+		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
+		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
+	},
+
 	// Find And Replace Dialog
 	findAndReplace :
@@ -204,5 +240,4 @@
 		border		: '邊框',
 		align		: '對齊',
-		alignNotSet	: '<未設定>',
 		alignLeft	: '靠左對齊',
 		alignCenter	: '置中',
@@ -211,4 +246,5 @@
 		widthPx		: '像素',
 		widthPc		: '百分比',
+		widthUnit	: 'width unit', // MISSING
 		height		: '高度',
 		cellSpace	: '間距',
@@ -261,5 +297,5 @@
 			invalidRowSpan	: '儲存格列數必須為整數格式',
 			invalidColSpan	: '儲存格欄數度必須為整數格式',
-			chooseColor : 'Choose' // MISSING
+			chooseColor		: 'Choose' // MISSING
 		},
 
@@ -308,11 +344,5 @@
 		action		: '動作',
 		method		: '方法',
-		encoding	: '表單編碼',
-		target		: '目標',
-		targetNotSet	: '<尚未設定>',
-		targetNew	: '新視窗 (_blank)',
-		targetTop	: '最上層視窗 (_top)',
-		targetSelf	: '本視窗 (_self)',
-		targetParent	: '父視窗 (_parent)'
+		encoding	: '表單編碼'
 	},
 
@@ -372,32 +402,29 @@
 		titleButton	: '影像按鈕屬性',
 		menu		: '影像屬性',
-		infoTab	: '影像資訊',
+		infoTab		: '影像資訊',
 		btnUpload	: '上傳至伺服器',
-		url		: 'URL',
-		upload	: '上傳',
-		alt		: '替代文字',
+		upload		: '上傳',
+		alt			: '替代文字',
 		width		: '寬度',
-		height	: '高度',
+		height		: '高度',
 		lockRatio	: '等比例',
+		unlockRatio	: 'Unlock Ratio', // MISSING
 		resetSize	: '重設為原大小',
-		border	: '邊框',
-		hSpace	: '水平距離',
-		vSpace	: '垂直距離',
+		border		: '邊框',
+		hSpace		: '水平距離',
+		vSpace		: '垂直距離',
 		align		: '對齊',
 		alignLeft	: '靠左對齊',
-		alignAbsBottom: '絕對下方',
-		alignAbsMiddle: '絕對中間',
-		alignBaseline	: '基準線',
-		alignBottom	: '靠下對齊',
-		alignMiddle	: '置中對齊',
 		alignRight	: '靠右對齊',
-		alignTextTop	: '文字上方',
-		alignTop	: '靠上對齊',
-		preview	: '預覽',
 		alertUrl	: '請輸入影像 URL',
-		linkTab	: '超連結',
+		linkTab		: '超連結',
 		button2Img	: '要把影像按鈕改成影像嗎？',
 		img2Button	: '要把影像改成影像按鈕嗎？',
-		urlMissing : 'Image source URL is missing.' // MISSING
+		urlMissing	: 'Image source URL is missing.', // MISSING
+		validateWidth	: 'Width must be a whole number.', // MISSING
+		validateHeight	: 'Height must be a whole number.', // MISSING
+		validateBorder	: 'Border must be a whole number.', // MISSING
+		validateHSpace	: 'HSpace must be a whole number.', // MISSING
+		validateVSpace	: 'VSpace must be a whole number.' // MISSING
 	},
 
@@ -407,10 +434,10 @@
 		properties		: 'Flash 屬性',
 		propertiesTab	: '屬性',
-		title		: 'Flash 屬性',
-		chkPlay		: '自動播放',
-		chkLoop		: '重複',
-		chkMenu		: '開啟選單',
-		chkFull		: '啟動全螢幕顯示',
- 		scale		: '縮放',
+		title			: 'Flash 屬性',
+		chkPlay			: '自動播放',
+		chkLoop			: '重複',
+		chkMenu			: '開啟選單',
+		chkFull			: '啟動全螢幕顯示',
+ 		scale			: '縮放',
 		scaleAll		: '全部顯示',
 		scaleNoBorder	: '無邊框',
@@ -418,38 +445,38 @@
 		access			: '允許腳本訪問',
 		accessAlways	: '永遠',
-		accessSameDomain	: '相同域名',
-		accessNever	: '永不',
-		align		: '對齊',
-		alignLeft	: '靠左對齊',
-		alignAbsBottom: '絕對下方',
-		alignAbsMiddle: '絕對中間',
+		accessSameDomain: '相同域名',
+		accessNever		: '永不',
+		align			: '對齊',
+		alignLeft		: '靠左對齊',
+		alignAbsBottom	: '絕對下方',
+		alignAbsMiddle	: '絕對中間',
 		alignBaseline	: '基準線',
-		alignBottom	: '靠下對齊',
-		alignMiddle	: '置中對齊',
-		alignRight	: '靠右對齊',
+		alignBottom		: '靠下對齊',
+		alignMiddle		: '置中對齊',
+		alignRight		: '靠右對齊',
 		alignTextTop	: '文字上方',
-		alignTop	: '靠上對齊',
-		quality		: '質素',
-		qualityBest		 : '最好',
-		qualityHigh		 : '高',
-		qualityAutoHigh	 : '高（自動）',
-		qualityMedium	 : '中（自動）',
-		qualityAutoLow	 : '低（自動）',
-		qualityLow		 : '低',
-		windowModeWindow	 : '視窗',
-		windowModeOpaque	 : '不透明',
-		windowModeTransparent	 : '透明',
-		windowMode	: '視窗模式',
-		flashvars	: 'Flash 變數',
-		bgcolor	: '背景顏色',
-		width	: '寬度',
-		height	: '高度',
-		hSpace	: '水平距離',
-		vSpace	: '垂直距離',
-		validateSrc : '請輸入欲連結的 URL',
-		validateWidth : '寬度必須為數字格式',
-		validateHeight : '高度必須為數字格式',
-		validateHSpace : '水平間距必須為數字格式',
-		validateVSpace : '垂直間距必須為數字格式'
+		alignTop		: '靠上對齊',
+		quality			: '質素',
+		qualityBest		: '最好',
+		qualityHigh		: '高',
+		qualityAutoHigh	: '高（自動）',
+		qualityMedium	: '中（自動）',
+		qualityAutoLow	: '低（自動）',
+		qualityLow		: '低',
+		windowModeWindow: '視窗',
+		windowModeOpaque: '不透明',
+		windowModeTransparent : '透明',
+		windowMode		: '視窗模式',
+		flashvars		: 'Flash 變數',
+		bgcolor			: '背景顏色',
+		width			: '寬度',
+		height			: '高度',
+		hSpace			: '水平距離',
+		vSpace			: '垂直距離',
+		validateSrc		: '請輸入欲連結的 URL',
+		validateWidth	: '寬度必須為數字格式',
+		validateHeight	: '高度必須為數字格式',
+		validateHSpace	: '水平間距必須為數字格式',
+		validateVSpace	: '垂直間距必須為數字格式'
 	},
 
@@ -480,23 +507,25 @@
 	{
 		toolbar	: '表情符號',
-		title	: '插入表情符號'
+		title	: '插入表情符號',
+		options : 'Smiley Options' // MISSING
 	},
 
 	elementsPath :
 	{
+		eleLabel : 'Elements path', // MISSING
 		eleTitle : '%1 元素'
 	},
 
-	numberedlist : '編號清單',
-	bulletedlist : '項目清單',
-	indent : '增加縮排',
-	outdent : '減少縮排',
+	numberedlist	: '編號清單',
+	bulletedlist	: '項目清單',
+	indent			: '增加縮排',
+	outdent			: '減少縮排',
 
 	justify :
 	{
-		left : '靠左對齊',
-		center : '置中',
-		right : '靠右對齊',
-		block : '左右對齊'
+		left	: '靠左對齊',
+		center	: '置中',
+		right	: '靠右對齊',
+		block	: '左右對齊'
 	},
 
@@ -506,32 +535,33 @@
 	{
 		title		: '貼上',
-		cutError	: '瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用快捷鍵 (Ctrl+X) 剪下。',
-		copyError	: '瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用快捷鍵 (Ctrl+C) 複製。',
-		pasteMsg	: '請使用快捷鍵 (<strong>Ctrl+V</strong>) 貼到下方區域中並按下 <strong>確定</strong>',
-		securityMsg	: '因為瀏覽器的安全性設定，本編輯器無法直接存取您的剪貼簿資料，請您自行在本視窗進行貼上動作。'
+		cutError	: '瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用快捷鍵 (Ctrl/Cmd+X) 剪下。',
+		copyError	: '瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用快捷鍵 (Ctrl/Cmd+C) 複製。',
+		pasteMsg	: '請使用快捷鍵 (<strong>Ctrl/Cmd+V</strong>) 貼到下方區域中並按下 <strong>確定</strong>',
+		securityMsg	: '因為瀏覽器的安全性設定，本編輯器無法直接存取您的剪貼簿資料，請您自行在本視窗進行貼上動作。',
+		pasteArea	: 'Paste Area' // MISSING
 	},
 
 	pastefromword :
 	{
-		toolbar : '自 Word 貼上',
-		title : '自 Word 貼上',
-		advice : '請使用快捷鍵 (<strong>Ctrl+V</strong>) 貼到下方區域中並按下 <strong>確定</strong>',
-		ignoreFontFace : '移除字型設定',
-		removeStyle : '移除樣式設定'
+		confirmCleanup	: '您想貼上的文字似乎是自 Word 複製而來，請問您是否要先清除 Word 的格式後再行貼上？',
+		toolbar			: '自 Word 貼上',
+		title			: '自 Word 貼上',
+		error			: 'It was not possible to clean up the pasted data due to an internal error' // MISSING
 	},
 
 	pasteText :
 	{
-		button : '貼為純文字格式',
-		title : '貼為純文字格式'
+		button	: '貼為純文字格式',
+		title	: '貼為純文字格式'
 	},
 
 	templates :
 	{
-		button : '樣版',
-		title : '內容樣版',
-		insertOption: '取代原有內容',
-		selectPromptMsg: '請選擇欲開啟的樣版<br> (原有的內容將會被清除):',
-		emptyListMsg : '(無樣版)'
+		button			: '樣版',
+		title			: '內容樣版',
+		options : 'Template Options', // MISSING
+		insertOption	: '取代原有內容',
+		selectPromptMsg	: '請選擇欲開啟的樣版<br> (原有的內容將會被清除):',
+		emptyListMsg	: '(無樣版)'
 	},
 
@@ -540,125 +570,153 @@
 	stylesCombo :
 	{
-		label : '樣式',
-		voiceLabel : '樣式',
-		panelVoiceLabel : '選擇樣式',
-		panelTitle1 : '塊級元素樣式',
-		panelTitle2 : '內聯元素樣式',
-		panelTitle3 : '物件元素樣式'
+		label		: '樣式',
+		panelTitle	: 'Formatting Styles', // MISSING
+		panelTitle1	: '塊級元素樣式',
+		panelTitle2	: '內聯元素樣式',
+		panelTitle3	: '物件元素樣式'
 	},
 
 	format :
 	{
-		label : '格式',
-		voiceLabel : '格式',
-		panelTitle : '格式',
-		panelVoiceLabel : '選擇段落格式',
-
-		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)'
-	},
+		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				: 'Create Div Container', // MISSING
+		toolbar				: 'Create Div Container', // MISSING
+		cssClassInputLabel	: 'Stylesheet Classes', // MISSING
+		styleSelectLabel	: 'Style', // MISSING
+		IdInputLabel		: 'Id', // MISSING
+		languageCodeInputLabel	: ' Language Code', // MISSING
+		inlineStyleInputLabel	: 'Inline Style', // MISSING
+		advisoryTitleInputLabel	: 'Advisory Title', // MISSING
+		langDirLabel		: 'Language Direction', // MISSING
+		langDirLTRLabel		: 'Left to Right (LTR)', // MISSING
+		langDirRTLLabel		: 'Right to Left (RTL)', // MISSING
+		edit				: 'Edit Div', // MISSING
+		remove				: 'Remove Div' // MISSING
+  	},
 
 	font :
 	{
-		label : '字體',
-		voiceLabel : '字體',
-		panelTitle : '字體',
-		panelVoiceLabel : '選擇字體'
+		label		: '字體',
+		voiceLabel	: '字體',
+		panelTitle	: '字體'
 	},
 
 	fontSize :
 	{
-		label : '大小',
-		voiceLabel : '文字大小',
-		panelTitle : '大小',
-		panelVoiceLabel : '選擇文字大小'
+		label		: '大小',
+		voiceLabel	: '文字大小',
+		panelTitle	: '大小'
 	},
 
 	colorButton :
 	{
-		textColorTitle : '文字顏色',
-		bgColorTitle : '背景顏色',
-		auto : '自動',
-		more : '更多顏色…'
+		textColorTitle	: '文字顏色',
+		bgColorTitle	: '背景顏色',
+		panelTitle		: 'Colors', // MISSING
+		auto			: '自動',
+		more			: '更多顏色…'
 	},
 
 	colors :
 	{
-		'000' : 'Black',
-		'800000' : 'Maroon',
-		'8B4513' : 'Saddle Brown',
-		'2F4F4F' : 'Dark Slate Gray',
-		'008080' : 'Teal',
-		'000080' : 'Navy',
-		'4B0082' : 'Indigo',
-		'696969' : 'Dim Gray',
-		'B22222' : 'Fire Brick',
-		'A52A2A' : 'Brown',
-		'DAA520' : 'Golden Rod',
-		'006400' : 'Dark Green',
-		'40E0D0' : 'Turquoise',
-		'0000CD' : 'Medium Blue',
-		'800080' : 'Purple',
-		'808080' : 'Gray',
-		'F00' : 'Red',
-		'FF8C00' : 'Dark Orange',
-		'FFD700' : 'Gold',
-		'008000' : 'Green',
-		'0FF' : 'Cyan',
-		'00F' : 'Blue',
-		'EE82EE' : 'Violet',
-		'A9A9A9' : 'Dark Gray',
-		'FFA07A' : 'Light Salmon',
-		'FFA500' : 'Orange',
-		'FFFF00' : 'Yellow',
-		'00FF00' : 'Lime',
-		'AFEEEE' : 'Pale Turquoise',
-		'ADD8E6' : 'Light Blue',
-		'DDA0DD' : 'Plum',
-		'D3D3D3' : 'Light Grey',
-		'FFF0F5' : 'Lavender Blush',
-		'FAEBD7' : 'Antique White',
-		'FFFFE0' : 'Light Yellow',
-		'F0FFF0' : 'Honeydew',
-		'F0FFFF' : 'Azure',
-		'F0F8FF' : 'Alice Blue',
-		'E6E6FA' : 'Lavender',
-		'FFF' : 'White'
+		'000' : 'Black', // MISSING
+		'800000' : 'Maroon', // MISSING
+		'8B4513' : 'Saddle Brown', // MISSING
+		'2F4F4F' : 'Dark Slate Gray', // MISSING
+		'008080' : 'Teal', // MISSING
+		'000080' : 'Navy', // MISSING
+		'4B0082' : 'Indigo', // MISSING
+		'696969' : 'Dim Gray', // MISSING
+		'B22222' : 'Fire Brick', // MISSING
+		'A52A2A' : 'Brown', // MISSING
+		'DAA520' : 'Golden Rod', // MISSING
+		'006400' : 'Dark Green', // MISSING
+		'40E0D0' : 'Turquoise', // MISSING
+		'0000CD' : 'Medium Blue', // MISSING
+		'800080' : 'Purple', // MISSING
+		'808080' : 'Gray', // MISSING
+		'F00' : 'Red', // MISSING
+		'FF8C00' : 'Dark Orange', // MISSING
+		'FFD700' : 'Gold', // MISSING
+		'008000' : 'Green', // MISSING
+		'0FF' : 'Cyan', // MISSING
+		'00F' : 'Blue', // MISSING
+		'EE82EE' : 'Violet', // MISSING
+		'A9A9A9' : 'Dark Gray', // MISSING
+		'FFA07A' : 'Light Salmon', // MISSING
+		'FFA500' : 'Orange', // MISSING
+		'FFFF00' : 'Yellow', // MISSING
+		'00FF00' : 'Lime', // MISSING
+		'AFEEEE' : 'Pale Turquoise', // MISSING
+		'ADD8E6' : 'Light Blue', // MISSING
+		'DDA0DD' : 'Plum', // MISSING
+		'D3D3D3' : 'Light Grey', // MISSING
+		'FFF0F5' : 'Lavender Blush', // MISSING
+		'FAEBD7' : 'Antique White', // MISSING
+		'FFFFE0' : 'Light Yellow', // MISSING
+		'F0FFF0' : 'Honeydew', // MISSING
+		'F0FFFF' : 'Azure', // MISSING
+		'F0F8FF' : 'Alice Blue', // MISSING
+		'E6E6FA' : 'Lavender', // MISSING
+		'FFF' : 'White' // MISSING
 	},
 
 	scayt :
 	{
-		title : '即時拼寫檢查',
-		enable : '啟用即時拼寫檢查',
-		disable : '關閉即時拼寫檢查',
-		about : '關於即時拼寫檢查',
-		toggle : '啟用／關閉即時拼寫檢查',
-		options : '選項',
-		langs : '語言',
-		moreSuggestions : '更多拼寫建議',
-		ignore : '忽略',
-		ignoreAll : '全部忽略',
-		addWord : '添加單詞',
-		emptyDic : '字典名不應為空.',
-		optionsTab : '選項',
-		languagesTab : '語言',
-		dictionariesTab : '字典',
-		aboutTab : '關於'
+		title			: '即時拼寫檢查',
+		opera_title		: 'Not supported by Opera', // MISSING
+		enable			: '啟用即時拼寫檢查',
+		disable			: '關閉即時拼寫檢查',
+		about			: '關於即時拼寫檢查',
+		toggle			: '啟用／關閉即時拼寫檢查',
+		options			: '選項',
+		langs			: '語言',
+		moreSuggestions	: '更多拼寫建議',
+		ignore			: '忽略',
+		ignoreAll		: '全部忽略',
+		addWord			: '添加單詞',
+		emptyDic		: '字典名不應為空.',
+
+		optionsTab		: '選項',
+		allCaps			: 'Ignore All-Caps Words', // MISSING
+		ignoreDomainNames : 'Ignore Domain Names', // MISSING
+		mixedCase		: 'Ignore Words with Mixed Case', // MISSING
+		mixedWithDigits	: 'Ignore Words with Numbers', // MISSING
+
+		languagesTab	: '語言',
+
+		dictionariesTab	: '字典',
+		dic_field_name	: 'Dictionary name', // MISSING
+		dic_create		: 'Create', // MISSING
+		dic_restore		: 'Restore', // MISSING
+		dic_delete		: 'Delete', // MISSING
+		dic_rename		: 'Rename', // MISSING
+		dic_info		: 'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it\'s name and click the Restore button.', // MISSING
+
+		aboutTab		: '關於'
 	},
 
 	about :
 	{
-		title : '關於 CKEditor',
-		dlgTitle : '關於 CKEditor',
-		moreInfo : '訪問我們的網站以獲取更多關於協議的信息',
-		copy : 'Copyright &copy; $1. All rights reserved.'
+		title		: '關於 CKEditor',
+		dlgTitle	: '關於 CKEditor',
+		moreInfo	: '訪問我們的網站以獲取更多關於協議的信息',
+		copy		: 'Copyright &copy; $1. All rights reserved.'
 	},
 
@@ -668,8 +726,8 @@
 	fakeobjects :
 	{
-		anchor : '錨點',
-		flash : 'Flash 動畫',
-		div : '分頁',
-		unknown : '不明物件'
+		anchor	: '錨點',
+		flash	: 'Flash 動畫',
+		div		: '分頁',
+		unknown	: '不明物件'
 	},
 
@@ -678,8 +736,12 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
-	}
+		title		: 'Select color', // MISSING
+		options	:	'Color Options', // MISSING
+		highlight	: 'Highlight', // MISSING
+		selected	: 'Selected Color', // MISSING
+		clear		: 'Clear' // MISSING
+	},
+
+	toolbarCollapse	: 'Collapse Toolbar', // MISSING
+	toolbarExpand	: 'Expand Toolbar' // MISSING
 };
Index: /CKEditor/branches/features/adobeair/_source/plugins/a11yhelp/dialogs/a11yhelp.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/a11yhelp/dialogs/a11yhelp.js	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_source/plugins/a11yhelp/dialogs/a11yhelp.js	(revision 5613)
@@ -0,0 +1,211 @@
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add( 'a11yHelp', function( editor )
+{
+	var lang = editor.lang.accessibilityHelp,
+		id = CKEDITOR.tools.getNextNumber();
+
+	// CharCode <-> KeyChar.
+	var keyMap =
+	{
+		8 : "BACKSPACE",
+		9 : "TAB" ,
+		13 : "ENTER" ,
+		16 : "SHIFT" ,
+		17 : "CTRL" ,
+		18 : "ALT" ,
+		19 : "PAUSE" ,
+		20 : "CAPSLOCK" ,
+		27 : "ESCAPE" ,
+		33 : "PAGE UP" ,
+		34 : "PAGE DOWN" ,
+		35 : "END" ,
+		36 : "HOME" ,
+		37 : "LEFT ARROW" ,
+		38 : "UP ARROW" ,
+		39 : "RIGHT ARROW" ,
+		40 : "DOWN ARROW" ,
+		45 : "INSERT" ,
+		46 : "DELETE" ,
+		91 : "LEFT WINDOW KEY" ,
+		92 : "RIGHT WINDOW KEY" ,
+		93 : "SELECT KEY" ,
+		96 : "NUMPAD  0" ,
+		97 : "NUMPAD  1" ,
+		98 : "NUMPAD  2" ,
+		99 : "NUMPAD  3" ,
+		100 : "NUMPAD  4" ,
+		101 : "NUMPAD  5" ,
+		102 : "NUMPAD  6" ,
+		103 : "NUMPAD  7" ,
+		104 : "NUMPAD  8" ,
+		105 : "NUMPAD  9" ,
+		106 : "MULTIPLY" ,
+		107 : "ADD" ,
+		109 : "SUBTRACT" ,
+		110 : "DECIMAL POINT" ,
+		111 : "DIVIDE" ,
+		112 : "F1" ,
+		113 : "F2" ,
+		114 : "F3" ,
+		115 : "F4" ,
+		116 : "F5" ,
+		117 : "F6" ,
+		118 : "F7" ,
+		119 : "F8" ,
+		120 : "F9" ,
+		121 : "F10" ,
+		122 : "F11" ,
+		123 : "F12" ,
+		144 : "NUM LOCK" ,
+		145 : "SCROLL LOCK" ,
+		186 : "SEMI-COLON" ,
+		187 : "EQUAL SIGN" ,
+		188 : "COMMA" ,
+		189 : "DASH" ,
+		190 : "PERIOD" ,
+		191 : "FORWARD SLASH" ,
+		192 : "GRAVE ACCENT" ,
+		219 : "OPEN BRACKET" ,
+		220 : "BACK SLASH" ,
+		221 : "CLOSE BRAKET" ,
+		222 : "SINGLE QUOTE"
+	};
+
+	// Modifier keys override.
+	keyMap[ CKEDITOR.ALT ] = 'ALT';
+	keyMap[ CKEDITOR.SHIFT ] = 'SHIFT';
+	keyMap[ CKEDITOR.CTRL ] = 'CTRL';
+
+	// Sort in desc.
+	var modifiers = [ CKEDITOR.ALT, CKEDITOR.SHIFT, CKEDITOR.CTRL ];
+
+	function representKeyStroke( keystroke )
+	{
+		var quotient,
+				modifier,
+				presentation = [];
+
+		for ( var i = 0; i < modifiers.length; i++ )
+		{
+			modifier = modifiers[ i ];
+			quotient = keystroke / modifiers[ i ];
+			if ( quotient > 1 && quotient <= 2 )
+			{
+				keystroke -= modifier;
+				presentation.push( keyMap[ modifier ] );
+			}
+		}
+
+		presentation.push( keyMap[ keystroke ]
+			|| String.fromCharCode( keystroke ) );
+
+		return presentation.join( '+' );
+	}
+
+	var variablesPattern = /\$\{(.*?)\}/g;
+	function replaceVariables( match, name )
+	{
+		var keystrokes = editor.config.keystrokes,
+				definition,
+				length = keystrokes.length;
+
+		for ( var i = 0; i < length; i++ )
+		{
+			definition = keystrokes[ i ];
+			if ( definition[ 1 ] == name )
+				break;
+		}
+		return representKeyStroke( definition[ 0 ] );
+	}
+
+	// Create the help list directly from lang file entries.
+	function buildHelpContents()
+	{
+		var pageTpl = '<div class="cke_accessibility_legend" role="document" aria-labelledby="cke_' + id + '_arialbl" tabIndex="-1">%1</div>' +
+				'<span id="cke_' + id + '_arialbl" class="cke_voice_label">' + lang.contents + ' </span>',
+			sectionTpl = '<h1>%1</h1><dl>%2</dl>',
+			itemTpl = '<dt>%1</dt><dd>%2</dd>';
+
+		var pageHtml = [],
+			sections = lang.legend,
+			sectionLength = sections.length;
+
+		for ( var i = 0; i < sectionLength; i++ )
+		{
+			var section = sections[ i ],
+				sectionHtml = [],
+				items = section.items,
+				itemsLength = items.length;
+
+			for ( var j = 0; j < itemsLength; j++ )
+			{
+				var item = items[ j ],
+					itemHtml;
+				itemHtml = itemTpl.replace( '%1', item.name ).
+					replace( '%2', item.legend.replace( variablesPattern, replaceVariables ) );
+				sectionHtml.push( itemHtml );
+			}
+
+			pageHtml.push( sectionTpl.replace( '%1', section.name ).replace( '%2', sectionHtml.join( '' ) ) );
+		}
+
+		return pageTpl.replace( '%1', pageHtml.join( '' ) );
+	}
+
+	return {
+		title : lang.title,
+		minWidth : 600,
+		minHeight : 400,
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.common.generalTab,
+				expand : true,
+				elements :
+				[
+					{
+						type : 'html',
+						id : 'legends',
+						focus : function() {},
+						html : buildHelpContents() +
+							'<style type="text/css">' +
+							'.cke_accessibility_legend' +
+							'{' +
+								'width:600px;' +
+								'height:400px;' +
+								'padding-right:5px;' +
+								'overflow-y:auto;' +
+								'overflow-x:hidden;' +
+							'}' +
+							'.cke_accessibility_legend h1' +
+							'{' +
+								'font-size: 20px;' +
+								'border-bottom: 1px solid #AAA;' +
+								'margin: 5px 0px 15px;' +
+							'}' +
+							'.cke_accessibility_legend dl' +
+							'{' +
+								'margin-left: 5px;' +
+							'}' +
+							'.cke_accessibility_legend dt' +
+							'{' +
+								'font-size: 13px;' +
+								'font-weight: bold;' +
+							'}' +
+							'.cke_accessibility_legend dd' +
+							'{' +
+								'white-space:normal;' +
+								'margin:10px' +
+							'}' +
+						'</style>'
+					}
+				]
+			}
+		],
+		buttons : [ CKEDITOR.dialog.cancelButton ]
+	};
+});
Index: /CKEditor/branches/features/adobeair/_source/plugins/a11yhelp/lang/en.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/a11yhelp/lang/en.js	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_source/plugins/a11yhelp/lang/en.js	(revision 5613)
@@ -0,0 +1,108 @@
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang( 'a11yhelp', 'en',
+{
+	accessibilityHelp :
+	{
+		title : 'Accessibility Instructions',
+		contents : 'Help Contents. To close this dialog press ESC.',
+		legend :
+		[
+			{
+				name : 'General',
+				items :
+						[
+							{
+								name : 'Editor Toolbar',
+								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. ' +
+									'Press SPACE or ENTER to activate the toolbar button.'
+							},
+
+							{
+								name : 'Editor Dialog',
+								legend :
+									'Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. ' +
+									'For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. ' +
+									'Then move to next tab with TAB OR RIGTH ARROW. ' +
+									'Move to previous tab with SHIFT + TAB or LEFT ARROW. ' +
+									'Press SPACE or ENTER to select the tab page.'
+							},
+
+							{
+								name : 'Editor Context Menu',
+								legend :
+									'Press ${contextMenu} or APPLICATION KEY to open context-menu. ' +
+									'Then move to next menu option with TAB or DOWN ARROW. ' +
+									'Move to previous option with  SHIFT+TAB or UP ARROW. ' +
+									'Press SPACE or ENTER to select the menu option. ' +
+									'Open sub-menu of current option wtih SPACE or ENTER or RIGHT ARROW. ' +
+									'Go back to parent menu item with ESC or LEFT ARROW. ' +
+									'Close context menu with ESC.'
+							},
+
+							{
+								name : 'Editor List Box',
+								legend :
+									'Inside a list-box, move to next list item with TAB OR DOWN ARROW. ' +
+									'Move to previous list item with SHIFT + TAB or UP ARROW. ' +
+									'Press SPACE or ENTER to select the list option. ' +
+									'Press ESC to close the list-box.'
+							},
+
+							{
+								name : 'Editor Element Path Bar',
+								legend :
+									'Press ${elementsPathFocus} to navigate to the elements path bar. ' +
+									'Move to next element button with TAB or RIGHT ARROW. ' +
+									'Move to previous button with  SHIFT+TAB or LEFT ARROW. ' +
+									'Press SPACE or ENTER to select the element in editor.'
+							}
+						]
+			},
+			{
+				name : 'Commands',
+				items :
+						[
+							{
+								name : ' Undo command',
+								legend : 'Press ${undo}'
+							},
+							{
+								name : ' Redo command',
+								legend : 'Press ${redo}'
+							},
+							{
+								name : ' Bold command',
+								legend : 'Press ${bold}'
+							},
+							{
+								name : ' Italic command',
+								legend : 'Press ${italic}'
+							},
+							{
+								name : ' Underline command',
+								legend : 'Press ${underline}'
+							},
+							{
+								name : ' Link command',
+								legend : 'Press ${link}'
+							},
+							{
+								name : ' Toolbar Collapse command',
+								legend : 'Press ${toolbarCollapse}'
+							},
+							{
+								name : ' Accessibility Help',
+								legend : 'Press ${a11yHelp}'
+							}
+						]
+			}
+		]
+	}
+});
Index: /CKEditor/branches/features/adobeair/_source/plugins/a11yhelp/lang/he.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/a11yhelp/lang/he.js	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_source/plugins/a11yhelp/lang/he.js	(revision 5613)
@@ -0,0 +1,216 @@
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang( 'a11yhelp', 'he',
+{
+	accessibilityHelp :
+	{
+		title : 'הוראות נגישות',
+		contents : 'הוראות נגישות. לסגירה לחץ אסקייפ (ESC).',
+		legend :
+		[
+			{
+				name : 'כללי',
+				items :
+						[
+							{
+								name : 'סרגל הכלים',
+								legend:
+									'לחץ על ${toolbarFocus} כדי לנווט לסרגל הכלים. ' +
+									'עבור לכפתור הבא עם מקש הטאב (TAB) או חץ שמאלי. ' +
+									'עבור לכפתור הקודם עם מקש השיפט (SHIFT) + טאב (TAB) או חץ ימני. ' +
+									'לחץ רווח או אנטר (ENTER) כדי להפעיל את הכפתור הנבחר.'
+							},
+
+							{
+								name : 'דיאלוגים (חלונות תשאול)',
+								legend :
+									'בתוך דיאלוג, לחץ טאב (TAB) כדי לנווט לשדה הבא, לחץ שיפט (SHIFT) + טאב (TAB) כדי לנווט לשדה הקודם, לחץ אנטר (ENTER) כדי לשלוח את הדיאלוג, לחץ אסקייפ (ESC) כדי לבטל. ' +
+									'בתוך דיאלוגים בעלי מספר טאבים (לשוניות), לחץ אלט (ALT) + F10 כדי לנווט לשורת הטאבים. ' +
+									'נווט לטאב הבא עם טאב (TAB) או חץ שמאלי. ' +
+									'עבור לטאב הקודם עם שיפט (SHIFT) + טאב (TAB) או חץ שמאלי. ' +
+									'לחץ רווח או אנטר (ENTER) כדי להיכנס לטאב.'
+							},
+
+							{
+								name : 'תפריט ההקשר (Context Menu)',
+								legend :
+									'לחץ ${contextMenu} או APPLICATION KEYכדי לפתוח את תפריט ההקשר. ' +
+									'עבור לאפשרות הבאה עם טאב (TAB) או חץ למטה. ' +
+									'עבור לאפשרות הקודמת עם שיפט (SHIFT) + טאב (TAB) או חץ למעלה. ' +
+									'לחץ רווח או אנטר (ENTER) כדי לבחור את האפשרות. ' +
+									'פתח את תת התפריט (Sub-menu) של האפשרות הנוכחית עם רווח או אנטר (ENTER) או חץ שמאלי. ' +
+									'חזור לתפריט האב עם אסקייפ (ESC) או חץ שמאלי. ' +
+									'סגור את תפריט ההקשר עם אסקייפ (ESC).'
+							},
+
+							{
+								name : 'תפריטים צפים (List boxes)',
+								legend :
+									'בתוך תפריט צף, עבור לפריט הבא עם טאב (TAB) או חץ למטה. ' +
+									'עבור לתפריט הקודם עם שיפט (SHIFT) + טאב (TAB) or חץ עליון. ' +
+									'Press SPACE or ENTER to select the list option. ' +
+									'Press ESC to close the list-box.'
+							},
+
+							{
+								name : 'עץ אלמנטים (Elements Path)',
+								legend :
+									'לחץ ${elementsPathFocus} כדי לנווט לעץ האלמנטים. ' +
+									'עבור לפריט הבא עם טאב (TAB) או חץ ימני. ' +
+									'עבור לפריט הקודם עם שיפט (SHIFT) + טאב (TAB) או חץ שמאלי. ' +
+									'לחץ רווח או אנטר (ENTER) כדי לבחור את האלמנט בעורך.'
+							}
+						]
+			},
+			{
+				name : 'פקודות',
+				items :
+						[
+							{
+								name : ' ביטול צעד אחרון',
+								legend : 'לחץ ${undo}'
+							},
+							{
+								name : ' חזרה על צעד אחרון',
+								legend : 'לחץ ${redo}'
+							},
+							{
+								name : ' הדגשה',
+								legend : 'לחץ ${bold}'
+							},
+							{
+								name : ' הטייה',
+								legend : 'לחץ ${italic}'
+							},
+							{
+								name : ' הוספת קו תחתון',
+								legend : 'לחץ ${underline}'
+							},
+							{
+								name : ' הוספת לינק',
+								legend : 'לחץ ${link}'
+							},
+							{
+								name : ' כיווץ סרגל הכלים',
+								legend : 'לחץ ${toolbarCollapse}'
+							},
+							{
+								name : ' הוראות נגישות',
+								legend : 'לחץ ${a11yHelp}'
+							}
+						]
+			}
+		]
+	}
+});
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang( 'a11yhelp', 'he',
+{
+	accessibilityHelp :
+	{
+		title : 'הוראות נגישות',
+		contents : 'הוראות נגישות. לסגירה לחץ אסקייפ (ESC).',
+		legend :
+		[
+			{
+				name : 'כללי',
+				items :
+						[
+							{
+								name : 'סרגל הכלים',
+								legend:
+									'לחץ על ${toolbarFocus} כדי לנווט לסרגל הכלים. ' +
+									'עבור לכפתור הבא עם מקש הטאב (TAB) או חץ שמאלי. ' +
+									'עבור לכפתור הקודם עם מקש השיפט (SHIFT) + טאב (TAB) או חץ ימני. ' +
+									'לחץ רווח או אנטר (ENTER) כדי להפעיל את הכפתור הנבחר.'
+							},
+
+							{
+								name : 'דיאלוגים (חלונות תשאול)',
+								legend :
+									'בתוך דיאלוג, לחץ טאב (TAB) כדי לנווט לשדה הבא, לחץ שיפט (SHIFT) + טאב (TAB) כדי לנווט לשדה הקודם, לחץ אנטר (ENTER) כדי לשלוח את הדיאלוג, לחץ אסקייפ (ESC) כדי לבטל. ' +
+									'בתוך דיאלוגים בעלי מספר טאבים (לשוניות), לחץ אלט (ALT) + F10 כדי לנווט לשורת הטאבים. ' +
+									'נווט לטאב הבא עם טאב (TAB) או חץ שמאלי. ' +
+									'עבור לטאב הקודם עם שיפט (SHIFT) + טאב (TAB) או חץ שמאלי. ' +
+									'לחץ רווח או אנטר (ENTER) כדי להיכנס לטאב.'
+							},
+
+							{
+								name : 'תפריט ההקשר (Context Menu)',
+								legend :
+									'לחץ ${contextMenu} או APPLICATION KEYכדי לפתוח את תפריט ההקשר. ' +
+									'עבור לאפשרות הבאה עם טאב (TAB) או חץ למטה. ' +
+									'עבור לאפשרות הקודמת עם שיפט (SHIFT) + טאב (TAB) או חץ למעלה. ' +
+									'לחץ רווח או אנטר (ENTER) כדי לבחור את האפשרות. ' +
+									'פתח את תת התפריט (Sub-menu) של האפשרות הנוכחית עם רווח או אנטר (ENTER) או חץ שמאלי. ' +
+									'חזור לתפריט האב עם אסקייפ (ESC) או חץ שמאלי. ' +
+									'סגור את תפריט ההקשר עם אסקייפ (ESC).'
+							},
+
+							{
+								name : 'תפריטים צפים (List boxes)',
+								legend :
+									'בתוך תפריט צף, עבור לפריט הבא עם טאב (TAB) או חץ למטה. ' +
+									'עבור לתפריט הקודם עם שיפט (SHIFT) + טאב (TAB) or חץ עליון. ' +
+									'Press SPACE or ENTER to select the list option. ' +
+									'Press ESC to close the list-box.'
+							},
+
+							{
+								name : 'עץ אלמנטים (Elements Path)',
+								legend :
+									'לחץ ${elementsPathFocus} כדי לנווט לעץ האלמנטים. ' +
+									'עבור לפריט הבא עם טאב (TAB) או חץ ימני. ' +
+									'עבור לפריט הקודם עם שיפט (SHIFT) + טאב (TAB) או חץ שמאלי. ' +
+									'לחץ רווח או אנטר (ENTER) כדי לבחור את האלמנט בעורך.'
+							}
+						]
+			},
+			{
+				name : 'פקודות',
+				items :
+						[
+							{
+								name : ' ביטול צעד אחרון',
+								legend : 'לחץ ${undo}'
+							},
+							{
+								name : ' חזרה על צעד אחרון',
+								legend : 'לחץ ${redo}'
+							},
+							{
+								name : ' הדגשה',
+								legend : 'לחץ ${bold}'
+							},
+							{
+								name : ' הטייה',
+								legend : 'לחץ ${italic}'
+							},
+							{
+								name : ' הוספת קו תחתון',
+								legend : 'לחץ ${underline}'
+							},
+							{
+								name : ' הוספת לינק',
+								legend : 'לחץ ${link}'
+							},
+							{
+								name : ' כיווץ סרגל הכלים',
+								legend : 'לחץ ${toolbarCollapse}'
+							},
+							{
+								name : ' הוראות נגישות',
+								legend : 'לחץ ${a11yHelp}'
+							}
+						]
+			}
+		]
+	}
+});
Index: /CKEditor/branches/features/adobeair/_source/plugins/a11yhelp/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/a11yhelp/plugin.js	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_source/plugins/a11yhelp/plugin.js	(revision 5613)
@@ -0,0 +1,46 @@
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Plugin definition for the a11yhelp, which provides a dialog
+ * with accessibility related help.
+ */
+
+(function()
+{
+	var pluginName = 'a11yhelp',
+		commandName = 'a11yHelp';
+
+	CKEDITOR.plugins.add( pluginName,
+	{
+		// List of available localizations.
+		availableLangs : { en:1, he:1 },
+
+		init : function( editor )
+		{
+			var plugin = this;
+			editor.addCommand( commandName,
+				{
+					exec : function()
+					{
+						var langCode = editor.langCode;
+						langCode = plugin.availableLangs[ langCode ] ? langCode : 'en';
+
+						CKEDITOR.scriptLoader.load(
+								CKEDITOR.getUrl( plugin.path + 'lang/' + langCode + '.js' ),
+								function()
+								{
+									CKEDITOR.tools.extend( editor.lang, plugin.lang[ langCode ] );
+									editor.openDialog( commandName );
+								});
+					},
+					modes : { wysiwyg:1, source:1 },
+					canUndo : false
+				});
+
+			CKEDITOR.dialog.add( commandName, this.path + 'dialogs/a11yhelp.js' );
+		}
+	});
+})();
Index: /CKEditor/branches/features/adobeair/_source/plugins/about/dialogs/about.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/about/dialogs/about.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/about/dialogs/about.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/plugins/about/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/about/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/about/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -6,4 +6,5 @@
 CKEDITOR.plugins.add( 'about',
 {
+	requires : [ 'dialog' ],
 	init : function( editor )
 	{
Index: /CKEditor/branches/features/adobeair/_source/plugins/adobeair/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/adobeair/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/adobeair/plugin.js	(revision 5613)
@@ -8,14 +8,9 @@
 	init : function( editor )
 	{
+		if ( !CKEDITOR.env.air )
+			return;
 
 		// Body doesn't get default margin on AIR. 
 		editor.addCss( 'body { padding: 8px }' );
-
-
-		// document.querySelectAll() is not presented in AIR.
-		function eachChildWithAttribute( element, name, processor )
-		{
-		};
-
 
 		var eventNameList = [ 'click', 'keydown', 'mousedown', 'keypress' ];
Index: /CKEditor/branches/features/adobeair/_source/plugins/basicstyles/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/basicstyles/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/basicstyles/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -43,8 +43,59 @@
 
 // Basic Inline Styles.
-CKEDITOR.config.coreStyles_bold			= { element : 'strong', overrides : 'b' };
-CKEDITOR.config.coreStyles_italic		= { element : 'em', overrides : 'i' };
-CKEDITOR.config.coreStyles_underline	= { element : 'u' };
-CKEDITOR.config.coreStyles_strike		= { element : 'strike' };
-CKEDITOR.config.coreStyles_subscript	= { element : 'sub' };
-CKEDITOR.config.coreStyles_superscript	= { element : 'sup' };
+
+/**
+ * The style definition to be used to apply the bold style in the text.
+ * @type Object
+ * @example
+ * config.coreStyles_bold = { element : 'b', overrides : 'strong' };
+ * @example
+ * config.coreStyles_bold = { element : 'span', attributes : {'class': 'Bold'} };
+ */
+CKEDITOR.config.coreStyles_bold = { element : 'strong', overrides : 'b' };
+
+/**
+ * The style definition to be used to apply the italic style in the text.
+ * @type Object
+ * @default { element : 'em', overrides : 'i' }
+ * @example
+ * config.coreStyles_bold = { element : 'i', overrides : 'em' };
+ * @example
+ * CKEDITOR.config.coreStyles_italic = { element : 'span', attributes : {'class': 'Italic'} };
+ */
+CKEDITOR.config.coreStyles_italic = { element : 'em', overrides : 'i' };
+
+/**
+ * The style definition to be used to apply the underline style in the text.
+ * @type Object
+ * @default { element : 'u' }
+ * @example
+ * CKEDITOR.config.coreStyles_underline = { element : 'span', attributes : {'class': 'Underline'}};
+ */
+CKEDITOR.config.coreStyles_underline = { element : 'u' };
+
+/**
+ * The style definition to be used to apply the strike style in the text.
+ * @type Object
+ * @default { element : 'strike' }
+ * @example
+ * CKEDITOR.config.coreStyles_strike = { element : 'span', attributes : {'class': 'StrikeThrough'}, overrides : 'strike' };
+ */
+CKEDITOR.config.coreStyles_strike = { element : 'strike' };
+
+/**
+ * The style definition to be used to apply the subscript style in the text.
+ * @type Object
+ * @default { element : 'sub' }
+ * @example
+ * CKEDITOR.config.coreStyles_subscript = { element : 'span', attributes : {'class': 'Subscript'}, overrides : 'sub' };
+ */
+CKEDITOR.config.coreStyles_subscript = { element : 'sub' };
+
+/**
+ * The style definition to be used to apply the superscript style in the text.
+ * @type Object
+ * @default { element : 'sup' }
+ * @example
+ * CKEDITOR.config.coreStyles_superscript = { element : 'span', attributes : {'class': 'Superscript'}, overrides : 'sup' };
+ */
+CKEDITOR.config.coreStyles_superscript = { element : 'sup' };
Index: /CKEditor/branches/features/adobeair/_source/plugins/blockquote/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/blockquote/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/blockquote/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/plugins/button/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/button/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/button/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -70,7 +70,11 @@
 	render : function( editor, output )
 	{
-		var env = CKEDITOR.env;
-
-		var id = this._.id = 'cke_' + CKEDITOR.tools.getNextNumber();
+		var env = CKEDITOR.env,
+			id = this._.id = 'cke_' + CKEDITOR.tools.getNextNumber(),
+			classes = '',
+			command = this.command, // Get the command name.
+			clickFn,
+			index;
+
 		this._.editor = editor;
 
@@ -91,12 +95,7 @@
 		};
 
-		var clickFn = CKEDITOR.tools.addFunction( instance.execute, instance );
-
-		var index = CKEDITOR.ui.button._.instances.push( instance ) - 1;
-
-		var classes = '';
-
-		// Get the command name.
-		var command = this.command;
+		instance.clickFn = clickFn = CKEDITOR.tools.addFunction( instance.execute, instance );
+
+		instance.index = index = CKEDITOR.ui.button._.instances.push( instance ) - 1;
 
 		if ( this.modes )
@@ -135,8 +134,12 @@
 			'<span class="cke_button">',
 			'<a id="', id, '"' +
-				' class="', classes, '" href="javascript:void(\'', ( this.title || '' ).replace( "'", '' ), '\')"' +
+				' class="', classes, '"',
+				env.gecko && env.version >= 10900 && !env.hc  ? '' : '" href="javascript:void(\''+ ( this.title || '' ).replace( "'"+ '' )+ '\')"',
 				' title="', this.title, '"' +
 				' tabindex="-1"' +
-				' hidefocus="true"' );
+				' hidefocus="true"' +
+			    ' role="button"' +
+				' aria-labelledby="' + id + '_label"' +
+				( this.hasArrow ?  ' aria-haspopup="true"' : '' ) );
 
 		// Some browsers don't cancel key events in the keydown but in the
@@ -170,11 +173,14 @@
 
 		output.push(
-					'></span>' +
-					'<span class="cke_label">', this.label, '</span>' );
+					'>&nbsp;</span>' +
+					'<span id="', id, '_label" class="cke_label">', this.label, '</span>' );
 
 		if ( this.hasArrow )
 		{
 			output.push(
-					'<span class="cke_buttonarrow"></span>' );
+					'<span class="cke_buttonarrow">'
+					// BLACK DOWN-POINTING TRIANGLE
+					+ ( CKEDITOR.env.hc ? '&#9660;' : '&nbsp;' )
+					+ '</span>' );
 		}
 
@@ -192,5 +198,7 @@
 	{
 		if ( this._.state == state )
-			return;
+			return false;
+
+		this._.state = state;
 
 		var element = CKEDITOR.document.getById( this._.id );
@@ -199,16 +207,16 @@
 		{
 			element.setState( state );
-
-			var htmlTitle = this.title,
-				unavailable = this._.editor.lang.common.unavailable,
-				labelElement = element.getChild( 1 );
-
-			if ( state == CKEDITOR.TRISTATE_DISABLED )
-				htmlTitle = unavailable.replace( '%1', this.title );
-
-			labelElement.setHtml( htmlTitle );
-		}
-
-		this._.state = state;
+			state == CKEDITOR.TRISTATE_DISABLED ?
+				element.setAttribute( 'aria-disabled', true ) :
+				element.removeAttribute( 'aria-disabled' );
+
+			state == CKEDITOR.TRISTATE_ON ?
+				element.setAttribute( 'aria-pressed', true ) :
+				element.removeAttribute( 'aria-pressed' );
+
+			return true;
+		}
+		else
+			return false;
 	}
 };
@@ -263,2 +271,7 @@
 	this.add( name, CKEDITOR.UI_BUTTON, definition );
 };
+
+CKEDITOR.on( 'reset', function()
+	{
+		CKEDITOR.ui.button._.instances = [];
+	});
Index: /CKEditor/branches/features/adobeair/_source/plugins/clipboard/dialogs/paste.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/clipboard/dialogs/paste.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/clipboard/dialogs/paste.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -6,42 +6,101 @@
 CKEDITOR.dialog.add( 'paste', function( editor )
 {
+	var lang = editor.lang.clipboard;
 	var isCustomDomain = CKEDITOR.env.isCustomDomain();
 
+	function onPasteFrameLoad( win )
+	{
+		var doc =  new CKEDITOR.dom.document( win.document ),
+			docElement = doc.$;
+
+		doc.getById( "cke_actscrpt" ).remove();
+
+		CKEDITOR.env.ie ?
+			docElement.body.contentEditable = "true" :
+			docElement.designMode = "on";
+
+		// IE before version 8 will leave cursor blinking inside the document after
+		// editor blurred unless we clean up the selection. (#4716)
+		if ( CKEDITOR.env.ie && CKEDITOR.env.version < 8 )
+		{
+			doc.getWindow().on( 'blur', function()
+			{
+				docElement.selection.empty();
+			} );
+		}
+
+		doc.on( "keydown", function( e )
+		{
+			var domEvent = e.data,
+				key = domEvent.getKeystroke(),
+				processed;
+
+			switch( key )
+			{
+				case 27 :
+					this.hide();
+					processed = 1;
+					break;
+
+				case 9 :
+				case CKEDITOR.SHIFT + 9 :
+					this.changeFocus( true );
+					processed = 1;
+			}
+
+			processed && domEvent.preventDefault();
+		}, this );
+
+		editor.fire( 'ariaWidget', new CKEDITOR.dom.element( win.frameElement ) );
+	}
+
 	return {
-		title : editor.lang.clipboard.title,
+		title : lang.title,
 
 		minWidth : CKEDITOR.env.ie && CKEDITOR.env.quirks ? 370 : 350,
 		minHeight : CKEDITOR.env.quirks ? 250 : 245,
-		htmlToLoad : '<!doctype html><script type="text/javascript">'
-				+ 'window.onload = function()'
-				+ '{'
-					+ 'if ( ' + CKEDITOR.env.ie + ' ) '
-						+ 'document.body.contentEditable = "true";'
-					+ 'else '
-						+ 'document.designMode = "on";'
-					+ 'var iframe = new window.parent.CKEDITOR.dom.element( frameElement );'
-					+ 'var dialog = iframe.getCustomData( "dialog" );'
-		      + ''
-					+ 'iframe.getFrameDocument().on( "keydown", function( e )\
-						{\
-							if ( e.data.getKeystroke() == 27 )\
-								dialog.hide();\
-						});'
-				+ '};'
-				+ '</script><style>body { margin: 3px; height: 95%; } </style><body></body>',
-
 		onShow : function()
 		{
-			if ( CKEDITOR.env.ie )
-				this.getParentEditor().document.getBody().$.contentEditable = 'false';
-
 			// FIREFOX BUG: Force the browser to render the dialog to make the to-be-
 			// inserted iframe editable. (#3366)
 			this.parts.dialog.$.offsetHeight;
 
-			var container = this.getContentElement( 'general', 'editing_area' ).getElement(),
-				iframe = CKEDITOR.dom.element.createFromHtml( '<iframe src="javascript:void(0)" frameborder="0" allowtransparency="1"></iframe>' );
-
-			var lang = this.getParentEditor().lang;
+			var htmlToLoad =
+				'<html dir="' + editor.config.contentsLangDirection + '"' +
+				' lang="' + ( editor.config.contentsLanguage || editor.langCode ) + '">' +
+					'<head><style>body { margin: 3px; height: 95%; } </style></head><body>' +
+					'<script id="cke_actscrpt" type="text/javascript">' +
+					'window.parent.CKEDITOR.tools.callFunction( ' + CKEDITOR.tools.addFunction( onPasteFrameLoad, this ) + ', this );' +
+					'</script></body>' +
+				'</html>';
+
+			var iframe = CKEDITOR.dom.element.createFromHtml(
+						'<iframe' +
+						' frameborder="0" ' +
+						' allowTransparency="true"' +
+						// Support for custom document.domain in IE.
+						( isCustomDomain ?
+							' src="javascript:void((function(){' +
+								'document.open();' +
+								'document.domain=\'' + document.domain + '\';' +
+								'document.close();' +
+							'})())"' : '' ) +
+						' role="region"' +
+						' aria-label="' + lang.pasteArea + '"' +
+						' aria-describedby="' + this.getContentElement( 'general', 'pasteMsg' ).domId + '"' +
+						' aria-multiple="true"' +
+						'></iframe>' );
+
+			iframe.on( 'load', function( e )
+			{
+				e.removeListener();
+				var doc = iframe.getFrameDocument().$;
+				// Custom domain handling is needed after each document.open().
+				doc.open();
+				if ( isCustomDomain )
+					doc.domain = document.domain;
+				doc.write( htmlToLoad );
+				doc.close();
+			}, this );
 
 			iframe.setStyles(
@@ -54,46 +113,35 @@
 			iframe.setCustomData( 'dialog', this );
 
-			var accTitle = lang.editorTitle.replace( '%1', lang.clipboard.title );
-
+			var field = this.getContentElement( 'general', 'editing_area' ),
+				container = field.getElement();
+			container.setHtml( '' );
+			container.append( iframe );
+
+			// IE need a redirect on focus to make
+			// the cursor blinking inside iframe. (#5461)
 			if ( CKEDITOR.env.ie )
-				container.setHtml( '<legend style="position:absolute;top:-1000000px;left:-1000000px;">'
-						+ CKEDITOR.tools.htmlEncode( accTitle )
-						+ '</legend>' );
-			else
-			{
-				container.setHtml( '' );
-				container.setAttributes(
-					{
-						role : 'region',
-						title : accTitle
-					} );
-				iframe.setAttributes(
-					{
-						role : 'region',
-						title : ' '
-					} );
-			}
-			container.append( iframe );
+			{
+				var focusGrabber = CKEDITOR.dom.element.createFromHtml( '<span tabindex="-1" style="position:absolute;" role="presentation"></span>' );
+				focusGrabber.on( 'focus', function()
+				{
+					iframe.$.contentWindow.focus();
+				});
+				container.append( focusGrabber );
+
+				// Override focus handler on field.
+				field.focus = function()
+				{
+					focusGrabber.focus();
+					this.fire( 'focus' );
+				};
+			}
+
+			field.getInputElement = function(){ return iframe; };
+
+			// Force container to scale in IE.
 			if ( CKEDITOR.env.ie )
+			{
+				container.setStyle( 'display', 'block' );
 				container.setStyle( 'height', ( iframe.$.offsetHeight + 2 ) + 'px' );
-
-			if ( isCustomDomain )
-			{
-				CKEDITOR._cke_htmlToLoad = this.definition.htmlToLoad;
-				iframe.setAttribute( 'src',
-					'javascript:void( (function(){' +
-						   'document.open();' +
-						   'document.domain="' + document.domain + '";' +
-						   'document.write( window.parent.CKEDITOR._cke_htmlToLoad );' +
-						   'delete window.parent.CKEDITOR._cke_htmlToLoad;' +
-						   'document.close();' +
-					'})() )' );
-			}
-			else
-			{
-				var doc = iframe.$.contentWindow.document;
-				doc.open();
-				doc.write( this.definition.htmlToLoad );
-				doc.close();
 			}
 		},
@@ -119,5 +167,5 @@
 
 			setTimeout( function(){
-				editor.insertHtml( html );
+				editor.fire( 'paste', { 'html' : html } );
 			}, 0 );
 
@@ -132,10 +180,10 @@
 						type : 'html',
 						id : 'securityMsg',
-						html : '<div style="white-space:normal;width:340px;">' + editor.lang.clipboard.securityMsg + '</div>'
+						html : '<div style="white-space:normal;width:340px;">' + lang.securityMsg + '</div>'
 					},
 					{
 						type : 'html',
 						id : 'pasteMsg',
-						html : '<div style="white-space:normal;width:340px;">'+editor.lang.clipboard.pasteMsg +'</div>'
+						html : '<div style="white-space:normal;width:340px;">'+lang.pasteMsg +'</div>'
 					},
 					{
@@ -143,12 +191,8 @@
 						id : 'editing_area',
 						style : 'width: 100%; height: 100%;',
-						html : '<fieldset></fieldset>',
+						html : '',
 						focus : function()
 						{
-							var div = this.getElement();
-							var iframe = div.getElementsByTag( 'iframe' );
-							if ( iframe.count() < 1 )
-								return;
-							iframe = iframe.getItem( 0 );
+							var win = this.getInputElement().$.contentWindow;
 
 							// #3291 : JAWS needs the 500ms delay to detect that the editor iframe
@@ -157,5 +201,5 @@
 							setTimeout( function()
 							{
-								iframe.$.contentWindow.focus();
+								win.focus();
 							}, 500 );
 						}
Index: /CKEditor/branches/features/adobeair/_source/plugins/clipboard/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/clipboard/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/clipboard/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -29,5 +29,6 @@
 		body.on( command, onExec );
 
-		doc.$.execCommand( command );
+		// IE6/7: document.execCommand has problem to paste into positioned element.
+		( CKEDITOR.env.version > 7 ? doc.$ : doc.$.selection.createRange() ) [ 'execCommand' ]( command );
 
 		body.removeListener( command, onExec );
@@ -68,4 +69,6 @@
 		exec : function( editor, data )
 		{
+			this.type == 'cut' && fixCut( editor );
+
 			var success = tryToCutCopy( editor, this.type );
 
@@ -79,26 +82,28 @@
 	// Paste command.
 	var pasteCmd =
-		CKEDITOR.env.ie ?
-			{
-				exec : function( editor, data )
+	{
+		canUndo : false,
+
+		exec :
+			CKEDITOR.env.ie ?
+				function( editor )
 				{
 					// Prevent IE from pasting at the begining of the document.
 					editor.focus();
 
-					if ( !editor.fire( 'beforePaste' )
-						&& !execIECommand( editor, 'paste' ) )
-					{
-							editor.openDialog( 'paste' );
+					if ( !editor.document.getBody().fire( 'beforepaste' )
+						 && !execIECommand( editor, 'paste' ) )
+					{
+						editor.fire( 'pasteDialog' );
+						return false;
 					}
 				}
-			}
-		:
-			{
-				exec : function( editor )
+			:
+				function( editor )
 				{
 					try
 					{
-						if ( !editor.fire( 'beforePaste' )
-							&& !editor.document.$.execCommand( 'Paste', false, null ) )
+						if ( !editor.document.getBody().fire( 'beforepaste' )
+							 && !editor.document.$.execCommand( 'Paste', false, null ) )
 						{
 							throw 0;
@@ -107,13 +112,19 @@
 					catch ( e )
 					{
-						// Open the paste dialog.
-						editor.openDialog( 'paste' );
+						setTimeout( function()
+							{
+								editor.fire( 'pasteDialog' );
+							}, 0 );
+						return false;
 					}
 				}
-			};
+	};
 
 	// Listens for some clipboard related keystrokes, so they get customized.
 	var onKey = function( event )
 	{
+		if ( this.mode != 'wysiwyg' )
+			return;
+
 		switch ( event.data.keyCode )
 		{
@@ -122,14 +133,13 @@
 			case CKEDITOR.SHIFT + 45 :		// SHIFT+INS
 
-				var editor = this;
-				editor.fire( 'saveSnapshot' );		// Save before paste
-
-				if ( editor.fire( 'beforePaste' ) )
+				var body = this.document.getBody();
+
+				// Simulate 'beforepaste' event for all none-IEs.
+				if ( !CKEDITOR.env.ie && body.fire( 'beforepaste' ) )
 					event.cancel();
-
-				setTimeout( function()
-					{
-						editor.fire( 'saveSnapshot' );		// Save after paste
-					}, 0 );
+				// Simulate 'paste' event for Opera/Firefox2.
+				else if ( CKEDITOR.env.opera
+						 || CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 )
+					body.fire( 'paste' );
 				return;
 
@@ -139,6 +149,6 @@
 
 				// Save Undo snapshot.
-				editor = this;
-				editor.fire( 'saveSnapshot' );		// Save before paste
+				var editor = this;
+				this.fire( 'saveSnapshot' );		// Save before paste
 				setTimeout( function()
 					{
@@ -148,9 +158,155 @@
 	};
 
+	// Allow to peek clipboard content by redirecting the
+	// pasting content into a temporary bin and grab the content of it.
+	function getClipboardData( evt, mode, callback )
+	{
+		var doc = this.document;
+
+		// Avoid recursions on 'paste' event for IE.
+		if ( CKEDITOR.env.ie && doc.getById( 'cke_pastebin' ) )
+			return;
+
+		// If the browser supports it, get the data directly
+		if (mode == 'text' && evt.data && evt.data.$.clipboardData)
+		{
+			// evt.data.$.clipboardData.types contains all the flavours in Mac's Safari, but not on windows.
+			var plain = evt.data.$.clipboardData.getData( 'text/plain' );
+			if (plain)
+			{
+				evt.data.preventDefault();
+				callback( plain );
+				return;
+			}
+		}
+
+		var sel = this.getSelection(),
+			range = new CKEDITOR.dom.range( doc );
+
+		// Create container to paste into
+		var pastebin = new CKEDITOR.dom.element( mode == 'text' ? 'textarea' : CKEDITOR.env.webkit ? 'body' : 'div', doc );
+		pastebin.setAttribute( 'id', 'cke_pastebin' );
+		// Safari requires a filler node inside the div to have the content pasted into it. (#4882)
+		CKEDITOR.env.webkit && pastebin.append( doc.createText( '\xa0' ) );
+		doc.getBody().append( pastebin );
+
+		pastebin.setStyles(
+			{
+				position : 'absolute',
+				// Position the bin exactly at the position of the selected element
+				// to avoid any subsequent document scroll.
+				top : sel.getStartElement().getDocumentPosition().y + 'px',
+				width : '1px',
+				height : '1px',
+				overflow : 'hidden'
+			});
+
+		// It's definitely a better user experience if we make the paste-bin pretty unnoticed
+		// by pulling it off the screen.
+		pastebin.setStyle( this.config.contentsLangDirection == 'ltr' ? 'left' : 'right', '-1000px' );
+
+		var bms = sel.createBookmarks();
+
+		// Turn off design mode temporarily before give focus to the paste bin.
+		if ( mode == 'text' )
+		{
+			if ( CKEDITOR.env.ie )
+			{
+				var ieRange = doc.getBody().$.createTextRange();
+				ieRange.moveToElementText( pastebin.$ );
+				ieRange.execCommand( 'Paste' );
+				evt.data.preventDefault();
+			}
+			else
+			{
+				doc.$.designMode = 'off';
+				pastebin.$.focus();
+			}
+		}
+		else
+		{
+			range.setStartAt( pastebin, CKEDITOR.POSITION_AFTER_START );
+			range.setEndAt( pastebin, CKEDITOR.POSITION_BEFORE_END );
+			range.select( true );
+		}
+
+		// Wait a while and grab the pasted contents
+		window.setTimeout( function()
+		{
+			mode == 'text' && !CKEDITOR.env.ie && ( doc.$.designMode = 'on' );
+			pastebin.remove();
+
+			// Grab the HTML contents.
+			// We need to look for a apple style wrapper on webkit it also adds
+			// a div wrapper if you copy/paste the body of the editor.
+			// Remove hidden div and restore selection.
+			var bogusSpan;
+			pastebin = ( CKEDITOR.env.webkit
+						 && ( bogusSpan = pastebin.getFirst() )
+						 && ( bogusSpan.is && bogusSpan.hasClass( 'Apple-style-span' ) ) ?
+							bogusSpan : pastebin );
+
+			sel.selectBookmarks( bms );
+			callback( pastebin[ 'get' + ( mode == 'text' ? 'Value' : 'Html' ) ]() );
+		}, 0 );
+	}
+
+	// Cutting off control type element in IE standards breaks the selection entirely. (#4881)
+	function fixCut( editor )
+	{
+		if ( !CKEDITOR.env.ie || editor.document.$.compatMode == 'BackCompat' )
+			return;
+
+		var sel = editor.getSelection();
+		var control;
+		if( ( sel.getType() == CKEDITOR.SELECTION_ELEMENT ) && ( control = sel.getSelectedElement() ) )
+		{
+			var range = sel.getRanges()[ 0 ];
+			var dummy = editor.document.createText( '' );
+			dummy.insertBefore( control );
+			range.setStartBefore( dummy );
+			range.setEndAfter( control );
+			sel.selectRanges( [ range ] );
+
+			// Clear up the fix if the paste wasn't succeeded.
+			setTimeout( function()
+			{
+				// Element still online?
+				if ( control.getParent() )
+				{
+					dummy.remove();
+					sel.selectElement( control );
+				}
+			}, 0 );
+		}
+	}
+
 	// Register the plugin.
 	CKEDITOR.plugins.add( 'clipboard',
 		{
+			requires : [ 'dialog', 'htmldataprocessor' ],
 			init : function( editor )
 			{
+				// Inserts processed data into the editor at the end of the
+				// events chain.
+				editor.on( 'paste', function( evt )
+					{
+						var data = evt.data;
+						if ( data[ 'html' ] )
+							editor.insertHtml( data[ 'html' ] );
+						else if ( data[ 'text' ] )
+							editor.insertText( data[ 'text' ] );
+
+					}, null, null, 1000 );
+
+				editor.on( 'pasteDialog', function( evt )
+					{
+						setTimeout( function()
+						{
+							// Open default paste dialog.
+							editor.openDialog( 'paste' );
+						}, 0 );
+					});
+
 				function addButtonCommand( buttonName, commandName, command, ctxMenuOrder )
 				{
@@ -185,10 +341,48 @@
 				editor.on( 'key', onKey, editor );
 
+				var mode = editor.config.forcePasteAsPlainText ? 'text' : 'html';
+
+				// We'll be catching all pasted content in one line, regardless of whether the
+				// it's introduced by a document command execution (e.g. toolbar buttons) or
+				// user paste behaviors. (e.g. Ctrl-V)
+				editor.on( 'contentDom', function()
+				{
+					var body = editor.document.getBody();
+					body.on( ( (mode == 'text' && CKEDITOR.env.ie) || CKEDITOR.env.webkit ) ? 'paste' : 'beforepaste',
+						function( evt )
+						{
+							if ( depressBeforeEvent )
+								return;
+
+							getClipboardData.call( editor, evt, mode, function ( data )
+							{
+								// The very last guard to make sure the
+								// paste has successfully happened.
+								if ( !data )
+									return;
+
+								var dataTransfer = {};
+								dataTransfer[ mode ] = data;
+								editor.fire( 'paste', dataTransfer );
+							} );
+						});
+
+					body.on( 'beforecut', function() { !depressBeforeEvent && fixCut( editor ); } );
+				});
+
 				// If the "contextmenu" plugin is loaded, register the listeners.
 				if ( editor.contextMenu )
 				{
+					var depressBeforeEvent;
 					function stateFromNamedCommand( command )
 					{
-						return editor.document.$.queryCommandEnabled( command ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED;
+						// IE Bug: queryCommandEnabled('paste') fires also 'beforepaste(copy/cut)',
+						// guard to distinguish from the ordinary sources( either
+						// keyboard paste or execCommand ) (#4874).
+						CKEDITOR.env.ie && ( depressBeforeEvent = 1 );
+
+						var retval = editor.document.$.queryCommandEnabled( command ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED;
+						depressBeforeEvent = 0;
+						return retval;
 					}
 
@@ -207,2 +401,13 @@
 		});
 })();
+
+/**
+ * Fired when a clipboard operation is about to be taken into the editor.
+ * Listeners can manipulate the data to be pasted before having it effectively
+ * inserted into the document.
+ * @name CKEDITOR.editor#paste
+ * @since 3.1
+ * @event
+ * @param {String} [data.html] The HTML data to be pasted. If not available, e.data.text will be defined.
+ * @param {String} [data.text] The plain text data to be pasted, available when plain text operations are to used. If not available, e.data.html will be defined.
+ */
Index: /CKEditor/branches/features/adobeair/_source/plugins/colorbutton/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/colorbutton/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/colorbutton/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -32,10 +32,10 @@
 					panel :
 					{
-						css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ]
+						css : editor.skin.editor.css,
+						attributes : { role : 'listbox', 'aria-label' : lang.panelTitle }
 					},
 
-					onBlock : function( panel, blockName )
-					{
-						var block = panel.addBlock( blockName );
+					onBlock : function( panel, block )
+					{
 						block.autoSize = true;
 						block.element.addClass( 'cke_colorblock' );
@@ -46,6 +46,8 @@
 						var keys = block.keys;
 						keys[ 39 ]	= 'next';					// ARROW-RIGHT
+						keys[ 40 ]	= 'next';					// ARROW-DOWN
 						keys[ 9 ]	= 'next';					// TAB
 						keys[ 37 ]	= 'prev';					// ARROW-LEFT
+						keys[ 38 ]	= 'prev';					// ARROW-UP
 						keys[ CKEDITOR.SHIFT + 9 ]	= 'prev';	// SHIFT + TAB
 						keys[ 32 ]	= 'click';					// SPACE
@@ -58,5 +60,6 @@
 		{
 			var output = [],
-				colors = config.colorButton_colors.split( ',' );
+				colors = config.colorButton_colors.split( ',' ),
+				total = colors.length + ( config.colorButton_enableMore ? 2 : 1 );
 
 			var clickFn = CKEDITOR.tools.addFunction( function( color, type )
@@ -64,6 +67,19 @@
 					if ( color == '?' )
 					{
-						// TODO : Implement the colors dialog.
-						// editor.openDialog( '' );
+						var applyColorStyle = arguments.callee;
+						function onColorDialogClose( evt )
+						{
+							this.removeListener( 'ok', onColorDialogClose );
+							this.removeListener( 'cancel', onColorDialogClose );
+
+							evt.name == 'ok' && applyColorStyle( this.getContentElement( 'picker', 'selectedColor' ).getValue(), type );
+						}
+
+						editor.openDialog( 'colordialog', function()
+						{
+							this.on( 'ok', onColorDialogClose );
+							this.on( 'cancel', onColorDialogClose );
+						} );
+
 						return;
 					}
@@ -73,11 +89,23 @@
 					panel.hide();
 
-					var style = new CKEDITOR.style( config['colorButton_' + type + 'Style'], color && { color : color } );
 
 					editor.fire( 'saveSnapshot' );
+
+					// Clean up any conflicting style within the range.
+					new CKEDITOR.style( config['colorButton_' + type + 'Style'], { color : 'inherit' } ).remove( editor.document );
+
 					if ( color )
-						style.apply( editor.document );
-					else
-						style.remove( editor.document );
+					{
+						var colorStyle = config['colorButton_' + type + 'Style'];
+
+						colorStyle.childRule = type == 'back' ?
+							// It's better to apply background color as the innermost style. (#3599)
+							function(){ return false; } :
+							// Fore color style must be applied inside links instead of around it.
+							function( element ){ return element.getName() != 'a'; };
+
+						new CKEDITOR.style( colorStyle, { color : color } ).apply( editor.document );
+					}
+
 					editor.fire( 'saveSnapshot' );
 				});
@@ -88,6 +116,7 @@
 					' title="', lang.auto, '"' +
 					' onclick="CKEDITOR.tools.callFunction(', clickFn, ',null,\'', type, '\');return false;"' +
-					' href="javascript:void(\'', lang.auto, '\')">' +
-					'<table cellspacing=0 cellpadding=0 width="100%">' +
+					' href="javascript:void(\'', lang.auto, '\')"' +
+					' role="option" aria-posinset="1" aria-setsize="', total, '">' +
+					'<table role="presentation" cellspacing=0 cellpadding=0 width="100%">' +
 						'<tr>' +
 							'<td>' +
@@ -100,5 +129,5 @@
 					'</table>' +
 				'</a>' +
-				'<table cellspacing=0 cellpadding=0 width="100%">' );
+				'<table role="presentation" cellspacing=0 cellpadding=0 width="100%">' );
 
 			// Render the color boxes.
@@ -108,5 +137,14 @@
 					output.push( '</tr><tr>' );
 
-				var colorCode = colors[ i ];
+				var parts = colors[ i ].split( '/' ),
+					colorName = parts[ 0 ],
+					colorCode = parts[ 1 ] || colorName;
+
+				// The data can be only a color code (without #) or colorName + color code
+				// If only a color code is provided, then the colorName is the color with the hash
+				// Convert the color from RGB to RRGGBB for better compatibility with IE and <font>. See #5676
+				if (!parts[1])
+					colorName = '#' + colorName.replace( /^(.)(.)(.)$/, '$1$1$2$2$3$3' );
+
 				var colorLabel = editor.lang.colors[ colorCode ] || colorCode;
 				output.push(
@@ -114,6 +152,7 @@
 						'<a class="cke_colorbox" _cke_focus=1 hidefocus=true' +
 							' title="', colorLabel, '"' +
-							' onclick="CKEDITOR.tools.callFunction(', clickFn, ',\'#', colorCode, '\',\'', type, '\'); return false;"' +
-							' href="javascript:void(\'', colorLabel, '\')">' +
+							' onclick="CKEDITOR.tools.callFunction(', clickFn, ',\'', colorName, '\',\'', type, '\'); return false;"' +
+							' href="javascript:void(\'', colorLabel, '\')"' +
+							' role="option" aria-posinset="', ( i + 2 ), '" aria-setsize="', total, '">' +
 							'<span class="cke_colorbox" style="background-color:#', colorCode, '"></span>' +
 						'</a>' +
@@ -131,5 +170,6 @@
 								' title="', lang.more, '"' +
 								' onclick="CKEDITOR.tools.callFunction(', clickFn, ',\'?\',\'', type, '\');return false;"' +
-								' href="javascript:void(\'', lang.more, '\')">',
+								' href="javascript:void(\'', lang.more, '\')"',
+								' role="option" aria-posinset="', total, '" aria-setsize="', total, '">',
 								lang.more,
 							'</a>' +
@@ -151,9 +191,13 @@
  * config.colorButton_enableMore = false;
  */
-CKEDITOR.config.colorButton_enableMore = false;
+CKEDITOR.config.colorButton_enableMore = true;
 
 /**
  * Defines the colors to be displayed in the color selectors. It's a string
  * containing the hexadecimal notation for HTML colors, without the "#" prefix.
+ *
+ * Since 3.3: A name may be optionally defined by prefixing the entries with the
+ * name and the slash character. For example, "FontColor1/FF9900" will be
+ * displayed as the color #FF9900 in the selector, but will be outputted as "FontColor1".
  * @type String
  * @default '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,F0F8FF,E6E6FA,FFF'
@@ -161,4 +205,6 @@
  * // Brazil colors only.
  * config.colorButton_colors = '00923E,F8C100,28166F';
+ * @example
+ * config.colorButton_colors = 'FontColor1/FF9900,FontColor2/0066CC,FontColor3/F00'
  */
 CKEDITOR.config.colorButton_colors =
Index: /CKEditor/branches/features/adobeair/_source/plugins/colordialog/dialogs/colordialog.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/colordialog/dialogs/colordialog.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/colordialog/dialogs/colordialog.js	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -23,19 +23,155 @@
 		}
 
-		var table = new $el( 'table' );
-		createColorTable();
-
-		var cellMouseover = function( event )
-		{
-			var color = new $el( event.data.getTarget() ).getAttribute( 'title' );
-			$doc.getById( 'hicolor' ).setStyle( 'background-color', color );
-			$doc.getById( 'hicolortext' ).setHtml( color );
-		};
-
-		var cellClick = function( event )
-		{
-			var color = new $el( event.data.getTarget() ).getAttribute( 'title' );
-			dialog.getContentElement( 'picker', 'selectedColor' ).setValue( color );
-		};
+		function clearSelected()
+		{
+			$doc.getById( selHiColorId ).removeStyle( 'background-color' );
+			dialog.getContentElement( 'picker', 'selectedColor' ).setValue( '' );
+		}
+
+		function updateSelected( evt )
+		{
+			if ( ! (evt instanceof CKEDITOR.dom.event ) )
+				evt = new CKEDITOR.dom.event( evt );
+
+			var target = evt.getTarget(),
+					color;
+
+			if ( target.getName() == 'a' && ( color = target.getChild( 0 ).getHtml() ) )
+				dialog.getContentElement( 'picker', 'selectedColor' ).setValue( color );
+		}
+
+		function updateHighlight( event )
+		{
+			if ( ! (event instanceof CKEDITOR.dom.event ) )
+				event = event.data;
+
+			var target = event.getTarget(),
+					color;
+
+			if ( target.getName() == 'a' && ( color = target.getChild( 0 ).getHtml() ) )
+			{
+				$doc.getById( hicolorId ).setStyle( 'background-color', color );
+				$doc.getById( hicolorTextId ).setHtml( color );
+			}
+		}
+
+		function clearHighlight()
+		{
+			$doc.getById( hicolorId ).removeStyle( 'background-color' );
+			$doc.getById( hicolorTextId ).setHtml( '&nbsp;' );
+		}
+
+		var onMouseout = $tools.addFunction( clearHighlight );
+
+		var onClick = updateSelected,
+				onClickHandler = CKEDITOR.tools.addFunction( onClick );
+
+		var onFocus = updateHighlight,
+				onBlur = clearHighlight;
+
+		var onKeydownHandler = CKEDITOR.tools.addFunction( function( ev )
+		{
+			ev = new CKEDITOR.dom.event( ev );
+			var element = ev.getTarget();
+			var relative, nodeToMove;
+			var keystroke = ev.getKeystroke();
+			var rtl = editor.lang.dir == 'rtl';
+
+			switch ( keystroke )
+			{
+				// UP-ARROW
+				case 38 :
+					// relative is TR
+					if ( ( relative = element.getParent().getParent().getPrevious() ) )
+					{
+						nodeToMove = relative.getChild( [element.getParent().getIndex(), 0] );
+						nodeToMove.focus();
+						onBlur( ev, element );
+						onFocus( ev, nodeToMove );
+					}
+					ev.preventDefault();
+					break;
+				// DOWN-ARROW
+				case 40 :
+					// relative is TR
+					if ( ( relative = element.getParent().getParent().getNext() ) )
+					{
+						nodeToMove = relative.getChild( [ element.getParent().getIndex(), 0 ] );
+						if ( nodeToMove && nodeToMove.type == 1 )
+						{
+							nodeToMove.focus();
+							onBlur( ev, element );
+							onFocus( ev, nodeToMove );
+						}
+					}
+					ev.preventDefault();
+					break;
+				// SPACE
+				// ENTER is already handled as onClick
+				case 32 :
+					onClick( ev );
+					ev.preventDefault();
+					break;
+
+				// RIGHT-ARROW
+				case rtl ? 37 : 39 :
+					// relative is TD
+					if ( ( relative = element.getParent().getNext() ) )
+					{
+						nodeToMove = relative.getChild( 0 );
+						if ( nodeToMove.type == 1 )
+						{
+							nodeToMove.focus();
+							onBlur( ev, element );
+							onFocus( ev, nodeToMove );
+							ev.preventDefault( true );
+						}
+						else
+							onBlur( null, element );
+					}
+					// relative is TR
+					else if ( ( relative = element.getParent().getParent().getNext() ) )
+					{
+						nodeToMove = relative.getChild( [ 0, 0 ] );
+						if ( nodeToMove && nodeToMove.type == 1 )
+						{
+							nodeToMove.focus();
+							onBlur( ev, element );
+							onFocus( ev, nodeToMove );
+							ev.preventDefault( true );
+						}
+						else
+							onBlur( null, element );
+					}
+					break;
+
+				// LEFT-ARROW
+				case rtl ? 39 : 37 :
+					// relative is TD
+					if ( ( relative = element.getParent().getPrevious() ) )
+					{
+						nodeToMove = relative.getChild( 0 );
+						nodeToMove.focus();
+						onBlur( ev, element );
+						onFocus( ev, nodeToMove );
+						ev.preventDefault( true );
+					}
+					// relative is TR
+					else if ( ( relative = element.getParent().getParent().getPrevious() ) )
+					{
+						nodeToMove = relative.getLast().getChild( 0 );
+						nodeToMove.focus();
+						onBlur( ev, element );
+						onFocus( ev, nodeToMove );
+						ev.preventDefault( true );
+					}
+					else
+						onBlur( null, element );
+					break;
+				default :
+					// Do not stop not handled events.
+					return;
+			}
+		});
 
 		function createColorTable()
@@ -71,6 +207,13 @@
 				cell.setStyle( 'height', '15px' );
 
-				// Pass unparsed color value in some markup-degradable form.
-				cell.setAttribute( 'title', color );
+				var index = cell.$.cellIndex + 1 + 18 * targetRow.rowIndex;
+				cell.append( CKEDITOR.dom.element.createFromHtml(
+						'<a href="javascript: void(0);" role="option"' +
+						' aria-posinset="' + index + '"' +
+						' aria-setsize="' + 13 * 18 + '"' +
+						' style="cursor: pointer;display:block;width:100%;height:100% " title="'+ CKEDITOR.tools.htmlEncode( color )+ '"' +
+						' onkeydown="CKEDITOR.tools.callFunction( ' + onKeydownHandler + ', event, this )"' +
+						' onclick="CKEDITOR.tools.callFunction(' + onClickHandler + ', event, this ); return false;"' +
+						' tabindex="-1"><span class="cke_voice_label">' + color + '</span>&nbsp;</a>', CKEDITOR.document ) );
 			}
 
@@ -96,15 +239,14 @@
 		}
 
-		function clear()
-		{
-			$doc.getById( 'selhicolor' ).removeStyle( 'background-color' );
-			dialog.getContentElement( 'picker', 'selectedColor' ).setValue( '' );
-		}
-
-		var clearActual = $tools.addFunction( function()
-		{
-			$doc.getById( 'hicolor' ).removeStyle( 'background-color' );
-			$doc.getById( 'hicolortext' ).setHtml( '&nbsp;' );
-		} );
+		var table = new $el( 'table' );
+		createColorTable();
+
+		var numbering = function( id )
+			{
+				return id + CKEDITOR.tools.getNextNumber();
+			},
+			hicolorId = numbering( 'hicolor' ),
+			hicolorTextId = numbering( 'hicolortext' ),
+			selHiColorId = numbering( 'selhicolor' );
 
 		return {
@@ -132,10 +274,15 @@
 								{
 									type : 'html',
-									html : '<table onmouseout="CKEDITOR.tools.callFunction( ' + clearActual + ' );">' + table.getHtml() + '</table>',
+									html : '<table role="listbox" aria-labelledby="color_table_label" onmouseout="CKEDITOR.tools.callFunction( ' + onMouseout + ' );">' + table.getHtml() + '</table>' +
+												'<span id="color_table_label" class="cke_voice_label">' + lang.options +'</span>',
 									onLoad : function()
 									{
 										var table = CKEDITOR.document.getById( this.domId );
-										table.on( 'mouseover', cellMouseover );
-										table.on( 'click', cellClick );
+										table.on( 'mouseover', updateHighlight );
+									},
+									focus: function()
+									{
+										var firstColor = this.getElement().getElementsByTag( 'a' ).getItem( 0 );
+										firstColor.focus();
 									}
 								},
@@ -150,11 +297,12 @@
 											type : 'html',
 											html : '<span>' + lang.highlight +'</span>\
-												<div id="hicolor" style="border: 1px solid; height: 74px; width: 74px;"></div>\
-												<div id="hicolortext">&nbsp;</div>\
-												<span>' + lang.selected +'</span>\
-												<div id="selhicolor" style="border: 1px solid; height: 20px; width: 74px;"></div>'
+												<div id="' + hicolorId + '" style="border: 1px solid; height: 74px; width: 74px;"></div>\
+												<div id="' + hicolorTextId + '">&nbsp;</div><span>' + lang.selected + '</span>\
+												<div id="' + selHiColorId + '" style="border: 1px solid; height: 20px; width: 74px;"></div>'
 										},
 										{
 											type : 'text',
+											label : lang.selected,
+											labelStyle: 'display:none',
 											id : 'selectedColor',
 											style : 'width: 74px',
@@ -164,9 +312,9 @@
 												try
 												{
-													$doc.getById( 'selhicolor' ).setStyle( 'background-color', this.getValue() );
+													$doc.getById( selHiColorId ).setStyle( 'background-color', this.getValue() );
 												}
 												catch ( e )
 												{
-													clear();
+													clearSelected();
 												}
 											}
@@ -178,5 +326,5 @@
 											style : 'margin-top: 5px',
 											label : lang.clear,
-											onClick : clear
+											onClick : clearSelected
 										}
 									]
Index: /CKEditor/branches/features/adobeair/_source/plugins/colordialog/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/colordialog/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/colordialog/plugin.js	(revision 5613)
@@ -1,3 +1,3 @@
-( function()
+﻿( function()
 {
 	CKEDITOR.plugins.colordialog =
Index: /CKEditor/branches/features/adobeair/_source/plugins/contextmenu/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/contextmenu/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/contextmenu/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -36,4 +36,16 @@
 			},
 			this);
+
+		this.definition =
+		{
+			panel:
+			{
+				className : editor.skinClass + ' cke_contextmenu',
+				attributes :
+				{
+					'aria-label' : editor.lang.contextmenu.options
+				}
+			}
+		};
 	},
 
@@ -52,12 +64,8 @@
 			else
 			{
-				menu = this._.menu = new CKEDITOR.menu( editor );
+				menu = this._.menu = new CKEDITOR.menu( editor, this.definition );
 				menu.onClick = CKEDITOR.tools.bind( function( item )
 				{
-					var noUnlock = true;
 					menu.hide();
-
-					if ( CKEDITOR.env.ie )
-						menu.onEscape();
 
 					if ( item.onClick )
@@ -66,13 +74,26 @@
 						editor.execCommand( item.command );
 
-					noUnlock = false;
 				}, this );
 
-				menu.onEscape = function()
-				{
-					editor.focus();
-
-					if ( CKEDITOR.env.ie )
-						editor.getSelection().unlock( true );
+				menu.onEscape = function( keystroke )
+				{
+					var parent = this.parent;
+					// 1. If it's sub-menu, restore the last focused item
+					// of upper level menu.
+					// 2. In case of a top-menu, close it.
+					if ( parent )
+					{
+						parent._.panel.hideChild();
+						// Restore parent block item focus.
+						var parentBlock = parent._.panel._.panel._.currentBlock,
+							parentFocusIndex =  parentBlock._.focusIndex;
+						parentBlock._.markItem( parentFocusIndex );
+					}
+					else if ( keystroke == 27 )
+					{
+						this.hide();
+						editor.focus();
+					}
+					return false;
 				};
 			}
@@ -84,9 +105,4 @@
 				element = selection && selection.getStartElement();
 
-			// Lock the selection in IE, so it can be restored when closing the
-			// menu.
-			if ( CKEDITOR.env.ie )
-				selection.lock();
-
 			menu.onHide = CKEDITOR.tools.bind( function()
 				{
@@ -94,5 +110,8 @@
 
 					if ( CKEDITOR.env.ie )
-						editor.getSelection().unlock();
+					{
+						var selection = editor.getSelection();
+						selection && selection.unlock();
+					}
 
 					this.onHide && this.onHide();
@@ -120,5 +139,6 @@
 			}
 
-			menu.show( offsetParent, corner || ( editor.lang.dir == 'rtl' ? 2 : 1 ), offsetX, offsetY );
+			// Don't show context menu with zero items.
+			menu.items.length && menu.show( offsetParent, corner || ( editor.lang.dir == 'rtl' ? 2 : 1 ), offsetX, offsetY );
 		}
 	},
@@ -126,9 +146,67 @@
 	proto :
 	{
-		addTarget : function( element )
-		{
+		addTarget : function( element, nativeContextMenuOnCtrl )
+		{
+			// Opera doesn't support 'contextmenu' event, we have duo approaches employed here:
+			// 1. Inherit the 'button override' hack we introduced in v2 (#4530), while this require the Opera browser
+			//  option 'Allow script to detect context menu/right click events' to be always turned on.
+			// 2. Considering the fact that ctrl/meta key is not been occupied
+			//  for multiple range selecting (like Gecko), we use this key
+			//  combination as a fallback for triggering context-menu. (#4530)
+			if ( CKEDITOR.env.opera )
+			{
+				var contextMenuOverrideButton;
+				element.on( 'mousedown', function( evt )
+				{
+					evt = evt.data;
+					if ( evt.$.button != 2 )
+					{
+						if ( evt.getKeystroke() == CKEDITOR.CTRL + 1 )
+							element.fire( 'contextmenu', evt );
+						return;
+					}
+
+					if ( nativeContextMenuOnCtrl
+						 && ( CKEDITOR.env.mac ? evt.$.metaKey : evt.$.ctrlKey ) )
+						return;
+
+					var target = evt.getTarget();
+
+					if ( !contextMenuOverrideButton )
+					{
+						var ownerDoc =  target.getDocument();
+						contextMenuOverrideButton = ownerDoc.createElement( 'input' ) ;
+						contextMenuOverrideButton.$.type = 'button' ;
+						ownerDoc.getBody().append( contextMenuOverrideButton ) ;
+					}
+
+					contextMenuOverrideButton.setAttribute( 'style', 'position:absolute;top:' + ( evt.$.clientY - 2 ) +
+						'px;left:' + ( evt.$.clientX - 2 ) +
+						'px;width:5px;height:5px;opacity:0.01' );
+
+				} );
+
+				element.on( 'mouseup', function ( evt )
+				{
+					if ( contextMenuOverrideButton )
+					{
+						contextMenuOverrideButton.remove();
+						contextMenuOverrideButton = undefined;
+						// Simulate 'contextmenu' event.
+						element.fire( 'contextmenu', evt.data );
+					}
+				} );
+			}
+
 			element.on( 'contextmenu', function( event )
 				{
 					var domEvent = event.data;
+
+					if ( nativeContextMenuOnCtrl &&
+					     // Safari on Windows always show 'ctrlKey' as true in 'contextmenu' event,
+						// which make this property unreliable. (#4826)
+					     ( CKEDITOR.env.webkit ? holdCtrlKey : ( CKEDITOR.env.mac ? domEvent.$.metaKey : domEvent.$.ctrlKey ) ) )
+						return;
+
 
 					// Cancel the browser context menu.
@@ -141,9 +219,26 @@
 					CKEDITOR.tools.setTimeout( function()
 						{
-							this._.onMenu( offsetParent, null, offsetX, offsetY );
+							this.show( offsetParent, null, offsetX, offsetY );
 						},
 						0, this );
 				},
 				this );
+
+			if ( CKEDITOR.env.webkit )
+			{
+				var holdCtrlKey,
+					onKeyDown = function( event )
+					{
+						holdCtrlKey = CKEDITOR.env.mac ? event.data.$.metaKey : event.data.$.ctrlKey ;
+					},
+					resetOnKeyUp = function()
+					{
+						holdCtrlKey = 0;
+					};
+
+				element.on( 'keydown', onKeyDown );
+				element.on( 'keyup', resetOnKeyUp );
+				element.on( 'contextmenu', resetOnKeyUp );
+			}
 		},
 
@@ -156,4 +251,13 @@
 		{
 			this.editor.focus();
+
+			// Selection will be unavailable after context menu shows up
+			// in IE, lock it now.
+			if ( CKEDITOR.env.ie )
+			{
+				var selection = this.editor.getSelection();
+				selection && selection.lock();
+			}
+
 			this._.onMenu( offsetParent || CKEDITOR.document.getDocumentElement(), corner, offsetX || 0, offsetY || 0 );
 		}
@@ -161,18 +265,12 @@
 });
 
-// Fix the "contextmenu" event for DOM elements.
-// We may do this if we identify browsers that don't support the context meny
-// event on element directly. Leaving here for reference.
-//if ( <specific browsers> )
-//{
-//	CKEDITOR.dom.element.prototype.on = CKEDITOR.tools.override( CKEDITOR.dom.element.prototype.on, function( originalOn )
-//		{
-//			return function( eventName )
-//				{
-//					if ( eventName != 'contextmenu' )
-//						return originalOn.apply( this, arguments );
-//
-//					// TODO : Implement the fix.
-//				};
-//		});
-//}
+/**
+ * Whether to show the browser native context menu when the CTRL or the
+ * META (Mac) key is pressed while opening the context menu.
+ * @name CKEDITOR.config.browserContextMenuOnCtrl
+ * @since 3.0.2
+ * @type Boolean
+ * @default true
+ * @example
+ * config.browserContextMenuOnCtrl = false;
+ */
Index: /CKEditor/branches/features/adobeair/_source/plugins/dialog/dialogDefinition.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/dialog/dialogDefinition.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/dialog/dialogDefinition.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/plugins/dialog/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/dialog/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/dialog/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -7,9 +7,4 @@
  * @fileOverview The floating dialog plugin.
  */
-
-CKEDITOR.plugins.add( 'dialog',
-	{
-		requires : [ 'dialogui' ]
-	});
 
 /**
@@ -73,7 +68,4 @@
 		return null;
 	}
-
-	// Stores dialog related data from skin definitions. e.g. margin sizes.
-	var skinData = {};
 
 	/**
@@ -90,9 +82,4 @@
 		// Load the dialog definition.
 		var definition = CKEDITOR.dialog._.dialogDefinitions[ dialogName ];
-		if ( !definition )
-		{
-			console.log( 'Error: The dialog "' + dialogName + '" is not defined.' );
-			return;
-		}
 
 		// Completes the definition with the default values.
@@ -106,12 +93,4 @@
 		definition = new definitionObject( this, definition );
 
-		// Fire the "dialogDefinition" event, making it possible to customize
-		// the dialog definition.
-		this.definition = definition = CKEDITOR.fire( 'dialogDefinition',
-			{
-				name : dialogName,
-				definition : definition
-			}
-			, editor ).definition;
 
 		var doc = CKEDITOR.document;
@@ -149,4 +128,10 @@
 		this.parts = themeBuilt.parts;
 
+		CKEDITOR.tools.setTimeout( function()
+			{
+				editor.fire( 'ariaWidget', this.parts.contents );
+			},
+			0, this );
+
 		// Set the startup styles for the dialog, avoiding it enlarging the
 		// page size on the dialog creation.
@@ -162,4 +147,12 @@
 		CKEDITOR.event.call( this );
 
+		// Fire the "dialogDefinition" event, making it possible to customize
+		// the dialog definition.
+		this.definition = definition = CKEDITOR.fire( 'dialogDefinition',
+			{
+				name : dialogName,
+				definition : definition
+			}
+			, editor ).definition;
 		// Initialize load, show, hide, ok and cancel events.
 		if ( definition.onLoad )
@@ -256,5 +249,26 @@
 					if ( this.fire( 'cancel', { hide : true } ).hide !== false )
 						this.hide();
+					evt.data.preventDefault();
 				}, this );
+
+		// Sort focus list according to tab order definitions.
+		function setupFocus()
+		{
+			var focusList = me._.focusList;
+			focusList.sort( function( a, b )
+				{
+					// Mimics browser tab order logics;
+					if ( a.tabIndex != b.tabIndex )
+						return b.tabIndex - a.tabIndex;
+					//  Sort is not stable in some browsers,
+					// fall-back the comparator to 'focusIndex';
+					else
+						return a.focusIndex - b.focusIndex;
+				});
+
+			var size = focusList.length;
+			for ( var i = 0; i < size; i++ )
+				focusList[ i ].focusIndex = i;
+		}
 
 		function changeFocus( forward )
@@ -265,9 +279,20 @@
 				return;
 
-			var currentIndex = ( me._.currentFocusIndex + offset + focusList.length ) % focusList.length;
+			var current = me._.currentFocusIndex;
+
+			// Trigger the 'blur' event of  any input element before anything,
+			// since certain UI updates may depend on it.
+			try
+			{
+				focusList[ current ].getInputElement().$.blur();
+			}
+			catch( e ){}
+
+			var startIndex = ( current + offset + focusList.length ) % focusList.length,
+				currentIndex = startIndex;
 			while ( !focusList[ currentIndex ].isFocusable() )
 			{
 				currentIndex = ( currentIndex + offset + focusList.length ) % focusList.length;
-				if ( currentIndex == me._.currentFocusIndex )
+				if ( currentIndex == startIndex )
 					break;
 			}
@@ -279,4 +304,8 @@
 		}
 
+		this.changeFocus = changeFocus;
+
+		var processed;
+
 		function focusKeydownHandler( evt )
 		{
@@ -286,5 +315,7 @@
 
 			var keystroke = evt.data.getKeystroke(),
-				processed = false;
+				rtl = editor.lang.dir == 'rtl';
+
+			processed = 0;
 			if ( keystroke == 9 || keystroke == CKEDITOR.SHIFT + 9 )
 			{
@@ -305,20 +336,28 @@
 				}
 
-				processed = true;
-			}
-			else if ( keystroke == CKEDITOR.ALT + 121 && !me._.tabBarMode )
+				processed = 1;
+			}
+			else if ( keystroke == CKEDITOR.ALT + 121 && !me._.tabBarMode && me.getPageCount() > 1 )
 			{
 				// Alt-F10 puts focus into the current tab item in the tab bar.
 				me._.tabBarMode = true;
 				me._.tabs[ me._.currentTabId ][ 0 ].focus();
-				processed = true;
+				processed = 1;
 			}
 			else if ( ( keystroke == 37 || keystroke == 39 ) && me._.tabBarMode )
 			{
 				// Arrow keys - used for changing tabs.
-				nextId = ( keystroke == 37 ? getPreviousVisibleTab.call( me ) : getNextVisibleTab.call( me ) );
+				nextId = ( keystroke == ( rtl ? 39 : 37 ) ? getPreviousVisibleTab.call( me ) : getNextVisibleTab.call( me ) );
 				me.selectPage( nextId );
 				me._.tabs[ nextId ][ 0 ].focus();
-				processed = true;
+				processed = 1;
+			}
+			else if ( ( keystroke == 13 || keystroke == 32 ) && me._.tabBarMode )
+			{
+				this.selectPage( this._.currentTabId );
+				this._.tabBarMode = false;
+				this._.currentFocusIndex = -1;
+				changeFocus( true );
+				processed = 1;
 			}
 
@@ -330,18 +369,25 @@
 		}
 
+		function focusKeyPressHandler( evt )
+		{
+			processed && evt.data.preventDefault();
+		}
+
+		var dialogElement = this._.element;
 		// Add the dialog keyboard handlers.
 		this.on( 'show', function()
 			{
-				CKEDITOR.document.on( 'keydown', focusKeydownHandler, this, null, 0 );
-
-				if ( CKEDITOR.env.ie6Compat )
-				{
-					var coverDoc = coverElement.getChild( 0 ).getFrameDocument();
-					coverDoc.on( 'keydown', focusKeydownHandler, this, null, 0 );
-				}
+				dialogElement.on( 'keydown', focusKeydownHandler, this, null, 0 );
+				// Some browsers instead, don't cancel key events in the keydown, but in the
+				// keypress. So we must do a longer trip in those cases. (#4531)
+				if ( CKEDITOR.env.opera || ( CKEDITOR.env.gecko && CKEDITOR.env.mac ) )
+					dialogElement.on( 'keypress', focusKeyPressHandler, this );
+
 			} );
 		this.on( 'hide', function()
 			{
-				CKEDITOR.document.removeListener( 'keydown', focusKeydownHandler );
+				dialogElement.removeListener( 'keydown', focusKeydownHandler );
+				if ( CKEDITOR.env.opera || ( CKEDITOR.env.gecko && CKEDITOR.env.mac ) )
+					dialogElement.removeListener( 'keypress', focusKeyPressHandler );
 			} );
 		this.on( 'iframeAdded', function( evt )
@@ -354,8 +400,28 @@
 		this.on( 'show', function()
 			{
-				if ( !this._.hasFocus )
+				// Setup tabIndex on showing the dialog instead of on loading
+				// to allow dynamic tab order happen in dialog definition.
+				setupFocus();
+
+				if ( editor.config.dialog_startupFocusTab
+					&& me._.tabIdList.length > 1 )
+				{
+					me._.tabBarMode = true;
+					me._.tabs[ me._.currentTabId ][ 0 ].focus();
+				}
+				else if ( !this._.hasFocus )
 				{
 					this._.currentFocusIndex = -1;
-					changeFocus( true );
+
+					// Decide where to put the initial focus.
+					if ( definition.onFocus )
+					{
+						var initialFocus = definition.onFocus.call( this );
+						// Focus the field that the user specified.
+						initialFocus && initialFocus.focus();
+					}
+					// Focus the first field in layout order.
+					else
+						changeFocus( true );
 
 					/*
@@ -406,26 +472,20 @@
 			this.addPage( definition.contents[i] );
 
-		var tabRegex = /cke_dialog_tab(\s|$|_)/,
-			tabOuterRegex = /cke_dialog_tab(\s|$)/;
 		this.parts['tabs'].on( 'click', function( evt )
 				{
-					var target = evt.data.getTarget(), firstNode = target, id, page;
-
+					var target = evt.data.getTarget();
 					// If we aren't inside a tab, bail out.
-					if ( !( tabRegex.test( target.$.className ) || target.getName() == 'a' ) )
-						return;
-
-					// Find the outer <td> container of the tab.
-					id = target.$.id.substr( 0, target.$.id.lastIndexOf( '_' ) );
-					this.selectPage( id );
-
-					if ( this._.tabBarMode )
+					if ( target.hasClass( 'cke_dialog_tab' ) )
 					{
-						this._.tabBarMode = false;
-						this._.currentFocusIndex = -1;
-						changeFocus( true );
+						var id = target.$.id;
+						this.selectPage( id.substr( 0, id.lastIndexOf( '_' ) ) );
+						if ( this._.tabBarMode )
+						{
+							this._.tabBarMode = false;
+							this._.currentFocusIndex = -1;
+							changeFocus( true );
+						}
+						evt.data.preventDefault();
 					}
-
-					evt.data.preventDefault();
 				}, this );
 
@@ -443,15 +503,16 @@
 		for ( i = 0 ; i < buttons.length ; i++ )
 			this._.buttons[ buttons[i].id ] = buttons[i];
-
-		CKEDITOR.skins.load( editor, 'dialog' );
 	};
 
 	// Focusable interface. Use it via dialog.addFocusable.
-	function Focusable( dialog, element, index ) {
+	function Focusable( dialog, element, index )
+	{
 		this.element = element;
 		this.focusIndex = index;
+		// TODO: support tabIndex for focusables.
+		this.tabIndex = 0;
 		this.isFocusable = function()
 		{
-			return true;
+			return !element.getAttribute( 'disabled' ) && element.isVisible();
 		};
 		this.focus = function()
@@ -478,4 +539,10 @@
 	CKEDITOR.dialog.prototype =
 	{
+		destroy : function()
+		{
+			this.hide();
+			this._.element.remove();
+		},
+
 		/**
 		 * Resizes the dialog.
@@ -581,6 +648,10 @@
 		show : function()
 		{
-			if ( this._.editor.mode == 'wysiwyg' && CKEDITOR.env.ie )
-				this._.editor.getSelection().lock();
+			var editor = this._.editor;
+			if ( editor.mode == 'wysiwyg' && CKEDITOR.env.ie )
+			{
+				var selection = editor.getSelection();
+				selection && selection.lock();
+			}
 
 			// Insert the dialog's element to the root document.
@@ -590,5 +661,5 @@
 				element.appendTo( CKEDITOR.document.getBody() );
 			else
-				return;
+				element.setStyle( 'display', 'block' );
 
 			CKEDITOR.dialog.fire( 'uiReady', this );
@@ -626,12 +697,12 @@
 				CKEDITOR.dialog._.currentTop = this;
 				this._.parentDialog = null;
-				addCover( this._.editor );
-
-				CKEDITOR.document.on( 'keydown', accessKeyDownHandler );
-				CKEDITOR.document.on( 'keyup', accessKeyUpHandler );
+				showCover( this._.editor );
+
+				element.on( 'keydown', accessKeyDownHandler );
+				element.on( CKEDITOR.env.opera ? 'keypress' : 'keyup', accessKeyUpHandler );
 
 				// Prevent some keys from bubbling up. (#4269)
 				for ( var event in { keyup :1, keydown :1, keypress :1 } )
-					CKEDITOR.document.on( event, preventKeyBubbling );
+					element.on( event, preventKeyBubbling );
 			}
 			else
@@ -667,4 +738,5 @@
 					this.fireOnce( 'load', {} );
 					this.fire( 'show', {} );
+					this._.editor.fire( 'dialogShow', this );
 
 					// Save the initial values of the dialog.
@@ -729,20 +801,22 @@
 		hide : function()
 		{
+			if ( !this.parts.dialog.isVisible() )
+				return;
+
 			this.fire( 'hide', {} );
-
-			// Remove the dialog's element from the root document.
+			this._.editor.fire( 'dialogHide', this );
 			var element = this._.element;
-			if ( !element.getParent() )
-				return;
-
-			element.remove();
+			element.setStyle( 'display', 'none' );
 			this.parts.dialog.setStyle( 'visibility', 'hidden' );
-
 			// Unregister all access keys associated with this dialog.
 			unregisterAccessKey( this );
 
+			// Close any child(top) dialogs first.
+			while( CKEDITOR.dialog._.currentTop != this )
+				CKEDITOR.dialog._.currentTop.hide();
+
 			// Maintain dialog ordering and remove cover if needed.
 			if ( !this._.parentDialog )
-				removeCover();
+				hideCover();
 			else
 			{
@@ -758,11 +832,10 @@
 
 				// Remove access key handlers.
-				CKEDITOR.document.removeListener( 'keydown', accessKeyDownHandler );
-				CKEDITOR.document.removeListener( 'keyup', accessKeyUpHandler );
-				CKEDITOR.document.removeListener( 'keypress', accessKeyUpHandler );
+				element.removeListener( 'keydown', accessKeyDownHandler );
+				element.removeListener( CKEDITOR.env.opera ? 'keypress' : 'keyup', accessKeyUpHandler );
 
 				// Remove bubbling-prevention handler. (#4269)
 				for ( var event in { keyup :1, keydown :1, keypress :1 } )
-					CKEDITOR.document.removeListener( event, preventKeyBubbling );
+					element.removeListener( event, preventKeyBubbling );
 
 				var editor = this._.editor;
@@ -770,10 +843,13 @@
 
 				if ( editor.mode == 'wysiwyg' && CKEDITOR.env.ie )
-					editor.getSelection().unlock( true );
+				{
+					var selection = editor.getSelection();
+					selection && selection.unlock( true );
+				}
 			}
 			else
 				CKEDITOR.dialog._.currentZIndex -= 10;
 
-
+			delete this._.parentDialog;
 			// Reset the initial values of the dialog.
 			this.foreach( function( contentObj ) { contentObj.resetInitValue && contentObj.resetInitValue(); } );
@@ -802,27 +878,30 @@
 			// Create the HTML for the tab and the content block.
 			var page = CKEDITOR.dom.element.createFromHtml( pageHtml.join( '' ) );
-			var tab = CKEDITOR.dom.element.createFromHtml( [
+			page.setAttribute( 'role', 'tabpanel' );
+
+			var env = CKEDITOR.env;
+			var tabId = contents.id + '_' + CKEDITOR.tools.getNextNumber(),
+				 tab = CKEDITOR.dom.element.createFromHtml( [
 					'<a class="cke_dialog_tab"',
 						( this._.pageCount > 0 ? ' cke_last' : 'cke_first' ),
 						titleHtml,
 						( !!contents.hidden ? ' style="display:none"' : '' ),
-						' id="', contents.id + '_', CKEDITOR.tools.getNextNumber(), '"' +
-						' href="javascript:void(0)"',
-						' hidefocus="true">',
+						' id="', tabId, '"',
+						env.gecko && env.version >= 10900 && !env.hc ? '' : ' href="javascript:void(0)"',
+						' tabIndex="-1"',
+						' hidefocus="true"',
+						' role="tab">',
 							contents.label,
 					'</a>'
 				].join( '' ) );
 
-			// If only a single page exist, a different style is used in the central pane.
-			if ( this._.pageCount === 0 )
-				this.parts.dialog.addClass( 'cke_single_page' );
-			else
-				this.parts.dialog.removeClass( 'cke_single_page' );
+			page.setAttribute( 'aria-labelledby', tabId );
 
 			// Take records for the tabs and elements created.
 			this._.tabs[ contents.id ] = [ tab, page ];
 			this._.tabIdList.push( contents.id );
-			this._.pageCount++;
+			!contents.hidden && this._.pageCount++;
 			this._.lastTab = tab;
+			this.updateStyle();
 
 			var contentMap = this._.contents[ contents.id ] = {},
@@ -872,4 +951,5 @@
 					page.hide();
 				}
+				page.setAttribute( 'aria-hidden', i != id );
 			}
 
@@ -881,4 +961,11 @@
 		},
 
+		// Dialog state-specific style updates.
+		updateStyle : function()
+		{
+			// If only a single page shown, a different style is used in the central pane.
+			this.parts.dialog[ ( this._.pageCount === 1 ? 'add' : 'remove' ) + 'Class' ]( 'cke_single_page' );
+		},
+
 		/**
 		 * Hides a page's tab away from the dialog.
@@ -890,7 +977,13 @@
 		{
 			var tab = this._.tabs[id] && this._.tabs[id][0];
-			if ( !tab )
+			if ( !tab || this._.pageCount == 1 )
 				return;
+			// Switch to other tab first when we're hiding the active tab.
+			else if ( id == this._.currentTabId )
+				this.selectPage( getPreviousVisibleTab.call( this ) );
+
 			tab.hide();
+			this._.pageCount--;
+			this.updateStyle();
 		},
 
@@ -907,4 +1000,6 @@
 				return;
 			tab.show();
+			this._.pageCount++;
+			this.updateStyle();
 		},
 
@@ -941,5 +1036,6 @@
 		getContentElement : function( pageId, elementId )
 		{
-			return this._.contents[pageId][elementId];
+			var page = this._.contents[ pageId ];
+			return page && page[ elementId ];
 		},
 
@@ -1188,9 +1284,12 @@
 	var defaultDialogDefinition =
 	{
-		resizable : CKEDITOR.DIALOG_RESIZE_NONE,
+		resizable : CKEDITOR.DIALOG_RESIZE_BOTH,
 		minWidth : 600,
 		minHeight : 400,
 		buttons : [ CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ]
 	};
+
+	// The buttons in MacOS Apps are in reverse order #4750
+	CKEDITOR.env.mac && defaultDialogDefinition.buttons.reverse();
 
 	// Tool function used to return an item from an array based on its id
@@ -1440,5 +1539,8 @@
 			editor = dialog.getParentEditor(),
 			magnetDistance = editor.config.dialog_magnetDistance,
-			margins = skinData[ editor.skinName ].margins || [ 0, 0, 0, 0 ];
+			margins = editor.skin.margins || [ 0, 0, 0, 0 ];
+
+		if ( typeof magnetDistance == 'undefined' )
+			magnetDistance = 20;
 
 		function mouseMoveHandler( evt )
@@ -1482,5 +1584,5 @@
 			if ( CKEDITOR.env.ie6Compat )
 			{
-				var coverDoc = coverElement.getChild( 0 ).getFrameDocument();
+				var coverDoc = currentCover.getChild( 0 ).getFrameDocument();
 				coverDoc.removeListener( 'mousemove', mouseMoveHandler );
 				coverDoc.removeListener( 'mouseup', mouseUpHandler );
@@ -1500,5 +1602,5 @@
 				if ( CKEDITOR.env.ie6Compat )
 				{
-					var coverDoc = coverElement.getChild( 0 ).getFrameDocument();
+					var coverDoc = currentCover.getChild( 0 ).getFrameDocument();
 					coverDoc.on( 'mousemove', mouseMoveHandler );
 					coverDoc.on( 'mouseup', mouseUpHandler );
@@ -1515,5 +1617,5 @@
 			minHeight = definition.minHeight || 0,
 			resizable = definition.resizable,
-			margins = skinData[ dialog.getParentEditor().skinName ].margins || [ 0, 0, 0, 0 ];
+			margins = dialog.getParentEditor().skin.margins || [ 0, 0, 0, 0 ];
 
 		function topSizer( coords, dy )
@@ -1558,5 +1660,5 @@
 			if ( CKEDITOR.env.ie6Compat )
 			{
-				var coverDoc = coverElement.getChild( 0 ).getFrameDocument();
+				var coverDoc = currentCover.getChild( 0 ).getFrameDocument();
 				coverDoc.on( 'mousemove', mouseMoveHandler, dialog, { part : partName } );
 				coverDoc.on( 'mouseup', mouseUpHandler, dialog, { part : partName } );
@@ -1629,5 +1731,5 @@
 			if ( CKEDITOR.env.ie6Compat )
 			{
-				var coverDoc = coverElement.getChild( 0 ).getFrameDocument();
+				var coverDoc = currentCover.getChild( 0 ).getFrameDocument();
 				coverDoc.removeListener( 'mouseup', mouseUpHandler );
 				coverDoc.removeListener( 'mousemove', mouseMoveHandler );
@@ -1653,9 +1755,20 @@
 
 	var resizeCover;
-	var coverElement;
-
-	var addCover = function( editor )
+	// Caching resuable covers and allowing only one cover
+	// on screen.
+	var covers = {},
+		currentCover;
+
+	function showCover( editor )
 	{
 		var win = CKEDITOR.document.getWindow();
+		var backgroundColorStyle = editor.config.dialog_backgroundCoverColor || 'white',
+			backgroundCoverOpacity = editor.config.dialog_backgroundCoverOpacity,
+			baseFloatZIndex = editor.config.baseFloatZIndex,
+			coverKey = CKEDITOR.tools.genKey(
+					backgroundColorStyle,
+					backgroundCoverOpacity,
+					baseFloatZIndex ),
+			coverElement = covers[ coverKey ];
 
 		if ( !coverElement )
@@ -1663,15 +1776,15 @@
 			var html = [
 					'<div style="position: ', ( CKEDITOR.env.ie6Compat ? 'absolute' : 'fixed' ),
-					'; z-index: ', editor.config.baseFloatZIndex,
+					'; z-index: ', baseFloatZIndex,
 					'; top: 0px; left: 0px; ',
-					'background-color: ', editor.config.dialog_backgroundCoverColor,
-					'" id="cke_dialog_background_cover">'
+					( !CKEDITOR.env.ie6Compat ? 'background-color: ' + backgroundColorStyle : '' ),
+					'" class="cke_dialog_background_cover">'
 				];
 
-
 			if ( CKEDITOR.env.ie6Compat )
 			{
 				// Support for custom document.domain in IE.
-				var isCustomDomain = CKEDITOR.env.isCustomDomain();
+				var isCustomDomain = CKEDITOR.env.isCustomDomain(),
+					iframeHtml = '<html><body style=\\\'background-color:' + backgroundColorStyle + ';\\\'></body></html>';
 
 				html.push(
@@ -1682,13 +1795,10 @@
 						' src="javascript:' );
 
-				html.push(
-						isCustomDomain ?
-							'void((function(){' +
+				html.push( 'void((function(){' +
 								'document.open();' +
-								'document.domain=\'' + document.domain + '\';' +
+								( isCustomDomain ? 'document.domain=\'' + document.domain + '\';' : '' ) +
+								'document.write( \'' + iframeHtml + '\' );' +
 								'document.close();' +
-							'})())'
-						:
-							'\'\'' );
+							'})())' );
 
 				html.push(
@@ -1707,12 +1817,17 @@
 
 			coverElement = CKEDITOR.dom.element.createFromHtml( html.join( '' ) );
-		}
-
-		var element = coverElement;
-
+			coverElement.setOpacity( backgroundCoverOpacity != undefined ? backgroundCoverOpacity : 0.5 );
+
+			coverElement.appendTo( CKEDITOR.document.getBody() );
+			covers[ coverKey ] = coverElement;
+		}
+		else
+			coverElement.	show();
+
+		currentCover = coverElement;
 		var resizeFunc = function()
 		{
 			var size = win.getViewPaneSize();
-			element.setStyles(
+			coverElement.setStyles(
 				{
 					width : size.width + 'px',
@@ -1725,5 +1840,5 @@
 			var pos = win.getScrollPosition(),
 				cursor = CKEDITOR.dialog._.currentTop;
-			element.setStyles(
+			coverElement.setStyles(
 					{
 						left : pos.x + 'px',
@@ -1735,5 +1850,5 @@
 				var dialogPos = cursor.getPosition();
 				cursor.move( dialogPos.x, dialogPos.y );
-			} while( ( cursor = cursor._.parentDialog ) );
+			} while ( ( cursor = cursor._.parentDialog ) );
 		};
 
@@ -1757,15 +1872,13 @@
 			scrollFunc();
 		}
-		element.setOpacity( editor.config.dialog_backgroundCoverOpacity );
-		element.appendTo( CKEDITOR.document.getBody() );
-	};
-
-	var removeCover = function()
-	{
-		if ( !coverElement )
+	}
+
+	function hideCover()
+	{
+		if ( !currentCover )
 			return;
 
 		var win = CKEDITOR.document.getWindow();
-		coverElement.remove();
+		currentCover.hide();
 		win.removeListener( 'resize', resizeCover );
 
@@ -1779,5 +1892,12 @@
 		}
 		resizeCover = null;
-	};
+	}
+
+	function removeCovers()
+	{
+		for ( var coverId in covers )
+			covers[ coverId ].remove();
+		covers = {};
+	}
 
 	var accessKeyProcessors = {};
@@ -1811,6 +1931,9 @@
 
 		keyProcessor = keyProcessor[keyProcessor.length - 1];
-		keyProcessor.keyup && keyProcessor.keyup.call( keyProcessor.uiElement, keyProcessor.dialog, keyProcessor.key );
-		evt.data.preventDefault();
+		if ( keyProcessor.keyup )
+		{
+			keyProcessor.keyup.call( keyProcessor.uiElement, keyProcessor.dialog, keyProcessor.key );
+			evt.data.preventDefault();
+		}
 	};
 
@@ -1920,5 +2043,5 @@
 					styles = ( stylesArg && stylesArg.call ? stylesArg( elementDefinition ) : stylesArg ) || {},
 					attributes = ( attributesArg && attributesArg.call ? attributesArg( elementDefinition ) : attributesArg ) || {},
-					innerHTML = ( contentsArg && contentsArg.call ? contentsArg( dialog, elementDefinition ) : contentsArg ) || '',
+					innerHTML = ( contentsArg && contentsArg.call ? contentsArg.call( this, dialog, elementDefinition ) : contentsArg ) || '',
 					domId = this.domId = attributes.id || CKEDITOR.tools.getNextNumber() + '_uiElement',
 					id = this.id = elementDefinition.id,
@@ -2005,4 +2128,6 @@
 				if ( this.keyboardFocusable )
 				{
+					this.tabIndex = elementDefinition.tabIndex || 0;
+
 					this.focusIndex = dialog._.focusList.push( this ) - 1;
 					this.on( 'focus', function()
@@ -2067,5 +2192,5 @@
 						if ( i == childHtmlList.length - 1 )
 							className = 'cke_dialog_ui_hbox_last';
-						html.push( '<td class="', className, '" ' );
+						html.push( '<td class="', className, '" role="presentation" ' );
 						if ( widths )
 						{
@@ -2087,4 +2212,7 @@
 				};
 
+				var attribs = { role : 'presentation' };
+				elementDefinition && elementDefinition.align && ( attribs.align = elementDefinition.align );
+
 				CKEDITOR.ui.dialog.uiElement.call(
 					this,
@@ -2094,5 +2222,5 @@
 					'table',
 					styles,
-					elementDefinition && elementDefinition.align && { align : elementDefinition.align } || null,
+					attribs,
 					innerHTML );
 			},
@@ -2139,5 +2267,5 @@
 				var innerHTML = function()
 				{
-					var html = [ '<table cellspacing="0" border="0" ' ];
+					var html = [ '<table role="presentation" cellspacing="0" border="0" ' ];
 					html.push( 'style="' );
 					if ( elementDefinition && elementDefinition.expand )
@@ -2152,5 +2280,5 @@
 					{
 						var styles = [];
-						html.push( '<tr><td ' );
+						html.push( '<tr><td role="presentation" ' );
 						if ( width )
 							styles.push( 'width:' + CKEDITOR.tools.cssLength( width || '100%' ) );
@@ -2168,5 +2296,5 @@
 					return html.join( '' );
 				};
-				CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition || { type : 'vbox' }, htmlList, 'div', null, null, innerHTML );
+				CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition || { type : 'vbox' }, htmlList, 'div', null, { role : 'presentation' }, innerHTML );
 			}
 		};
@@ -2445,5 +2573,5 @@
 		isVisible : function()
 		{
-			return !!this.getInputElement().$.offsetHeight;
+			return this.getInputElement().isVisible();
 		},
 
@@ -2546,7 +2674,10 @@
 			editor.openDialog( this.dialogName );
 		},
+
 		// Dialog commands just open a dialog ui, thus require no undo logic,
 		// undo support should dedicate to specific dialog implementation.
-		canUndo: false
+		canUndo: false,
+
+		editorFocus : CKEDITOR.env.ie || CKEDITOR.env.webkit
 	};
 
@@ -2668,16 +2799,23 @@
 			}
 		};
+
+	CKEDITOR.on( 'instanceDestroyed', function( evt )
+	{
+		// Remove dialog cover on last instance destroy.
+		if ( CKEDITOR.tools.isEmpty( CKEDITOR.instances ) )
+		{
+			var currentTopDialog;
+			while ( ( currentTopDialog = CKEDITOR.dialog._.currentTop ) )
+				currentTopDialog.hide();
+			removeCovers();
+		}
+
+		var dialogs = evt.editor._.storedDialogs;
+		for ( var name in dialogs )
+			dialogs[ name ].destroy();
+
+	});
+
 	})();
-
-	// Grab the margin data from skin definition and store it away.
-	CKEDITOR.skins.add = ( function()
-	{
-		var original = CKEDITOR.skins.add;
-		return function( skinName, skinDefinition )
-		{
-			skinData[ skinName ] = { margins : skinDefinition.margins };
-			return original.apply( this, arguments );
-		};
-	} )();
 })();
 
@@ -2689,4 +2827,5 @@
 		 * Loads and opens a registered dialog.
 		 * @param {String} dialogName The registered name of the dialog.
+		 * @param {Function} callback The function to be invoked after dialog instance created.
 		 * @see CKEDITOR.dialog.add
 		 * @example
@@ -2694,10 +2833,11 @@
 		 * @returns {CKEDITOR.dialog} The dialog object corresponding to the dialog displayed. null if the dialog name is not registered.
 		 */
-		openDialog : function( dialogName )
-		{
-			var dialogDefinitions = CKEDITOR.dialog._.dialogDefinitions[ dialogName ];
+		openDialog : function( dialogName, callback )
+		{
+			var dialogDefinitions = CKEDITOR.dialog._.dialogDefinitions[ dialogName ],
+					dialogSkin = this.skin.dialog;
 
 			// If the dialogDefinition is already loaded, open it immediately.
-			if ( typeof dialogDefinitions == 'function' )
+			if ( typeof dialogDefinitions == 'function' && dialogSkin._isLoaded )
 			{
 				var storedDialogs = this._.storedDialogs ||
@@ -2707,4 +2847,5 @@
 					( storedDialogs[ dialogName ] = new CKEDITOR.dialog( this, dialogName ) );
 
+				callback && callback.call( dialog, dialog );
 				dialog.show();
 
@@ -2720,15 +2861,37 @@
 
 			body.setStyle( 'cursor', 'wait' );
-			CKEDITOR.scriptLoader.load( CKEDITOR.getUrl( dialogDefinitions ), function()
-				{
-					// In case of plugin error, mark it as loading failed.
-					if ( typeof CKEDITOR.dialog._.dialogDefinitions[ dialogName ] != 'function' )
-							CKEDITOR.dialog._.dialogDefinitions[ dialogName ] =  'failed';
-					me.openDialog( dialogName );
-					body.setStyle( 'cursor', cursor );
-				} );
+
+			function onDialogFileLoaded( success )
+			{
+				var dialogDefinition = CKEDITOR.dialog._.dialogDefinitions[ dialogName ],
+						skin = me.skin.dialog;
+
+				// Check if both skin part and definition is loaded.
+				if ( !skin._isLoaded || loadDefinition && typeof success == 'undefined' )
+					return;
+
+				// In case of plugin error, mark it as loading failed.
+				if ( typeof dialogDefinition != 'function' )
+					CKEDITOR.dialog._.dialogDefinitions[ dialogName ] = 'failed';
+
+				me.openDialog( dialogName, callback );
+				body.setStyle( 'cursor', cursor );
+			}
+
+			if ( typeof dialogDefinitions == 'string' )
+			{
+				var loadDefinition = 1;
+				CKEDITOR.scriptLoader.load( CKEDITOR.getUrl( dialogDefinitions ), onDialogFileLoaded );
+			}
+
+			CKEDITOR.skins.load( this, 'dialog', onDialogFileLoaded );
 
 			return null;
 		}
+	});
+
+CKEDITOR.plugins.add( 'dialog',
+	{
+		requires : [ 'dialogui' ]
 	});
 
@@ -2738,14 +2901,15 @@
  * The color of the dialog background cover. It should be a valid CSS color
  * string.
+ * @name CKEDITOR.config.dialog_backgroundCoverColor
  * @type String
- * @default white
+ * @default 'white'
  * @example
  * config.dialog_backgroundCoverColor = 'rgb(255, 254, 253)';
  */
-CKEDITOR.config.dialog_backgroundCoverColor = 'white';
 
 /**
  * The opacity of the dialog background cover. It should be a number within the
  * range [0.0, 1.0].
+ * @name CKEDITOR.config.dialog_backgroundCoverOpacity
  * @type Number
  * @default 0.5
@@ -2753,9 +2917,18 @@
  * config.dialog_backgroundCoverOpacity = 0.7;
  */
-CKEDITOR.config.dialog_backgroundCoverOpacity = 0.5;
+
+/**
+ * If the dialog has more than one tab, put focus into the first tab as soon as dialog is opened.
+ * @name CKEDITOR.config.dialog_startupFocusTab
+ * @type Boolean
+ * @default false
+ * @example
+ * config.dialog_startupFocusTab = true;
+ */
 
 /**
  * The distance of magnetic borders used in moving and resizing dialogs,
  * measured in pixels.
+ * @name CKEDITOR.config.dialog_magnetDistance
  * @type Number
  * @default 20
@@ -2763,3 +2936,17 @@
  * config.dialog_magnetDistance = 30;
  */
-CKEDITOR.config.dialog_magnetDistance = 20;
+
+/**
+ * Fired when a dialog definition is about to be used to create a dialog into
+ * an editor instance. This event makes it possible to customize the definition
+ * before creating it.
+ * <p>Note that this event is called only the first time a specific dialog is
+ * opened. Successive openings will use the cached dialog, and this event will
+ * not get fired.</p>
+ * @name CKEDITOR#dialogDefinition
+ * @event
+ * @param {CKEDITOR.dialog.dialogDefinition} data The dialog defination that
+ *		is being loaded.
+ * @param {CKEDITOR.editor} editor The editor instance that will use the
+ *		dialog.
+ */
Index: /CKEditor/branches/features/adobeair/_source/plugins/dialogui/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/dialogui/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/dialogui/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -14,4 +14,5 @@
 		this._ || ( this._ = {} );
 		this._['default'] = this._.initValue = elementDefinition['default'] || '';
+		this._.required = elementDefinition[ 'required' ] || false;
 		var args = [ this._ ];
 		for ( var i = 1 ; i < arguments.length ; i++ )
@@ -35,4 +36,21 @@
 		}
 	},
+	containerBuilder =
+	{
+		build : function( dialog, elementDefinition, output )
+		{
+			var children = elementDefinition.children,
+				child,
+				childHtmlList = [],
+				childObjList = [];
+			for ( var i = 0 ; ( i < children.length && ( child = children[i] ) ) ; i++ )
+			{
+				var childHtml = [];
+				childHtmlList.push( childHtml );
+				childObjList.push( CKEDITOR.dialog._.uiElementBuilders[ child.type ].build( dialog, child, childHtml ) );
+			}
+			return new CKEDITOR.ui.dialog[ elementDefinition.type ]( dialog, childObjList, childHtmlList, output, elementDefinition );
+		}
+	},
 	commonPrototype =
 	{
@@ -70,5 +88,12 @@
 					dialog.on( 'load', function()
 						{
-							this.getInputElement().on( 'change', function(){ this.fire( 'change', { value : this.getValue() } ); }, this );
+							this.getInputElement().on( 'change', function()
+							{
+								// Make sure 'onchange' doesn't get fired after dialog closed. (#5719)
+								if ( !dialog.parts.dialog.isVisible() )
+									return;
+
+								this.fire( 'change', { value : this.getValue() } );
+							}, this );
 						}, this );
 					this._.domOnChangeRegistered = true;
@@ -130,11 +155,12 @@
 					var html = [];
 					if ( elementDefinition.labelLayout != 'horizontal' )
-						html.push( '<div class="cke_dialog_ui_labeled_label" id="',
-								_.labelId,
-								'" >',
+						html.push( '<label class="cke_dialog_ui_labeled_label" ',
+								' id="'+  _.labelId + '"',
+								' for="' + _.inputId + '"',
+								' style="' + elementDefinition.labelStyle + '">',
 								elementDefinition.label,
-								'</div>',
-								'<div class="cke_dialog_ui_labeled_content">',
-								contentHtml( dialog, elementDefinition ),
+								'</label>',
+								'<div class="cke_dialog_ui_labeled_content" role="presentation">',
+								contentHtml.call( this, dialog, elementDefinition ),
 								'</div>' );
 					else
@@ -148,6 +174,9 @@
 								{
 									type : 'html',
-									html : '<span class="cke_dialog_ui_labeled_label" ' +
-										'id="' + _.labelId + '">' +  CKEDITOR.tools.htmlEncode( elementDefinition.label ) +
+									html : '<label class="cke_dialog_ui_labeled_label"' +
+										' id="' + _.labelId + '"' +
+										' for="' + _.inputId + '"' +
+										' style="' + elementDefinition.labelStyle + '">' +
+										   CKEDITOR.tools.htmlEncode( elementDefinition.label ) +
 										'</span>'
 								},
@@ -155,5 +184,5 @@
 									type : 'html',
 									html : '<span class="cke_dialog_ui_labeled_content">' +
-										contentHtml( dialog, elementDefinition ) +
+										contentHtml.call( this, dialog, elementDefinition ) +
 										'</span>'
 								}
@@ -164,5 +193,5 @@
 					return html.join( '' );
 				};
-				CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'div', null, null, innerHTML );
+				CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'div', null, { role : 'presentation' }, innerHTML );
 			},
 
@@ -223,5 +252,8 @@
 								if ( evt.data.getKeystroke() == 13 && keyPressedOnMe )
 								{
-									dialog.getButton( 'ok' ) && dialog.getButton( 'ok' ).click();
+									dialog.getButton( 'ok' ) && setTimeout( function ()
+									{
+										dialog.getButton( 'ok' ).click();
+									}, 0 );
 									keyPressedOnMe = false;
 								}
@@ -234,5 +266,5 @@
 					// IE BUG: Text input fields in IE at 100% would exceed a <td> or inline
 					// container's width, so need to wrap it inside a <div>.
-					var html = [ '<div class="cke_dialog_ui_input_', elementDefinition.type, '"' ];
+					var html = [ '<div class="cke_dialog_ui_input_', elementDefinition.type, '" role="presentation"' ];
 
 					if ( elementDefinition.width )
@@ -240,4 +272,7 @@
 
 					html.push( '><input ' );
+
+					attributes[ 'aria-labelledby' ] = this._.labelId;
+					this._.required && ( attributes[ 'aria-required' ] = this._.required );
 					for ( var i in attributes )
 						html.push( i + '="' + attributes[i] + '" ' );
@@ -288,5 +323,7 @@
 				var innerHTML = function()
 				{
-					var html = [ '<div class="cke_dialog_ui_input_textarea"><textarea class="cke_dialog_ui_input_textarea" id="', domId, '" ' ];
+					attributes[ 'aria-labelledby' ] = this._.labelId;
+					this._.required && ( attributes[ 'aria-required' ] = this._.required );
+					var html = [ '<div class="cke_dialog_ui_input_textarea" role="presentation"><textarea class="cke_dialog_ui_input_textarea" id="', domId, '" ' ];
 					for ( var i in attributes )
 						html.push( i + '="' + CKEDITOR.tools.htmlEncode( attributes[i] ) + '" ' );
@@ -332,11 +369,13 @@
 								id : elementDefinition.id ? elementDefinition.id + '_checkbox' : CKEDITOR.tools.getNextNumber() + '_checkbox'
 							}, true ),
-						html = [],
-						attributes = { 'class' : 'cke_dialog_ui_checkbox_input', type : 'checkbox' };
+						html = [];
+
+					var labelId = CKEDITOR.tools.getNextNumber() + '_label';
+					var attributes = { 'class' : 'cke_dialog_ui_checkbox_input', type : 'checkbox', 'aria-labelledby' : labelId };
 					cleanInnerDefinition( myDefinition );
 					if ( elementDefinition[ 'default' ] )
 						attributes.checked = 'checked';
 					_.checkbox = new CKEDITOR.ui.dialog.uiElement( dialog, myDefinition, html, 'input', null, attributes );
-					html.push( ' <label for="', attributes.id, '">',
+					html.push( ' <label id="', labelId, '" for="', attributes.id, '">',
 							CKEDITOR.tools.htmlEncode( elementDefinition.label ),
 							'</label>' );
@@ -383,5 +422,5 @@
 				{
 					var inputHtmlList = [], html = [],
-						commonAttributes = { 'class' : 'cke_dialog_ui_radio_item' },
+						commonAttributes = { 'class' : 'cke_dialog_ui_radio_item', 'aria-labelledby' : this._.labelId },
 						commonName = elementDefinition.id ? elementDefinition.id + '_radio' : CKEDITOR.tools.getNextNumber() + '_radio';
 					for ( var i = 0 ; i < elementDefinition.items.length ; i++ )
@@ -390,7 +429,9 @@
 							title = item[2] !== undefined ? item[2] : item[0],
 							value = item[1] !== undefined ? item[1] : item[0],
+							inputId = CKEDITOR.tools.getNextNumber() + '_radio_input',
+							labelId = inputId + '_label',
 							inputDefinition = CKEDITOR.tools.extend( {}, elementDefinition,
 									{
-										id : CKEDITOR.tools.getNextNumber() + '_radio_input',
+										id : inputId,
 										title : null,
 										type : null
@@ -398,5 +439,4 @@
 							labelDefinition = CKEDITOR.tools.extend( {}, inputDefinition,
 									{
-										id : null,
 										title : title
 									}, true ),
@@ -406,5 +446,6 @@
 								'class' : 'cke_dialog_ui_radio_input',
 								name : commonName,
-								value : value
+								value : value,
+								'aria-labelledby' : labelId
 							},
 							inputHtml = [];
@@ -415,5 +456,5 @@
 						children.push( new CKEDITOR.ui.dialog.uiElement( dialog, inputDefinition, inputHtml, 'input', null, inputAttributes ) );
 						inputHtml.push( ' ' );
-						new CKEDITOR.ui.dialog.uiElement( dialog, labelDefinition, inputHtml, 'label', null, { 'for' : inputAttributes.id },
+						new CKEDITOR.ui.dialog.uiElement( dialog, labelDefinition, inputHtml, 'label', null, { id : labelId, 'for' : inputAttributes.id },
 							   item[0] );
 						inputHtmlList.push( inputHtml.join( '' ) );
@@ -471,4 +512,13 @@
 									evt.data.preventDefault();
 								} );
+
+							element.on( 'keydown', function( evt )
+								{
+									if ( evt.data.getKeystroke() in { 32:1 } )
+									{
+										me.click();
+										evt.data.preventDefault();
+									}
+								} );
 						})();
 
@@ -479,4 +529,5 @@
 				delete outerDefinition.style;
 
+				var labelId = CKEDITOR.tools.getNextNumber() + '_label';
 				CKEDITOR.ui.dialog.uiElement.call(
 					this,
@@ -491,7 +542,9 @@
 						title : elementDefinition.label,
 						hidefocus : 'true',
-						'class' : elementDefinition['class']
+						'class' : elementDefinition['class'],
+						role : 'button',
+						'aria-labelledby' : labelId
 					},
-					'<span class="cke_dialog_ui_button">' +
+					'<span id="' + labelId + '" class="cke_dialog_ui_button">' +
 						CKEDITOR.tools.htmlEncode( elementDefinition.label ) +
 					'</span>' );
@@ -532,4 +585,5 @@
 					this.validate = elementDefinition.validate;
 
+				_.inputId = CKEDITOR.tools.getNextNumber() + '_select';
 				/** @ignore */
 				var innerHTML = function()
@@ -541,5 +595,5 @@
 						html = [],
 						innerHTML = [],
-						attributes = { 'class' : 'cke_dialog_ui_input_select' };
+						attributes = { 'id' : _.inputId, 'class' : 'cke_dialog_ui_input_select', 'aria-labelledby' : this._.labelId };
 
 					// Add multiple and size attributes from element definition.
@@ -721,5 +775,6 @@
 
 					// Look for focus function in definition.
-					if ( elementDefinition.focus )
+					var focus = elementDefinition.focus;
+					if ( focus )
 					{
 						var oldFocus = this.focus;
@@ -727,5 +782,5 @@
 						{
 							oldFocus.call( this );
-							elementDefinition.focus.call( this );
+							typeof focus == 'function' && focus.call( this );
 							this.fire( 'focus' );
 						};
@@ -753,5 +808,43 @@
 					htmlList.push( [ theirMatch[1], ' ', myMatch[1] || '', theirMatch[2] ].join( '' ) );
 				};
-			})()
+			})(),
+
+			/**
+			 * Form fieldset for grouping dialog UI elements.
+			 * @constructor
+			 * @extends CKEDITOR.ui.dialog.uiElement
+			 * @param {CKEDITOR.dialog} dialog Parent dialog object.
+			 * @param {Array} childObjList
+			 * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this
+			 * container.
+			 * @param {Array} childHtmlList
+			 * Array of HTML code that correspond to the HTML output of all the
+			 * objects in childObjList.
+			 * @param {Array} htmlList
+			 * Array of HTML code that this element will output to.
+			 * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
+			 * The element definition. Accepted fields:
+			 * <ul>
+			 * 	<li><strong>label</strong> (Optional) The legend of the this fieldset.</li>
+			 * 	<li><strong>children</strong> (Required) An array of dialog field definitions which will be grouped inside this fieldset. </li>
+			 * </ul>
+			 */
+			fieldset : function( dialog, childObjList, childHtmlList, htmlList, elementDefinition )
+			{
+				var legendLabel = elementDefinition.label;
+				/** @ignore */
+				var innerHTML = function()
+				{
+					var html = [];
+					legendLabel && html.push( '<legend>' + legendLabel + '</legend>' );
+					for ( var i = 0; i < childHtmlList.length; i++ )
+						html.push( childHtmlList[ i ] );
+					return html.join( '' );
+				};
+
+				this._ = { children : childObjList };
+				CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'fieldset', null, null, innerHTML );
+			}
+
 		}, true );
 
@@ -839,5 +932,5 @@
 				isVisible : function()
 				{
-					return !!this.getElement().$.firstChild.offsetHeight;
+					return this.getElement().getFirst().isVisible();
 				},
 
@@ -953,5 +1046,5 @@
 				setValue : function( value )
 				{
-					value = value || '';
+					!value && ( value = '' );
 					return CKEDITOR.ui.dialog.uiElement.prototype.setValue.call( this, value );
 				},
@@ -1307,4 +1400,6 @@
 	CKEDITOR.ui.dialog.fileButton.prototype = new CKEDITOR.ui.dialog.button;
 
+	CKEDITOR.ui.dialog.fieldset.prototype = CKEDITOR.tools.clone( CKEDITOR.ui.dialog.hbox.prototype );
+
 	CKEDITOR.dialog.addUIElement( 'text', textBuilder );
 	CKEDITOR.dialog.addUIElement( 'password', textBuilder );
@@ -1317,3 +1412,4 @@
 	CKEDITOR.dialog.addUIElement( 'fileButton', commonBuilder );
 	CKEDITOR.dialog.addUIElement( 'html', commonBuilder );
+	CKEDITOR.dialog.addUIElement( 'fieldset', containerBuilder );
 })();
Index: /CKEditor/branches/features/adobeair/_source/plugins/div/dialogs/div.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/div/dialogs/div.js	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_source/plugins/div/dialogs/div.js	(revision 5613)
@@ -0,0 +1,529 @@
+﻿/*
+ * Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.html or http://ckeditor.com/license
+ */
+
+(function()
+{
+
+	/**
+	 * Add to collection with DUP examination.
+	 * @param {Object} collection
+	 * @param {Object} element
+	 * @param {Object} database
+	 */
+	function addSafely( collection, element, database )
+	{
+		// 1. IE doesn't support customData on text nodes;
+		// 2. Text nodes never get chance to appear twice;
+		if ( !element.is || !element.getCustomData( 'block_processed' ) )
+		{
+			element.is && CKEDITOR.dom.element.setMarker( database, element, 'block_processed', true );
+			collection.push( element );
+		}
+	}
+
+	function getNonEmptyChildren( element )
+	{
+		var retval = [];
+		var children = element.getChildren();
+		for ( var i = 0 ; i < children.count() ; i++ )
+		{
+			var child = children.getItem( i );
+			if ( ! ( child.type === CKEDITOR.NODE_TEXT
+				&& ( /^[ \t\n\r]+$/ ).test( child.getText() ) ) )
+				retval.push( child );
+		}
+		return retval;
+	}
+
+
+	/**
+	 * Dialog reused by both 'creatediv' and 'editdiv' commands.
+	 * @param {Object} editor
+	 * @param {String} command	The command name which indicate what the current command is.
+	 */
+	function divDialog( editor, command )
+	{
+		// Definition of elements at which div operation should stopped.
+		var divLimitDefinition = ( function(){
+
+			// Customzie from specialize blockLimit elements
+			var definition = CKEDITOR.tools.extend( {}, CKEDITOR.dtd.$blockLimit );
+
+			// Exclude 'div' itself.
+			delete definition.div;
+
+			// Exclude 'td' and 'th' when 'wrapping table'
+			if ( editor.config.div_wrapTable )
+			{
+				delete definition.td;
+				delete definition.th;
+			}
+			return definition;
+		})();
+
+		// DTD of 'div' element
+		var dtd = CKEDITOR.dtd.div;
+
+		/**
+		 * Get the first div limit element on the element's path.
+		 * @param {Object} element
+		 */
+		function getDivLimitElement( element )
+		{
+			var pathElements = new CKEDITOR.dom.elementPath( element ).elements;
+			var divLimit;
+			for ( var i = 0; i < pathElements.length ; i++ )
+			{
+				if ( pathElements[ i ].getName() in divLimitDefinition )
+				{
+					divLimit = pathElements[ i ];
+					break;
+				}
+			}
+			return divLimit;
+		}
+
+		/**
+		 * Init all fields' setup/commit function.
+		 * @memberof divDialog
+		 */
+		function setupFields()
+		{
+			this.foreach( function( field )
+			{
+				// Exclude layout container elements
+				if ( /^(?!vbox|hbox)/.test( field.type ) )
+				{
+					if ( !field.setup )
+					{
+						// Read the dialog fields values from the specified
+						// element attributes.
+						field.setup = function( element )
+						{
+							field.setValue( element.getAttribute( field.id ) || '' );
+						};
+					}
+					if ( !field.commit )
+					{
+						// Set element attributes assigned by the dialog
+						// fields.
+						field.commit = function( element )
+						{
+							var fieldValue = this.getValue();
+							// ignore default element attribute values
+							if ( 'dir' == field.id && element.getComputedStyle( 'direction' ) == fieldValue )
+								return;
+
+							if ( fieldValue )
+								element.setAttribute( field.id, fieldValue );
+							else
+								element.removeAttribute( field.id );
+						};
+					}
+				}
+			} );
+		}
+
+		/**
+		 * Wrapping 'div' element around appropriate blocks among the selected ranges.
+		 * @param {Object} editor
+		 */
+		function createDiv( editor )
+		{
+			// new adding containers OR detected pre-existed containers.
+			var containers = [];
+			// node markers store.
+			var database = {};
+			// All block level elements which contained by the ranges.
+			var containedBlocks = [], block;
+
+			// Get all ranges from the selection.
+			var selection = editor.document.getSelection();
+			var ranges = selection.getRanges();
+			var bookmarks = selection.createBookmarks();
+			var i, iterator;
+
+			// Calcualte a default block tag if we need to create blocks.
+			var blockTag = editor.config.enterMode == CKEDITOR.ENTER_DIV ? 'div' : 'p';
+
+			// collect all included elements from dom-iterator
+			for ( i = 0 ; i < ranges.length ; i++ )
+			{
+				iterator = ranges[ i ].createIterator();
+				while ( ( block = iterator.getNextParagraph() ) )
+				{
+					// include contents of blockLimit elements.
+					if ( block.getName() in divLimitDefinition )
+					{
+						var j, childNodes = block.getChildren();
+						for ( j = 0 ; j < childNodes.count() ; j++ )
+							addSafely( containedBlocks, childNodes.getItem( j ) , database );
+					}
+					else
+					{
+						// Bypass dtd disallowed elements.
+						while ( !dtd[ block.getName() ] && block.getName() != 'body' )
+							block = block.getParent();
+						addSafely( containedBlocks, block, database );
+					}
+				}
+			}
+
+			CKEDITOR.dom.element.clearAllMarkers( database );
+
+			var blockGroups = groupByDivLimit( containedBlocks );
+			var ancestor, blockEl, divElement;
+
+			for ( i = 0 ; i < blockGroups.length ; i++ )
+			{
+				var currentNode = blockGroups[ i ][ 0 ];
+
+				// Calculate the common parent node of all contained elements.
+				ancestor = currentNode.getParent();
+				for ( j = 1 ; j < blockGroups[ i ].length; j++ )
+					ancestor = ancestor.getCommonAncestor( blockGroups[ i ][ j ] );
+
+				divElement = new CKEDITOR.dom.element( 'div', editor.document );
+
+				// Normalize the blocks in each group to a common parent.
+				for ( j = 0; j < blockGroups[ i ].length ; j++ )
+				{
+					currentNode = blockGroups[ i ][ j ];
+
+					while ( !currentNode.getParent().equals( ancestor ) )
+						currentNode = currentNode.getParent();
+
+					// This could introduce some duplicated elements in array.
+					blockGroups[ i ][ j ] = currentNode;
+				}
+
+				// Wrapped blocks counting
+				var fixedBlock = null;
+				for ( j = 0 ; j < blockGroups[ i ].length ; j++ )
+				{
+					currentNode = blockGroups[ i ][ j ];
+
+					// Avoid DUP elements introduced by grouping.
+					if ( !( currentNode.getCustomData && currentNode.getCustomData( 'block_processed' ) ) )
+					{
+						currentNode.is && CKEDITOR.dom.element.setMarker( database, currentNode, 'block_processed', true );
+
+						// Establish new container, wrapping all elements in this group.
+						if ( !j )
+							divElement.insertBefore( currentNode );
+
+						divElement.append( currentNode );
+					}
+				}
+
+				CKEDITOR.dom.element.clearAllMarkers( database );
+				containers.push( divElement );
+			}
+
+			selection.selectBookmarks( bookmarks );
+			return containers;
+		}
+
+		function getDiv( editor )
+		{
+			var path = new CKEDITOR.dom.elementPath( editor.getSelection().getStartElement() ),
+				blockLimit = path.blockLimit,
+				div = blockLimit && blockLimit.getAscendant( 'div', true );
+			return div;
+		}
+		/**
+		 * Divide a set of nodes to different groups by their path's blocklimit element.
+		 * Note: the specified nodes should be in source order naturally, which mean they are supposed to producea by following class:
+		 *  * CKEDITOR.dom.range.Iterator
+		 *  * CKEDITOR.dom.domWalker
+		 *  @return {Array []} the grouped nodes
+		 */
+		function groupByDivLimit( nodes )
+		{
+			var groups = [],
+				lastDivLimit = null,
+				path, block;
+			for ( var i = 0 ; i < nodes.length ; i++ )
+			{
+				block = nodes[i];
+				var limit = getDivLimitElement( block );
+				if ( !limit.equals( lastDivLimit ) )
+				{
+					lastDivLimit = limit ;
+					groups.push( [] ) ;
+				}
+				groups[ groups.length - 1 ].push( block ) ;
+			}
+			return groups;
+		}
+
+		// Synchronous field values to other impacted fields is required, e.g. div styles
+		// change should also alter inline-style text.
+		function commitInternally( targetFields )
+		{
+			var dialog = this.getDialog(),
+				 element = dialog._element && dialog._element.clone()
+						 || new CKEDITOR.dom.element( 'div', editor.document );
+
+			// Commit this field and broadcast to target fields.
+			this.commit( element, true );
+
+			targetFields = [].concat( targetFields );
+			var length = targetFields.length, field;
+			for ( var i = 0; i < length; i++ )
+			{
+				field = dialog.getContentElement.apply( dialog, targetFields[ i ].split( ':' ) );
+				field && field.setup && field.setup( element, true );
+			}
+		}
+
+
+		// Registered 'CKEDITOR.style' instances.
+		var styles = {} ;
+		/**
+		 * Hold a collection of created block container elements.
+		 */
+		var containers = [];
+		/**
+		 * @type divDialog
+		 */
+		return {
+			title : editor.lang.div.title,
+			minWidth : 400,
+			minHeight : 165,
+			contents :
+			[
+			{
+				id :'info',
+				label :editor.lang.common.generalTab,
+				title :editor.lang.common.generalTab,
+				elements :
+				[
+					{
+						type :'hbox',
+						widths : [ '50%', '50%' ],
+						children :
+						[
+							{
+								id :'elementStyle',
+								type :'select',
+								style :'width: 100%;',
+								label :editor.lang.div.styleSelectLabel,
+								'default' : '',
+								// Options are loaded dynamically.
+								items :
+								[
+									[ editor.lang.common.notSet , '' ]
+								],
+								onChange : function()
+								{
+									commitInternally.call( this, [ 'info:class', 'advanced:dir', 'advanced:style' ] );
+								},
+								setup : function( element )
+								{
+									for ( var name in styles )
+										styles[ name ].checkElementRemovable( element, true ) && this.setValue( name );
+								},
+								commit: function( element )
+								{
+									var styleName;
+									if ( ( styleName = this.getValue() ) )
+										styles[ styleName ].applyToObject( element );
+								}
+							},
+							{
+								id :'class',
+								type :'text',
+								label :editor.lang.common.cssClass,
+								'default' : ''
+							}
+						]
+					}
+				]
+			},
+			{
+					id :'advanced',
+					label :editor.lang.common.advancedTab,
+					title :editor.lang.common.advancedTab,
+					elements :
+					[
+					{
+						type :'vbox',
+						padding :1,
+						children :
+						[
+							{
+								type :'hbox',
+								widths : [ '50%', '50%' ],
+								children :
+								[
+									{
+										type :'text',
+										id :'id',
+										label :editor.lang.common.id,
+										'default' : ''
+									},
+									{
+										type :'text',
+										id :'lang',
+										label :editor.lang.link.langCode,
+										'default' : ''
+									}
+								]
+							},
+							{
+								type :'hbox',
+								children :
+								[
+										{
+											type :'text',
+											id :'style',
+											style :'width: 100%;',
+											label :editor.lang.common.cssStyle,
+											'default' : '',
+											commit : function( element )
+											{
+												// Merge with 'elementStyle', which is of higher priority.
+												var value = this.getValue(),
+														merged = [ value, element.getAttribute( 'style' ) ].join( ';' );
+												value && element.setAttribute( 'style', merged );
+											}
+										}
+								]
+							},
+							{
+								type :'hbox',
+								children :
+								[
+										{
+											type :'text',
+											id :'title',
+											style :'width: 100%;',
+											label :editor.lang.common.advisoryTitle,
+											'default' : ''
+										}
+								]
+							},
+							{
+								type :'select',
+								id :'dir',
+								style :'width: 100%;',
+								label :editor.lang.common.langDir,
+								'default' : '',
+								items :
+								[
+									[ editor.lang.common.notSet , '' ],
+									[
+										editor.lang.common.langDirLtr,
+										'ltr'
+									],
+									[
+										editor.lang.common.langDirRtl,
+										'rtl'
+									]
+								]
+							}
+						]
+					}
+					]
+				}
+			],
+			onLoad : function()
+			{
+				setupFields.call(this);
+
+				// Preparing for the 'elementStyle' field.
+				var dialog = this,
+					 stylesField = this.getContentElement( 'info', 'elementStyle' );
+
+				 // Reuse the 'stylescombo' plugin's styles definition.
+				editor.getStylesSet( function( stylesDefinitions )
+				{
+					var styleName;
+
+					if ( stylesDefinitions )
+					{
+						// Digg only those styles that apply to 'div'.
+						for ( var i = 0 ; i < stylesDefinitions.length ; i++ )
+						{
+							var styleDefinition = stylesDefinitions[ i ];
+							if ( styleDefinition.element && styleDefinition.element == 'div' )
+							{
+								styleName = styleDefinition.name;
+								styles[ styleName ] = new CKEDITOR.style( styleDefinition );
+
+								// Populate the styles field options with style name.
+								stylesField.items.push( [ styleName, styleName ] );
+								stylesField.add( styleName, styleName );
+							}
+						}
+					}
+
+					// We should disable the content element
+					// it if no options are available at all.
+					stylesField[ stylesField.items.length > 1 ? 'enable' : 'disable' ]();
+
+					// Now setup the field value manually.
+					setTimeout( function() { stylesField.setup( dialog._element ); }, 0 );
+				} );
+			},
+			onShow : function()
+			{
+				// Whether always create new container regardless of existed
+				// ones.
+				if ( command == 'editdiv' )
+				{
+					// Try to discover the containers that already existed in
+					// ranges
+					var div = getDiv( editor );
+					// update dialog field values
+					div && this.setupContent( this._element = div );
+				}
+			},
+			onOk : function()
+			{
+				editor.fire( 'saveSnapshot' );
+				if ( command == 'editdiv' )
+					containers = [ this._element ];
+				else
+					containers = createDiv( editor, true );
+
+				// Update elements attributes
+				var size = containers.length;
+				for ( var i = 0; i < size; i++ )
+				{
+					this.commitContent( containers[ i ] );
+
+					// Remove empty 'style' attribute.
+					!containers[ i ].getAttribute( 'style' ) && containers[ i ].removeAttribute( 'style' );
+				}
+				editor.fire( 'saveSnapshot' );
+
+				this.hide();
+			},
+			onHide : function()
+			{
+				delete this._element;
+			}
+		};
+	}
+
+	CKEDITOR.dialog.add( 'creatediv', function( editor )
+		{
+			return divDialog( editor, 'creatediv' );
+		} );
+	CKEDITOR.dialog.add( 'editdiv', function( editor )
+		{
+			return divDialog( editor, 'editdiv' );
+		} );
+} )();
+
+/*
+ * @name CKEDITOR.config.div_wrapTable
+ * Whether to wrap the whole table instead of indivisual cells when created 'div' in table cell.
+ * @type Boolean
+ * @default false
+ * @example config.div_wrapTable = true;
+ */
Index: /CKEditor/branches/features/adobeair/_source/plugins/div/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/div/plugin.js	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_source/plugins/div/plugin.js	(revision 5613)
@@ -0,0 +1,121 @@
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview The "div" plugin. It wraps the selected block level elements with a 'div' element with specified styles and attributes.
+ *
+ */
+
+(function()
+{
+	CKEDITOR.plugins.add( 'div',
+	{
+		requires : [ 'editingblock', 'domiterator', 'styles' ],
+
+		init : function( editor )
+		{
+			var lang = editor.lang.div;
+
+			editor.addCommand( 'creatediv', new CKEDITOR.dialogCommand( 'creatediv' ) );
+			editor.addCommand( 'editdiv', new CKEDITOR.dialogCommand( 'editdiv' ) );
+			editor.addCommand( 'removediv',
+				{
+					exec : function( editor )
+					{
+						var selection = editor.getSelection(),
+							ranges = selection && selection.getRanges(),
+							range,
+							bookmarks = selection.createBookmarks(),
+							walker,
+							toRemove = [];
+
+						function findDiv( node )
+						{
+							var path = new CKEDITOR.dom.elementPath( node ),
+								blockLimit = path.blockLimit,
+								div = blockLimit.is( 'div' ) && blockLimit;
+
+							if ( div && !div.getAttribute( '_cke_div_added' ) )
+							{
+								toRemove.push( div );
+								div.setAttribute( '_cke_div_added' );
+							}
+						}
+
+						for ( var i = 0 ; i < ranges.length ; i++ )
+						{
+							range = ranges[ i ];
+							if ( range.collapsed )
+								findDiv( selection.getStartElement() );
+							else
+							{
+								walker = new CKEDITOR.dom.walker( range );
+								walker.evaluator = findDiv;
+								walker.lastForward();
+							}
+						}
+
+						for ( i = 0 ; i < toRemove.length ; i++ )
+							toRemove[ i ].remove( true );
+
+						selection.selectBookmarks( bookmarks );
+					}
+				} );
+
+			editor.ui.addButton( 'CreateDiv',
+			{
+				label : lang.toolbar,
+				command :'creatediv'
+			} );
+
+			if ( editor.addMenuItems )
+			{
+				editor.addMenuItems(
+					{
+						editdiv :
+						{
+							label : lang.edit,
+							command : 'editdiv',
+							group : 'div',
+							order : 1
+						},
+
+						removediv:
+						{
+							label : lang.remove,
+							command : 'removediv',
+							group : 'div',
+							order : 5
+						}
+					} );
+
+				if ( editor.contextMenu )
+				{
+					editor.contextMenu.addListener( function( element, selection )
+						{
+							if ( !element )
+								return null;
+
+							var elementPath = new CKEDITOR.dom.elementPath( element ),
+								blockLimit = elementPath.blockLimit;
+
+							if ( blockLimit && blockLimit.getAscendant( 'div', true ) )
+							{
+								return {
+									editdiv : CKEDITOR.TRISTATE_OFF,
+									removediv : CKEDITOR.TRISTATE_OFF
+								};
+							}
+
+							return null;
+						} );
+				}
+			}
+
+			CKEDITOR.dialog.add( 'creatediv', this.path + 'dialogs/div.js' );
+			CKEDITOR.dialog.add( 'editdiv', this.path + 'dialogs/div.js' );
+		}
+	} );
+})();
Index: /CKEditor/branches/features/adobeair/_source/plugins/domiterator/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/domiterator/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/domiterator/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -12,6 +12,8 @@
 (function()
 {
-
-	var iterator = function( range )
+	/**
+	 * @name CKEDITOR.dom.iterator
+	 */
+	function iterator( range )
 	{
 		if ( arguments.length < 1 )
@@ -26,7 +28,8 @@
 
 		this._ || ( this._ = {} );
-	},
-		beginWhitespaceRegex = /^[\r\n\t ]+$/;
-
+	}
+
+	var beginWhitespaceRegex = /^[\r\n\t ]+$/,
+		isBookmark = CKEDITOR.dom.walker.bookmark();
 
 	iterator.prototype = {
@@ -213,12 +216,10 @@
 				{
 					var boundaryNodes = range.getBoundaryNodes(),
-						startPath = new CKEDITOR.dom.elementPath( range.startContainer ),
-						endPath = new CKEDITOR.dom.elementPath( range.endContainer );
-
-					// Drop the range if it only contains bookmark nodes.(#4087)
-					if ( boundaryNodes.startNode.equals( boundaryNodes.endNode )
-						&& boundaryNodes.startNode.getParent().equals( startPath.blockLimit )
-						&& boundaryNodes.startNode.type == CKEDITOR.NODE_ELEMENT
-						&& boundaryNodes.startNode.getAttribute( '_fck_bookmark' ) )
+						startPath = new CKEDITOR.dom.elementPath( range.startContainer );
+
+					// Drop the range if it only contains bookmark nodes, and is
+					// not because of the original collapsed range. (#4087,#4450)
+					if ( boundaryNodes.startNode.getParent().equals( startPath.blockLimit )
+						 && isBookmark( boundaryNodes.startNode ) && isBookmark( boundaryNodes.endNode ) )
 					{
 						range = null;
Index: /CKEditor/branches/features/adobeair/_source/plugins/editingblock/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/editingblock/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/editingblock/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -96,19 +96,6 @@
 					event.removeListener();
 
-					// Grab editor focus if the editor container is focused. (#3104)
-					var focusGrabber = editor.container;
-
-					// Safari 3 can't handle tabindex in all elements, so we do
-					// a trick to make it move the focus to the editor on TAB.
-					if ( CKEDITOR.env.webkit && CKEDITOR.env.version < 528 )
-					{
-						var tabIndex = editor.config.tabIndex || editor.element.getAttribute( 'tabindex' ) || 0;
-						focusGrabber = focusGrabber.append( CKEDITOR.dom.element.createFromHtml(
-							'<input' +
-								' tabindex="' + tabIndex + '"' +
-								' style="position:absolute; left:-10000">' ) );
-					}
-
-					focusGrabber.on( 'focus', function()
+					// Redirect the focus into editor for webkit. (#5713)
+					CKEDITOR.env.webkit && editor.container.on( 'focus', function()
 						{
 							editor.focus();
@@ -235,2 +222,9 @@
  */
 CKEDITOR.config.editingBlock = true;
+
+/**
+ * Fired when a CKEDITOR instance is created, fully initialized and ready for interaction.
+ * @name CKEDITOR#instanceReady
+ * @event
+ * @param {CKEDITOR.editor} editor The editor instance that has been created.
+ */
Index: /CKEditor/branches/features/adobeair/_source/plugins/elementspath/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/elementspath/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/elementspath/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -45,60 +45,81 @@
 			var idBase = 'cke_elementspath_' + CKEDITOR.tools.getNextNumber() + '_';
 
-			editor._.elementsPath = { idBase : idBase };
+			editor._.elementsPath = { idBase : idBase, filters : [] };
 
 			editor.on( 'themeSpace', function( event )
 				{
 					if ( event.data.space == 'bottom' )
-						event.data.html += '<div id="' + spaceId + '" class="cke_path">' + emptyHtml + '</div>';
+					{
+						event.data.html +=
+							'<span id="' + spaceId + '_label" class="cke_voice_label">' + editor.lang.elementsPath.eleLabel + '</span>' +
+							'<div id="' + spaceId + '" class="cke_path" role="group" aria-labelledby="' + spaceId + '_label">' + emptyHtml + '</div>';
+					}
 				});
 
 			editor.on( 'selectionChange', function( ev )
 				{
-					var env = CKEDITOR.env;
-
-					var selection = ev.data.selection;
-
-					var element = selection.getStartElement(),
+					var env = CKEDITOR.env,
+						selection = ev.data.selection,
+						element = selection.getStartElement(),
 						html = [],
-						elementsList = this._.elementsPath.list = [];
+						editor = ev.editor,
+						elementsList = editor._.elementsPath.list = [],
+						filters = editor._.elementsPath.filters;
 
 					while ( element )
 					{
-						var index = elementsList.push( element ) - 1;
-						var name;
-						if ( element.getAttribute( '_cke_real_element_type' ) )
-							name = element.getAttribute( '_cke_real_element_type' );
-						else
-							name = element.getName();
-
-						// Use this variable to add conditional stuff to the
-						// HTML (because we are doing it in reverse order... unshift).
-						var extra = '';
-
-						// Some browsers don't cancel key events in the keydown but in the
-						// keypress.
-						// TODO: Check if really needed for Gecko+Mac.
-						if ( env.opera || ( env.gecko && env.mac ) )
-							extra += ' onkeypress="return false;"';
-
-						// With Firefox, we need to force the button to redraw, otherwise it
-						// will remain in the focus state.
-						if ( env.gecko )
-							extra += ' onblur="this.style.cssText = this.style.cssText;"';
-
-						html.unshift(
-							'<a' +
-								' id="', idBase, index, '"' +
-								' href="javascript:void(\'', name, '\')"' +
-								' tabindex="-1"' +
-								' title="', editor.lang.elementsPath.eleTitle.replace( /%1/, name ), '"' +
-								( ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 ) ?
-								' onfocus="event.preventBubble();"' : '' ) +
-								' hidefocus="true" ' +
-								' onkeydown="return CKEDITOR._.elementsPath.keydown(\'', this.name, '\',', index, ', event);"' +
-								extra ,
-								' onclick="return CKEDITOR._.elementsPath.click(\'', this.name, '\',', index, ');">',
-									name,
-							'</a>' );
+						var ignore = 0;
+						for ( var i = 0; i < filters.length; i++ )
+						{
+							if ( filters[ i ]( element ) === false )
+							{
+								ignore = 1;
+								break;
+							}
+						}
+
+						if ( !ignore )
+						{
+							var index = elementsList.push( element ) - 1;
+							var name;
+							if ( element.getAttribute( '_cke_real_element_type' ) )
+								name = element.getAttribute( '_cke_real_element_type' );
+							else
+								name = element.getName();
+
+							// Use this variable to add conditional stuff to the
+							// HTML (because we are doing it in reverse order... unshift).
+							var extra = '';
+
+							// Some browsers don't cancel key events in the keydown but in the
+							// keypress.
+							// TODO: Check if really needed for Gecko+Mac.
+							if ( env.opera || ( env.gecko && env.mac ) )
+								extra += ' onkeypress="return false;"';
+
+							// With Firefox, we need to force the button to redraw, otherwise it
+							// will remain in the focus state.
+							if ( env.gecko )
+								extra += ' onblur="this.style.cssText = this.style.cssText;"';
+
+							var label = editor.lang.elementsPath.eleTitle.replace( /%1/, name );
+							html.unshift(
+								'<a' +
+									' id="', idBase, index, '"' +
+									' href="javascript:void(\'', name, '\')"' +
+									' tabindex="-1"' +
+									' title="', label, '"' +
+									( ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 ) ?
+									' onfocus="event.preventBubble();"' : '' ) +
+									' hidefocus="true" ' +
+									' onkeydown="return CKEDITOR._.elementsPath.keydown(\'', editor.name, '\',', index, ', event);"' +
+									extra ,
+									' onclick="return CKEDITOR._.elementsPath.click(\'', editor.name, '\',', index, ');"',
+									' role="button" aria-labelledby="' + idBase + index + '_label">',
+										name,
+										'<span id="', idBase, index, '_label" class="cke_label">' + label + '</span>',
+								'</a>' );
+
+						}
 
 						if ( name == 'body' )
@@ -148,7 +169,8 @@
 		ev = new CKEDITOR.dom.event( ev );
 
+		var rtl = editor.lang.dir == 'rtl';
 		switch ( ev.getKeystroke() )
 		{
-			case 37 :					// LEFT-ARROW
+			case rtl ? 39 : 37 :					// LEFT-ARROW
 			case 9 :					// TAB
 				element = CKEDITOR.document.getById( idBase + ( elementIndex + 1 ) );
@@ -158,5 +180,5 @@
 				return false;
 
-			case 39 :					// RIGHT-ARROW
+			case rtl ? 37 : 39 :					// RIGHT-ARROW
 			case CKEDITOR.SHIFT + 9 :	// SHIFT + TAB
 				element = CKEDITOR.document.getById( idBase + ( elementIndex - 1 ) );
Index: /CKEditor/branches/features/adobeair/_source/plugins/enterkey/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/enterkey/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/enterkey/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -18,17 +18,279 @@
 	});
 
-	var forceMode,
+	CKEDITOR.plugins.enterkey =
+	{
+		enterBlock : function( editor, mode, range, forceMode )
+		{
+			// Get the range for the current selection.
+			range = range || getRange( editor );
+
+			var doc = range.document;
+
+			// 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 ( block && ( block.is( 'li' ) || block.getParent().is( 'li' ) ) )
+				{
+					editor.execCommand( 'outdent' );
+					return;
+				}
+			}
+
+			// Determine the block element to be used.
+			var blockTag = ( mode == CKEDITOR.ENTER_DIV ? 'div' : 'p' );
+
+			// Split the range.
+			var splitInfo = range.splitBlock( blockTag );
+
+			if ( !splitInfo )
+				return;
+
+			// Get the current blocks.
+			var previousBlock	= splitInfo.previousBlock,
+				nextBlock		= splitInfo.nextBlock;
+
+			var isStartOfBlock	= splitInfo.wasStartOfBlock,
+				isEndOfBlock	= splitInfo.wasEndOfBlock;
+
+			var node;
+
+			// If this is a block under a list item, split it as well. (#1647)
+			if ( nextBlock )
+			{
+				node = nextBlock.getParent();
+				if ( node.is( 'li' ) )
+				{
+					nextBlock.breakParent( node );
+					nextBlock.move( nextBlock.getNext(), true );
+				}
+			}
+			else if ( previousBlock && ( node = previousBlock.getParent() ) && node.is( 'li' ) )
+			{
+				previousBlock.breakParent( node );
+				range.moveToElementEditStart( previousBlock.getNext() );
+				previousBlock.move( previousBlock.getPrevious() );
+			}
+
+			// If we have both the previous and next blocks, it means that the
+			// boundaries were on separated blocks, or none of them where on the
+			// block limits (start/end).
+			if ( !isStartOfBlock && !isEndOfBlock )
+			{
+				// If the next block is an <li> with another list tree as the first
+				// child, we'll need to append a filler (<br>/NBSP) or the list item
+				// wouldn't be editable. (#1420)
+				if ( nextBlock.is( 'li' )
+					 && ( node = nextBlock.getFirst( CKEDITOR.dom.walker.invisible( true ) ) )
+					 && node.is && node.is( 'ul', 'ol' ) )
+					( CKEDITOR.env.ie ? doc.createText( '\xa0' ) : doc.createElement( 'br' ) ).insertBefore( node );
+
+				// Move the selection to the end block.
+				if ( nextBlock )
+					range.moveToElementEditStart( nextBlock );
+			}
+			else
+			{
+				var newBlock;
+
+				if ( previousBlock )
+				{
+					// Do not enter this block if it's a header tag, or we are in
+					// a Shift+Enter (#77). Create a new block element instead
+					// (later in the code).
+					if ( previousBlock.is( 'li' ) || !headerTagRegex.test( previousBlock.getName() ) )
+					{
+						// Otherwise, duplicate the previous block.
+						newBlock = previousBlock.clone();
+					}
+				}
+				else if ( nextBlock )
+					newBlock = nextBlock.clone();
+
+				if ( !newBlock )
+					newBlock = doc.createElement( blockTag );
+				// Force the enter block unless we're talking of a list item.
+				else if ( forceMode && !newBlock.is( 'li' ) )
+					newBlock.renameNode( blockTag );
+
+				// Recreate the inline elements tree, which was available
+				// before hitting enter, so the same styles will be available in
+				// the new block.
+				var elementPath = splitInfo.elementPath;
+				if ( elementPath )
+				{
+					for ( var i = 0, len = elementPath.elements.length ; i < len ; i++ )
+					{
+						var element = elementPath.elements[ i ];
+
+						if ( element.equals( elementPath.block ) || element.equals( elementPath.blockLimit ) )
+							break;
+
+						if ( CKEDITOR.dtd.$removeEmpty[ element.getName() ] )
+						{
+							element = element.clone();
+							newBlock.moveChildren( element );
+							newBlock.append( element );
+						}
+					}
+				}
+
+				if ( !CKEDITOR.env.ie )
+					newBlock.appendBogus();
+
+				range.insertNode( newBlock );
+
+				// This is tricky, but to make the new block visible correctly
+				// we must select it.
+				// The previousBlock check has been included because it may be
+				// empty if we have fixed a block-less space (like ENTER into an
+				// empty table cell).
+				if ( CKEDITOR.env.ie && isStartOfBlock && ( !isEndOfBlock || !previousBlock.getChildCount() ) )
+				{
+					// Move the selection to the new block.
+					range.moveToElementEditStart( isEndOfBlock ? previousBlock : newBlock );
+					range.select();
+				}
+
+				// Move the selection to the new block.
+				range.moveToElementEditStart( isStartOfBlock && !isEndOfBlock ? nextBlock : newBlock );
+		}
+
+			if ( !CKEDITOR.env.ie )
+			{
+				if ( nextBlock )
+				{
+					// If we have split the block, adds a temporary span at the
+					// range position and scroll relatively to it.
+					var tmpNode = doc.createElement( 'span' );
+
+					// We need some content for Safari.
+					tmpNode.setHtml( '&nbsp;' );
+
+					range.insertNode( tmpNode );
+					tmpNode.scrollIntoView();
+					range.deleteContents();
+				}
+				else
+				{
+					// We may use the above scroll logic for the new block case
+					// too, but it gives some weird result with Opera.
+					newBlock.scrollIntoView();
+				}
+			}
+
+			range.select();
+		},
+
+		enterBr : function( editor, mode, range, forceMode )
+		{
+			// Get the range for the current selection.
+			range = range || getRange( editor );
+
+			var doc = range.document;
+
+			// Determine the block element to be used.
+			var blockTag = ( mode == CKEDITOR.ENTER_DIV ? 'div' : 'p' );
+
+			var isEndOfBlock = range.checkEndOfBlock();
+
+			var elementPath = new CKEDITOR.dom.elementPath( editor.getSelection().getStartElement() );
+
+			var startBlock = elementPath.block,
+				startBlockTag = startBlock && elementPath.block.getName();
+
+			var isPre = false;
+
+			if ( !forceMode && startBlockTag == 'li' )
+			{
+				enterBlock( editor, mode, range, forceMode );
+				return;
+			}
+
+			// If we are at the end of a header block.
+			if ( !forceMode && isEndOfBlock && headerTagRegex.test( startBlockTag ) )
+			{
+				// Insert a <br> after the current paragraph.
+				doc.createElement( 'br' ).insertAfter( startBlock );
+
+				// A text node is required by Gecko only to make the cursor blink.
+				if ( CKEDITOR.env.gecko )
+					doc.createText( '' ).insertAfter( startBlock );
+
+				// IE has different behaviors regarding position.
+				range.setStartAt( startBlock.getNext(), CKEDITOR.env.ie ? CKEDITOR.POSITION_BEFORE_START : CKEDITOR.POSITION_AFTER_START );
+			}
+			else
+			{
+				var lineBreak;
+
+				isPre = ( startBlockTag == 'pre' );
+
+				// Gecko prefers <br> as line-break inside <pre> (#4711).
+				if ( isPre && !CKEDITOR.env.gecko )
+					lineBreak = doc.createText( CKEDITOR.env.ie ? '\r' : '\n' );
+				else
+					lineBreak = doc.createElement( 'br' );
+
+				range.deleteContents();
+				range.insertNode( lineBreak );
+
+				// A text node is required by Gecko only to make the cursor blink.
+				// We need some text inside of it, so the bogus <br> is properly
+				// created.
+				if ( !CKEDITOR.env.ie )
+					doc.createText( '\ufeff' ).insertAfter( lineBreak );
+
+				// If we are at the end of a block, we must be sure the bogus node is available in that block.
+				if ( isEndOfBlock && !CKEDITOR.env.ie )
+					lineBreak.getParent().appendBogus();
+
+				// Now we can remove the text node contents, so the caret doesn't
+				// stop on it.
+				if ( !CKEDITOR.env.ie )
+					lineBreak.getNext().$.nodeValue = '';
+				// IE has different behavior regarding position.
+				if ( CKEDITOR.env.ie )
+					range.setStartAt( lineBreak, CKEDITOR.POSITION_AFTER_END );
+				else
+					range.setStartAt( lineBreak.getNext(), CKEDITOR.POSITION_AFTER_START );
+
+				// Scroll into view, for non IE.
+				if ( !CKEDITOR.env.ie )
+				{
+					var dummy = null;
+
+					// BR is not positioned in Opera and Webkit.
+					if ( !CKEDITOR.env.gecko )
+					{
+						dummy = doc.createElement( 'span' );
+						// We need have some contents for Webkit to position it
+						// under parent node. ( #3681)
+						dummy.setHtml('&nbsp;');
+					}
+					else
+						dummy = doc.createElement( 'br' );
+
+					dummy.insertBefore( lineBreak.getNext() );
+					dummy.scrollIntoView();
+					dummy.remove();
+				}
+			}
+
+			// This collapse guarantees the cursor will be blinking.
+			range.collapse( true );
+
+			range.select( isPre );
+		}
+	};
+
+	var plugin = CKEDITOR.plugins.enterkey,
+		enterBr = plugin.enterBr,
+		enterBlock = plugin.enterBlock,
 		headerTagRegex = /^h[1-6]$/;
 
 	function shiftEnter( editor )
-	{
-		// On SHIFT+ENTER we want to enforce the mode to be respected, instead
-		// of cloning the current block. (#77)
-		forceMode = 1;
-
-		return enter( editor, editor.config.shiftEnterMode );
-	}
-
-	function enter( editor, mode )
 	{
 		// Only effective within document.
@@ -36,4 +298,25 @@
 			return false;
 
+		// On SHIFT+ENTER:
+		// 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, true );
+	}
+
+	function enter( editor, mode, forceMode )
+	{
+		forceMode = editor.config.forceEnterMode || forceMode;
+
+		// Only effective within document.
+		if ( editor.mode != 'wysiwyg' )
+			return false;
+
 		if ( !mode )
 			mode = editor.config.enterMode;
@@ -44,9 +327,8 @@
 				editor.fire( 'saveSnapshot' );	// Save undo step.
 				if ( mode == CKEDITOR.ENTER_BR || editor.getSelection().getStartElement().hasAscendant( 'pre', true ) )
-					enterBr( editor, mode );
+					enterBr( editor, mode, null, forceMode );
 				else
-					enterBlock( editor, mode );
-
-				forceMode = 0;
+					enterBlock( editor, mode, null, forceMode );
+
 			}, 0 );
 
@@ -54,257 +336,4 @@
 	}
 
-	function enterBlock( editor, mode, range )
-	{
-		// Get the range for the current selection.
-		range = range || getRange( editor );
-
-		var doc = range.document;
-
-		// Determine the block element to be used.
-		var blockTag = ( mode == CKEDITOR.ENTER_DIV ? 'div' : 'p' );
-
-		// Split the range.
-		var splitInfo = range.splitBlock( blockTag );
-
-		if ( !splitInfo )
-			return;
-
-		// Get the current blocks.
-		var previousBlock	= splitInfo.previousBlock,
-			nextBlock		= splitInfo.nextBlock;
-
-		var isStartOfBlock	= splitInfo.wasStartOfBlock,
-			isEndOfBlock	= splitInfo.wasEndOfBlock;
-
-		var node;
-
-		// If this is a block under a list item, split it as well. (#1647)
-		if ( nextBlock )
-		{
-			node = nextBlock.getParent();
-			if ( node.is( 'li' ) )
-			{
-				nextBlock.breakParent( node );
-				nextBlock.move( nextBlock.getNext(), true );
-			}
-		}
-		else if ( previousBlock && ( node = previousBlock.getParent() ) && node.is( 'li' ) )
-		{
-			previousBlock.breakParent( node );
-			range.moveToElementEditStart( previousBlock.getNext() );
-			previousBlock.move( previousBlock.getPrevious() );
-		}
-
-		// If we have both the previous and next blocks, it means that the
-		// boundaries were on separated blocks, or none of them where on the
-		// block limits (start/end).
-		if ( !isStartOfBlock && !isEndOfBlock )
-		{
-			// If the next block is an <li> with another list tree as the first
-			// child, we'll need to append a placeholder or the list item
-			// wouldn't be editable. (#1420)
-			if ( nextBlock.is( 'li' ) && ( node = nextBlock.getFirst() )
-					&& node.is && node.is( 'ul', 'ol') )
-				nextBlock.insertBefore( doc.createText( '\xa0' ), node );
-
-			// Move the selection to the end block.
-			if ( nextBlock )
-				range.moveToElementEditStart( nextBlock );
-		}
-		else
-		{
-
-			if ( isStartOfBlock && isEndOfBlock && previousBlock.is( 'li' ) )
-			{
-				editor.execCommand( 'outdent' );
-				return;
-			}
-
-			var newBlock;
-
-			if ( previousBlock )
-			{
-				// Do not enter this block if it's a header tag, or we are in
-				// a Shift+Enter (#77). Create a new block element instead
-				// (later in the code).
-				if ( !forceMode && !headerTagRegex.test( previousBlock.getName() ) )
-				{
-					// Otherwise, duplicate the previous block.
-					newBlock = previousBlock.clone();
-				}
-			}
-			else if ( nextBlock )
-				newBlock = nextBlock.clone();
-
-			if ( !newBlock )
-				newBlock = doc.createElement( blockTag );
-
-			// Recreate the inline elements tree, which was available
-			// before hitting enter, so the same styles will be available in
-			// the new block.
-			var elementPath = splitInfo.elementPath;
-			if ( elementPath )
-			{
-				for ( var i = 0, len = elementPath.elements.length ; i < len ; i++ )
-				{
-					var element = elementPath.elements[ i ];
-
-					if ( element.equals( elementPath.block ) || element.equals( elementPath.blockLimit ) )
-						break;
-
-					if ( CKEDITOR.dtd.$removeEmpty[ element.getName() ] )
-					{
-						element = element.clone();
-						newBlock.moveChildren( element );
-						newBlock.append( element );
-					}
-				}
-			}
-
-			if ( !CKEDITOR.env.ie )
-				newBlock.appendBogus();
-
-			range.insertNode( newBlock );
-
-			// This is tricky, but to make the new block visible correctly
-			// we must select it.
-			// The previousBlock check has been included because it may be
-			// empty if we have fixed a block-less space (like ENTER into an
-			// empty table cell).
-			if ( CKEDITOR.env.ie && isStartOfBlock && ( !isEndOfBlock || !previousBlock.getChildCount() ) )
-			{
-				// Move the selection to the new block.
-				range.moveToElementEditStart( isEndOfBlock ? previousBlock : newBlock );
-				range.select();
-			}
-
-			// Move the selection to the new block.
-			range.moveToElementEditStart( isStartOfBlock && !isEndOfBlock ? nextBlock : newBlock );
-		}
-
-		if ( !CKEDITOR.env.ie )
-		{
-			if ( nextBlock )
-			{
-				// If we have split the block, adds a temporary span at the
-				// range position and scroll relatively to it.
-				var tmpNode = doc.createElement( 'span' );
-
-				// We need some content for Safari.
-				tmpNode.setHtml( '&nbsp;' );
-
-				range.insertNode( tmpNode );
-				tmpNode.scrollIntoView();
-				range.deleteContents();
-			}
-			else
-			{
-				// We may use the above scroll logic for the new block case
-				// too, but it gives some weird result with Opera.
-				newBlock.scrollIntoView();
-			}
-		}
-
-		range.select();
-	}
-
-	function enterBr( editor, mode )
-	{
-		// Get the range for the current selection.
-		var range = getRange( editor ),
-			doc = range.document;
-
-		// Determine the block element to be used.
-		var blockTag = ( mode == CKEDITOR.ENTER_DIV ? 'div' : 'p' );
-
-		var isEndOfBlock = range.checkEndOfBlock();
-
-		var elementPath = new CKEDITOR.dom.elementPath( editor.getSelection().getStartElement() );
-
-		var startBlock = elementPath.block,
-			startBlockTag = startBlock && elementPath.block.getName();
-
-		var isPre = false;
-
-		if ( !forceMode && startBlockTag == 'li' )
-		{
-			enterBlock( editor, mode, range );
-			return;
-		}
-
-		// If we are at the end of a header block.
-		if ( !forceMode && isEndOfBlock && headerTagRegex.test( startBlockTag ) )
-		{
-			// Insert a <br> after the current paragraph.
-			doc.createElement( 'br' ).insertAfter( startBlock );
-
-			// A text node is required by Gecko only to make the cursor blink.
-			if ( CKEDITOR.env.gecko )
-				doc.createText( '' ).insertAfter( startBlock );
-
-			// IE has different behaviors regarding position.
-			range.setStartAt( startBlock.getNext(), CKEDITOR.env.ie ? CKEDITOR.POSITION_BEFORE_START : CKEDITOR.POSITION_AFTER_START );
-		}
-		else
-		{
-			var lineBreak;
-
-			isPre = ( startBlockTag == 'pre' );
-
-			if ( isPre )
-				lineBreak = doc.createText( CKEDITOR.env.ie ? '\r' : '\n' );
-			else
-				lineBreak = doc.createElement( 'br' );
-
-			range.deleteContents();
-			range.insertNode( lineBreak );
-
-			// A text node is required by Gecko only to make the cursor blink.
-			// We need some text inside of it, so the bogus <br> is properly
-			// created.
-			if ( !CKEDITOR.env.ie )
-				doc.createText( '\ufeff' ).insertAfter( lineBreak );
-
-			// If we are at the end of a block, we must be sure the bogus node is available in that block.
-			if ( isEndOfBlock && !CKEDITOR.env.ie )
-				lineBreak.getParent().appendBogus();
-
-			// Now we can remove the text node contents, so the caret doesn't
-			// stop on it.
-			if ( !CKEDITOR.env.ie )
-				lineBreak.getNext().$.nodeValue = '';
-			// IE has different behavior regarding position.
-			if ( CKEDITOR.env.ie )
-				range.setStartAt( lineBreak, CKEDITOR.POSITION_AFTER_END );
-			else
-				range.setStartAt( lineBreak.getNext(), CKEDITOR.POSITION_AFTER_START );
-
-			// Scroll into view, for non IE.
-			if ( !CKEDITOR.env.ie )
-			{
-				var dummy = null;
-
-				// BR is not positioned in Opera and Webkit.
-				if ( !CKEDITOR.env.gecko )
-				{
-					dummy = doc.createElement( 'span' );
-					// We need have some contents for Webkit to position it
-					// under parent node. ( #3681)
-					dummy.setHtml('&nbsp;');
-				}
-				else
-					dummy = doc.createElement( 'br' );
-
-				dummy.insertBefore( lineBreak.getNext() );
-				dummy.scrollIntoView();
-				dummy.remove();
-			}
-		}
-
-		// This collapse guarantees the cursor will be blinking.
-		range.collapse( true );
-
-		range.select( isPre );
-	}
 
 	function getRange( editor )
Index: /CKEditor/branches/features/adobeair/_source/plugins/entities/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/entities/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/entities/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/plugins/fakeobjects/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/fakeobjects/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/fakeobjects/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -12,13 +12,13 @@
 			$ : function( element )
 			{
-				var realHtml = element.attributes._cke_realelement,
+				var attributes = element.attributes,
+					realHtml = attributes && attributes._cke_realelement,
 					realFragment = realHtml && new CKEDITOR.htmlParser.fragment.fromHtml( decodeURIComponent( realHtml ) ),
 					realElement = realFragment && realFragment.children[ 0 ];
 
-				if ( realElement )
+				// If we have width/height in the element, we must move it into
+				// the real element.
+				if ( realElement && element.attributes._cke_resizable )
 				{
-					// If we have width/height in the element, we must move it into
-					// the real element.
-
 					var style = element.attributes.style;
 
@@ -26,9 +26,9 @@
 					{
 						// Get the width from the style.
-						var match = /(?:^|\s)width\s*:\s*(\d+)/.exec( style ),
+						var match = /(?:^|\s)width\s*:\s*(\d+)/i.exec( style ),
 							width = match && match[1];
 
 						// Get the height from the style.
-						match = /(?:^|\s)height\s*:\s*(\d+)/.exec( style );
+						match = /(?:^|\s)height\s*:\s*(\d+)/i.exec( style );
 						var height = match && match[1];
 
@@ -64,4 +64,5 @@
 {
 	var lang = this.lang.fakeobjects;
+
 	var attributes =
 	{
@@ -69,8 +70,12 @@
 		src : CKEDITOR.getUrl( 'images/spacer.gif' ),
 		_cke_realelement : encodeURIComponent( realElement.getOuterHtml() ),
-		alt : lang[ realElementType ] || lang.unknown
+		_cke_real_node_type : realElement.type,
+		alt : lang[ realElementType ] || lang.unknown,
+		align : realElement.getAttribute( 'align' ) || ''
 	};
+
 	if ( realElementType )
 		attributes._cke_real_element_type = realElementType;
+
 	if ( isResizable )
 		attributes._cke_resizable = isResizable;
@@ -81,10 +86,10 @@
 CKEDITOR.editor.prototype.createFakeParserElement = function( realElement, className, realElementType, isResizable )
 {
+	var lang = this.lang.fakeobjects,
+		html;
+
 	var writer = new CKEDITOR.htmlParser.basicWriter();
-
 	realElement.writeHtml( writer );
-
-	var html = writer.getHtml();
-	var lang = this.lang.fakeobjects;
+	html = writer.getHtml();
 
 	var attributes =
@@ -93,5 +98,7 @@
 		src : CKEDITOR.getUrl( 'images/spacer.gif' ),
 		_cke_realelement : encodeURIComponent( html ),
-		alt : lang[ realElementType ] || lang.unknown
+		_cke_real_node_type : realElement.type,
+		alt : lang[ realElementType ] || lang.unknown,
+		align : realElement.attributes.align || ''
 	};
 
@@ -107,5 +114,9 @@
 CKEDITOR.editor.prototype.restoreRealElement = function( fakeElement )
 {
-	var html = decodeURIComponent( fakeElement.getAttribute( '_cke_realelement' ) );
-	return CKEDITOR.dom.element.createFromHtml( html, this.document );
+	if ( fakeElement.getAttribute( '_cke_real_node_type' ) != CKEDITOR.NODE_ELEMENT )
+		return null;
+
+	return CKEDITOR.dom.element.createFromHtml(
+		decodeURIComponent( fakeElement.getAttribute( '_cke_realelement' ) ),
+		this.document );
 };
Index: /CKEditor/branches/features/adobeair/_source/plugins/filebrowser/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/filebrowser/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/filebrowser/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -279,5 +279,16 @@
 				if ( url )
 				{
-					element.onClick = uploadFile;
+					var onClick = element.onClick;
+					element.onClick = function( evt )
+					{
+						// "element" here means the definition object, so we need to find the correct
+						// button to scope the event call
+						var sender = evt.sender;
+						if ( onClick && onClick.call( sender, evt ) === false )
+							return false;
+
+						return uploadFile.call( sender, evt );
+					};
+
 					element.filebrowser.url = url;
 					element.hidden = false;
@@ -336,5 +347,6 @@
 		}
 
-		return ( definition.getContents( tabId ).get( elementId ).filebrowser && definition.getContents( tabId ).get( elementId ).filebrowser.url );
+		var elementFileBrowser = definition.getContents( tabId ).get( elementId ).filebrowser;
+		return ( elementFileBrowser && elementFileBrowser.url );
 	}
 
@@ -348,4 +360,7 @@
 			dialog.getContentElement( targetInput[ 0 ], targetInput[ 1 ] ).reset();
 
+		if ( typeof data == 'function' && data.call( this._.filebrowserSe ) === false )
+			return;
+
 		if ( onSelect && onSelect.call( this._.filebrowserSe, fileUrl, data ) === false )
 			return;
@@ -364,20 +379,101 @@
 		{
 			editor._.filebrowserFn = CKEDITOR.tools.addFunction( setUrl, editor );
-
-			CKEDITOR.on( 'dialogDefinition', function( evt )
-			{
-				// Associate filebrowser to elements with 'filebrowser' attribute.
-				for ( var i in evt.data.definition.contents )
-				{
-					attachFileBrowser( evt.editor, evt.data.name, evt.data.definition, evt.data.definition.contents[ i ].elements );
-					if ( evt.data.definition.contents[ i ].hidden && evt.data.definition.contents[ i ].filebrowser )
-					{
-						evt.data.definition.contents[ i ].hidden =
-							!isConfigured( evt.data.definition, evt.data.definition.contents[ i ][ 'id' ], evt.data.definition.contents[ i ].filebrowser );
-					}
-				}
-			} );
 		}
 	} );
 
+	CKEDITOR.on( 'dialogDefinition', function( evt )
+	{
+		var definition = evt.data.definition,
+			element;
+		// Associate filebrowser to elements with 'filebrowser' attribute.
+		for ( var i in definition.contents )
+		{
+			element = definition.contents[ i ] ;
+			attachFileBrowser( evt.editor, evt.data.name, definition, element.elements );
+			if ( element.hidden && element.filebrowser )
+			{
+				element.hidden = !isConfigured( definition, element[ 'id' ], element.filebrowser );
+			}
+		}
+	} );
+
 } )();
+
+/**
+ * The location of an external file browser, that should be launched when "Browse Server" button is pressed.
+ * If configured, the "Browse Server" button will appear in Link, Image and Flash dialogs.
+ * @see The <a href="http://docs.cksource.com/CKEditor_3.x/Developers_Guide/File_Browser_(Uploader)">File Browser/Uploader</a> documentation.
+ * @name CKEDITOR.config.filebrowserBrowseUrl
+ * @since 3.0
+ * @type String
+ * @default '' (empty string = disabled)
+ * @example
+ * config.filebrowserBrowseUrl = '/browser/browse.php';
+ */
+
+/**
+ * The location of a script that handles file uploads.
+ * If set, the "Upload" tab will appear in "Link", "Image" and "Flash" dialogs.
+ * @name CKEDITOR.config.filebrowserUploadUrl
+ * @see The <a href="http://docs.cksource.com/CKEditor_3.x/Developers_Guide/File_Browser_(Uploader)">File Browser/Uploader</a> documentation.
+ * @since 3.0
+ * @type String
+ * @default '' (empty string = disabled)
+ * @example
+ * config.filebrowserUploadUrl = '/uploader/upload.php';
+ */
+
+/**
+ * The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Image dialog.
+ * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserBrowseUrl}.
+ * @name CKEDITOR.config.filebrowserImageBrowseUrl
+ * @since 3.0
+ * @type String
+ * @default '' (empty string = disabled)
+ * @example
+ * config.filebrowserImageBrowseUrl = '/browser/browse.php?type=Images';
+ */
+
+/**
+ * The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Flash dialog.
+ * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserBrowseUrl}.
+ * @name CKEDITOR.config.filebrowserFlashBrowseUrl
+ * @since 3.0
+ * @type String
+ * @default '' (empty string = disabled)
+ * @example
+ * config.filebrowserFlashBrowseUrl = '/browser/browse.php?type=Flash';
+ */
+
+/**
+ * The location of a script that handles file uploads in the Image dialog.
+ * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserUploadUrl}.
+ * @name CKEDITOR.config.filebrowserImageUploadUrl
+ * @since 3.0
+ * @type String
+ * @default '' (empty string = disabled)
+ * @example
+ * config.filebrowserImageUploadUrl = '/uploader/upload.php?type=Images';
+ */
+
+/**
+ * The location of a script that handles file uploads in the Flash dialog.
+ * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserUploadUrl}.
+ * @name CKEDITOR.config.filebrowserFlashUploadUrl
+ * @since 3.0
+ * @type String
+ * @default '' (empty string = disabled)
+ * @example
+ * config.filebrowserFlashUploadUrl = '/uploader/upload.php?type=Flash';
+ */
+
+/**
+ * The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Link tab of Image dialog.
+ * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserBrowseUrl}.
+ * @name CKEDITOR.config.filebrowserImageBrowseLinkUrl
+ * @since 3.2
+ * @type String
+ * @default '' (empty string = disabled)
+ * @example
+ * config.filebrowserImageBrowseLinkUrl = '/browser/browse.php';
+ */
Index: /CKEditor/branches/features/adobeair/_source/plugins/find/dialogs/find.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/find/dialogs/find.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/find/dialogs/find.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -6,5 +6,5 @@
 (function()
 {
-	function guardDomWalkerNonEmptyTextNode( node )
+	function nonEmptyText( node )
 	{
 		return ( node.type == CKEDITOR.NODE_TEXT && node.getLength() > 0 );
@@ -14,9 +14,8 @@
 	 * Elements which break characters been considered as sequence.
 	*/
-	function checkCharactersBoundary ( node )
+	function nonCharactersBoundary ( node )
 	{
-		var dtd = CKEDITOR.dtd;
-		return node.isBlockBoundary(
-			CKEDITOR.tools.extend( {}, dtd.$empty, dtd.$nonEditable ) );
+		return !( node.type == CKEDITOR.NODE_ELEMENT && node.isBlockBoundary(
+			CKEDITOR.tools.extend( {}, CKEDITOR.dtd.$empty, CKEDITOR.dtd.$nonEditable ) ) );
 	}
 
@@ -68,6 +67,9 @@
 	var findDialog = function( editor, startupPage )
 	{
-		// Style object for highlights.
-		var highlightStyle = new CKEDITOR.style( editor.config.find_highlight );
+		// Style object for highlights: (#5018)
+		// 1. Defined as full match style to avoid compromising ordinary text color styles.
+		// 2. Must be apply onto inner-most text to avoid conflicting with ordinary text color styles visually.
+		var highlightStyle = new CKEDITOR.style( CKEDITOR.tools.extend( { fullMatch : true, childRule : function(){ return false; } },
+			editor.config.find_highlight ) );
 
 		/**
@@ -82,6 +84,6 @@
 			var walker =
 				new CKEDITOR.dom.walker( range );
-			walker[ matchWord ? 'guard' : 'evaluator' ] =
-				guardDomWalkerNonEmptyTextNode;
+			walker.guard = matchWord ? nonCharactersBoundary : null;
+			walker[ 'evaluator' ] = nonEmptyText;
 			walker.breakOnFalse = true;
 
@@ -108,5 +110,5 @@
 				var currentTextNode = this.textNode;
 				// Already at the end of document, no more character available.
-				if(  currentTextNode === null )
+				if (  currentTextNode === null )
 					return cursorStep.call( this );
 
@@ -114,5 +116,5 @@
 
 				// There are more characters in the text node, step forward.
-				if( currentTextNode
+				if ( currentTextNode
 				    && rtl
 					&& this.offset > 0 )
@@ -121,5 +123,5 @@
 					return cursorStep.call( this );
 				}
-				else if( currentTextNode
+				else if ( currentTextNode
 					&& this.offset < currentTextNode.getLength() - 1 )
 				{
@@ -143,6 +145,6 @@
 
 						// Marking as match character boundaries.
-						if( !currentTextNode
-						   && checkCharactersBoundary( this._.walker.current ) )
+						if ( !currentTextNode
+						   && !nonCharactersBoundary( this._.walker.current ) )
 							this._.matchBoundary = true;
 
@@ -182,14 +184,23 @@
 			toDomRange : function()
 			{
+				var range = new CKEDITOR.dom.range( editor.document );
 				var cursors = this._.cursors;
 				if ( cursors.length < 1 )
-					return null;
-
-				var first = cursors[0],
-					last = cursors[ cursors.length - 1 ],
-					range = new CKEDITOR.dom.range( editor.document );
-
-				range.setStart( first.textNode, first.offset );
-				range.setEnd( last.textNode, last.offset + 1 );
+				{
+					var textNode = this._.walker.textNode;
+					if ( textNode )
+							range.setStartAfter( textNode );
+					else
+						return null;
+				}
+				else
+				{
+					var first = cursors[0],
+							last = cursors[ cursors.length - 1 ];
+
+					range.setStart( first.textNode, first.offset );
+					range.setEnd( last.textNode, last.offset + 1 );
+				}
+
 				return range;
 			},
@@ -311,11 +322,14 @@
 			{
 				var lastCursor,
+						nextRangeWalker,
 						cursors = this._.cursors;
-				if ( !( lastCursor = cursors[ cursors.length - 1 ] ) )
-					return null;
-				return new characterRange(
-										new characterWalker(
-											getRangeAfterCursor( lastCursor ) ),
-										maxLength );
+
+				if ( ( lastCursor = cursors[ cursors.length - 1 ] ) && lastCursor.textNode )
+					nextRangeWalker = new characterWalker( getRangeAfterCursor( lastCursor ) );
+				// In case it's an empty range (no cursors), figure out next range from walker (#4951).
+				else
+					nextRangeWalker = this._.walker;
+
+				return new characterRange( nextRangeWalker, maxLength );
 			},
 
@@ -428,5 +442,5 @@
 			find : function( pattern, matchCase, matchWord, matchCyclic, highlightMatched, cyclicRerun )
 			{
-				if( !this.matchRange )
+				if ( !this.matchRange )
 					this.matchRange =
 						new characterRange(
@@ -709,5 +723,5 @@
 										}
 										editor.fire( 'saveSnapshot' );
-										while( finder.replace( dialog,
+										while ( finder.replace( dialog,
 											dialog.getValueOf( 'replace', 'txtFindReplace' ),
 											dialog.getValueOf( 'replace', 'txtReplace' ),
@@ -802,5 +816,5 @@
 							}
 
-							if( isUserSelect )
+							if ( isUserSelect )
 								// synchronize fields on tab switch.
 								syncFieldsBetweenTabs.call( this, pageId );
@@ -814,21 +828,28 @@
 				finder.searchRange = getSearchRange();
 
-				if ( startupPage == 'replace' )
-					this.getContentElement( 'replace', 'txtFindReplace' ).focus();
-				else
-					this.getContentElement( 'find', 'txtFindFind' ).focus();
+				this.selectPage( startupPage );
 			},
 			onHide : function()
 			{
+				var range;
 				if ( finder.matchRange && finder.matchRange.isMatched() )
 				{
 					finder.matchRange.removeHighlight();
 					editor.focus();
-					editor.getSelection().selectRanges(
-						[ finder.matchRange.toDomRange() ] );
+
+					range = finder.matchRange.toDomRange();
+					if ( range )
+						editor.getSelection().selectRanges( [ range ] );
 				}
 
 				// Clear current session before dialog close
 				delete finder.matchRange;
+			},
+			onFocus : function()
+			{
+				if ( startupPage == 'replace' )
+					return this.getContentElement( 'replace', 'txtFindReplace' );
+				else
+					return this.getContentElement( 'find', 'txtFindFind' );
 			}
 		};
Index: /CKEditor/branches/features/adobeair/_source/plugins/find/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/find/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/find/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/plugins/flash/dialogs/flash.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/flash/dialogs/flash.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/flash/dialogs/flash.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -25,5 +25,5 @@
 	var attributesMap =
 	{
-		id : [ { type : ATTRTYPE_OBJECT, name : CKEDITOR.env.ie ? '_cke_saved_id' : 'id' } ],
+		id : [ { type : ATTRTYPE_OBJECT, name :  'id' } ],
 		classid : [ { type : ATTRTYPE_OBJECT, name : 'classid' } ],
 		codebase : [ { type : ATTRTYPE_OBJECT, name : 'codebase'} ],
@@ -174,7 +174,8 @@
 			makeEmbedTag = editor.config.flashAddEmbedTag || editor.config.flashEmbedTagOnly;
 
-		var previewAreaHtml = '<div>' + CKEDITOR.tools.htmlEncode( editor.lang.image.preview ) +'<br>' +
-			'<div id="FlashPreviewLoader" style="display:none"><div class="loading">&nbsp;</div></div>' +
-			'<div id="FlashPreviewBox"></div></div>';
+		var previewPreloader,
+			previewAreaHtml = '<div>' + CKEDITOR.tools.htmlEncode( editor.lang.common.preview ) +'<br>' +
+			'<div id="FlashPreviewLoader' + CKEDITOR.tools.getNextNumber() + '" style="display:none"><div class="loading">&nbsp;</div></div>' +
+			'<div id="FlashPreviewBox' + CKEDITOR.tools.getNextNumber() + '" class="FlashPreviewBox"></div></div>';
 
 		return {
@@ -186,4 +187,5 @@
 				// Clear previously saved elements.
 				this.fakeImage = this.objectNode = this.embedNode = null;
+				previewPreloader = new CKEDITOR.dom.element( 'embeded', editor.document );
 
 				// Try to detect any embed or object tag that has Flash parameters.
@@ -264,13 +266,19 @@
 				}
 
-				// Apply or remove flash parameters.
-				var extraStyles = {};
-				this.commitContent( objectNode, embedNode, paramMap, extraStyles );
+				// A subset of the specified attributes/styles
+				// should also be applied on the fake element to
+				// have better visual effect. (#5240)
+				var extraStyles = {}, extraAttributes = {};
+				this.commitContent( objectNode, embedNode, paramMap, extraStyles, extraAttributes );
 
 				// Refresh the fake image.
 				var newFakeImage = editor.createFakeElement( objectNode || embedNode, 'cke_flash', 'flash', true );
+				newFakeImage.setAttributes( extraAttributes );
 				newFakeImage.setStyles( extraStyles );
 				if ( this.fakeImage )
+				{
 					newFakeImage.replace( this.fakeImage );
+					editor.getSelection().selectElement( newFakeImage );
+				}
 				else
 					editor.insertElement( newFakeImage );
@@ -296,8 +304,4 @@
 							[
 								{
-									type : 'html',
-									html : '<span>' + CKEDITOR.tools.htmlEncode( editor.lang.image.url ) + '</span>'
-								},
-								{
 									type : 'hbox',
 									widths : [ '280px', '110px' ],
@@ -308,5 +312,6 @@
 											id : 'src',
 											type : 'text',
-											label : '',
+											label : editor.lang.common.url,
+											required : true,
 											validate : CKEDITOR.dialog.validate.notEmpty( editor.lang.flash.validateSrc ),
 											setup : loadValue,
@@ -316,7 +321,8 @@
 												var dialog = this.getDialog(),
 												updatePreview = function( src ){
-
+													// Query the preloader to figure out the url impacted by based href.
+													previewPreloader.setAttribute( 'src', src );
 													dialog.preview.setHtml( '<embed height="100%" width="100%" src="'
-														+ CKEDITOR.tools.htmlEncode( src )
+														+ CKEDITOR.tools.htmlEncode( previewPreloader.getAttribute( 'src' ) )
 														+ '" type="application/x-shockwave-flash"></embed>' );
 												};
@@ -342,5 +348,7 @@
 											filebrowser : 'info:src',
 											hidden : true,
-											align : 'center',
+											// v-align with the 'src' field.
+											// TODO: We need something better than a fixed size here.
+											style : 'display:inline-block;margin-top:10px;',
 											label : editor.lang.common.browseServer
 										}
@@ -557,16 +565,21 @@
 									[
 										[ editor.lang.common.notSet , ''],
-										[ editor.lang.image.alignLeft , 'left'],
-										[ editor.lang.image.alignAbsBottom , 'absBottom'],
-										[ editor.lang.image.alignAbsMiddle , 'absMiddle'],
-										[ editor.lang.image.alignBaseline , 'baseline'],
-										[ editor.lang.image.alignBottom , 'bottom'],
-										[ editor.lang.image.alignMiddle , 'middle'],
-										[ editor.lang.image.alignRight , 'right'],
-										[ editor.lang.image.alignTextTop , 'textTop'],
-										[ editor.lang.image.alignTop , 'top']
+										[ editor.lang.flash.alignLeft , 'left'],
+										[ editor.lang.flash.alignAbsBottom , 'absBottom'],
+										[ editor.lang.flash.alignAbsMiddle , 'absMiddle'],
+										[ editor.lang.flash.alignBaseline , 'baseline'],
+										[ editor.lang.flash.alignBottom , 'bottom'],
+										[ editor.lang.flash.alignMiddle , 'middle'],
+										[ editor.lang.flash.alignRight , 'right'],
+										[ editor.lang.flash.alignTextTop , 'textTop'],
+										[ editor.lang.flash.alignTop , 'top']
 									],
 									setup : loadValue,
-									commit : commitValue
+									commit : function( objectNode, embedNode, paramMap, extraStyles, extraAttributes )
+									{
+										var value = this.getValue();
+										commitValue.apply( this, arguments );
+										value && ( extraAttributes.align = value );
+									}
 								},
 								{
@@ -577,43 +590,46 @@
 						},
 						{
-							type : 'vbox',
-							padding : 0,
-							children :
-							[
-								{
-									type : 'html',
-									html : CKEDITOR.tools.htmlEncode( editor.lang.flash.flashvars )
-								},
-								{
-									type : 'checkbox',
-									id : 'menu',
-									label : editor.lang.flash.chkMenu,
-									'default' : true,
-									setup : loadValue,
-									commit : commitValue
-								},
-								{
-									type : 'checkbox',
-									id : 'play',
-									label : editor.lang.flash.chkPlay,
-									'default' : true,
-									setup : loadValue,
-									commit : commitValue
-								},
-								{
-									type : 'checkbox',
-									id : 'loop',
-									label : editor.lang.flash.chkLoop,
-									'default' : true,
-									setup : loadValue,
-									commit : commitValue
-								},
-								{
-									type : 'checkbox',
-									id : 'allowFullScreen',
-									label : editor.lang.flash.chkFull,
-									'default' : true,
-									setup : loadValue,
-									commit : commitValue
+							type : 'fieldset',
+							label : CKEDITOR.tools.htmlEncode( editor.lang.flash.flashvars ),
+							children :
+							[
+								{
+									type : 'vbox',
+									padding : 0,
+									children :
+									[
+										{
+											type : 'checkbox',
+											id : 'menu',
+											label : editor.lang.flash.chkMenu,
+											'default' : true,
+											setup : loadValue,
+											commit : commitValue
+										},
+										{
+											type : 'checkbox',
+											id : 'play',
+											label : editor.lang.flash.chkPlay,
+											'default' : true,
+											setup : loadValue,
+											commit : commitValue
+										},
+										{
+											type : 'checkbox',
+											id : 'loop',
+											label : editor.lang.flash.chkLoop,
+											'default' : true,
+											setup : loadValue,
+											commit : commitValue
+										},
+										{
+											type : 'checkbox',
+											id : 'allowFullScreen',
+											label : editor.lang.flash.chkFull,
+											'default' : true,
+											setup : loadValue,
+											commit : commitValue
+										}
+									]
 								}
 							]
Index: /CKEditor/branches/features/adobeair/_source/plugins/flash/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/flash/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/flash/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -78,4 +78,12 @@
 			}
 
+			editor.on( 'doubleclick', function( evt )
+				{
+					var element = evt.data.element;
+
+					if ( element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'flash' )
+						evt.data.dialog = 'flash';
+				});
+
 			// If the "contextmenu" plugin is loaded, register the listeners.
 			if ( editor.contextMenu )
@@ -110,5 +118,5 @@
 									for ( var i = 0 ; i < element.children.length ; i++ )
 									{
-										if ( element.children[ i ].name == 'embed' )
+										if ( element.children[ i ].name == 'cke:embed' )
 										{
 											if ( !isFlashEmbed( element.children[ i ] ) )
Index: /CKEditor/branches/features/adobeair/_source/plugins/floatpanel/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/floatpanel/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/floatpanel/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -56,8 +56,4 @@
 			this.element = element;
 
-			// Register panels to editor for easy destroying ( #4241 ).
-			editor.panels ? editor.panels.push( element ) : editor.panels = [ element ];
-
-
 			this._ =
 			{
@@ -136,8 +132,10 @@
 						top : top + 'px',
 						left : '-3000px',
-						visibility : 'hidden',
 						opacity : '0',	// FF3 is ignoring "visibility"
 						display	: ''
 					});
+
+				// To allow the context menu to decrease back their width
+				element.getFirst().removeStyle('width');
 
 				// Configure the IFrame blur event. Do that only once.
@@ -154,5 +152,5 @@
 					focused.on( 'blur', function( ev )
 						{
-							if ( CKEDITOR.env.ie && !this.allowBlur() )
+							if ( !this.allowBlur() )
 								return;
 
@@ -161,8 +159,8 @@
 							// inside the window itself, so we must ensure the
 							// target is out of it.
-							var target = ev.data.getTarget(),
-								targetWindow = target.getWindow && target.getWindow();
-
-							if ( targetWindow && targetWindow.equals( focused ) )
+							var target;
+							if ( CKEDITOR.env.ie && !this.allowBlur()
+								 || ( target = ev.data.getTarget() )
+								      && target.getName && target.getName() != 'iframe' )
 								return;
 
@@ -185,7 +183,8 @@
 				}
 
-				panel.onEscape = CKEDITOR.tools.bind( function()
+				panel.onEscape = CKEDITOR.tools.bind( function( keystroke )
 					{
-						this.onEscape && this.onEscape();
+						if ( this.onEscape && this.onEscape( keystroke ) === false )
+							return false;
 					},
 					this );
@@ -196,19 +195,34 @@
 							left -= element.$.offsetWidth;
 
-						element.setStyles(
-							{
-								left : left + 'px',
-								visibility	: '',
-								opacity : '1'	// FF3 is ignoring "visibility"
-							});
-
 						var panelLoad = CKEDITOR.tools.bind( function ()
 						{
-							if ( this.onShow )
-								this.onShow.call( this );
+							var target = element.getFirst();
 
 							if ( block.autoSize )
 							{
-								var target = element.getFirst();
+								// We must adjust first the width or IE6 could include extra lines in the height computation
+								var widthNode = block.element.$;
+
+								if ( CKEDITOR.env.gecko || CKEDITOR.env.opera)
+									widthNode = widthNode.parentNode;
+
+								if ( CKEDITOR.env.ie)
+									widthNode = widthNode.document.body;
+
+								var width = widthNode.scrollWidth;
+								// Account for extra height needed due to IE quirks box model bug:
+								// http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug
+								// (#3426)
+								if ( CKEDITOR.env.ie && CKEDITOR.env.quirks && width > 0 )
+									width += ( target.$.offsetWidth || 0 ) - ( target.$.clientWidth || 0 );
+								// A little extra at the end.
+								// If not present, IE6 might break into the next line, but also it looks better this way
+								width += 4 ;
+
+								target.setStyle( 'width', width + 'px' );
+
+								// IE doesn't compute the scrollWidth if a filter is applied previously
+								block.element.addClass( 'cke_frameLoaded' );
+
 								var height = block.element.$.scrollHeight;
 
@@ -225,36 +239,50 @@
 							}
 							else
-								element.getFirst().removeStyle( 'height' );
-
-							isShowing = false;
+								target.removeStyle( 'height' );
+
+							var panelElement = panel.element,
+								panelWindow = panelElement.getWindow(),
+								windowScroll = panelWindow.getScrollPosition(),
+								viewportSize = panelWindow.getViewPaneSize(),
+								panelSize =
+								{
+									'height' : panelElement.$.offsetHeight,
+									'width' : panelElement.$.offsetWidth
+								};
+
+							// If the menu is horizontal off, shift it toward
+							// the opposite language direction.
+							if ( rtl ? left < 0 : left + panelSize.width > viewportSize.width + windowScroll.x )
+								left += ( panelSize.width * ( rtl ? 1 : -1 ) );
+
+							// Vertical off screen is simpler.
+							if ( top + panelSize.height > viewportSize.height + windowScroll.y )
+								top -= panelSize.height;
+
+							element.setStyles(
+								{
+									top : top + 'px',
+									left : left + 'px',
+									opacity : '1'
+								} );
+
 						} , this );
 
 						panel.isLoaded ? panelLoad() : panel.onLoad = panelLoad;
-						// Set the IFrame focus, so the blur event gets fired.
+
+						// Set the panel frame focus, so the blur event gets fired.
 						CKEDITOR.tools.setTimeout( function()
-							{
-								if ( definition.voiceLabel )
-								{
-									if ( CKEDITOR.env.gecko )
-									{
-										var container = iframe.getParent();
-										container.setAttribute( 'role', 'region' );
-										container.setAttribute( 'title', definition.voiceLabel );
-										iframe.setAttribute( 'role', 'region' );
-										iframe.setAttribute( 'title', ' ' );
-									}
-								}
-								if ( CKEDITOR.env.ie && CKEDITOR.env.quirks )
-									iframe.focus();
-								else
-									iframe.$.contentWindow.focus();
-
-								// We need this get fired manually because of unfired focus() function.
-								if ( CKEDITOR.env.ie && !CKEDITOR.env.quirks )
-									this.allowBlur( true );
-							}, 0, this);
+						{
+							iframe.$.contentWindow.focus();
+							// We need this get fired manually because of unfired focus() function.
+							this.allowBlur( true );
+						}, 0, this);
 					}, 0, this);
 				this.visible = 1;
 
+				if ( this.onShow )
+					this.onShow.call( this );
+
+				isShowing = false;
 			},
 
@@ -327,3 +355,22 @@
 		}
 	});
+
+	CKEDITOR.on( 'instanceDestroyed', function()
+	{
+		var isLastInstance = CKEDITOR.tools.isEmpty( CKEDITOR.instances );
+
+		for ( var i in panels )
+		{
+			var panel = panels[ i ];
+			// Safe to destroy it since there're no more instances.(#4241)
+			if ( isLastInstance )
+				panel.destroy();
+			// Panel might be used by other instances, just hide them.(#4552)
+			else
+				panel.element.hide();
+		}
+		// Remove the registration.
+		isLastInstance && ( panels = {} );
+
+	} );
 })();
Index: /CKEditor/branches/features/adobeair/_source/plugins/font/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/font/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/font/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -18,11 +18,20 @@
 		for ( var i = 0 ; i < names.length ; i++ )
 		{
-			var vars = {};
-			var parts = names[ i ].split( '/' );
-
-			var name = names[ i ] = parts[ 0 ];
-			vars[ styleType ] = values[ i ] = parts[ 1 ] || name;
-
-			styles[ name ] = new CKEDITOR.style( styleDefinition, vars );
+			var parts = names[ i ];
+
+			if ( parts )
+			{
+				parts = parts.split( '/' );
+
+				var vars = {},
+					name = names[ i ] = parts[ 0 ];
+
+				vars[ styleType ] = values[ i ] = parts[ 1 ] || name;
+
+				styles[ name ] = new CKEDITOR.style( styleDefinition, vars );
+				styles[ name ]._.definition.name = name;
+			}
+			else
+				names.splice( i--, 1 );
 		}
 
@@ -31,12 +40,10 @@
 				label : lang.label,
 				title : lang.panelTitle,
-				voiceLabel : lang.voiceLabel,
 				className : 'cke_' + ( styleType == 'size' ? 'fontSize' : 'font' ),
-				multiSelect : false,
-
 				panel :
 				{
-					css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
-					voiceLabel : lang.panelVoiceLabel
+					css : editor.skin.editor.css.concat( config.contentsCss ),
+					multiSelect : false,
+					attributes : { 'aria-label' : lang.panelTitle }
 				},
 
@@ -50,7 +57,6 @@
 
 						// Add the tag entry to the panel list.
-						this.add( name, '<span style="font-' + styleType + ':' + values[ i ] + '">' + name + '</span>', name );
+						this.add( name, styles[ name ].buildPreview(), name );
 					}
-					this.commit();
 				},
 
Index: /CKEditor/branches/features/adobeair/_source/plugins/format/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/format/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/format/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -22,4 +22,5 @@
 			var tag = tags[ i ];
 			styles[ tag ] = new CKEDITOR.style( config[ 'format_' + tag ] );
+			styles[ tag ]._.enterMode = editor.config.enterMode;
 		}
 
@@ -28,12 +29,10 @@
 				label : lang.label,
 				title : lang.panelTitle,
-				voiceLabel : lang.voiceLabel,
 				className : 'cke_format',
-				multiSelect : false,
-
 				panel :
 				{
-					css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
-					voiceLabel : lang.panelVoiceLabel
+					css : editor.skin.editor.css.concat( config.contentsCss ),
+					multiSelect : false,
+					attributes : { 'aria-label' : lang.panelTitle }
 				},
 
@@ -49,5 +48,4 @@
 						this.add( tag, '<' + tag + '>' + label + '</' + tag + '>', label );
 					}
-					this.commit();
 				},
 
@@ -59,5 +57,9 @@
 					styles[ value ].apply( editor.document );
 
-					editor.fire( 'saveSnapshot' );
+					// Save the undo snapshot after all changes are affected. (#4899)
+					setTimeout( function()
+					{
+						editor.fire( 'saveSnapshot' );
+					}, 0 );
 				},
 
Index: /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/button.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/button.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/button.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/checkbox.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/checkbox.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/checkbox.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -80,14 +80,29 @@
 						setup : function( element )
 						{
-							this.setValue( element.getAttribute( 'value' ) || '' );
+							var value = element.getAttribute( 'value' );
+							// IE Return 'on' as default attr value.
+							this.setValue(  CKEDITOR.env.ie && value == 'on' ? '' : value  );
 						},
 						commit : function( data )
 						{
-							var element = data.element;
+							var element = data.element,
+								value = this.getValue();
 
-							if ( this.getValue() )
-								element.setAttribute( 'value', this.getValue() );
+							if ( value && !( CKEDITOR.env.ie && value == 'on' ) )
+								element.setAttribute( 'value', value );
 							else
-								element.removeAttribute( 'value' );
+							{
+								if ( CKEDITOR.env.ie )
+								{
+									// Remove attribute 'value' of checkbox #4721.
+									var checkbox = new CKEDITOR.dom.element( 'input', element.getDocument() );
+									element.copyAttributes( checkbox, { value: 1 } );
+									checkbox.replace( element );
+									editor.getSelection().selectElement( checkbox );
+									data.element = checkbox;
+								}
+								else
+									element.removeAttribute( 'value' );
+							}
 						}
 					},
@@ -116,5 +131,6 @@
 									var replace = CKEDITOR.dom.element.createFromHtml( '<input type="checkbox"'
 										   + ( isChecked ? ' checked="checked"' : '' )
-										   + '></input>', editor.document );
+										   + '/>', editor.document );
+
 									element.copyAttributes( replace, { type : 1, checked : 1 } );
 									replace.replace( element );
@@ -125,6 +141,7 @@
 							else
 							{
-								if ( this.getValue() )
-									element.setAttribute( 'checked', this.getValue() );
+								var value = this.getValue();
+								if ( value )
+									element.setAttribute( 'checked', 'checked' );
 								else
 									element.removeAttribute( 'checked' );
Index: /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/form.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/form.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/form.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -144,5 +144,5 @@
 								id : 'target',
 								type : 'select',
-								label : editor.lang.form.target,
+								label : editor.lang.common.target,
 								style : 'width:100%',
 								accessKey : 'M',
@@ -150,9 +150,9 @@
 								items :
 								[
-									[ editor.lang.form.targetNotSet, '' ],
-									[ editor.lang.form.targetNew, '_blank' ],
-									[ editor.lang.form.targetTop, '_top' ],
-									[ editor.lang.form.targetSelf, '_self' ],
-									[ editor.lang.form.targetParent, '_parent' ]
+									[ editor.lang.common.notSet, '' ],
+									[ editor.lang.common.targetNew, '_blank' ],
+									[ editor.lang.common.targetTop, '_top' ],
+									[ editor.lang.common.targetSelf, '_self' ],
+									[ editor.lang.common.targetParent, '_parent' ]
 								]
 							},
Index: /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/hiddenfield.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/hiddenfield.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/hiddenfield.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -7,4 +7,5 @@
 	return {
 		title : editor.lang.hidden.title,
+		hiddenField : null,
 		minWidth : 350,
 		minHeight : 110,
@@ -13,27 +14,34 @@
 			delete this.hiddenField;
 
-			var element = this.getParentEditor().getSelection().getSelectedElement();
-			if ( element && element.getName() == "input" && element.getAttribute( 'type' ) == "checkbox" )
+			var editor = this.getParentEditor(),
+				selection = editor.getSelection(),
+				element = selection.getSelectedElement();
+
+			if ( element && element.getAttribute( '_cke_real_element_type' ) && element.getAttribute( '_cke_real_element_type' ) == 'hiddenfield' )
 			{
 				this.hiddenField = element;
+				element = editor.restoreRealElement( this.hiddenField );
 				this.setupContent( element );
+				selection.selectElement( this.hiddenField );
 			}
 		},
 		onOk : function()
 		{
-			var editor,
-				element = this.hiddenField,
-				isInsertMode = !element;
+			var name = this.getValueOf( 'info', '_cke_saved_name' ),
+				value = this.getValueOf( 'info', 'value' ),
+				editor = this.getParentEditor(),
+				element = CKEDITOR.env.ie ? editor.document.createElement( '<input name="' + CKEDITOR.tools.htmlEncode( name ) + '">' ) : editor.document.createElement( 'input' );
 
-			if ( isInsertMode )
+			element.setAttribute( 'type', 'hidden' );
+			this.commitContent( element );
+			var fakeElement = editor.createFakeElement( element, 'cke_hidden', 'hiddenfield' );
+			if ( !this.hiddenField )
+				editor.insertElement( fakeElement );
+			else
 			{
-				editor = this.getParentEditor();
-				element = editor.document.createElement( 'input' );
-				element.setAttribute( 'type', 'hidden' );
+				fakeElement.replace( this.hiddenField );
+				editor.getSelection().selectElement( fakeElement );
 			}
-
-			if ( isInsertMode )
-				editor.insertElement( element );
-			this.commitContent( element );
+			return true;
 		},
 		contents : [
@@ -59,8 +67,7 @@
 						{
 							if ( this.getValue() )
-								element.setAttribute( '_cke_saved_name', this.getValue() );
+								element.setAttribute( 'name', this.getValue() );
 							else
 							{
-								element.removeAttribute( '_cke_saved_name' );
 								element.removeAttribute( 'name' );
 							}
Index: /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/radio.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/radio.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/radio.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/select.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/select.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/select.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -74,5 +74,5 @@
 	{
 		combo = getSelect( combo );
-		while( combo.getChild( 0 ) && combo.getChild( 0 ).remove() )
+		while ( combo.getChild( 0 ) && combo.getChild( 0 ).remove() )
 		{ /*jsl:pass*/ }
 	}
@@ -161,5 +161,16 @@
 
 			if ( isInsertMode )
-				editor.insertElement( element );
+			{
+				editor.insertElement(element);
+				if ( CKEDITOR.env.ie )
+				{
+					var sel = editor.getSelection(),
+						bms = sel.createBookmarks();
+					setTimeout(function ()
+					{
+						sel.selectBookmarks( bms );
+					}, 0 );
+				}
+			}
 		},
 		contents : [
@@ -248,4 +259,6 @@
 									if ( name == 'select' )
 										this.setValue( element.getAttribute( 'size' ) || '' );
+									if ( CKEDITOR.env.webkit )
+										this.getInputElement().setStyle( 'width', '86px' );
 								},
 								commit : function( element )
@@ -524,4 +537,6 @@
 									if ( name == 'select' )
 										this.setValue( element.getAttribute( 'multiple' ) );
+									if ( CKEDITOR.env.webkit )
+										this.getElement().getParent().setStyle( 'vertical-align', 'middle' );
 								},
 								commit : function( element )
Index: /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/textarea.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/textarea.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/textarea.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/textfield.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/textfield.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/forms/dialogs/textfield.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -180,5 +180,5 @@
 									replace.replace( element );
 									editor.getSelection().selectElement( replace );
-									data.element = element;
+									data.element = replace;
 								}
 							}
Index: /CKEditor/branches/features/adobeair/_source/plugins/forms/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/forms/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/forms/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -19,4 +19,15 @@
 				'border: 1px dotted #FF0000;' +
 				'padding: 2px;' +
+			'}\n' );
+
+		editor.addCss(
+			'img.cke_hidden' +
+			'{' +
+				'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/hiddenfield.gif' ) + ');' +
+				'background-position: center center;' +
+				'background-repeat: no-repeat;' +
+				'border: 1px solid #a9a9a9;' +
+				'width: 16px;' +
+				'height: 16px;' +
 			'}' );
 
@@ -121,5 +132,5 @@
 			editor.contextMenu.addListener( function( element )
 				{
-					if ( element && element.hasAscendant( 'form' ) )
+					if ( element && element.hasAscendant( 'form', true ) )
 						return { form : CKEDITOR.TRISTATE_OFF };
 				});
@@ -162,6 +173,83 @@
 				});
 		}
+
+		editor.on( 'doubleclick', function( evt )
+			{
+				var element = evt.data.element;
+
+				if ( element.is( 'form' ) )
+					evt.data.dialog = 'form';
+				else if ( element.is( 'select' ) )
+					evt.data.dialog = 'select';
+				else if ( element.is( 'textarea' ) )
+					evt.data.dialog = 'textarea';
+				else if ( element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'hiddenfield' )
+					evt.data.dialog = 'hiddenfield';
+				else if ( element.is( 'input' ) )
+				{
+					var type = element.getAttribute( 'type' );
+
+					switch ( type )
+					{
+						case 'text' : case 'password':
+							evt.data.dialog = 'textfield';
+							break;
+						case 'button' : case 'submit' : case 'reset' :
+							evt.data.dialog = 'button';
+							break;
+						case 'checkbox' :
+							evt.data.dialog = 'checkbox';
+							break;
+						case 'radio' :
+							evt.data.dialog = 'radio';
+							break;
+						case 'image' :
+							evt.data.dialog = 'imagebutton';
+							break;
+					}
+				}
+			});
 	},
-	requires : [ 'image' ]
+
+	afterInit : function( editor )
+	{
+		var dataProcessor = editor.dataProcessor,
+			htmlFilter = dataProcessor && dataProcessor.htmlFilter,
+			dataFilter = dataProcessor && dataProcessor.dataFilter;
+
+		// Cleanup certain IE form elements default values.
+		if ( CKEDITOR.env.ie )
+		{
+			htmlFilter && htmlFilter.addRules(
+			{
+				elements :
+				{
+					input : function( input )
+					{
+						var attrs = input.attributes,
+							type = attrs.type;
+						if ( type == 'checkbox' || type == 'radio' )
+							attrs.value == 'on' && delete attrs.value;
+					}
+				}
+			} );
+		}
+
+		if ( dataFilter )
+		{
+			dataFilter.addRules(
+			{
+				elements :
+				{
+					input : function( element )
+					{
+						if ( element.attributes.type == 'hidden' )
+							return editor.createFakeParserElement( element, 'cke_hidden', 'hiddenfield' );
+					}
+				}
+			} );
+		}
+	},
+	requires : [ 'image', 'fakeobjects' ]
 } );
 
Index: /CKEditor/branches/features/adobeair/_source/plugins/horizontalrule/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/horizontalrule/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/horizontalrule/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -12,4 +12,5 @@
 	var horizontalruleCmd =
 	{
+		canUndo : false,    // The undo snapshot will be handled by 'insertElement'.
 		exec : function( editor )
 		{
Index: /CKEditor/branches/features/adobeair/_source/plugins/htmldataprocessor/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/htmldataprocessor/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/htmldataprocessor/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -12,4 +12,14 @@
 	var protectedSourceMarker = '{cke_protected}';
 
+	// Return the last non-space child node of the block (#4344).
+	function lastNoneSpaceChild( block )
+	{
+		var lastIndex = block.children.length,
+			last = block.children[ lastIndex - 1 ];
+		while (  last && last.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.trim( last.value ) )
+			last = block.children[ --lastIndex ];
+		return last;
+	}
+
 	function trimFillers( block, fromSource )
 	{
@@ -19,6 +29,5 @@
 		// Also, any &nbsp; at the end of blocks are fillers, remove them as well.
 		// (#2886)
-		var children = block.children;
-		var lastChild = children[ children.length - 1 ];
+		var children = block.children, lastChild = lastNoneSpaceChild( block );
 		if ( lastChild )
 		{
@@ -32,9 +41,11 @@
 	function blockNeedsExtension( block )
 	{
-		if ( block.children.length < 1 )
-			return true;
-
-		var lastChild = block.children[ block.children.length - 1 ];
-		return lastChild.type == CKEDITOR.NODE_ELEMENT && lastChild.name == 'br';
+		var lastChild = lastNoneSpaceChild( block );
+
+		return !lastChild
+			|| lastChild.type == CKEDITOR.NODE_ELEMENT && lastChild.name == 'br'
+			// Some of the controls in form needs extension too,
+			// to move cursor at the end of the form. (#4791)
+			|| block.name == 'form' && lastChild.name == 'input';
 	}
 
@@ -74,4 +85,5 @@
 	var defaultDataFilterRules =
 	{
+		elements : {},
 		attributeNames :
 		[
@@ -104,5 +116,7 @@
 
 				// All "_cke" attributes are to be ignored.
-				[ ( /^_cke.*/ ), '' ]
+				[ ( /^_cke.*/ ), '' ],
+
+				[ 'hidefocus', '' ]
 			],
 
@@ -111,9 +125,13 @@
 				$ : function( element )
 				{
-					// Remove duplicated attributes - #3789.
 					var attribs = element.attributes;
 
 					if ( attribs )
 					{
+						// Elements marked as temporary are to be ignored.
+						if ( attribs.cke_temp )
+							return false;
+
+						// Remove duplicated attributes - #3789.
 						var attributeNames = [ 'name', 'href', 'src' ],
 							savedAttributeName;
@@ -124,4 +142,6 @@
 						}
 					}
+
+					return element;
 				},
 
@@ -157,4 +177,30 @@
 						return false;
 					}
+				},
+
+				html : function( element )
+				{
+					delete element.attributes.contenteditable;
+					delete element.attributes[ 'class' ];
+				},
+
+				body : function( element )
+				{
+					delete element.attributes.spellcheck;
+					delete element.attributes.contenteditable;
+				},
+
+				style : function( element )
+				{
+					var child = element.children[ 0 ];
+					child && child.value && ( child.value = CKEDITOR.tools.trim( child.value ));
+
+					if ( !element.attributes.type )
+						element.attributes.type = 'text/css';
+				},
+
+				title : function( element )
+				{
+					element.children[ 0 ].value = element.attributes[ '_cke_title' ];
 				}
 			},
@@ -171,6 +217,15 @@
 			comment : function( contents )
 			{
+				// If this is a comment for protected source.
 				if ( contents.substr( 0, protectedSourceMarker.length ) == protectedSourceMarker )
-					return new CKEDITOR.htmlParser.cdata( decodeURIComponent( contents.substr( protectedSourceMarker.length ) ) );
+				{
+					// Remove the extra marker for real comments from it.
+					if ( contents.substr( protectedSourceMarker.length, 3 ) == '{C}' )
+						contents = contents.substr( protectedSourceMarker.length + 3 );
+					else
+						contents = contents.substr( protectedSourceMarker.length );
+
+					return new CKEDITOR.htmlParser.cdata( decodeURIComponent( contents ) );
+				}
 
 				return contents;
@@ -193,5 +248,28 @@
 	}
 
-	var protectAttributeRegex = /<(?:a|area|img|input).*?\s((?:href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+)))/gi;
+	function protectReadOnly( element )
+	{
+		element.attributes.contenteditable = "false";
+	}
+	function unprotectReadyOnly( element )
+	{
+		delete element.attributes.contenteditable;
+	}
+	// Disable form elements editing mode provided by some browers. (#5746)
+	for ( i in { input : 1, textarea : 1 } )
+	{
+		defaultDataFilterRules.elements[ i ] = protectReadOnly;
+		defaultHtmlFilterRules.elements[ i ] = unprotectReadyOnly;
+	}
+
+	var protectAttributeRegex = /<(?:a|area|img|input)[\s\S]*?\s((?:href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+)))/gi;
+
+	var protectElementsRegex = /(?:<style(?=[ >])[^>]*>[\s\S]*<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,
+		encodedElementsRegex = /<cke:encoded>([^<]*)<\/cke:encoded>/gi;
+
+	var protectElementNamesRegex = /(<\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,
+		unprotectElementNamesRegex = /(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi;
+
+	var protectSelfClosingRegex = /<cke:(param|embed)([^>]*?)\/?>(?!\s*<\/cke:\1)/gi;
 
 	function protectAttributes( html )
@@ -200,35 +278,52 @@
 	}
 
-	var protectStyleTagsRegex = /<(style)(?=[ >])[^>]*>[^<]*<\/\1>/gi;
-	var encodedTagsRegex = /<cke:encoded>([^<]*)<\/cke:encoded>/gi;
-	var protectElementNamesRegex = /(<\/?)((?:object|embed|param).*?>)/gi;
-	var protectSelfClosingRegex = /<cke:param(.*?)\/>/gi;
-
-	function protectStyleTagsMatch( match )
-	{
-		return '<cke:encoded>' + encodeURIComponent( match ) + '</cke:encoded>';
-	}
-
-	function protectStyleTags( html )
-	{
-		return html.replace( protectStyleTagsRegex, protectStyleTagsMatch );
-	}
+	function protectElements( html )
+	{
+		return html.replace( protectElementsRegex, function( match )
+			{
+				return '<cke:encoded>' + encodeURIComponent( match ) + '</cke:encoded>';
+			});
+	}
+
+	function unprotectElements( html )
+	{
+		return html.replace( encodedElementsRegex, function( match, encoded )
+			{
+				return decodeURIComponent( encoded );
+			});
+	}
+
 	function protectElementsNames( html )
 	{
 		return html.replace( protectElementNamesRegex, '$1cke:$2');
 	}
+
+	function unprotectElementNames( html )
+	{
+		return html.replace( unprotectElementNamesRegex, '$1$2' );
+	}
+
 	function protectSelfClosingElements( html )
 	{
-		return html.replace( protectSelfClosingRegex, '<cke:param$1></cke:param>' );
-	}
-
-	function unprotectEncodedTagsMatch( match, encoded )
-	{
-		return decodeURIComponent( encoded );
-	}
-
-	function unprotectEncodedTags( html )
-	{
-		return html.replace( encodedTagsRegex, unprotectEncodedTagsMatch );
+		return html.replace( protectSelfClosingRegex, '<cke:$1$2></cke:$1>' );
+	}
+
+	function protectRealComments( html )
+	{
+		return html.replace( /<!--(?!{cke_protected})[\s\S]+?-->/g, function( match )
+			{
+				return '<!--' + protectedSourceMarker +
+						'{C}' +
+						encodeURIComponent( match ).replace( /--/g, '%2D%2D' ) +
+						'-->';
+			});
+	}
+
+	function unprotectRealComments( html )
+	{
+		return html.replace( /<!--\{cke_protected\}\{C\}([\s\S]+?)-->/g, function( match, data )
+			{
+				return decodeURIComponent( data );
+			});
 	}
 
@@ -236,14 +331,11 @@
 	{
 		var protectedHtml = [],
-			tempRegex = /<\!--\{cke_temp\}(\d*?)-->/g;
+			tempRegex = /<\!--\{cke_temp(comment)?\}(\d*?)-->/g;
+
 		var regexes =
 			[
-				// First of any other protection, we must protect all comments
-				// to avoid loosing them (of course, IE related).
-				(/<!--[\s\S]*?-->/g),
-
 				// Script tags will also be forced to be protected, otherwise
 				// IE will execute them.
-				/<script[\s\S]*?<\/script>/gi,
+				( /<script[\s\S]*?<\/script>/gi ),
 
 				// <noscript> tags (get lost in IE and messed up in FF).
@@ -252,4 +344,13 @@
 			.concat( protectRegexes );
 
+		// First of any other protection, we must protect all comments
+		// to avoid loosing them (of course, IE related).
+		// Note that we use a different tag for comments, as we need to
+		// transform them when applying filters.
+		data = data.replace( (/<!--[\s\S]*?-->/g), function( match )
+			{
+				return  '<!--{cke_tempcomment}' + ( protectedHtml.push( match ) - 1 ) + '-->';
+			});
+
 		for ( var i = 0 ; i < regexes.length ; i++ )
 		{
@@ -257,5 +358,5 @@
 				{
 					match = match.replace( tempRegex, 		// There could be protected source inside another one. (#3869).
-						function( $, id )
+						function( $, isComment, id )
 						{
 							return protectedHtml[ id ];
@@ -265,7 +366,8 @@
 				});
 		}
-		data = data.replace( tempRegex,	function( $, id )
+		data = data.replace( tempRegex,	function( $, isComment, id )
 			{
 				return '<!--' + protectedSourceMarker +
+						( isComment ? '{C}' : '' ) +
 						encodeURIComponent( protectedHtml[ id ] ).replace( /--/g, '%2D%2D' ) +
 						'-->';
@@ -315,25 +417,31 @@
 			data = protectAttributes( data );
 
-			// IE remvoes style tags from innerHTML. (#3710).
-			if ( CKEDITOR.env.ie )
-				data = protectStyleTags( data );
+			// Protect elements than can't be set inside a DIV. E.g. IE removes
+			// style tags from innerHTML. (#3710)
+			data = protectElements( data );
 
 			// Certain elements has problem to go through DOM operation, protect
-			// them by prefixing 'cke' namespace.(#3591)
+			// them by prefixing 'cke' namespace. (#3591)
 			data = protectElementsNames( data );
 
 			// All none-IE browsers ignore self-closed custom elements,
-			// protecting them into open-close.(#3591)
+			// protecting them into open-close. (#3591)
 			data = protectSelfClosingElements( data );
 
 			// Call the browser to help us fixing a possibly invalid HTML
 			// structure.
-			var div = document.createElement( 'div' );
+			var div = new CKEDITOR.dom.element( 'div' );
 			// Add fake character to workaround IE comments bug. (#3801)
-			div.innerHTML = 'a' + data;
-			data = div.innerHTML.substr( 1 );
-
-			if ( CKEDITOR.env.ie )
-				data = unprotectEncodedTags( data );
+			div.setHtml( 'a' + data );
+			data = div.getHtml().substr( 1 );
+
+			// Unprotect "some" of the protected elements at this point.
+			data = unprotectElementNames( data );
+
+			data = unprotectElements( data );
+
+			// Restore the comments that have been protected, in this way they
+			// can be properly filtered.
+			data = unprotectRealComments( data );
 
 			// Now use our parser to make further fixes to the structure, as
@@ -343,6 +451,10 @@
 
 			fragment.writeHtml( writer, this.dataFilter );
-
-			return writer.getHtml( true );
+			data = writer.getHtml( true );
+
+			// Protect the real comments again.
+			data = protectRealComments( data );
+
+			return data;
 		},
 
Index: /CKEditor/branches/features/adobeair/_source/plugins/htmlwriter/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/htmlwriter/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/htmlwriter/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -68,5 +68,5 @@
 		var dtd = CKEDITOR.dtd;
 
-		for ( var e in CKEDITOR.tools.extend( {}, dtd.$block, dtd.$listItem, dtd.$tableContent ) )
+		for ( var e in CKEDITOR.tools.extend( {}, dtd.$nonBodyContent, dtd.$block, dtd.$listItem, dtd.$tableContent ) )
 		{
 			this.setRules( e,
@@ -79,13 +79,27 @@
 				});
 		}
+
 		this.setRules( 'br',
 			{
 				breakAfterOpen : true
 			});
+
+		this.setRules( 'title',
+			{
+				indent : false,
+				breakAfterOpen : false
+			});
+
+		this.setRules( 'style',
+			{
+				indent : false,
+				breakBeforeClose : true
+			});
+
 		// Disable indentation on <pre>.
 		this.setRules( 'pre',
-		{
-		  indent: false
-		} );
+			{
+			  indent: false
+			});
 	},
 
@@ -158,6 +172,11 @@
 		attribute : function( attName, attValue )
 		{
-			if ( this.forceSimpleAmpersand )
-				attValue = attValue.replace( /&amp;/, '&' );
+
+			if ( typeof attValue == 'string' )
+			{
+				this.forceSimpleAmpersand && ( attValue = attValue.replace( /&amp;/g, '&' ) );
+				// Browsers don't always escape special character in attribute values. (#4683, #4719).
+				attValue = CKEDITOR.tools.htmlEncodeAttr( attValue );
+			}
 
 			this._.output.push( ' ', attName, '="', attValue, '"' );
@@ -263,5 +282,6 @@
 		 * </ul>
 		 *
-		 * All rules default to "false".
+		 * All rules default to "false". Each call to the function overrides
+		 * already present rules, leaving the undefined untouched.
 		 *
 		 * By default, all elements available in the {@link CKEDITOR.dtd.$block),
@@ -284,5 +304,10 @@
 		setRules : function( tagName, rules )
 		{
-			this._.rules[ tagName ] = rules;
+			var currentRules = this._.rules[ tagName ];
+
+			if ( currentRules )
+				CKEDITOR.tools.extend( currentRules, rules, true );
+			else
+				this._.rules[ tagName ] = rules;
 		}
 	}
Index: /CKEditor/branches/features/adobeair/_source/plugins/iframedialog/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/iframedialog/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/iframedialog/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/plugins/image/dialogs/image.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/image/dialogs/image.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/image/dialogs/image.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -6,144 +6,207 @@
 (function()
 {
-	// Load image preview.
-	var IMAGE = 1,
-		LINK = 2,
-		PREVIEW = 4,
-		CLEANUP = 8,
-		regexGetSize = /^\s*(\d+)((px)|\%)?\s*$/i,
-		regexGetSizeOrEmpty = /(^\s*(\d+)((px)|\%)?\s*$)|^$/i;
-
-	var onSizeChange = function()
+	var imageDialog = function( editor, dialogType )
 	{
-		var value = this.getValue(),	// This = input element.
-			dialog = this.getDialog(),
-			aMatch  =  value.match( regexGetSize );	// Check value
-		if ( aMatch )
+		// Load image preview.
+		var IMAGE = 1,
+			LINK = 2,
+			PREVIEW = 4,
+			CLEANUP = 8,
+			regexGetSize = /^\s*(\d+)((px)|\%)?\s*$/i,
+			regexGetSizeOrEmpty = /(^\s*(\d+)((px)|\%)?\s*$)|^$/i,
+			pxLengthRegex = /^\d+px$/;
+
+		var onSizeChange = function()
 		{
-			if ( aMatch[2] == '%' )			// % is allowed - > unlock ratio.
-				switchLockRatio( dialog, false );	// Unlock.
-			value = aMatch[1];
+			var value = this.getValue(),	// This = input element.
+				dialog = this.getDialog(),
+				aMatch  =  value.match( regexGetSize );	// Check value
+			if ( aMatch )
+			{
+				if ( aMatch[2] == '%' )			// % is allowed - > unlock ratio.
+					switchLockRatio( dialog, false );	// Unlock.
+				value = aMatch[1];
+			}
+
+			// Only if ratio is locked
+			if ( dialog.lockRatio )
+			{
+				var oImageOriginal = dialog.originalElement;
+				if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
+				{
+					if ( this.id == 'txtHeight' )
+					{
+						if ( value && value != '0' )
+							value = Math.round( oImageOriginal.$.width * ( value  / oImageOriginal.$.height ) );
+						if ( !isNaN( value ) )
+							dialog.setValueOf( 'info', 'txtWidth', value );
+					}
+					else		//this.id = txtWidth.
+					{
+						if ( value && value != '0' )
+							value = Math.round( oImageOriginal.$.height * ( value  / oImageOriginal.$.width ) );
+						if ( !isNaN( value ) )
+							dialog.setValueOf( 'info', 'txtHeight', value );
+					}
+				}
+			}
+			updatePreview( dialog );
+		};
+
+		var updatePreview = function( dialog )
+		{
+			//Don't load before onShow.
+			if ( !dialog.originalElement || !dialog.preview )
+				return 1;
+
+			// Read attributes and update imagePreview;
+			dialog.commitContent( PREVIEW, dialog.preview );
+			return 0;
+		};
+
+		// Custom commit dialog logic, where we're intended to give inline style
+		// field (txtdlgGenStyle) higher priority to avoid overwriting styles contribute
+		// by other fields.
+		function commitContent()
+		{
+			var args = arguments;
+			var inlineStyleField = this.getContentElement( 'advanced', 'txtdlgGenStyle' );
+			inlineStyleField && inlineStyleField.commit.apply( inlineStyleField, args );
+
+			this.foreach( function( widget )
+			{
+				if ( widget.commit &&  widget.id != 'txtdlgGenStyle' )
+					widget.commit.apply( widget, args );
+			});
 		}
 
-		// Only if ratio is locked
-		if ( dialog.lockRatio )
+		// Avoid recursions.
+		var incommit;
+
+		// Synchronous field values to other impacted fields is required, e.g. border
+		// size change should alter inline-style text as well.
+		function commitInternally( targetFields )
+		{
+			if ( incommit )
+				return;
+
+			incommit = 1;
+
+			var dialog = this.getDialog(),
+				element = dialog.imageElement;
+			if ( element )
+			{
+				// Commit this field and broadcast to target fields.
+				this.commit( IMAGE, element );
+
+				targetFields = [].concat( targetFields );
+				var length = targetFields.length,
+					field;
+				for ( var i = 0; i < length; i++ )
+				{
+					field = dialog.getContentElement.apply( dialog, targetFields[ i ].split( ':' ) );
+					// May cause recursion.
+					field && field.setup( IMAGE, element );
+				}
+			}
+
+			incommit = 0;
+		}
+
+		var switchLockRatio = function( dialog, value )
+		{
+			var oImageOriginal = dialog.originalElement;
+
+			// Dialog may already closed. (#5505)
+			if( !oImageOriginal )
+				return null;
+
+			var ratioButton = CKEDITOR.document.getById( btnLockSizesId );
+
+			if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
+			{
+				if ( value == 'check' )			// Check image ratio and original image ratio.
+				{
+					var width = dialog.getValueOf( 'info', 'txtWidth' ),
+						height = dialog.getValueOf( 'info', 'txtHeight' ),
+						originalRatio = oImageOriginal.$.width * 1000 / oImageOriginal.$.height,
+						thisRatio = width * 1000 / height;
+					dialog.lockRatio  = false;		// Default: unlock ratio
+
+					if ( !width && !height )
+						dialog.lockRatio = true;
+					else if ( !isNaN( originalRatio ) && !isNaN( thisRatio ) )
+					{
+						if ( Math.round( originalRatio ) == Math.round( thisRatio ) )
+							dialog.lockRatio = true;
+					}
+				}
+				else if ( value != undefined )
+					dialog.lockRatio = value;
+				else
+					dialog.lockRatio = !dialog.lockRatio;
+			}
+			else if ( value != 'check' )		// I can't lock ratio if ratio is unknown.
+				dialog.lockRatio = false;
+
+			if ( dialog.lockRatio )
+				ratioButton.removeClass( 'cke_btn_unlocked' );
+			else
+				ratioButton.addClass( 'cke_btn_unlocked' );
+
+			var lang = dialog._.editor.lang.image,
+				label =  lang[  dialog.lockRatio ? 'unlockRatio' : 'lockRatio' ];
+
+			ratioButton.setAttribute( 'title', label );
+			ratioButton.getFirst().setText( label );
+
+			return dialog.lockRatio;
+		};
+
+		var resetSize = function( dialog )
 		{
 			var oImageOriginal = dialog.originalElement;
 			if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
 			{
-				if ( this.id == 'txtHeight' )
-				{
-					if ( value && value != '0' )
-						value = Math.round( oImageOriginal.$.width * ( value  / oImageOriginal.$.height ) );
-					if ( !isNaN( value ) )
-						dialog.setValueOf( 'info', 'txtWidth', value );
+				dialog.setValueOf( 'info', 'txtWidth', oImageOriginal.$.width );
+				dialog.setValueOf( 'info', 'txtHeight', oImageOriginal.$.height );
+			}
+			updatePreview( dialog );
+		};
+
+		var setupDimension = function( type, element )
+		{
+			if ( type != IMAGE )
+				return;
+
+			function checkDimension( size, defaultValue )
+			{
+				var aMatch  =  size.match( regexGetSize );
+				if ( aMatch )
+				{
+					if ( aMatch[2] == '%' )				// % is allowed.
+					{
+						aMatch[1] += '%';
+						switchLockRatio( dialog, false );	// Unlock ratio
+					}
+					return aMatch[1];
 				}
-				else		//this.id = txtWidth.
-				{
-					if ( value && value != '0' )
-						value = Math.round( oImageOriginal.$.height * ( value  / oImageOriginal.$.width ) );
-					if ( !isNaN( value ) )
-						dialog.setValueOf( 'info', 'txtHeight', value );
-				}
+				return defaultValue;
 			}
-		}
-		updatePreview( dialog );
-	};
-
-	var updatePreview = function( dialog )
-	{
-		//Don't load before onShow.
-		if ( !dialog.originalElement || !dialog.preview )
-			return 1;
-
-		// Read attributes and update imagePreview;
-		dialog.commitContent( PREVIEW, dialog.preview );
-		return 0;
-	};
-
-	var switchLockRatio = function( dialog, value )
-	{
-		var oImageOriginal = dialog.originalElement,
-			ratioButton = CKEDITOR.document.getById( 'btnLockSizes' );
-
-		if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
-		{
-			if ( value == 'check' )			// Check image ratio and original image ratio.
-			{
-				var width = dialog.getValueOf( 'info', 'txtWidth' ),
-					height = dialog.getValueOf( 'info', 'txtHeight' ),
-					originalRatio = oImageOriginal.$.width * 1000 / oImageOriginal.$.height,
-					thisRatio = width * 1000 / height;
-				dialog.lockRatio  = false;		// Default: unlock ratio
-
-				if ( !width && !height )
-					dialog.lockRatio = true;
-				else if ( !isNaN( originalRatio ) && !isNaN( thisRatio ) )
-				{
-					if ( Math.round( originalRatio ) == Math.round( thisRatio ) )
-						dialog.lockRatio = true;
-				}
-			}
-			else if ( value != undefined )
-				dialog.lockRatio = value;
-			else
-				dialog.lockRatio = !dialog.lockRatio;
-		}
-		else if ( value != 'check' )		// I can't lock ratio if ratio is unknown.
-			dialog.lockRatio = false;
-
-		if ( dialog.lockRatio )
-			ratioButton.removeClass( 'cke_btn_unlocked' );
-		else
-			ratioButton.addClass( 'cke_btn_unlocked' );
-
-		return dialog.lockRatio;
-	};
-
-	var resetSize = function( dialog )
-	{
-		var oImageOriginal = dialog.originalElement;
-		if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
-		{
-			dialog.setValueOf( 'info', 'txtWidth', oImageOriginal.$.width );
-			dialog.setValueOf( 'info', 'txtHeight', oImageOriginal.$.height );
-		}
-		updatePreview( dialog );
-	};
-
-	var setupDimension = function( type, element )
-	{
-		if ( type != IMAGE )
-			return;
-
-		function checkDimension( size, defaultValue )
-		{
-			var aMatch  =  size.match( regexGetSize );
-			if ( aMatch )
-			{
-				if ( aMatch[2] == '%' )				// % is allowed.
-				{
-					aMatch[1] += '%';
-					switchLockRatio( dialog, false );	// Unlock ratio
-				}
-				return aMatch[1];
-			}
-			return defaultValue;
-		}
-
-		var dialog = this.getDialog(),
-			value = '',
-			dimension = (( this.id == 'txtWidth' )? 'width' : 'height' ),
-			size = element.getAttribute( dimension );
-
-		if ( size )
-			value = checkDimension( size, value );
-		value = checkDimension( element.$.style[ dimension ], value );
-
-		this.setValue( value );
-	};
-
-	var imageDialog = function( editor, dialogType )
-	{
+
+			var dialog = this.getDialog(),
+				value = '',
+				dimension = (( this.id == 'txtWidth' )? 'width' : 'height' ),
+				size = element.getAttribute( dimension );
+
+			if ( size )
+				value = checkDimension( size, value );
+			value = checkDimension( element.getStyle( dimension ), value );
+
+			this.setValue( value );
+		};
+
+		var previewPreloader;
+
 		var onImgLoadEvent = function()
 		{
@@ -156,5 +219,5 @@
 
 			// Hide loader
-			CKEDITOR.document.getById( 'ImagePreviewLoader' ).setStyle( 'display', 'none' );
+			CKEDITOR.document.getById( imagePreviewLoaderId ).setStyle( 'display', 'none' );
 
 			// New image -> new domensions
@@ -163,5 +226,6 @@
 
 			if ( this.firstLoad )
-				switchLockRatio( this, 'check' );
+				CKEDITOR.tools.setTimeout( function(){ switchLockRatio( this, 'check' ); }, 0, this );
+
 			this.firstLoad = false;
 			this.dontResetSize = false;
@@ -183,7 +247,16 @@
 
 			// Hide loader
-			CKEDITOR.document.getById( 'ImagePreviewLoader' ).setStyle( 'display', 'none' );
+			CKEDITOR.document.getById( imagePreviewLoaderId ).setStyle( 'display', 'none' );
 			switchLockRatio( this, false );	// Unlock.
 		};
+
+		var numbering = function( id ){ return id + CKEDITOR.tools.getNextNumber(); },
+			btnLockSizesId = numbering( 'btnLockSizes' ),
+			btnResetSizeId = numbering( 'btnResetSize' ),
+			imagePreviewLoaderId = numbering( 'ImagePreviewLoader' ),
+			imagePreviewBoxId = numbering( 'ImagePreviewBox' ),
+			previewLinkId = numbering( 'previewLink' ),
+			previewImageId = numbering( 'previewImage' );
+
 		return {
 			title : ( dialogType == 'image' ) ? editor.lang.image.title : editor.lang.image.titleButton,
@@ -204,13 +277,14 @@
 				this.addLink = false;
 
-				//Hide loader.
-				CKEDITOR.document.getById( 'ImagePreviewLoader' ).setStyle( 'display', 'none' );
-				// Preview
-				this.preview = CKEDITOR.document.getById( 'previewImage' );
-
 				var editor = this.getParentEditor(),
 					sel = this.getParentEditor().getSelection(),
 					element = sel.getSelectedElement(),
 					link = element && element.getAscendant( 'a' );
+
+				//Hide loader.
+				CKEDITOR.document.getById( imagePreviewLoaderId ).setStyle( 'display', 'none' );
+				// Create the preview before setup the dialog contents.
+				previewPreloader = new CKEDITOR.dom.element( 'img', editor.document );
+				this.preview = CKEDITOR.document.getById( previewImageId );
 
 				// Copy of the image
@@ -243,13 +317,17 @@
 				}
 
-				if ( element && element.getName() == 'img' && !element.getAttribute( '_cke_protected_html' ) )
-					this.imageEditMode = 'img';
-				else if ( element && element.getName() == 'input' && element.getAttribute( 'type' ) && element.getAttribute( 'type' ) == 'image' )
-					this.imageEditMode = 'input';
-
-				if ( this.imageEditMode || this.imageElement )
-				{
-					if ( !this.imageElement )
-						this.imageElement = element;
+				if ( element && element.getName() == 'img' && !element.getAttribute( '_cke_realelement' )
+					|| element && element.getName() == 'input' && element.getAttribute( 'type' ) == 'image' )
+				{
+					this.imageEditMode = element.getName();
+					this.imageElement = element;
+				}
+
+				if ( this.imageEditMode )
+				{
+					// Use the original element as a buffer from  since we don't want
+					// temporary changes to be committed, e.g. if the dialog is canceled.
+					this.cleanImageElement = this.imageElement;
+					this.imageElement = this.cleanImageElement.clone( true, true );
 
 					// Fill out all fields.
@@ -259,4 +337,6 @@
 					switchLockRatio ( this, true );
 				}
+				else
+					this.imageElement =  editor.document.createElement( 'img' );
 
 				// Dont show preview if no URL given.
@@ -297,4 +377,10 @@
 						editor.insertElement( this.imageElement );
 					}
+					else
+					{
+						// Restore the original element before all commits.
+						this.imageElement = this.cleanImageElement;
+						delete this.cleanImageElement;
+					}
 				}
 				else	// Create a new image.
@@ -318,4 +404,8 @@
 				this.commitContent( IMAGE, this.imageElement );
 				this.commitContent( LINK, this.linkElement );
+
+				// Remove empty style attribute.
+				if ( !this.imageElement.getAttribute( 'style' ) )
+					this.imageElement.removeAttribute( 'style' );
 
 				// Insert a new Image.
@@ -357,6 +447,8 @@
 					this.hidePage( 'Link' );		//Hide Link tab.
 				var doc = this._.element.getDocument();
-				this.addFocusable( doc.getById( 'btnResetSize' ), 5 );
-				this.addFocusable( doc.getById( 'btnLockSizes' ), 5 );
+				this.addFocusable( doc.getById( btnResetSizeId ), 5 );
+				this.addFocusable( doc.getById( btnLockSizesId ), 5 );
+
+				this.commitContent = commitContent;
 			},
 			onHide : function()
@@ -373,4 +465,6 @@
 					this.originalElement = false;		// Dialog is closed.
 				}
+
+				delete this.imageElement;
 			},
 			contents : [
@@ -387,8 +481,4 @@
 							[
 								{
-									type : 'html',
-									html : '<span>' + CKEDITOR.tools.htmlEncode( editor.lang.image.url ) + '</span>'
-								},
-								{
 									type : 'hbox',
 									widths : [ '280px', '110px' ],
@@ -399,5 +489,6 @@
 											id : 'txtUrl',
 											type : 'text',
-											label : '',
+											label : editor.lang.common.url,
+											required: true,
 											onChange : function()
 											{
@@ -415,5 +506,5 @@
 													original.setCustomData( 'isReady', 'false' );
 													// Show loader
-													var loader = CKEDITOR.document.getById( 'ImagePreviewLoader' );
+													var loader = CKEDITOR.document.getById( imagePreviewLoaderId );
 													if ( loader )
 														loader.setStyle( 'display', '' );
@@ -423,6 +514,8 @@
 													original.on( 'abort', onImgLoadErrorEvent, dialog );
 													original.setAttribute( 'src', newUrl );
-													dialog.preview.setAttribute( 'src', newUrl );
-
+
+													// Query the preloader to figure out the url impacted by based href.
+													previewPreloader.setAttribute( 'src', newUrl );
+													dialog.preview.setAttribute( 'src', previewPreloader.$.src );
 													updatePreview( dialog );
 												}
@@ -443,11 +536,8 @@
 													this.getDialog().dontResetSize = true;
 
-													// In IE7 the dialog is being rendered improperly when loading
-													// an image with a long URL. So we need to delay it a bit. (#4122)
-													setTimeout( function()
-														{
-															field.setValue( url );		// And call this.onChange()
-															field.focus();
-														}, 0 );
+													field.setValue( url );		// And call this.onChange()
+													// Manually set the initial value.(#4191)
+													field.setInitValue();
+													field.focus();
 												}
 											},
@@ -470,4 +560,7 @@
 											type : 'button',
 											id : 'browse',
+											// v-align with the 'txtUrl' field.
+											// TODO: We need something better than a fixed size here.
+											style : 'display:inline-block;margin-top:10px;',
 											align : 'center',
 											label : editor.lang.common.browseServer,
@@ -538,25 +631,30 @@
 															label : editor.lang.image.width,
 															onKeyUp : onSizeChange,
-															validate: function()
+															onChange : function()
+															{
+																commitInternally.call( this, 'advanced:txtdlgGenStyle' );
+															},
+															validate : function()
 															{
 																var aMatch  =  this.getValue().match( regexGetSizeOrEmpty );
 																if ( !aMatch )
-																	alert( editor.lang.common.validateNumberFailed );
+																	alert( editor.lang.image.validateWidth );
 																return !!aMatch;
 															},
 															setup : setupDimension,
-															commit : function( type, element )
+															commit : function( type, element, internalCommit )
 															{
+																var value = this.getValue();
 																if ( type == IMAGE )
 																{
-																	var value = this.getValue();
 																	if ( value )
-																		element.setAttribute( 'width', value );
-																	else if ( !value && this.isChanged() )
-																		element.removeAttribute( 'width' );
+																		element.setStyle( 'width', CKEDITOR.tools.cssLength( value ) );
+																	else if ( !value && this.isChanged( ) )
+																		element.removeStyle( 'width' );
+
+																	!internalCommit && element.removeAttribute( 'width' );
 																}
 																else if ( type == PREVIEW )
 																{
-																	value = this.getValue();
 																	var aMatch = value.match( regexGetSize );
 																	if ( !aMatch )
@@ -571,5 +669,4 @@
 																else if ( type == CLEANUP )
 																{
-																	element.setStyle( 'width', '0px' );	// If removeAttribute doesn't work.
 																	element.removeAttribute( 'width' );
 																	element.removeStyle( 'width' );
@@ -584,25 +681,31 @@
 															label : editor.lang.image.height,
 															onKeyUp : onSizeChange,
-															validate: function()
+															onChange : function()
+															{
+																commitInternally.call( this, 'advanced:txtdlgGenStyle' );
+															},
+															validate : function()
 															{
 																var aMatch = this.getValue().match( regexGetSizeOrEmpty );
 																if ( !aMatch )
-																	alert( editor.lang.common.validateNumberFailed );
+																	alert( editor.lang.image.validateHeight );
 																return !!aMatch;
 															},
 															setup : setupDimension,
-															commit : function( type, element )
+															commit : function( type, element, internalCommit )
 															{
+																var value = this.getValue();
 																if ( type == IMAGE )
 																{
-																	var value = this.getValue();
 																	if ( value )
-																		element.setAttribute( 'height', value );
-																	else if ( !value && this.isChanged() )
+																		element.setStyle( 'height', CKEDITOR.tools.cssLength( value ) );
+																	else if ( !value && this.isChanged( ) )
+																		element.removeStyle( 'height' );
+
+																	if ( !internalCommit && type == IMAGE )
 																		element.removeAttribute( 'height' );
 																}
 																else if ( type == PREVIEW )
 																{
-																	value = this.getValue();
 																	var aMatch = value.match( regexGetSize );
 																	if ( !aMatch )
@@ -610,12 +713,11 @@
 																		var oImageOriginal = this.getDialog().originalElement;
 																		if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
-																			element.setStyle( 'height',  oImageOriginal.$.height + 'px');
+																			element.setStyle( 'height', oImageOriginal.$.height + 'px' );
 																	}
 																	else
-																		element.setStyle( 'height', value + 'px');
+																		element.setStyle( 'height', value + 'px' );
 																}
 																else if ( type == CLEANUP )
 																{
-																	element.setStyle( 'height', '0px' );	// If removeAttribute doesn't work.
 																	element.removeAttribute( 'height' );
 																	element.removeStyle( 'height' );
@@ -631,11 +733,12 @@
 													{
 														// Activate Reset button
-														var	resetButton = CKEDITOR.document.getById( 'btnResetSize' ),
-															ratioButton = CKEDITOR.document.getById( 'btnLockSizes' );
+														var	resetButton = CKEDITOR.document.getById( btnResetSizeId ),
+															ratioButton = CKEDITOR.document.getById( btnLockSizesId );
 														if ( resetButton )
 														{
-															resetButton.on( 'click', function()
+															resetButton.on( 'click', function(evt)
 																{
 																	resetSize( this );
+																	evt.data.preventDefault();
 																}, this.getDialog() );
 															resetButton.on( 'mouseover', function()
@@ -651,5 +754,5 @@
 														if ( ratioButton )
 														{
-															ratioButton.on( 'click', function()
+															ratioButton.on( 'click', function(evt)
 																{
 																	var locked = switchLockRatio( this ),
@@ -666,4 +769,5 @@
 																		}
 																	}
+																	evt.data.preventDefault();
 																}, this.getDialog() );
 															ratioButton.on( 'mouseover', function()
@@ -678,8 +782,8 @@
 													},
 													html : '<div>'+
-														'<a href="javascript:void(0)" tabindex="-1" title="' + editor.lang.image.lockRatio +
-														'" class="cke_btn_locked" id="btnLockSizes"></a>' +
+														'<a href="javascript:void(0)" tabindex="-1" title="' + editor.lang.image.unlockRatio +
+														'" class="cke_btn_locked" id="' + btnLockSizesId + '" role="button"><span class="cke_label">' + editor.lang.image.unlockRatio + '</span></a>' +
 														'<a href="javascript:void(0)" tabindex="-1" title="' + editor.lang.image.resetSize +
-														'" class="cke_btn_reset" id="btnResetSize"></a>'+
+														'" class="cke_btn_reset" id="' + btnResetSizeId + '" role="button"><span class="cke_label">' + editor.lang.image.resetSize + '</span></a>'+
 														'</div>'
 												}
@@ -702,32 +806,47 @@
 														updatePreview( this.getDialog() );
 													},
-													validate: function()
-													{
-														var func = CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed );
-														return func.apply( this );
+													onChange : function()
+													{
+														commitInternally.call( this, 'advanced:txtdlgGenStyle' );
 													},
+													validate : CKEDITOR.dialog.validate.integer( editor.lang.image.validateBorder ),
 													setup : function( type, element )
 													{
 														if ( type == IMAGE )
-															this.setValue( element.getAttribute( 'border' ) );
+														{
+															var value,
+																borderStyle = element.getStyle( 'border-width' );
+															borderStyle = borderStyle && borderStyle.match( /^(\d+px)(?: \1 \1 \1)?$/ );
+															value = borderStyle && parseInt( borderStyle[ 1 ], 10 );
+															isNaN ( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'border' ) );
+															this.setValue( value );
+														}
 													},
-													commit : function( type, element )
-													{
-														if ( type == IMAGE )
-														{
-															if ( this.getValue() || this.isChanged() )
-																element.setAttribute( 'border', this.getValue() );
-														}
-														else if ( type == PREVIEW )
-														{
-															var value = parseInt( this.getValue(), 10 );
-															value = isNaN( value ) ? 0 : value;
-															element.setAttribute( 'border', value );
-															element.setStyle( 'border', value + 'px solid black' );
+													commit : function( type, element, internalCommit )
+													{
+														var value = parseInt( this.getValue(), 10 );
+														if ( type == IMAGE || type == PREVIEW )
+														{
+															if ( !isNaN( value ) )
+															{
+																element.setStyle( 'border-width', CKEDITOR.tools.cssLength( value ) );
+																element.setStyle( 'border-style', 'solid' );
+															}
+															else if ( !value && this.isChanged() )
+															{
+																element.removeStyle( 'border-width' );
+																element.removeStyle( 'border-style' );
+																element.removeStyle( 'border-color' );
+															}
+
+															if ( !internalCommit && type == IMAGE )
+																element.removeAttribute( 'border' );
 														}
 														else if ( type == CLEANUP )
 														{
 															element.removeAttribute( 'border' );
-															element.removeStyle( 'border' );
+															element.removeStyle( 'border-width' );
+															element.removeStyle( 'border-style' );
+															element.removeStyle( 'border-color' );
 														}
 													}
@@ -744,32 +863,48 @@
 														updatePreview( this.getDialog() );
 													},
-													validate: function()
-													{
-														var func = CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed );
-														return func.apply( this );
+													onChange : function()
+													{
+														commitInternally.call( this, 'advanced:txtdlgGenStyle' );
 													},
+													validate : CKEDITOR.dialog.validate.integer( editor.lang.image.validateHSpace ),
 													setup : function( type, element )
 													{
 														if ( type == IMAGE )
 														{
-															var value = element.getAttribute( 'hspace' );
-															if ( value != -1 )				// In IE empty = -1.
-																this.setValue( value );
+															var value,
+																marginLeftPx,
+																marginRightPx,
+																marginLeftStyle = element.getStyle( 'margin-left' ),
+																marginRightStyle = element.getStyle( 'margin-right' );
+
+															marginLeftStyle = marginLeftStyle && marginLeftStyle.match( pxLengthRegex );
+															marginRightStyle = marginRightStyle && marginRightStyle.match( pxLengthRegex );
+															marginLeftPx = parseInt( marginLeftStyle, 10 );
+															marginRightPx = parseInt( marginRightStyle, 10 );
+
+															value = ( marginLeftPx == marginRightPx ) && marginLeftPx;
+															isNaN( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'hspace' ) );
+
+															this.setValue( value );
 														}
 													},
-													commit : function( type, element )
-													{
-														if ( type == IMAGE )
-														{
-															if ( this.getValue() || this.isChanged() )
-																element.setAttribute( 'hspace', this.getValue() );
-														}
-														else if ( type == PREVIEW )
-														{
-															var value = parseInt( this.getValue(), 10 );
-															value = isNaN( value ) ? 0 : value;
-															element.setAttribute( 'hspace', value );
-															element.setStyle( 'margin-left', value + 'px' );
-															element.setStyle( 'margin-right', value + 'px' );
+													commit : function( type, element, internalCommit )
+													{
+														var value = parseInt( this.getValue(), 10 );
+														if ( type == IMAGE || type == PREVIEW )
+														{
+															if ( !isNaN( value ) )
+															{
+																element.setStyle( 'margin-left', CKEDITOR.tools.cssLength( value ) );
+																element.setStyle( 'margin-right', CKEDITOR.tools.cssLength( value ) );
+															}
+															else if ( !value && this.isChanged( ) )
+															{
+																element.removeStyle( 'margin-left' );
+																element.removeStyle( 'margin-right' );
+															}
+
+															if ( !internalCommit && type == IMAGE )
+																element.removeAttribute( 'hspace' );
 														}
 														else if ( type == CLEANUP )
@@ -792,28 +927,47 @@
 														updatePreview( this.getDialog() );
 													},
-													validate: function()
-													{
-														var func = CKEDITOR.dialog.validate.integer( editor.lang.common.validateNumberFailed );
-														return func.apply( this );
+													onChange : function()
+													{
+														commitInternally.call( this, 'advanced:txtdlgGenStyle' );
 													},
+													validate : CKEDITOR.dialog.validate.integer( editor.lang.image.validateVSpace ),
 													setup : function( type, element )
 													{
 														if ( type == IMAGE )
-															this.setValue( element.getAttribute( 'vspace' ) );
+														{
+															var value,
+																marginTopPx,
+																marginBottomPx,
+																marginTopStyle = element.getStyle( 'margin-top' ),
+																marginBottomStyle = element.getStyle( 'margin-bottom' );
+
+															marginTopStyle = marginTopStyle && marginTopStyle.match( pxLengthRegex );
+															marginBottomStyle = marginBottomStyle && marginBottomStyle.match( pxLengthRegex );
+															marginTopPx = parseInt( marginTopStyle, 10 );
+															marginBottomPx = parseInt( marginBottomStyle, 10 );
+
+															value = ( marginTopPx == marginBottomPx ) && marginTopPx;
+															isNaN ( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'vspace' ) );
+															this.setValue( value );
+														}
 													},
-													commit : function( type, element )
-													{
-														if ( type == IMAGE )
-														{
-															if ( this.getValue() || this.isChanged() )
-																element.setAttribute( 'vspace', this.getValue() );
-														}
-														else if ( type == PREVIEW )
-														{
-															var value = parseInt( this.getValue(), 10 );
-															value = isNaN( value ) ? 0 : value;
-															element.setAttribute( 'vspace', this.getValue() );
-															element.setStyle( 'margin-top', value + 'px' );
-															element.setStyle( 'margin-bottom', value + 'px' );
+													commit : function( type, element, internalCommit )
+													{
+														var value = parseInt( this.getValue(), 10 );
+														if ( type == IMAGE || type == PREVIEW )
+														{
+															if ( !isNaN( value ) )
+															{
+																element.setStyle( 'margin-top', CKEDITOR.tools.cssLength( value ) );
+																element.setStyle( 'margin-bottom', CKEDITOR.tools.cssLength( value ) );
+															}
+															else if ( !value && this.isChanged( ) )
+															{
+																element.removeStyle( 'margin-top' );
+																element.removeStyle( 'margin-bottom' );
+															}
+
+															if ( !internalCommit && type == IMAGE )
+																element.removeAttribute( 'vspace' );
 														}
 														else if ( type == CLEANUP )
@@ -837,51 +991,63 @@
 														[ editor.lang.common.notSet , ''],
 														[ editor.lang.image.alignLeft , 'left'],
-														[ editor.lang.image.alignAbsBottom , 'absBottom'],
-														[ editor.lang.image.alignAbsMiddle , 'absMiddle'],
-														[ editor.lang.image.alignBaseline , 'baseline'],
-														[ editor.lang.image.alignBottom , 'bottom'],
-														[ editor.lang.image.alignMiddle , 'middle'],
-														[ editor.lang.image.alignRight , 'right'],
-														[ editor.lang.image.alignTextTop , 'textTop'],
-														[ editor.lang.image.alignTop , 'top']
+														[ editor.lang.image.alignRight , 'right']
+														// Backward compatible with v2 on setup when specified as attribute value,
+														// while these values are no more available as select options.
+														//	[ editor.lang.image.alignAbsBottom , 'absBottom'],
+														//	[ editor.lang.image.alignAbsMiddle , 'absMiddle'],
+														//  [ editor.lang.image.alignBaseline , 'baseline'],
+														//  [ editor.lang.image.alignTextTop , 'text-top'],
+														//  [ editor.lang.image.alignBottom , 'bottom'],
+														//  [ editor.lang.image.alignMiddle , 'middle'],
+														//  [ editor.lang.image.alignTop , 'top']
 													],
 													onChange : function()
 													{
 														updatePreview( this.getDialog() );
+														commitInternally.call( this, 'advanced:txtdlgGenStyle' );
 													},
 													setup : function( type, element )
 													{
 														if ( type == IMAGE )
-															this.setValue( element.getAttribute( 'align' ) );
+														{
+															var value = element.getStyle( 'float' );
+															switch( value )
+															{
+																// Ignore those unrelated values.
+																case 'inherit':
+																case 'none':
+																	value = '';
+															}
+
+															!value && ( value = ( element.getAttribute( 'align' ) || '' ).toLowerCase() );
+															this.setValue( value );
+														}
 													},
-													commit : function( type, element )
+													commit : function( type, element, internalCommit )
 													{
 														var value = this.getValue();
-														if ( type == IMAGE )
-														{
-															if ( value || this.isChanged() )
-																element.setAttribute( 'align', value );
-														}
-														else if ( type == PREVIEW )
-														{
-															element.setAttribute( 'align', this.getValue() );
-
-															if ( value == 'absMiddle' || value == 'middle' )
-																element.setStyle( 'vertical-align', 'middle' );
-															else if ( value == 'top' || value == 'textTop' )
-																element.setStyle( 'vertical-align', 'top' );
+														if ( type == IMAGE || type == PREVIEW )
+														{
+															if ( value )
+																element.setStyle( 'float', value );
 															else
-																element.removeStyle( 'vertical-align' );
-
-															if ( value == 'right' || value == 'left' )
-																element.setStyle( 'styleFloat', value );
-															else
-																element.removeStyle( 'styleFloat' );
-
+																element.removeStyle( 'float' );
+
+															if ( !internalCommit && type == IMAGE )
+															{
+																value = ( element.getAttribute( 'align' ) || '' ).toLowerCase();
+																switch( value )
+																{
+																	// we should remove it only if it matches "left" or "right",
+																	// otherwise leave it intact.
+																	case 'left':
+																	case 'right':
+																		element.removeAttribute( 'align' );
+																}
+															}
 														}
 														else if ( type == CLEANUP )
-														{
-															element.removeAttribute( 'align' );
-														}
+															element.removeStyle( 'float' );
+
 													}
 												}
@@ -898,12 +1064,14 @@
 											type : 'html',
 											style : 'width:95%;',
-											html : '<div>' + CKEDITOR.tools.htmlEncode( editor.lang.image.preview ) +'<br>'+
-											'<div id="ImagePreviewLoader" style="display:none"><div class="loading">&nbsp;</div></div>'+
-											'<div id="ImagePreviewBox">'+
-											'<a href="javascript:void(0)" target="_blank" onclick="return false;" id="previewLink">'+
-											'<img id="previewImage" src="" alt="" /></a>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. '+
+											html : '<div>' + CKEDITOR.tools.htmlEncode( editor.lang.common.preview ) +'<br>'+
+											'<div id="' + imagePreviewLoaderId + '" class="ImagePreviewLoader" style="display:none"><div class="loading">&nbsp;</div></div>'+
+											'<div id="' + imagePreviewBoxId + '" class="ImagePreviewBox"><table><tr><td>'+
+											'<a href="javascript:void(0)" target="_blank" onclick="return false;" id="' + previewLinkId + '">'+
+											'<img id="' + previewImageId + '" alt="" /></a>' +
+											( editor.config.image_previewText ||
+											'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. '+
 											'Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, '+
-											'nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.' +
-											'</div>'+'</div>'
+											'nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.' ) +
+											'</td></tr></table></div></div>'
 										}
 									]
@@ -922,5 +1090,5 @@
 							id : 'txtUrl',
 							type : 'text',
-							label : editor.lang.image.url,
+							label : editor.lang.common.url,
 							style : 'width: 100%',
 							'default' : '',
@@ -954,5 +1122,10 @@
 							type : 'button',
 							id : 'browse',
-							filebrowser : 'Link:txtUrl',
+							filebrowser :
+							{
+								action : 'Browse',
+								target: 'Link:txtUrl',
+								url: editor.config.filebrowserImageBrowseLinkUrl || editor.config.filebrowserBrowseUrl
+							},
 							style : 'float:right',
 							hidden : true,
@@ -962,13 +1135,13 @@
 							id : 'cmbTarget',
 							type : 'select',
-							label : editor.lang.link.target,
+							label : editor.lang.common.target,
 							'default' : '',
 							items :
 							[
-								[ editor.lang.link.targetNotSet , ''],
-								[ editor.lang.link.targetNew , '_blank'],
-								[ editor.lang.link.targetTop , '_top'],
-								[ editor.lang.link.targetSelf , '_self'],
-								[ editor.lang.link.targetParent , '_parent']
+								[ editor.lang.common.notSet , ''],
+								[ editor.lang.common.targetNew , '_blank'],
+								[ editor.lang.common.targetTop , '_top'],
+								[ editor.lang.common.targetSelf , '_self'],
+								[ editor.lang.common.targetParent , '_parent']
 							],
 							setup : function( type, element )
@@ -1187,4 +1360,13 @@
 								}
 							},
+							onChange : function ()
+							{
+								commitInternally.call( this,
+									[ 'info:cmbFloat', 'info:cmbAlign',
+									  'info:txtVSpace', 'info:txtHSpace',
+									  'info:txtBorder',
+									  'info:txtWidth', 'info:txtHeight' ] );
+								updatePreview( this );
+							},
 							commit : function( type, element )
 							{
@@ -1192,33 +1374,4 @@
 								{
 									element.setAttribute( 'style', this.getValue() );
-
-									// Set STYLE dimensions.
-									var height = element.getAttribute( 'height' ),
-										width = element.getAttribute( 'width' );
-
-									if ( this.attributesInStyle && this.attributesInStyle.height )
-									{
-										if ( height )
-										{
-											if ( height.match( regexGetSize )[2] == '%' )			// % is allowed
-												element.setStyle( 'height', height + '%' );
-											else
-												element.setStyle( 'height', height + 'px' );
-										}
-										else
-											element.removeStyle( 'height' );
-									}
-									if ( this.attributesInStyle && this.attributesInStyle.width )
-									{
-										if ( width )
-										{
-											if ( width.match( regexGetSize )[2] == '%' )			// % is allowed
-												element.setStyle( 'width', width + '%' );
-											else
-												element.setStyle( 'width', width + 'px' );
-										}
-										else
-											element.removeStyle( 'width' );
-									}
 								}
 							}
Index: /CKEditor/branches/features/adobeair/_source/plugins/image/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/image/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/image/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -25,4 +25,12 @@
 				label : editor.lang.common.image,
 				command : pluginName
+			});
+
+		editor.on( 'doubleclick', function( evt )
+			{
+				var element = evt.data.element;
+
+				if ( element.is( 'img' ) && !element.getAttribute( '_cke_realelement' ) )
+					evt.data.dialog = 'image';
 			});
 
@@ -63,2 +71,11 @@
  */
 CKEDITOR.config.image_removeLinkByEmptyURL = true;
+
+/**
+ *  Padding text to set off the image in preview area.
+ * @name CKEDITOR.config.image_previewText
+ * @type String
+ * @default "Lorem ipsum dolor..." placehoder text.
+ * @example
+ * config.image_previewText = CKEDITOR.tools.repeat( '___ ', 100 );
+ */
Index: /CKEditor/branches/features/adobeair/_source/plugins/indent/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/indent/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/indent/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -12,4 +12,7 @@
 	var listNodeNames = { ol : 1, ul : 1 };
 
+	var isNotWhitespaces = CKEDITOR.dom.walker.whitespaces( true ),
+		isNotBookmark = CKEDITOR.dom.walker.bookmark( false, true );
+
 	function setState( editor, state )
 	{
@@ -19,36 +22,11 @@
 	function onSelectionChange( evt )
 	{
-		var elements = evt.data.path.elements,
-			listNode, listItem,
-			editor = evt.editor;
-
-		for ( var i = 0 ; i < elements.length ; i++ )
-		{
-			if ( elements[i].getName() == 'li' )
-			{
-				listItem = elements[i];
-				continue;
-			}
-			if ( listNodeNames[ elements[i].getName() ] )
-			{
-				listNode = elements[i];
-				break;
-			}
-		}
-
-		if ( listNode )
-		{
-			if ( this.name == 'outdent' )
+		var editor = evt.editor;
+
+		var elementPath = evt.data.path,
+				list = elementPath && elementPath.contains( listNodeNames );
+
+		if ( list )
 				return setState.call( this, editor, CKEDITOR.TRISTATE_OFF );
-			else
-			{
-				while ( listItem && ( listItem = listItem.getPrevious( CKEDITOR.dom.walker.whitespaces( true ) ) ) )
-				{
-					if ( listItem.getName && listItem.getName() == 'li' )
-						return setState.call( this, editor, CKEDITOR.TRISTATE_OFF );
-				}
-				return setState.call( this, editor, CKEDITOR.TRISTATE_DISABLED );
-			}
-		}
 
 		if ( !this.useIndentClasses && this.name == 'indent' )
@@ -136,6 +114,12 @@
 		// Apply indenting or outdenting on the array.
 		var baseIndent = listArray[ lastItem.getCustomData( 'listarray_index' ) ].indent;
-		for ( i = startItem.getCustomData( 'listarray_index' ) ; i <= lastItem.getCustomData( 'listarray_index' ) ; i++ )
-			listArray[i].indent += indentOffset;
+		for ( i = startItem.getCustomData( 'listarray_index' ); i <= lastItem.getCustomData( 'listarray_index' ); i++ )
+		{
+			listArray[ i ].indent += indentOffset;
+			// Make sure the newly created sublist get a brand-new element of the same type. (#5372)
+			var listRoot = listArray[ i ].parent;
+			listArray[ i ].parent = new CKEDITOR.dom.element( listRoot.getName(), listRoot.getDocument() );
+		}
+
 		for ( i = lastItem.getCustomData( 'listarray_index' ) + 1 ;
 				i < listArray.length && listArray[i].indent > baseIndent ; i++ )
@@ -160,5 +144,5 @@
 				for ( i = count - 1 ; i >= 0 ; i-- )
 				{
-					if( ( child = children.getItem( i ) ) && child.is && child.is( 'li' )  )
+					if ( ( child = children.getItem( i ) ) && child.is && child.is( 'li' )  )
 						pendingLis.push( child );
 				}
@@ -178,8 +162,13 @@
 
 				// Nest preceding <ul>/<ol> inside current <li> if any.
-				while( ( followingList = followingList.getNext() ) &&
+				while ( ( followingList = followingList.getNext() ) &&
 					   followingList.is &&
 					   followingList.getName() in listNodeNames )
 				{
+					// IE requires a filler NBSP for nested list inside empty list item,
+					// otherwise the list item will be inaccessiable. (#4476)
+					if ( CKEDITOR.env.ie && !li.getFirst( function( node ){ return isNotWhitespaces( node ) && isNotBookmark( node ); } ) )
+						li.append( range.document.createText( '\u00a0' ) );
+
 					li.append( followingList );
 				}
@@ -201,10 +190,13 @@
 		var block;
 		while ( ( block = iterator.getNextParagraph() ) )
-		{
-
+			indentElement.call( this, editor, block );
+	}
+
+	function indentElement( editor, element )
+		{
 			if ( this.useIndentClasses )
 			{
 				// Transform current class name to indent step index.
-				var indentClass = block.$.className.match( this.classNameRegex ),
+			var indentClass = element.$.className.match( this.classNameRegex ),
 					indentStep = 0;
 				if ( indentClass )
@@ -220,26 +212,35 @@
 				else
 					indentStep++;
+
+			if ( indentStep < 0 )
+				return false;
+
 				indentStep = Math.min( indentStep, editor.config.indentClasses.length );
 				indentStep = Math.max( indentStep, 0 );
-				var className = CKEDITOR.tools.ltrim( block.$.className.replace( this.classNameRegex, '' ) );
+			var className = CKEDITOR.tools.ltrim( element.$.className.replace( this.classNameRegex, '' ) );
 				if ( indentStep < 1 )
-					block.$.className = className;
+				element.$.className = className;
 				else
-					block.addClass( editor.config.indentClasses[ indentStep - 1 ] );
+				element.addClass( editor.config.indentClasses[ indentStep - 1 ] );
 			}
 			else
 			{
-				var currentOffset = parseInt( block.getStyle( this.indentCssProperty ), 10 );
+			var currentOffset = parseInt( element.getStyle( this.indentCssProperty ), 10 );
 				if ( isNaN( currentOffset ) )
 					currentOffset = 0;
 				currentOffset += ( this.name == 'indent' ? 1 : -1 ) * editor.config.indentOffset;
+
+			if ( currentOffset < 0 )
+				return false;
+
 				currentOffset = Math.max( currentOffset, 0 );
 				currentOffset = Math.ceil( currentOffset / editor.config.indentOffset ) * editor.config.indentOffset;
-				block.setStyle( this.indentCssProperty, currentOffset ? currentOffset + editor.config.indentUnit : '' );
-				if ( block.getAttribute( 'style' ) === '' )
-					block.removeAttribute( 'style' );
-			}
-		}
-	}
+			element.setStyle( this.indentCssProperty, currentOffset ? currentOffset + editor.config.indentUnit : '' );
+			if ( element.getAttribute( 'style' ) === '' )
+				element.removeAttribute( 'style' );
+			}
+
+		return true;
+		}
 
 	function indentCommand( editor, name )
@@ -256,4 +257,10 @@
 		else
 			this.indentCssProperty = editor.config.contentsLangDirection == 'ltr' ? 'margin-left' : 'margin-right';
+		this.startDisabled = name == 'outdent';
+	}
+
+	function isListItem( node )
+	{
+		return node.type = CKEDITOR.NODE_ELEMENT && node.is( 'li' );
 	}
 
@@ -264,9 +271,8 @@
 				range = selection && selection.getRanges()[0];
 
-			if ( !selection || !range )
-				return;
-
-			var bookmarks = selection.createBookmarks( true ),
-				nearestListBlock = range.getCommonAncestor();
+			var startContainer = range.startContainer,
+				endContainer = range.endContainer,
+				rangeRoot = range.getCommonAncestor(),
+				nearestListBlock = rangeRoot;
 
 			while ( nearestListBlock && !( nearestListBlock.type == CKEDITOR.NODE_ELEMENT &&
@@ -274,6 +280,37 @@
 				nearestListBlock = nearestListBlock.getParent();
 
-			if ( nearestListBlock )
+			// Avoid selection anchors under list root.
+			// <ul>[<li>...</li>]</ul> =>	<ul><li>[...]</li></ul>
+			if ( nearestListBlock && startContainer.type == CKEDITOR.NODE_ELEMENT
+				&& startContainer.getName() in listNodeNames )
+			{
+				var walker = new CKEDITOR.dom.walker( range );
+				walker.evaluator = isListItem;
+				range.startContainer = walker.next();
+			}
+
+			if ( nearestListBlock && endContainer.type == CKEDITOR.NODE_ELEMENT
+				&& endContainer.getName() in listNodeNames )
+			{
+				walker = new CKEDITOR.dom.walker( range );
+				walker.evaluator = isListItem;
+				range.endContainer = walker.previous();
+			}
+
+			var bookmarks = selection.createBookmarks( true );
+
+			if ( nearestListBlock  )
+			{
+				var firstListItem = nearestListBlock.getFirst( function( node )
+					{
+						return node.type == CKEDITOR.NODE_ELEMENT && node.is( 'li' );
+					}),
+					rangeStart = range.startContainer,
+					indentWholeList = firstListItem.equals( rangeStart ) || firstListItem.contains( rangeStart );
+
+				// Indent the entire list if  cursor is inside the first list item. (#3893)
+				if ( !( indentWholeList && indentElement.call( this, editor, nearestListBlock ) ) )
 				indentList.call( this, editor, range, nearestListBlock );
+			}
 			else
 				indentBlock.call( this, editor, range );
@@ -310,4 +347,15 @@
 			editor.on( 'selectionChange', CKEDITOR.tools.bind( onSelectionChange, indent ) );
 			editor.on( 'selectionChange', CKEDITOR.tools.bind( onSelectionChange, outdent ) );
+
+			// [IE6/7] Raw lists are using margin instead of padding for visual indentation in wysiwyg mode. (#3893)
+			if ( CKEDITOR.env.ie6Compat || CKEDITOR.env.ie7Compat )
+			{
+				editor.addCss(
+					"ul,ol" +
+					"{" +
+					"	margin-left: 0px;" +
+					"	padding-left: 40px;" +
+					"}" );
+			}
 		},
 
@@ -322,2 +370,53 @@
 		indentClasses : null
 	});
+
+/**
+ * Size of each indentation step
+ * @type Number
+ * @example
+ * config.indentOffset = 40;
+ */
+
+ /**
+ * Unit for the indentation style
+ * @type String
+ * @example
+ * config.indentUnit = 'px';
+ */
+
+ /**
+ * List of classes to use for indenting the contents.
+ * @type Array
+ * @example
+ * // Don't use classes for indenting. (this is the default value)
+ * config.indentClasses = null;
+ * @example
+ * // Use the classes 'Indent1', 'Indent2', 'Indent3'
+ * config.indentClasses = ['Indent1', 'Indent2', 'Indent3'];
+ */
+
+/**
+ * Size of each indentation step
+ * @type Number
+ * @default 40
+ * @example
+ * config.indentOffset = 4;
+ */
+
+ /**
+ * Unit for the indentation style
+ * @type String
+ * @default 'px'
+ * @example
+ * config.indentUnit = 'em';
+ */
+
+ /**
+ * List of classes to use for indenting the contents. If it's null, no classes will be used
+ * and instead the {@link #indentUnit} and {@link #indentOffset} properties will be used.
+ * @type Array
+ * default null
+ * @example
+ * // Use the classes 'Indent1', 'Indent2', 'Indent3'
+ * config.indentClasses = ['Indent1', 'Indent2', 'Indent3'];
+ */
Index: /CKEditor/branches/features/adobeair/_source/plugins/justify/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/justify/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/justify/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -67,5 +67,7 @@
 		exec : function( editor )
 		{
-			var selection = editor.getSelection();
+			var selection = editor.getSelection(),
+				enterMode = editor.config.enterMode;
+
 			if ( !selection )
 				return;
@@ -81,4 +83,6 @@
 			{
 				iterator = ranges[ i ].createIterator();
+				iterator.enlargeBr = enterMode != CKEDITOR.ENTER_BR;
+
 				while ( ( block = iterator.getNextParagraph() ) )
 				{
Index: /CKEditor/branches/features/adobeair/_source/plugins/keystrokes/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/keystrokes/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/keystrokes/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -215,4 +215,15 @@
 	[ CKEDITOR.CTRL + 85 /*U*/, 'underline' ],
 
-	[ CKEDITOR.ALT + 109 /*-*/, 'toolbarCollapse' ]
+	[ CKEDITOR.ALT + 109 /*-*/, 'toolbarCollapse' ],
+	[ CKEDITOR.ALT + 48 /*0*/, 'a11yHelp' ]
 ];
+
+/**
+ * Fired when any keyboard key (or combination) is pressed into the editing area.
+ * @name CKEDITOR#key
+ * @event
+ * @param {Number} data.keyCode A number representing the key code (or
+ *		combination). It is the sum of the current key code and the
+ *		{@link CKEDITOR.CTRL}, {@link CKEDITOR.SHIFT} and {@link CKEDITOR.ALT}
+ *		constants, if those are pressed.
+ */
Index: /CKEditor/branches/features/adobeair/_source/plugins/link/dialogs/anchor.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/link/dialogs/anchor.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/link/dialogs/anchor.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -82,4 +82,5 @@
 						id : 'txtName',
 						label : editor.lang.anchor.name,
+						required: true,
 						validate : function()
 						{
Index: /CKEditor/branches/features/adobeair/_source/plugins/link/dialogs/link.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/link/dialogs/link.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/link/dialogs/link.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -6,4 +6,5 @@
 CKEDITOR.dialog.add( 'link', function( editor )
 {
+	var plugin = CKEDITOR.plugins.link;
 	// Handles the event when the "Target" selection box is changed.
 	var targetChanged = function()
@@ -18,16 +19,24 @@
 
 		popupFeatures = popupFeatures.getElement();
-
-		if ( value == 'popup' )
-		{
-			popupFeatures.show();
-			targetName.setLabel( editor.lang.link.targetPopupName );
-		}
-		else
-		{
-			popupFeatures.hide();
-			targetName.setLabel( editor.lang.link.targetFrameName );
-			this.getDialog().setValueOf( 'target', 'linkTargetName', value.charAt( 0 ) == '_' ? value : '' );
-		}
+		popupFeatures.hide();
+		targetName.setValue( '' );
+
+		switch ( value )
+ 		{
+			case 'frame' :
+				targetName.setLabel( editor.lang.link.targetFrameName );
+				targetName.getElement().show();
+				break;
+			case 'popup' :
+				popupFeatures.show();
+				targetName.setLabel( editor.lang.link.targetPopupName );
+				targetName.getElement().show();
+				break;
+			default :
+				targetName.setValue( value );
+				targetName.getElement().hide();
+				break;
+ 		}
+
 	};
 
@@ -38,5 +47,6 @@
 			partIds = [ 'urlOptions', 'anchorOptions', 'emailOptions' ],
 			typeValue = this.getValue(),
-			uploadInitiallyHidden = dialog.definition.getContents( 'upload' ).hidden;
+			uploadTab = dialog.definition.getContents( 'upload' ),
+			uploadInitiallyHidden = uploadTab && uploadTab.hidden;
 
 		if ( typeValue == 'url' )
@@ -69,10 +79,13 @@
 
 	// Loads the parameters in a selected link to the link dialog fields.
-	var emailRegex = /^mailto:([^?]+)(?:\?(.+))?$/,
+	var javascriptProtocolRegex = /^javascript:/,
+		emailRegex = /^mailto:([^?]+)(?:\?(.+))?$/,
 		emailSubjectRegex = /subject=([^;?:@&=$,\/]*)/,
 		emailBodyRegex = /body=([^;?:@&=$,\/]*)/,
 		anchorRegex = /^#(.*)$/,
 		urlRegex = /^((?:http|https|ftp|news):\/\/)?(.*)$/,
-		selectableTargets = /^(_(?:self|top|parent|blank))$/;
+		selectableTargets = /^(_(?:self|top|parent|blank))$/,
+		encodedEmailLinkRegex = /^javascript:void\(location\.href='mailto:'\+String\.fromCharCode\(([^)]+)\)(?:\+'(.*)')?\)$/,
+		functionCallProtectedEmailLinkRegex = /^javascript:([^(]+)\(([^)]+)\)$/;
 
 	var popupRegex =
@@ -82,43 +95,83 @@
 	var parseLink = function( editor, element )
 	{
-		var href = element ? ( element.getAttribute( '_cke_saved_href' ) || element.getAttribute( 'href' ) ) : '',
-			emailMatch = '',
-			anchorMatch = '',
-			urlMatch = false,
+		var href = ( element  && ( element.getAttribute( '_cke_saved_href' ) || element.getAttribute( 'href' ) ) ) || '',
+		 	javascriptMatch,
+			emailMatch,
+			anchorMatch,
+			urlMatch,
 			retval = {};
 
-		if ( href )
+		if ( ( javascriptMatch = href.match( javascriptProtocolRegex ) ) )
 		{
-			emailMatch = href.match( emailRegex );
-			anchorMatch = href.match( anchorRegex );
-			urlMatch = href.match( urlRegex );
+			if ( emailProtection == 'encode' )
+			{
+				href = href.replace( encodedEmailLinkRegex,
+						function ( match, protectedAddress, rest )
+						{
+							return 'mailto:' +
+							       String.fromCharCode.apply( String, protectedAddress.split( ',' ) ) +
+							       ( rest && unescapeSingleQuote( rest ) );
+						});
+			}
+			// Protected email link as function call.
+			else if ( emailProtection )
+			{
+				href.replace( functionCallProtectedEmailLinkRegex, function( match, funcName, funcArgs )
+				{
+					if ( funcName == compiledProtectionFunction.name )
+					{
+						retval.type = 'email';
+						var email = retval.email = {};
+
+						var paramRegex = /[^,\s]+/g,
+							paramQuoteRegex = /(^')|('$)/g,
+							paramsMatch = funcArgs.match( paramRegex ),
+							paramsMatchLength = paramsMatch.length,
+							paramName,
+							paramVal;
+
+						for ( var i = 0; i < paramsMatchLength; i++ )
+						{
+							paramVal = decodeURIComponent( unescapeSingleQuote( paramsMatch[ i ].replace( paramQuoteRegex, '' ) ) );
+							paramName = compiledProtectionFunction.params[ i ].toLowerCase();
+							email[ paramName ] = paramVal;
+						}
+						email.address = [ email.name, email.domain ].join( '@' );
+					}
+				} );
+			}
 		}
 
-		// Load the link type and URL.
-		if ( emailMatch )
+		if ( !retval.type )
 		{
-			var subjectMatch = href.match( emailSubjectRegex ),
-				bodyMatch = href.match( emailBodyRegex );
-			retval.type = 'email';
-			retval.email = {};
-			retval.email.address = emailMatch[1];
-			subjectMatch && ( retval.email.subject = decodeURIComponent( subjectMatch[1] ) );
-			bodyMatch && ( retval.email.body = decodeURIComponent( bodyMatch[1] ) );
+			if ( ( anchorMatch = href.match( anchorRegex ) ) )
+			{
+				retval.type = 'anchor';
+				retval.anchor = {};
+				retval.anchor.name = retval.anchor.id = anchorMatch[1];
+			}
+			// Protected email link as encoded string.
+			else if ( ( emailMatch = href.match( emailRegex ) ) )
+			{
+				var subjectMatch = href.match( emailSubjectRegex ),
+					bodyMatch = href.match( emailBodyRegex );
+
+				retval.type = 'email';
+				var email = ( retval.email = {} );
+				email.address = emailMatch[ 1 ];
+				subjectMatch && ( email.subject = decodeURIComponent( subjectMatch[ 1 ] ) );
+				bodyMatch && ( email.body = decodeURIComponent( bodyMatch[ 1 ] ) );
+			}
+			// urlRegex matches empty strings, so need to check for href as well.
+			else if (  href && ( urlMatch = href.match( urlRegex ) ) )
+			{
+				retval.type = 'url';
+				retval.url = {};
+				retval.url.protocol = urlMatch[1];
+				retval.url.url = urlMatch[2];
+			}
+			else
+				retval.type = 'url';
 		}
-		else if ( anchorMatch )
-		{
-			retval.type = 'anchor';
-			retval.anchor = {};
-			retval.anchor.name = retval.anchor.id = anchorMatch[1];
-		}
-		else if ( href && urlMatch )		// urlRegex matches empty strings, so need to check for href as well.
-		{
-			retval.type = 'url';
-			retval.url = {};
-			retval.url.protocol = urlMatch[1];
-			retval.url.url = urlMatch[2];
-		}
-		else
-			retval.type = 'url';
 
 		// Load target and popup settings.
@@ -187,5 +240,5 @@
 			anchors = retval.anchors = [];
 
-		for( var i = 0; i < elements.count() ; i++ )
+		for ( var i = 0; i < elements.count() ; i++ )
 		{
 			var item = elements.getItem( i );
@@ -244,4 +297,70 @@
 		return commitParams.call( this, 'adv', data );
 	};
+
+	function unescapeSingleQuote( str )
+	{
+		return str.replace( /\\'/g, '\'' );
+	}
+
+	function escapeSingleQuote( str )
+	{
+		return str.replace( /'/g, '\\$&' );
+	}
+
+	var emailProtection = editor.config.emailProtection || '';
+
+	// Compile the protection function pattern.
+	if ( emailProtection && emailProtection != 'encode' )
+	{
+		var compiledProtectionFunction = {};
+
+		emailProtection.replace( /^([^(]+)\(([^)]+)\)$/, function( match, funcName, params )
+		{
+			compiledProtectionFunction.name = funcName;
+			compiledProtectionFunction.params = [];
+			params.replace( /[^,\s]+/g, function( param )
+			{
+				compiledProtectionFunction.params.push( param );
+			} );
+		} );
+	}
+
+	function protectEmailLinkAsFunction( email )
+	{
+		var retval,
+			name = compiledProtectionFunction.name,
+			params = compiledProtectionFunction.params,
+			paramName,
+			paramValue;
+
+		retval = [ name, '(' ];
+		for ( var i = 0; i < params.length; i++ )
+		{
+			paramName = params[ i ].toLowerCase();
+			paramValue = email[ paramName ];
+
+			i > 0 && retval.push( ',' );
+			retval.push( '\'',
+						 paramValue ?
+						 escapeSingleQuote( encodeURIComponent( email[ paramName ] ) )
+						 : '',
+						 '\'');
+		}
+		retval.push( ')' );
+		return retval.join( '' );
+	}
+
+	function protectEmailAddressAsEncodedString( address )
+	{
+		var charCode,
+			length = address.length,
+			encodedChars = [];
+		for ( var i = 0; i < length; i++ )
+		{
+			charCode = address.charCodeAt( i );
+			encodedChars.push( charCode );
+		}
+		return 'String.fromCharCode(' + encodedChars.join( ',' ) + ')';
+	}
 
 	return {
@@ -263,5 +382,5 @@
 						items :
 						[
-							[ editor.lang.common.url, 'url' ],
+							[ editor.lang.link.toUrl, 'url' ],
 							[ editor.lang.link.toAnchor, 'anchor' ],
 							[ editor.lang.link.toEmail, 'email' ]
@@ -293,17 +412,17 @@
 										label : editor.lang.common.protocol,
 										'default' : 'http://',
-										style : 'width : 100%;',
 										items :
 										[
-											[ 'http://' ],
-											[ 'https://' ],
-											[ 'ftp://' ],
-											[ 'news://' ],
-											[ '<other>', '' ]
+											// Force 'ltr' for protocol names in BIDI. (#5433)
+											[ 'http://\u200E', 'http://' ],
+											[ 'https://\u200E', 'https://' ],
+											[ 'ftp://\u200E', 'ftp://' ],
+											[ 'news://\u200E', 'news://' ],
+											[ editor.lang.link.other , '' ]
 										],
 										setup : function( data )
 										{
 											if ( data.url )
-												this.setValue( data.url.protocol );
+												this.setValue( data.url.protocol || '' );
 										},
 										commit : function( data )
@@ -319,4 +438,5 @@
 										id : 'url',
 										label : editor.lang.common.url,
+										required: true,
 										onLoad : function ()
 										{
@@ -329,5 +449,5 @@
 												url = this.getValue(),
 												urlOnChangeProtocol = /^(http|https|ftp|news):\/\/(?=.)/gi,
-												urlOnChangeTestOther = /^((javascript:)|[#\/\.])/gi;
+												urlOnChangeTestOther = /^((javascript:)|[#\/\.\?])/gi;
 
 											var protocol = urlOnChangeProtocol.exec( url );
@@ -368,11 +488,11 @@
 											this.allowOnChange = true;
 
-											var linkType = this.getDialog().getContentElement( 'info', 'linkType' );
-											if ( linkType && linkType.getValue() == 'url' )
-												this.select();
-
 										},
 										commit : function( data )
 										{
+											// IE will not trigger the onChange event if the mouse has been used
+											// to carry all the operations #4724
+											this.onChange();
+
 											if ( !data.url )
 												data.url = {};
@@ -407,7 +527,7 @@
 						[
 							{
-								type : 'html',
+								type : 'fieldset',
 								id : 'selectAnchorText',
-								html : CKEDITOR.tools.htmlEncode( editor.lang.link.selectAnchor ),
+								label : editor.lang.link.selectAnchor,
 								setup : function( data )
 								{
@@ -416,5 +536,88 @@
 									else
 										this.getElement().hide();
-								}
+								},
+								children :
+								[
+									{
+										type : 'hbox',
+										id : 'selectAnchor',
+										children :
+										[
+											{
+												type : 'select',
+												id : 'anchorName',
+												'default' : '',
+												label : editor.lang.link.anchorName,
+												style : 'width: 100%;',
+												items :
+												[
+													[ '' ]
+												],
+												setup : function( data )
+												{
+													this.clear();
+													this.add( '' );
+													for ( var i = 0 ; i < data.anchors.length ; i++ )
+													{
+														if ( data.anchors[i].name )
+															this.add( data.anchors[i].name );
+													}
+
+													if ( data.anchor )
+														this.setValue( data.anchor.name );
+
+													var linkType = this.getDialog().getContentElement( 'info', 'linkType' );
+													if ( linkType && linkType.getValue() == 'email' )
+														this.focus();
+												},
+												commit : function( data )
+												{
+													if ( !data.anchor )
+														data.anchor = {};
+
+													data.anchor.name = this.getValue();
+												}
+											},
+											{
+												type : 'select',
+												id : 'anchorId',
+												'default' : '',
+												label : editor.lang.link.anchorId,
+												style : 'width: 100%;',
+												items :
+												[
+													[ '' ]
+												],
+												setup : function( data )
+												{
+													this.clear();
+													this.add( '' );
+													for ( var i = 0 ; i < data.anchors.length ; i++ )
+													{
+														if ( data.anchors[i].id )
+															this.add( data.anchors[i].id );
+													}
+
+													if ( data.anchor )
+														this.setValue( data.anchor.id );
+												},
+												commit : function( data )
+												{
+													if ( !data.anchor )
+														data.anchor = {};
+
+													data.anchor.id = this.getValue();
+												}
+											}
+										],
+										setup : function( data )
+										{
+											if ( data.anchors.length > 0 )
+												this.getElement().show();
+											else
+												this.getElement().hide();
+										}
+									}
+								]
 							},
 							{
@@ -422,88 +625,10 @@
 								id : 'noAnchors',
 								style : 'text-align: center;',
-								html : '<div>' + CKEDITOR.tools.htmlEncode( editor.lang.link.noAnchors ) + '</div>',
+								html : '<div role="label" tabIndex="-1">' + CKEDITOR.tools.htmlEncode( editor.lang.link.noAnchors ) + '</div>',
+								// Focus the first element defined in above html.
+								focus : true,
 								setup : function( data )
 								{
 									if ( data.anchors.length < 1 )
-										this.getElement().show();
-									else
-										this.getElement().hide();
-								}
-							},
-							{
-								type : 'hbox',
-								id : 'selectAnchor',
-								children :
-								[
-									{
-										type : 'select',
-										id : 'anchorName',
-										'default' : '',
-										label : editor.lang.link.anchorName,
-										style : 'width: 100%;',
-										items :
-										[
-											[ '' ]
-										],
-										setup : function( data )
-										{
-											this.clear();
-											this.add( '' );
-											for ( var i = 0 ; i < data.anchors.length ; i++ )
-											{
-												if ( data.anchors[i].name )
-													this.add( data.anchors[i].name );
-											}
-
-											if ( data.anchor )
-												this.setValue( data.anchor.name );
-
-											var linkType = this.getDialog().getContentElement( 'info', 'linkType' );
-											if ( linkType && linkType.getValue() == 'email' )
-												this.focus();
-										},
-										commit : function( data )
-										{
-											if ( !data.anchor )
-												data.anchor = {};
-
-											data.anchor.name = this.getValue();
-										}
-									},
-									{
-										type : 'select',
-										id : 'anchorId',
-										'default' : '',
-										label : editor.lang.link.anchorId,
-										style : 'width: 100%;',
-										items :
-										[
-											[ '' ]
-										],
-										setup : function( data )
-										{
-											this.clear();
-											this.add( '' );
-											for ( var i = 0 ; i < data.anchors.length ; i++ )
-											{
-												if ( data.anchors[i].id )
-													this.add( data.anchors[i].id );
-											}
-
-											if ( data.anchor )
-												this.setValue( data.anchor.id );
-										},
-										commit : function( data )
-										{
-											if ( !data.anchor )
-												data.anchor = {};
-
-											data.anchor.id = this.getValue();
-										}
-									}
-								],
-								setup : function( data )
-								{
-									if ( data.anchors.length > 0 )
 										this.getElement().show();
 									else
@@ -528,4 +653,5 @@
 								id : 'emailAddress',
 								label : editor.lang.link.emailAddress,
+								required : true,
 								validate : function()
 								{
@@ -615,16 +741,16 @@
 								type : 'select',
 								id : 'linkTargetType',
-								label : editor.lang.link.target,
+								label : editor.lang.common.target,
 								'default' : 'notSet',
 								style : 'width : 100%;',
 								'items' :
 								[
-									[ editor.lang.link.targetNotSet, 'notSet' ],
+									[ editor.lang.common.notSet, 'notSet' ],
 									[ editor.lang.link.targetFrame, 'frame' ],
 									[ editor.lang.link.targetPopup, 'popup' ],
-									[ editor.lang.link.targetNew, '_blank' ],
-									[ editor.lang.link.targetTop, '_top' ],
-									[ editor.lang.link.targetSelf, '_self' ],
-									[ editor.lang.link.targetParent, '_parent' ]
+									[ editor.lang.common.targetNew, '_blank' ],
+									[ editor.lang.common.targetTop, '_top' ],
+									[ editor.lang.common.targetSelf, '_self' ],
+									[ editor.lang.common.targetParent, '_parent' ]
 								],
 								onChange : targetChanged,
@@ -657,5 +783,5 @@
 										data.target = {};
 
-									data.target.name = this.getValue();
+									data.target.name = this.getValue().replace(/\W/gi, '');
 								}
 							}
@@ -671,143 +797,146 @@
 						[
 							{
-								type : 'html',
-								html : CKEDITOR.tools.htmlEncode( editor.lang.link.popupFeatures )
-							},
-							{
-								type : 'hbox',
+								type : 'fieldset',
+								label : editor.lang.link.popupFeatures,
 								children :
 								[
 									{
-										type : 'checkbox',
-										id : 'resizable',
-										label : editor.lang.link.popupResizable,
-										setup : setupPopupParams,
-										commit : commitPopupParams
+										type : 'hbox',
+										children :
+										[
+											{
+												type : 'checkbox',
+												id : 'resizable',
+												label : editor.lang.link.popupResizable,
+												setup : setupPopupParams,
+												commit : commitPopupParams
+											},
+											{
+												type : 'checkbox',
+												id : 'status',
+												label : editor.lang.link.popupStatusBar,
+												setup : setupPopupParams,
+												commit : commitPopupParams
+
+											}
+										]
 									},
 									{
-										type : 'checkbox',
-										id : 'status',
-										label : editor.lang.link.popupStatusBar,
-										setup : setupPopupParams,
-										commit : commitPopupParams
-
-									}
-								]
-							},
-							{
-								type : 'hbox',
-								children :
-								[
-									{
-										type : 'checkbox',
-										id : 'location',
-										label : editor.lang.link.popupLocationBar,
-										setup : setupPopupParams,
-										commit : commitPopupParams
-
+										type : 'hbox',
+										children :
+										[
+											{
+												type : 'checkbox',
+												id : 'location',
+												label : editor.lang.link.popupLocationBar,
+												setup : setupPopupParams,
+												commit : commitPopupParams
+
+											},
+											{
+												type : 'checkbox',
+												id : 'toolbar',
+												label : editor.lang.link.popupToolbar,
+												setup : setupPopupParams,
+												commit : commitPopupParams
+
+											}
+										]
 									},
 									{
-										type : 'checkbox',
-										id : 'toolbar',
-										label : editor.lang.link.popupToolbar,
-										setup : setupPopupParams,
-										commit : commitPopupParams
-
-									}
-								]
-							},
-							{
-								type : 'hbox',
-								children :
-								[
-									{
-										type : 'checkbox',
-										id : 'menubar',
-										label : editor.lang.link.popupMenuBar,
-										setup : setupPopupParams,
-										commit : commitPopupParams
-
+										type : 'hbox',
+										children :
+										[
+											{
+												type : 'checkbox',
+												id : 'menubar',
+												label : editor.lang.link.popupMenuBar,
+												setup : setupPopupParams,
+												commit : commitPopupParams
+
+											},
+											{
+												type : 'checkbox',
+												id : 'fullscreen',
+												label : editor.lang.link.popupFullScreen,
+												setup : setupPopupParams,
+												commit : commitPopupParams
+
+											}
+										]
 									},
 									{
-										type : 'checkbox',
-										id : 'fullscreen',
-										label : editor.lang.link.popupFullScreen,
-										setup : setupPopupParams,
-										commit : commitPopupParams
-
-									}
-								]
-							},
-							{
-								type : 'hbox',
-								children :
-								[
-									{
-										type : 'checkbox',
-										id : 'scrollbars',
-										label : editor.lang.link.popupScrollBars,
-										setup : setupPopupParams,
-										commit : commitPopupParams
-
+										type : 'hbox',
+										children :
+										[
+											{
+												type : 'checkbox',
+												id : 'scrollbars',
+												label : editor.lang.link.popupScrollBars,
+												setup : setupPopupParams,
+												commit : commitPopupParams
+
+											},
+											{
+												type : 'checkbox',
+												id : 'dependent',
+												label : editor.lang.link.popupDependent,
+												setup : setupPopupParams,
+												commit : commitPopupParams
+
+											}
+										]
 									},
 									{
-										type : 'checkbox',
-										id : 'dependent',
-										label : editor.lang.link.popupDependent,
-										setup : setupPopupParams,
-										commit : commitPopupParams
-
-									}
-								]
-							},
-							{
-								type : 'hbox',
-								children :
-								[
-									{
-										type :  'text',
-										widths : [ '30%', '70%' ],
-										labelLayout : 'horizontal',
-										label : editor.lang.link.popupWidth,
-										id : 'width',
-										setup : setupPopupParams,
-										commit : commitPopupParams
-
+										type : 'hbox',
+										children :
+										[
+											{
+												type :  'text',
+												widths : [ '30%', '70%' ],
+												labelLayout : 'horizontal',
+												label : editor.lang.link.popupWidth,
+												id : 'width',
+												setup : setupPopupParams,
+												commit : commitPopupParams
+
+											},
+											{
+												type :  'text',
+												labelLayout : 'horizontal',
+												widths : [ '55%', '45%' ],
+												label : editor.lang.link.popupLeft,
+												id : 'left',
+												setup : setupPopupParams,
+												commit : commitPopupParams
+
+											}
+										]
 									},
 									{
-										type :  'text',
-										labelLayout : 'horizontal',
-										widths : [ '55%', '45%' ],
-										label : editor.lang.link.popupLeft,
-										id : 'left',
-										setup : setupPopupParams,
-										commit : commitPopupParams
-
-									}
-								]
-							},
-							{
-								type : 'hbox',
-								children :
-								[
-									{
-										type :  'text',
-										labelLayout : 'horizontal',
-										widths : [ '30%', '70%' ],
-										label : editor.lang.link.popupHeight,
-										id : 'height',
-										setup : setupPopupParams,
-										commit : commitPopupParams
-
-									},
-									{
-										type :  'text',
-										labelLayout : 'horizontal',
-										label : editor.lang.link.popupTop,
-										widths : [ '55%', '45%' ],
-										id : 'top',
-										setup : setupPopupParams,
-										commit : commitPopupParams
-
+										type : 'hbox',
+										children :
+										[
+											{
+												type :  'text',
+												labelLayout : 'horizontal',
+												widths : [ '30%', '70%' ],
+												label : editor.lang.link.popupHeight,
+												id : 'height',
+												setup : setupPopupParams,
+												commit : commitPopupParams
+
+											},
+											{
+												type :  'text',
+												labelLayout : 'horizontal',
+												label : editor.lang.link.popupTop,
+												widths : [ '55%', '45%' ],
+												id : 'top',
+												setup : setupPopupParams,
+												commit : commitPopupParams
+
+											}
+										]
 									}
 								]
@@ -872,5 +1001,5 @@
 										items :
 										[
-											[ editor.lang.link.langDirNotSet, '' ],
+											[ editor.lang.common.notSet, '' ],
 											[ editor.lang.link.langDirLTR, 'ltr' ],
 											[ editor.lang.link.langDirRTL, 'rtl' ]
@@ -1009,28 +1138,19 @@
 			var editor = this.getParentEditor(),
 				selection = editor.getSelection(),
-				ranges = selection.getRanges(),
-				element = null,
-				me = this;
+				element = null;
+
 			// Fill in all the relevant fields if there's already one link selected.
-			if ( ranges.length == 1 )
-			{
-
-				var rangeRoot = ranges[0].getCommonAncestor( true );
-				element = rangeRoot.getAscendant( 'a', true );
-				if ( element && element.getAttribute( 'href' ) )
-				{
-					selection.selectElement( element );
-				}
-				else if ( ( element = rangeRoot.getAscendant( 'img', true ) ) &&
-						 element.getAttribute( '_cke_real_element_type' ) &&
-						 element.getAttribute( '_cke_real_element_type' ) == 'anchor' )
-				{
-					this.fakeObj = element;
-					element = editor.restoreRealElement( this.fakeObj );
-					selection.selectElement( this.fakeObj );
-				}
-				else
-					element = null;
-			}
+			if ( ( element = plugin.getSelectedLink( editor ) ) && element.hasAttribute( 'href' ) )
+				selection.selectElement( element );
+			else if ( ( element = selection.getSelectedElement() ) && element.is( 'img' )
+					&& element.getAttribute( '_cke_real_element_type' )
+					&& element.getAttribute( '_cke_real_element_type' ) == 'anchor' )
+			{
+				this.fakeObj = element;
+				element = editor.restoreRealElement( this.fakeObj );
+				selection.selectElement( this.fakeObj );
+			}
+			else
+				element = null;
 
 			this.setupContent( parseLink.apply( this, [ editor, element ] ) );
@@ -1041,5 +1161,6 @@
 				removeAttributes = [],
 				data = { href : attributes.href },
-				me = this, editor = this.getParentEditor();
+				me = this,
+				editor = this.getParentEditor();
 
 			this.commitContent( data );
@@ -1059,19 +1180,50 @@
 					break;
 				case 'email':
-					var address = ( data.email && data.email.address ),
-						subject = ( data.email && encodeURIComponent( data.email.subject || '' ) ),
-						body = ( data.email && encodeURIComponent( data.email.body || '' ) ),
-						linkList = [ 'mailto:', address ];
-					if ( subject || body )
+
+					var linkHref,
+						email = data.email,
+						address = email.address;
+
+					switch( emailProtection )
 					{
-						var argList = [];
-						linkList.push( '?' );
-						subject && argList.push( 'subject=' + subject );
-						body && argList.push( 'body=' + body );
-						linkList.push( argList.join( '&' ) );
+						case '' :
+						case 'encode' :
+						{
+							var subject = encodeURIComponent( email.subject || '' ),
+								body = encodeURIComponent( email.body || '' );
+
+							// Build the e-mail parameters first.
+							var argList = [];
+							subject && argList.push( 'subject=' + subject );
+							body && argList.push( 'body=' + body );
+							argList = argList.length ? '?' + argList.join( '&' ) : '';
+
+							if ( emailProtection == 'encode' )
+							{
+								linkHref = [ 'javascript:void(location.href=\'mailto:\'+',
+											 protectEmailAddressAsEncodedString( address ) ];
+								// parameters are optional.
+								argList && linkHref.push( '+\'', escapeSingleQuote( argList ), '\'' );
+
+								linkHref.push( ')' );
+							}
+							else
+								linkHref = [ 'mailto:', address, argList ];
+
+							break;
+						}
+						default :
+						{
+							// Separating name and domain.
+							var nameAndDomain = address.split( '@', 2 );
+							email.name = nameAndDomain[ 0 ];
+							email.domain = nameAndDomain[ 1 ];
+
+							linkHref = [ 'javascript:', protectEmailLinkAsFunction( email ) ];
+						}
 					}
-					attributes._cke_saved_href = linkList.join( '' );
+
+					attributes._cke_saved_href = linkHref.join( '' );
 					break;
-				default:
 			}
 
@@ -1100,5 +1252,5 @@
 
 					onclickList.push( featureList.join( ',' ), '\'); return false;' );
-					attributes[ CKEDITOR.env.ie || CKEDITOR.env.webkit ? '_cke_pa_onclick' : 'onclick' ] = onclickList.join( '' );
+					attributes[ '_cke_pa_onclick' ] = onclickList.join( '' );
 				}
 				else
@@ -1106,4 +1258,7 @@
 					if ( data.target.type != 'notSet' && data.target.name )
 						attributes.target = data.target.name;
+					else
+						removeAttributes.push( 'target' );
+
 					removeAttributes.push( '_cke_pa_onclick', 'onclick' );
 				}
@@ -1171,5 +1326,7 @@
 			{
 				// We're only editing an existing link, so just overwrite the attributes.
-				var element = this._.selectedElement;
+				var element = this._.selectedElement,
+					href = element.getAttribute( '_cke_saved_href' ),
+					textView = element.getHtml();
 
 				// IE BUG: Setting the name attribute to an existing link doesn't work.
@@ -1192,5 +1349,7 @@
 				element.setAttributes( attributes );
 				element.removeAttributes( removeAttributes );
-
+				// Update text view when user changes protocol #4612.
+				if (href == textView)
+					element.setHtml( attributes._cke_saved_href );
 				// Make the element display as an anchor if a name has been set.
 				if ( element.getAttribute( 'name' ) )
@@ -1213,5 +1372,42 @@
 				this.hidePage( 'target' );		//Hide Target tab.
 
+		},
+		// Inital focus on 'url' field if link is of type URL.
+		onFocus : function()
+		{
+			var linkType = this.getContentElement( 'info', 'linkType' ),
+					urlField;
+			if ( linkType && linkType.getValue( ) == 'url' )
+			{
+				urlField = this.getContentElement( 'info', 'url' );
+				urlField.select();
+			}
 		}
 	};
-} );
+});
+
+/**
+ * The e-mail address anti-spam protection option. The protection will be
+ * applied when creating or modifying e-mail links through the editor interface.<br>
+ * Two methods of protection can be choosed:
+ * <ol>	<li>The e-mail parts (name, domain and any other query string) are
+ *			assembled into a function call pattern. Such function must be
+ *			provided by the developer in the pages that will use the contents.
+ *		<li>Only the e-mail address is obfuscated into a special string that
+ *			has no meaning for humans or spam bots, but which is properly
+ *			rendered and accepted by the browser.</li></ol>
+ * Both approaches require JavaScript to be enabled.
+ * @name CKEDITOR.config.emailProtection
+ * @since 3.1
+ * @type String
+ * @default '' (empty string = disabled)
+ * @example
+ * // href="mailto:tester@ckeditor.com?subject=subject&body=body"
+ * config.emailProtection = '';
+ * @example
+ * // href="<a href=\"javascript:void(location.href=\'mailto:\'+String.fromCharCode(116,101,115,116,101,114,64,99,107,101,100,105,116,111,114,46,99,111,109)+\'?subject=subject&body=body\')\">e-mail</a>"
+ * config.emailProtection = 'encode';
+ * @example
+ * // href="javascript:mt('tester','ckeditor.com','subject','body')"
+ * config.emailProtection = 'mt(NAME,DOMAIN,SUBJECT,BODY)';
+ */
Index: /CKEditor/branches/features/adobeair/_source/plugins/link/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/link/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/link/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -66,4 +66,14 @@
 			} );
 
+		editor.on( 'doubleclick', function( evt )
+			{
+				var element = CKEDITOR.plugins.link.getSelectedLink( editor ) || evt.data.element;
+
+				if ( element.is( 'a' ) )
+					evt.data.dialog =  ( element.getAttribute( 'name' ) && !element.getAttribute( 'href' ) ) ? 'anchor' : 'link';
+				else if ( element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'anchor' )
+					evt.data.dialog = 'anchor';
+			});
+
 		// If the "menu" plugin is loaded, register the menu items.
 		if ( editor.addMenuItems )
@@ -108,5 +118,5 @@
 					if ( !isAnchor )
 					{
-						if ( !( element = element.getAscendant( 'a', true ) ) )
+						if ( !( element = CKEDITOR.plugins.link.getSelectedLink( editor ) ) )
 							return null;
 
@@ -147,4 +157,33 @@
 	requires : [ 'fakeobjects' ]
 } );
+
+CKEDITOR.plugins.link =
+{
+	/**
+	 *  Get the surrounding link element of current selection.
+	 * @param editor
+	 * @example CKEDITOR.plugins.link.getSelectedLink( editor );
+	 * @since 3.2.1
+	 * The following selection will all return the link element.
+	 *	 <pre>
+	 *  <a href="#">li^nk</a>
+	 *  <a href="#">[link]</a>
+	 *  text[<a href="#">link]</a>
+	 *  <a href="#">li[nk</a>]
+	 *  [<b><a href="#">li]nk</a></b>]
+	 *  [<a href="#"><b>li]nk</b></a>
+	 * </pre>
+	 */
+	getSelectedLink : function( editor )
+	{
+		var range;
+		try { range  = editor.getSelection().getRanges()[ 0 ]; }
+		catch( e ) { return null; }
+
+		range.shrink( CKEDITOR.SHRINK_TEXT );
+		var root = range.getCommonAncestor();
+		return root.getAscendant( 'a', true );
+	}
+};
 
 CKEDITOR.unlinkCommand = function(){};
@@ -179,5 +218,7 @@
 		editor.document.$.execCommand( 'unlink', false, null );
 		selection.selectBookmarks( bookmarks );
-	}
+	},
+
+	startDisabled : true
 };
 
Index: /CKEditor/branches/features/adobeair/_source/plugins/list/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/list/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/list/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -30,5 +30,5 @@
 				baseArray = [];
 
-			// Iterate over all list items to get their contents and look for inner lists.
+			// Iterate over all list items to and look for inner lists.
 			for ( var i = 0, count = listNode.getChildCount() ; i < count ; i++ )
 			{
@@ -38,5 +38,6 @@
 				if ( listItem.$.nodeName.toLowerCase() != 'li' )
 					continue;
-				var itemObj = { 'parent' : listNode, indent : baseIndentLevel, contents : [] };
+
+				var itemObj = { 'parent' : listNode, indent : baseIndentLevel, element : listItem, contents : [] };
 				if ( !grandparentNode )
 				{
@@ -52,7 +53,7 @@
 				baseArray.push( itemObj );
 
-				for ( var j = 0, itemChildCount = listItem.getChildCount() ; j < itemChildCount ; j++ )
-				{
-					var child = listItem.getChild( j );
+				for ( var j = 0, itemChildCount = listItem.getChildCount(), child; j < itemChildCount ; j++ )
+				{
+					child = listItem.getChild( j );
 					if ( child.type == CKEDITOR.NODE_ELEMENT && listNodeNames[ child.getName() ] )
 						// Note the recursion here, it pushes inner list items with
@@ -90,5 +91,5 @@
 						retval.append( rootNode );
 					}
-					currentListItem = rootNode.append( doc.createElement( 'li' ) );
+					currentListItem = rootNode.append( item.element.clone( false, true ) );
 					for ( var i = 0 ; i < item.contents.length ; i++ )
 						currentListItem.append( item.contents[i].clone( true, true ) );
@@ -105,7 +106,8 @@
 					currentListItem;
 					if ( listNodeNames[ item.grandparent.getName() ] )
-						currentListItem = doc.createElement( 'li' );
+						currentListItem = item.element.clone( false, true );
 					else
 					{
+						// Create completely new blocks here, attributes are dropped.
 						if ( paragraphMode != CKEDITOR.ENTER_BR && item.grandparent.getName() != 'td' )
 							currentListItem = doc.createElement( paragraphName );
@@ -233,4 +235,6 @@
 	}
 
+	var headerTagRegex = /^h[1-6]$/;
+
 	function createList( editor, groupObj, listsCreated )
 	{
@@ -284,6 +288,15 @@
 			var contentBlock = listContents.shift(),
 				listItem = doc.createElement( 'li' );
-			contentBlock.moveChildren( listItem );
-			contentBlock.remove();
+
+			// Preserve heading structure when converting to list item. (#5271)
+			if ( headerTagRegex.test( contentBlock.getName() ) )
+				contentBlock.appendTo( listItem );
+			else
+			{
+				contentBlock.copyAttributes( listItem );
+				contentBlock.moveChildren( listItem );
+				contentBlock.remove();
+			}
+
 			listItem.appendTo( listNode );
 
@@ -357,5 +370,4 @@
 		compensateBrs();
 
-		var rootParent = groupObj.root.getParent();
 		docFragment.replace( groupObj.root );
 	}
@@ -446,4 +458,6 @@
 				{
 					var path = new CKEDITOR.dom.elementPath( block ),
+						pathElements = path.elements,
+						pathElementsCount = pathElements.length,
 						listNode = null,
 						processedFlag = false,
@@ -452,8 +466,8 @@
 
 					// First, try to group by a list ancestor.
-					for ( var i = 0 ; i < path.elements.length &&
-						  ( element = path.elements[ i ] ) && !element.equals( blockLimit ); i++ )
-					{
-						if ( listNodeNames[ element.getName() ] )
+					for ( var i = pathElementsCount - 1; i >= 0 && ( element = pathElements[ i ] ); i-- )
+					{
+						if ( listNodeNames[ element.getName() ]
+							 && blockLimit.contains( element ) )     // Don't leak outside block limit (#3940).
 						{
 							// If we've encountered a list inside a block limit
@@ -539,4 +553,66 @@
 	};
 
+	var dtd = CKEDITOR.dtd;
+	var tailNbspRegex = /[\t\r\n ]*(?:&nbsp;|\xa0)$/;
+
+	function indexOfFirstChildElement( element, tagNameList )
+	{
+		var child,
+			children = element.children,
+			length = children.length;
+
+		for ( var i = 0 ; i < length ; i++ )
+		{
+			child = children[ i ];
+			if ( child.name && ( child.name in tagNameList ) )
+				return i;
+		}
+
+		return length;
+	}
+
+	function getExtendNestedListFilter( isHtmlFilter )
+	{
+		// An element filter function that corrects nested list start in an empty
+		// list item for better displaying/outputting. (#3165)
+		return function( listItem )
+		{
+			var children = listItem.children,
+				firstNestedListIndex = indexOfFirstChildElement( listItem, dtd.$list ),
+				firstNestedList = children[ firstNestedListIndex ],
+				nodeBefore = firstNestedList && firstNestedList.previous,
+				tailNbspmatch;
+
+			if ( nodeBefore
+				&& ( nodeBefore.name && nodeBefore.name == 'br'
+					|| nodeBefore.value && ( tailNbspmatch = nodeBefore.value.match( tailNbspRegex ) ) ) )
+			{
+				var fillerNode = nodeBefore;
+
+				// Always use 'nbsp' as filler node if we found a nested list appear
+				// in front of a list item.
+				if ( !( tailNbspmatch && tailNbspmatch.index ) && fillerNode == children[ 0 ] )
+					children[ 0 ] = ( isHtmlFilter || CKEDITOR.env.ie ) ?
+					                 new CKEDITOR.htmlParser.text( '\xa0' ) :
+									 new CKEDITOR.htmlParser.element( 'br', {} );
+
+				// Otherwise the filler is not needed anymore.
+				else if ( fillerNode.name == 'br' )
+					children.splice( firstNestedListIndex - 1, 1 );
+				else
+					fillerNode.value = fillerNode.value.replace( tailNbspRegex, '' );
+			}
+
+		};
+	}
+
+	var defaultListDataFilterRules = { elements : {} };
+	for ( var i in dtd.$listItem )
+		defaultListDataFilterRules.elements[ i ] = getExtendNestedListFilter();
+
+	var defaultListHtmlFilterRules = { elements : {} };
+	for ( i in dtd.$listItem )
+		defaultListHtmlFilterRules.elements[ i ] = getExtendNestedListFilter( true );
+
 	CKEDITOR.plugins.add( 'list',
 	{
@@ -566,4 +642,14 @@
 		},
 
+		afterInit : function ( editor )
+		{
+			var dataProcessor = editor.dataProcessor;
+			if ( dataProcessor )
+			{
+				dataProcessor.dataFilter.addRules( defaultListDataFilterRules );
+				dataProcessor.htmlFilter.addRules( defaultListHtmlFilterRules );
+			}
+		},
+
 		requires : [ 'domiterator' ]
 	} );
Index: /CKEditor/branches/features/adobeair/_source/plugins/listblock/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/listblock/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/listblock/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -10,7 +10,7 @@
 	onLoad : function()
 	{
-		CKEDITOR.ui.panel.prototype.addListBlock = function( name, multiSelect )
+		CKEDITOR.ui.panel.prototype.addListBlock = function( name, definition )
 		{
-			return this.addBlock( name, new CKEDITOR.ui.listBlock( this.getHolderElement(), multiSelect ) );
+			return this.addBlock( name, new CKEDITOR.ui.listBlock( this.getHolderElement(), definition ) );
 		};
 
@@ -19,10 +19,16 @@
 				base : CKEDITOR.ui.panel.block,
 
-				$ : function( blockHolder, multiSelect )
+				$ : function( blockHolder, blockDefinition )
 				{
+					blockDefinition = blockDefinition || {};
+
+					var attribs = blockDefinition.attributes || ( blockDefinition.attributes = {} );
+					( this.multiSelect = !!blockDefinition.multiSelect ) &&
+						( attribs[ 'aria-multiselectable' ] = true );
+					// Provide default role of 'listbox'.
+					!attribs.role && ( attribs.role = 'listbox' );
+
 					// Call the base contructor.
-					this.base( blockHolder );
-
-					this.multiSelect = !!multiSelect;
+					this.base.apply( this, arguments );
 
 					var keys = this.keys;
@@ -80,6 +86,7 @@
 						if ( !this._.started )
 						{
-							pendingHtml.push( '<ul class=cke_panel_list>' );
+							pendingHtml.push( '<ul role="presentation" class=cke_panel_list>' );
 							this._.started = 1;
+							this._.size = this._.size || 0;
 						}
 
@@ -88,8 +95,10 @@
 						pendingHtml.push(
 							'<li id=', id, ' class=cke_panel_listItem>' +
-								'<a _cke_focus=1 hidefocus=true' +
+								'<a id="', id, '_option" _cke_focus=1 hidefocus=true' +
 									' title="', title || value, '"' +
 									' href="javascript:void(\'', value, '\')"' +
-									' onclick="CKEDITOR.tools.callFunction(', this._.getClick(), ',\'', value, '\'); return false;">',
+									' onclick="CKEDITOR.tools.callFunction(', this._.getClick(), ',\'', value, '\'); return false;"',
+									' role="option"' +
+									' aria-posinset="' + ++this._.size + '">',
 									html || value,
 								'</a>' +
@@ -105,5 +114,5 @@
 						this._.groups[ title ] = id;
 
-						this._.pendingHtml.push( '<h1 id=', id, ' class=cke_panel_grouptitle>', title, '</h1>' );
+						this._.pendingHtml.push( '<h1 role="presentation" id=', id, ' class=cke_panel_grouptitle>', title, '</h1>' );
 					},
 
@@ -112,4 +121,11 @@
 						this._.close();
 						this.element.appendHtml( this._.pendingHtml.join( '' ) );
+
+						var items = this._.items,
+							doc = this.element.getDocument();
+						for ( var value in items )
+							doc.getById( items[ value ] + '_option' ).setAttribute( 'aria-setsize', this._.size );
+						delete this._.size;
+
 						this._.pendingHtml = [];
 					},
@@ -174,5 +190,12 @@
 							this.unmarkAll();
 
-						this.element.getDocument().getById( this._.items[ value ] ).addClass( 'cke_selected' );
+						var itemId = this._.items[ value ],
+							item = this.element.getDocument().getById( itemId );
+						item.addClass( 'cke_selected' );
+
+						this.element.getDocument().getById( itemId + '_option' ).setAttribute( 'aria-selected', true );
+						this.element.setAttribute( 'aria-activedescendant', itemId + '_option' );
+
+						this.onMark && this.onMark( item );
 					},
 
@@ -180,4 +203,5 @@
 					{
 						this.element.getDocument().getById( this._.items[ value ] ).removeClass( 'cke_selected' );
+						this.onUnmark && this.onUnmark( this._.items[ value ] );
 					},
 
@@ -191,4 +215,6 @@
 							doc.getById( items[ value ] ).removeClass( 'cke_selected' );
 						}
+
+						this.onUnmark && this.onUnmark();
 					},
 
@@ -210,5 +236,5 @@
 								i = -1;
 
-							while( ( link = links.getItem( ++i ) ) )
+							while ( ( link = links.getItem( ++i ) ) )
 							{
 								if ( link.equals( selected ) )
Index: /CKEditor/branches/features/adobeair/_source/plugins/liststyle/dialogs/liststyle.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/liststyle/dialogs/liststyle.js	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_source/plugins/liststyle/dialogs/liststyle.js	(revision 5613)
@@ -0,0 +1,202 @@
+﻿/*
+ * Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.html or http://ckeditor.com/license
+ */
+
+(function()
+{
+	function getListElement( editor, listTag )
+	{
+		var range;
+		try { range  = editor.getSelection().getRanges()[ 0 ]; }
+		catch( e ) { return null; }
+
+		range.shrink( CKEDITOR.SHRINK_TEXT );
+		return range.getCommonAncestor().getAscendant( listTag, true );
+	}
+
+	var mapListStyle = {
+		'a' : 'lower-alpha',
+		'A' : 'upper-alpha',
+		'i' : 'lower-roman',
+		'I' : 'upper-roman',
+		'1' : 'decimal',
+		'disc' : 'disc',
+		'circle': 'circle',
+		'square' : 'square'
+	};
+
+	function listStyle( editor, startupPage )
+	{
+		if ( startupPage == 'bulletedListStyle' )
+		{
+			return {
+				title : editor.lang.list.bulletedTitle,
+				minWidth : 300,
+				minHeight : 50,
+				contents :
+				[
+					{
+						id : 'info',
+						accessKey : 'I',
+						elements :
+						[
+							{
+								type : 'select',
+								label : editor.lang.list.type,
+								id : 'type',
+								style : 'width: 150px; margin: auto;',
+								items :
+								[
+									[ editor.lang.list.notset, '' ],
+									[ editor.lang.list.circle, 'circle' ],
+									[ editor.lang.list.disc,  'disc' ],
+									[ editor.lang.list.square, 'square' ]
+								],
+								setup : function( element )
+								{
+									var value = element.getStyle( 'list-style-type' )
+												|| mapListStyle[ element.getAttribute( 'type' ) ]
+												|| element.getAttribute( 'type' )
+												|| '';
+
+									this.setValue( value );
+								},
+								commit : function( element )
+								{
+									var value = this.getValue();
+									if ( value )
+										element.setStyle( 'list-style-type', value );
+									else
+										element.removeStyle( 'list-style-type' );
+								}
+							}
+						]
+					}
+				],
+				onShow: function()
+				{
+					var editor = this.getParentEditor(),
+						element = getListElement( editor, 'ul' );
+
+					element && this.setupContent( element );
+				},
+				onOk: function()
+				{
+					var editor = this.getParentEditor(),
+						element = getListElement( editor, 'ul' );
+
+					element && this.commitContent( element );
+				}
+			};
+		}
+		else if ( startupPage == 'numberedListStyle'  )
+		{
+
+			var listStyleOptions =
+			[
+				[ editor.lang.list.notset, '' ],
+				[ editor.lang.list.lowerRoman, 'lower-roman' ],
+				[ editor.lang.list.upperRoman, 'upper-roman' ],
+				[ editor.lang.list.lowerAlpha, 'lower-alpha' ],
+				[ editor.lang.list.upperAlpha, 'upper-alpha' ],
+				[ editor.lang.list.decimal, 'decimal' ]
+			];
+
+			if ( !CKEDITOR.env.ie || CKEDITOR.env.version > 7 )
+			{
+				listStyleOptions.concat( [
+					[ editor.lang.list.armenian, 'armenian' ],
+					[ editor.lang.list.decimalLeadingZero, 'decimal-leading-zero' ],
+					[ editor.lang.list.georgian, 'georgian' ],
+					[ editor.lang.list.lowerGreek, 'lower-greek' ]
+				]);
+			}
+
+			return {
+				title : editor.lang.list.numberedTitle,
+				minWidth : 300,
+				minHeight : 50,
+				contents :
+				[
+					{
+						id : 'info',
+						accessKey : 'I',
+						elements :
+						[
+							{
+								type : 'hbox',
+								widths : [ '25%', '75%' ],
+								children :
+								[
+									{
+										label : editor.lang.list.start,
+										type : 'text',
+										id : 'start',
+										setup : function( element )
+										{
+											var value = element.getAttribute( 'start' ) || 1;
+											value && this.setValue( value );
+										},
+										commit : function( element )
+										{
+											element.setAttribute( 'start', this.getValue() );
+										}
+									},
+									{
+										type : 'select',
+										label : editor.lang.list.type,
+										id : 'type',
+										style : 'width: 100%;',
+										items : listStyleOptions,
+										setup : function( element )
+										{
+											var value = element.getStyle( 'list-style-type' )
+												|| mapListStyle[ element.getAttribute( 'type' ) ]
+												|| element.getAttribute( 'type' )
+												|| '';
+
+											this.setValue( value );
+										},
+										commit : function( element )
+										{
+											var value = this.getValue();
+											if ( value )
+												element.setStyle( 'list-style-type', value );
+											else
+												element.removeStyle( 'list-style-type' );
+										}
+									}
+								]
+							}
+						]
+					}
+				],
+				onShow: function()
+				{
+					var editor = this.getParentEditor(),
+						element = getListElement( editor, 'ol' );
+
+					element && this.setupContent( element );
+				},
+				onOk: function()
+				{
+					var editor = this.getParentEditor(),
+						element = getListElement( editor, 'ol' );
+
+					element && this.commitContent( element );
+				}
+			};
+		}
+	}
+
+	CKEDITOR.dialog.add( 'numberedListStyle', function( editor )
+		{
+			return listStyle( editor, 'numberedListStyle' );
+		});
+
+	CKEDITOR.dialog.add( 'bulletedListStyle', function( editor )
+		{
+			return listStyle( editor, 'bulletedListStyle' );
+		});
+})();
Index: /CKEditor/branches/features/adobeair/_source/plugins/liststyle/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/liststyle/plugin.js	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_source/plugins/liststyle/plugin.js	(revision 5613)
@@ -0,0 +1,59 @@
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	CKEDITOR.plugins.liststyle =
+	{
+		init : function( editor )
+		{
+
+			editor.addCommand( 'numberedListStyle', new CKEDITOR.dialogCommand( 'numberedListStyle' ) );
+			CKEDITOR.dialog.add( 'numberedListStyle', this.path + 'dialogs/liststyle.js' );
+			editor.addCommand( 'bulletedListStyle', new CKEDITOR.dialogCommand( 'bulletedListStyle' ) );
+			CKEDITOR.dialog.add( 'bulletedListStyle', this.path + 'dialogs/liststyle.js' );
+
+			//Register map group;
+			editor.addMenuGroup("list", 108);
+			// If the "menu" plugin is loaded, register the menu items.
+			if ( editor.addMenuItems )
+			{
+				editor.addMenuItems(
+					{
+						numberedlist :
+						{
+							label : editor.lang.list.numberedTitle,
+							group : 'list',
+							command: 'numberedListStyle'
+						},
+						bulletedlist :
+						{
+							label : editor.lang.list.bulletedTitle,
+							group : 'list',
+							command: 'bulletedListStyle'
+						}
+					});
+			}
+
+			// If the "contextmenu" plugin is loaded, register the listeners.
+			if ( editor.contextMenu )
+			{
+				editor.contextMenu.addListener( function( element, selection )
+					{
+						if ( !element )
+							return null;
+
+						if ( element.getAscendant( 'ol') )
+							return { numberedlist: CKEDITOR.TRISTATE_OFF };
+
+						if ( element.getAscendant( 'ul' ) )
+							return { bulletedlist: CKEDITOR.TRISTATE_OFF };
+					});
+			}
+		}
+	};
+
+	CKEDITOR.plugins.add( 'liststyle', CKEDITOR.plugins.liststyle );
+})();
Index: /CKEditor/branches/features/adobeair/_source/plugins/maximize/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/maximize/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/maximize/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -79,11 +79,48 @@
 	}
 
-	function getResizeHandler( mainWindow, editor )
-	{
-		return function()
-		{
-			var viewPaneSize = mainWindow.getViewPaneSize();
-			editor.resize( viewPaneSize.width, viewPaneSize.height, null, true );
-		};
+	function refreshCursor( editor )
+	{
+		// Refresh all editor instances on the page (#5724).
+		var all = CKEDITOR.instances;
+		for ( var i in all )
+		{
+			var one = all[ i ];
+			if ( one.mode == 'wysiwyg' )
+			{
+				var body = one.document.getBody();
+				// Refresh 'contentEditable' otherwise
+				// DOM lifting breaks design mode. (#5560)
+				body.setAttribute( 'contentEditable', false );
+				body.setAttribute( 'contentEditable', true );
+			}
+		}
+
+		if ( editor.focusManager.hasFocus )
+		{
+			editor.toolbox.focus();
+			editor.focus();
+		}
+	}
+
+	/**
+	 * Adding an iframe shim to this element, OR removing the existing one if already applied.
+	 * Note: This will only affect IE version below 7.
+	 */
+	 function createIframeShim( element )
+	{
+		if ( !CKEDITOR.env.ie || CKEDITOR.env.version > 6 )
+			return null;
+
+		var shim = CKEDITOR.dom.element.createFromHtml( '<iframe frameborder="0" tabindex="-1"' +
+					' src="javascript:' +
+					   'void((function(){' +
+						   'document.open();' +
+						   ( CKEDITOR.env.isCustomDomain() ? 'document.domain=\'' + this.getDocument().$.domain + '\';' : '' ) +
+						   'document.close();' +
+					   '})())"' +
+					' style="display:block;position:absolute;z-index:-1;' +
+					'progid:DXImageTransform.Microsoft.Alpha(opacity=0);' +
+					'"></iframe>' );
+		return element.append( shim, true );
 	}
 
@@ -103,6 +140,13 @@
 			var outerScroll;
 
+			var shim;
+
 			// Saved resize handler function.
-			var resizeHandler = getResizeHandler( mainWindow, editor );
+			function resizeHandler()
+			{
+				var viewPaneSize = mainWindow.getViewPaneSize();
+				shim && shim.setStyles( { width : viewPaneSize.width + 'px', height : viewPaneSize.height + 'px' } );
+				editor.resize( viewPaneSize.width, viewPaneSize.height, null, true );
+			}
 
 			// Retain state after mode switches.
@@ -112,8 +156,8 @@
 				{
 					modes : { wysiwyg : 1, source : 1 },
-
+					editorFocus : false,
 					exec : function()
 					{
-						var container = editor.container.getChild( [ 0, 0 ] );
+						var container = editor.container.getChild( 1 );
 						var contents = editor.getThemeSpace( 'contents' );
 
@@ -121,5 +165,6 @@
 						if ( editor.mode == 'wysiwyg' )
 						{
-							savedSelection = editor.getSelection().getRanges();
+							var selection = editor.getSelection();
+							savedSelection = selection && selection.getRanges();
 							savedScroll = mainWindow.getScrollPosition();
 						}
@@ -165,6 +210,8 @@
 							}
 
-							// Scroll to the top left.
-							mainWindow.$.scrollTo( 0, 0 );
+							// Scroll to the top left (IE needs some time for it - #4923).
+							CKEDITOR.env.ie ?
+								setTimeout( function() { mainWindow.$.scrollTo( 0, 0 ); }, 0 ) :
+								mainWindow.$.scrollTo( 0, 0 );
 
 							// Resize and move to top left.
@@ -178,5 +225,7 @@
 									top : '0px'
 								} );
-							editor.resize( viewPaneSize.width, viewPaneSize.height, null, true );
+
+							shim =  createIframeShim( container );		// IE6 select element penetration when maximized. (#4459)
+							resizeHandler();
 
 							// Still not top left? Fix it. (Bug #174)
@@ -188,4 +237,7 @@
 								} );
 
+							// Fixing positioning editor chrome in Firefox break design mode. (#5149)
+							CKEDITOR.env.gecko && refreshCursor( editor );
+
 							// Add cke_maximized class.
 							container.addClass( 'cke_maximized' );
@@ -212,8 +264,16 @@
 
 							// Restore the window scroll position.
-							mainWindow.$.scrollTo( outerScroll.x, outerScroll.y );
+							CKEDITOR.env.ie ?
+								setTimeout( function() { mainWindow.$.scrollTo( outerScroll.x, outerScroll.y ); }, 0 ) :
+								mainWindow.$.scrollTo( outerScroll.x, outerScroll.y );
 
 							// Remove cke_maximized class.
 							container.removeClass( 'cke_maximized' );
+
+							if ( shim )
+							{
+								shim.remove();
+								shim = null;
+							}
 
 							// Emit a resize event, because this time the size is modified in
@@ -236,9 +296,14 @@
 						if ( editor.mode == 'wysiwyg' )
 						{
-							editor.getSelection().selectRanges( savedSelection );
-
-							var element = editor.getSelection().getStartElement();
-							if ( element )
-								element.scrollIntoView( true );
+							if ( savedSelection )
+							{
+								// Fixing positioning editor chrome in Firefox break design mode. (#5149)
+								CKEDITOR.env.gecko && refreshCursor( editor );
+
+								editor.getSelection().selectRanges(savedSelection);
+								var element = editor.getSelection().getStartElement();
+								element && element.scrollIntoView( true );
+							}
+
 							else
 								mainWindow.$.scrollTo( savedScroll.x, savedScroll.y );
Index: /CKEditor/branches/features/adobeair/_source/plugins/menu/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/menu/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/menu/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -9,41 +9,36 @@
 	{
 		var groups = editor.config.menu_groups.split( ',' ),
-			groupsOrder = {};
+			groupsOrder = editor._.menuGroups = {},
+			menuItems = editor._.menuItems = {};
 
 		for ( var i = 0 ; i < groups.length ; i++ )
 			groupsOrder[ groups[ i ] ] = i + 1;
 
-		editor._.menuGroups = groupsOrder;
-		editor._.menuItems = {};
+		editor.addMenuGroup = function( name, order )
+			{
+				groupsOrder[ name ] = order || 100;
+			};
+
+		editor.addMenuItem = function( name, definition )
+			{
+				if ( groupsOrder[ definition.group ] )
+					menuItems[ name ] = new CKEDITOR.menuItem( this, name, definition );
+			};
+
+		editor.addMenuItems = function( definitions )
+			{
+				for ( var itemName in definitions )
+				{
+					this.addMenuItem( itemName, definitions[ itemName ] );
+				}
+			};
+
+		editor.getMenuItem = function( name )
+			{
+				return menuItems[ name ];
+			};
 	},
 
 	requires : [ 'floatpanel' ]
-});
-
-CKEDITOR.tools.extend( CKEDITOR.editor.prototype,
-{
-	addMenuGroup : function( name, order )
-	{
-		this._.menuGroups[ name ] = order || 100;
-	},
-
-	addMenuItem : function( name, definition )
-	{
-		if ( this._.menuGroups[ definition.group ] )
-			this._.menuItems[ name ] = new CKEDITOR.menuItem( this, name, definition );
-	},
-
-	addMenuItems : function( definitions )
-	{
-		for ( var itemName in definitions )
-		{
-			this.addMenuItem( itemName, definitions[ itemName ] );
-		}
-	},
-
-	getMenuItem : function( name )
-	{
-		return this._.menuItems[ name ];
-	}
 });
 
@@ -52,6 +47,7 @@
 	CKEDITOR.menu = CKEDITOR.tools.createClass(
 	{
-		$ : function( editor, level )
+		$ : function( editor, definition )
 		{
+			definition = this._.definition = definition || {};
 			this.id = 'cke_' + CKEDITOR.tools.getNextNumber();
 
@@ -59,5 +55,17 @@
 			this.items = [];
 
-			this._.level = level || 1;
+			this._.level = definition.level || 1;
+
+			var panelDefinition = CKEDITOR.tools.extend( {}, definition.panel,
+			{
+				css : editor.skin.editor.css,
+				level : this._.level - 1,
+				block : {}
+			} );
+
+			var attrs = panelDefinition.block.attributes = ( panelDefinition.attributes || {} );
+			// Provide default role of 'menu'.
+			!attrs.role && ( attrs.role = 'menu' );
+			this._.panelDefinition = panelDefinition;
 		},
 
@@ -68,13 +76,17 @@
 				var menu = this._.subMenu,
 					item = this.items[ index ],
-					subItems = item.getItems && item.getItems();
+					subItemDefs = item.getItems && item.getItems();
 
 				// If this item has no subitems, we just hide the submenu, if
 				// available, and return back.
-				if ( !subItems )
+				if ( !subItemDefs )
 				{
 					this._.panel.hideChild();
 					return;
 				}
+
+				// Record parent menu focused item first (#3389).
+				var block = this._.panel.getBlock( this.id );
+				block._.focusIndex = index;
 
 				// Create the submenu, if not available, or clean the existing
@@ -84,13 +96,21 @@
 				else
 				{
-					menu = this._.subMenu = new CKEDITOR.menu( this.editor, this._.level + 1 );
+					menu = this._.subMenu = new CKEDITOR.menu( this.editor,
+								   CKEDITOR.tools.extend( {}, this._.definition, { level : this._.level + 1 }, true ) );
 					menu.parent = this;
 					menu.onClick = CKEDITOR.tools.bind( this.onClick, this );
+					// Sub menu use their own scope for binding onEscape.
+					menu.onEscape = this.onEscape;
 				}
 
 				// Add all submenu items to the menu.
-				for ( var itemName in subItems )
-				{
-					menu.add( this.editor.getMenuItem( itemName ) );
+				for ( var subItemName in subItemDefs )
+				{
+					var subItem = this.editor.getMenuItem( subItemName );
+					if ( subItem )
+					{
+						subItem.state = subItemDefs[ subItemName ];
+						menu.add( subItem );
+					}
 				}
 
@@ -131,16 +151,13 @@
 				if ( !panel )
 				{
-					panel = this._.panel = new CKEDITOR.ui.floatPanel( this.editor, CKEDITOR.document.getBody(),
-						{
-							css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
-							level : this._.level - 1,
-							className : editor.skinClass + ' cke_contextmenu'
-						},
-						this._.level);
-
-					panel.onEscape = CKEDITOR.tools.bind( function()
+					panel = this._.panel = new CKEDITOR.ui.floatPanel( this.editor,
+						CKEDITOR.document.getBody(),
+						this._.panelDefinition,
+						this._.level );
+
+					panel.onEscape = CKEDITOR.tools.bind( function( keystroke )
 					{
-						this.onEscape && this.onEscape();
-						this.hide();
+						if ( this.onEscape && this.onEscape( keystroke ) === false )
+							return false;
 					},
 					this );
@@ -152,17 +169,7 @@
 					this );
 
-					panel.onShow = function ()
-					{
-						var panelDoc = element.getDocument();
-						panelDoc.getBody().setStyle( 'overflow', 'hidden' );
-						panelDoc.getElementsByTag( 'html' ).getItem( 0 ).setStyle( 'overflow', 'hidden' );
-						editor.fire( 'menuShow', [ panel ] );
-					}
-
 					// Create an autosize block inside the panel.
-					var block = panel.addBlock( this.id );
+					var block = panel.addBlock( this.id, this._.panelDefinition.block );
 					block.autoSize = true;
-					element = this._.element = block.element;
-					element.addClass( editor.skinClass );
 
 					var keys = block.keys;
@@ -172,6 +179,12 @@
 					keys[ CKEDITOR.SHIFT + 9 ]	= 'prev';	// SHIFT + TAB
 					keys[ 32 ]	= 'click';					// SPACE
-					keys[ 39 ]	= 'click';					// ARROW-RIGHT
-
+					keys[ ( editor.lang.dir == 'rtl' ? 37 : 39 ) ]	= 'click';  // ARROW-RIGHT/ARROW-LEFT(rtl)
+
+					element = this._.element = block.element;
+					element.addClass( editor.skinClass );
+
+					var elementDoc = element.getDocument();
+					elementDoc.getBody().setStyle( 'overflow', 'hidden' );
+					elementDoc.getElementsByTag( 'html' ).getItem( 0 ).setStyle( 'overflow', 'hidden' );
 
 					this._.itemOverFn = CKEDITOR.tools.addFunction( function( index )
@@ -210,5 +223,5 @@
 
 				// Build the HTML that composes the menu and its items.
-				var output = [ '<div class="cke_menu">' ];
+				var output = [ '<div class="cke_menu" role="presentation">' ];
 
 				var length = items.length,
@@ -220,5 +233,5 @@
 					if ( lastGroup != item.group )
 					{
-						output.push( '<div class="cke_menuseparator"></div>' );
+						output.push( '<div class="cke_menuseparator" role="separator"></div>' );
 						lastGroup = item.group;
 					}
@@ -239,4 +252,6 @@
 				else
 					panel.showBlock( this.id, offsetParent, corner, offsetX, offsetY );
+
+				editor.fire( 'menuShow', [ panel ] );
 			},
 
@@ -296,9 +311,9 @@
 
 			var htmlLabel = this.label;
-			if ( state == CKEDITOR.TRISTATE_DISABLED )
-				htmlLabel = this.editor.lang.common.unavailable.replace( '%1', htmlLabel );
 
 			if ( this.className )
 				classes += ' ' + this.className;
+
+			var hasSubMenu = this.getItems;
 
 			output.push(
@@ -309,5 +324,9 @@
 					' tabindex="-1"' +
 					'_cke_focus=1' +
-					' hidefocus="true"' );
+					' hidefocus="true"' +
+					' role="menuitem"' +
+					( hasSubMenu ? 'aria-haspopup="true"' : '' ) +
+					( state == CKEDITOR.TRISTATE_DISABLED ? 'aria-disabled="true"' : '' ) +
+					( state == CKEDITOR.TRISTATE_ON ? 'aria-pressed="true"' : '' ) );
 
 			// Some browsers don't cancel key events in the keydown but in the
@@ -336,13 +355,19 @@
 					'>' +
 						'<span class="cke_icon_wrapper"><span class="cke_icon"' +
-							( this.icon ? ' style="background-image:url(' + CKEDITOR.getUrl( this.icon ) + ');background-position:0 ' + offset + 'px;"></span>'
+							( this.icon ? ' style="background-image:url(' + CKEDITOR.getUrl( this.icon ) + ');background-position:0 ' + offset + 'px;"'
 							: '' ) +
 							'></span></span>' +
 						'<span class="cke_label">' );
 
-			if ( this.getItems )
+			if ( hasSubMenu )
 			{
 				output.push(
-							'<span class="cke_menuarrow"></span>' );
+							'<span class="cke_menuarrow">',
+								'<span>&#',
+									( this.editor.lang.dir == 'rtl' ?
+										'9668' :	// BLACK LEFT-POINTING POINTER
+										'9658' ),	// BLACK RIGHT-POINTING POINTER
+								';</span>',
+							'</span>' );
 			}
 
@@ -382,3 +407,3 @@
 	'tablecell,tablecellproperties,tablerow,tablecolumn,table,'+
 	'anchor,link,image,flash,' +
-	'checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea';
+	'checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div';
Index: /CKEditor/branches/features/adobeair/_source/plugins/menubutton/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/menubutton/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/menubutton/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -37,4 +37,5 @@
 		{
 			menu = _.menu = new CKEDITOR.plugins.contextMenu( editor );
+			menu.definition.panel.attributes[ 'aria-label' ] = editor.lang.common.options;
 
 			menu.onHide = CKEDITOR.tools.bind( function()
Index: /CKEditor/branches/features/adobeair/_source/plugins/newpage/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/newpage/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/newpage/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -20,8 +20,8 @@
 				{
 					var command = this;
-					function afterCommand()
+					editor.setData( editor.config.newpage_html, function()
 					{
-						// Defer to happen after 'selectionChange'.
-						setTimeout( function()
+						// Save the undo snapshot after all document changes are affected. (#4889)
+						setTimeout( function ()
 						{
 							editor.fire( 'afterCommandExec',
@@ -30,19 +30,8 @@
 								command: command
 							} );
-						}, 500 );
-					}
-					if ( editor.mode == 'wysiwyg')
-						editor.on( 'contentDom', function( evt ){
 
-							evt.removeListener();
-	                        afterCommand();
-						} );
-
-					editor.setData( editor.config.newpage_html );
+						}, 200 );
+					} );
 					editor.focus();
-
-					if( editor.mode == 'source' )
-						afterCommand();
-
 				},
 				async : true
Index: /CKEditor/branches/features/adobeair/_source/plugins/pagebreak/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/pagebreak/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/pagebreak/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -33,8 +33,9 @@
 				'display: block;' +
 				'float: none;' +
-				'width: 100%;' +
+				'width:100%;_width:99.9%;' +
 				'border-top: #999999 1px dotted;' +
 				'border-bottom: #999999 1px dotted;' +
 				'height: 5px;' +
+				'page-break-after: always;' +
 
 			'}' );
@@ -56,5 +57,6 @@
 						div : function( element )
 						{
-							var style = element.attributes.style,
+							var attributes = element.attributes,
+								style = attributes && attributes.style,
 								child = style && element.children.length == 1 && element.children[ 0 ],
 								childStyle = child && ( child.name == 'span' ) && child.attributes.style;
@@ -83,4 +85,6 @@
 		var ranges = editor.getSelection().getRanges();
 
+		editor.fire( 'saveSnapshot' );
+
 		for ( var range, i = 0 ; i < ranges.length ; i++ )
 		{
@@ -92,5 +96,12 @@
 			range.splitBlock( 'p' );
 			range.insertNode( breakObject );
+			if ( i == ranges.length - 1 )
+			{
+				range.moveToPosition( breakObject, CKEDITOR.POSITION_AFTER_END );
+				range.select();
+			}
 		}
+
+		editor.fire( 'saveSnapshot' );
 	}
 };
Index: /CKEditor/branches/features/adobeair/_source/plugins/panel/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/panel/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/panel/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -79,4 +79,5 @@
 			'<div class="', editor.skinClass ,'"' +
 				' lang="', editor.langCode, '"' +
+				' role="presentation"' +
 				// iframe loading need sometime, keep the panel hidden(#4186).
 				' style="display:none;z-index:' + ( editor.config.baseFloatZIndex + 1 ) + '">' +
@@ -84,4 +85,5 @@
 					' id=', id,
 					' dir=', editor.lang.dir,
+					' role="presentation"' +
 					' class="cke_panel cke_', editor.lang.dir );
 
@@ -97,31 +99,19 @@
 						'<iframe id="', id, '_frame"' +
 							' frameborder="0"' +
-							' src="' );
-
-			// The iframe must source from a 'application sandbox' file,
-			// otherwise the dynamically linked stylesheets and scripts
-			// won't work in AIR.
-			if( CKEDITOR.env.air )
-			{
-				output.push( CKEDITOR.basePath + 'air_sandbox_frame.html' );
-			}
-			else
-			{
-				output.push( 'javascript:void(' );
-				output.push(
-							// Support for custom document.domain in IE.
-							CKEDITOR.env.isCustomDomain() ?
-								'(function(){' +
-									'document.open();' +
-									'document.domain=\'' + document.domain + '\';' +
-									'document.close();' +
-								'})()'
-							:
-								'0' );
-				output.push( ')' );
-			}
+							' role="application" src="javascript:void(' );
 
 			output.push(
-						'"></iframe>' );
+						// Support for custom document.domain in IE.
+						CKEDITOR.env.isCustomDomain() ?
+							'(function(){' +
+								'document.open();' +
+								'document.domain=\'' + document.domain + '\';' +
+								'document.close();' +
+							'})()'
+						:
+							'0' );
+
+			output.push(
+						')"></iframe>' );
 		}
 
@@ -148,45 +138,6 @@
 					doc = iframe.getFrameDocument();
 
-				// Support for custom document.domain in IE.
-				if ( CKEDITOR.env.isCustomDomain() )
-					doc.$.domain = document.domain;
-
 				var onLoad = CKEDITOR.tools.addFunction( CKEDITOR.tools.bind( function( ev )
 					{
-						var doc = iframe.getFrameDocument(),
-							body = doc.getBody();
-
-						if ( CKEDITOR.env.air )
-							doc.write( data );
-
-						if ( !holder )
-							holder = body;
-						else
-						{
-							this._.holder.moveChildren( body );
-							this._.holder = body;
-						}
-
-						var win = doc.getWindow();
-
-						// Register the CKEDITOR global.
-						win.$.CKEDITOR = CKEDITOR;
-
-						doc.on( 'keydown', function( evt )
-							{
-								var keystroke = evt.data.getKeystroke();
-
-								// Delegate key processing to block.
-								if ( this._.onKeyDown && this._.onKeyDown( keystroke ) === false )
-								{
-									evt.data.preventDefault();
-									return;
-								}
-
-								if ( keystroke == 27 )		// ESC
-									this.onEscape && this.onEscape();
-							},
-							this );
-
 						this.isLoaded = true;
 						if ( this.onLoad )
@@ -200,21 +151,42 @@
 							'<style>.' + className + '_container{visibility:hidden}</style>' +
 						'</head>' +
-						'<body class="cke_' + dir + ' cke_panel_frame ' + CKEDITOR.env.cssClass + '" style="margin:0;padding:0" >' +
-						'</body>' +
+						'<body class="cke_' + dir + ' cke_panel_frame ' + CKEDITOR.env.cssClass + '" style="margin:0;padding:0"' +
+						' onload="( window.CKEDITOR || window.parent.CKEDITOR ).tools.callFunction(' + onLoad + ');"></body>' +
 						// It looks strange, but for FF2, the styles must go
 						// after <body>, so it (body) becames immediatelly
 						// available. (#3031)
-						'<link type="text/css" rel=stylesheet href="' + this.css.join( '"><link type="text/css" rel="stylesheet" href="' ) + '">' +
+						CKEDITOR.tools.buildStyleHtml( this.css ) +
 					'<\/html>';
 
-				iframe.on( 'load', function( evt )
-				{
-					CKEDITOR.tools.callFunction( onLoad );
-				} );
-				if( !CKEDITOR.env.air )
-					doc.write( data );
-
-				if( !holder )
-					holder = new CKEDITOR.dom.element( 'body', doc );
+				doc.write( data );
+
+				var win = doc.getWindow();
+
+				// Register the CKEDITOR global.
+				win.$.CKEDITOR = CKEDITOR;
+
+				doc.on( 'keydown', function( evt )
+					{
+						var keystroke = evt.data.getKeystroke(),
+							dir = this.document.getById( 'cke_' + this.id ).getAttribute( 'dir' );
+
+						// Delegate key processing to block.
+						if ( this._.onKeyDown && this._.onKeyDown( keystroke ) === false )
+						{
+							evt.data.preventDefault();
+							return;
+						}
+
+						// ESC/ARROW-LEFT(ltr) OR ARROW-RIGHT(rtl)
+						if ( keystroke == 27 || keystroke == ( dir == 'rtl' ? 39 : 37 ) )
+						{
+							if ( this.onEscape && this.onEscape( keystroke ) === false )
+								evt.data.preventDefault( );
+						}
+					},
+					this );
+
+				holder = doc.getBody();
+				CKEDITOR.env.air && CKEDITOR.tools.callFunction( onLoad );
 			}
 			else
@@ -229,5 +201,6 @@
 	addBlock : function( name, block )
 	{
-		block = this._.blocks[ name ] = block || new CKEDITOR.ui.panel.block( this.getHolderElement() );
+		block = this._.blocks[ name ] = block instanceof CKEDITOR.ui.panel.block ?  block
+				: new CKEDITOR.ui.panel.block( this.getHolderElement(), block );
 
 		if ( !this._.currentBlock )
@@ -246,10 +219,23 @@
 		var blocks = this._.blocks,
 			block = blocks[ name ],
-			current = this._.currentBlock;
+			current = this._.currentBlock,
+			holder = this.forceIFrame ?
+				this.document.getById( 'cke_' + this.id + '_frame' )
+				: this._.holder;
+
+		// Disable context menu for block panel.
+		holder.getParent().getParent().disableContextMenu();
 
 		if ( current )
+		{
+			// Clean up the current block's effects on holder.
+			holder.removeAttributes( current.attributes );
 			current.hide();
+		}
 
 		this._.currentBlock = block;
+
+		holder.setAttributes( block.attributes );
+		CKEDITOR.fire( 'ariaWidget', holder );
 
 		// Reset the focus index, so it will always go into the first one.
@@ -258,7 +244,22 @@
 		this._.onKeyDown = block.onKeyDown && CKEDITOR.tools.bind( block.onKeyDown, block );
 
+		block.onMark = function( item )
+		{
+			holder.setAttribute( 'aria-activedescendant', item.getId() + '_option' );
+		};
+
+		block.onUnmark = function()
+		{
+			holder.removeAttribute( 'aria-activedescendant' );
+		};
+
 		block.show();
 
 		return block;
+	},
+
+	destroy : function()
+	{
+		this.element && this.element.remove();
 	}
 };
@@ -266,5 +267,5 @@
 CKEDITOR.ui.panel.block = CKEDITOR.tools.createClass(
 {
-	$ : function( blockHolder )
+	$ : function( blockHolder, blockDefinition )
 	{
 		this.element = blockHolder.append(
@@ -273,5 +274,7 @@
 					attributes :
 					{
-						'class' : 'cke_panel_block'
+						'tabIndex' : -1,
+						'class' : 'cke_panel_block',
+						'role' : 'presentation'
 					},
 					styles :
@@ -281,4 +284,11 @@
 				}) );
 
+		// Copy all definition properties to this object.
+		if ( blockDefinition )
+			CKEDITOR.tools.extend( this, blockDefinition );
+
+		if ( !this.attributes.title )
+			this.attributes.title = this.attributes[ 'aria-label' ];
+
 		this.keys = {};
 
@@ -289,5 +299,25 @@
 	},
 
-	_ : {},
+	_ : {
+
+		/**
+		 * Mark the item specified by the index as current activated.
+		 */
+		markItem: function( index )
+		{
+			if ( index == -1 )
+				return;
+			var links = this.element.getElementsByTag( 'a' );
+			var item = links.getItem( this._.focusIndex = index );
+
+			// Safari need focus on the iframe window first(#3389), but we need
+			// lock the blur to avoid hiding the panel.
+			if ( CKEDITOR.env.webkit )
+				item.getDocument().getWindow().focus();
+			item.focus();
+
+			this.onMark && this.onMark( item );
+		}
+	},
 
 	proto :
Index: /CKEditor/branches/features/adobeair/_source/plugins/panelbutton/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/panelbutton/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/panelbutton/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -58,4 +58,9 @@
 							|| CKEDITOR.document;
 
+			panelDefinition.block =
+			{
+				attributes : panelDefinition.attributes
+			};
+
 			this.hasArrow = true;
 
@@ -89,6 +94,8 @@
 
 				var panelDefinition = this._.panelDefinition || {},
+					 panelBlockDefinition = this._.panelDefinition.block,
 					panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(),
 					panel = this._.panel = new CKEDITOR.ui.floatPanel( editor, panelParentElement, panelDefinition ),
+					block = panel.addBlock( _.id, panelBlockDefinition ),
 					me = this;
 
@@ -127,7 +134,7 @@
 
 				if ( this.onBlock )
-					this.onBlock( panel, _.id );
+					this.onBlock( panel, block );
 
-				panel.getBlock( _.id ).onHide = function()
+				block.onHide = function()
 						{
 								_.on = 0;
Index: /CKEditor/branches/features/adobeair/_source/plugins/pastefromword/filter/default.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/pastefromword/filter/default.js	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_source/plugins/pastefromword/filter/default.js	(revision 5613)
@@ -0,0 +1,1179 @@
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	var fragmentPrototype = CKEDITOR.htmlParser.fragment.prototype,
+		elementPrototype = CKEDITOR.htmlParser.element.prototype;
+
+	fragmentPrototype.onlyChild = elementPrototype.onlyChild = function()
+	{
+		var children = this.children,
+			count = children.length,
+			firstChild = ( count == 1 ) && children[ 0 ];
+		return firstChild || null;
+	};
+
+	elementPrototype.removeAnyChildWithName = function( tagName )
+	{
+		var children = this.children,
+			childs = [],
+			child;
+
+		for ( var i = 0; i < children.length; i++ )
+		{
+			child = children[ i ];
+			if ( !child.name )
+				continue;
+
+			if ( child.name == tagName )
+			{
+				childs.push( child );
+				children.splice( i--, 1 );
+			}
+			childs = childs.concat( child.removeAnyChildWithName( tagName ) );
+		}
+		return childs;
+	};
+
+	elementPrototype.getAncestor = function( tagNameRegex )
+	{
+		var parent = this.parent;
+		while ( parent && !( parent.name && parent.name.match( tagNameRegex ) ) )
+			parent = parent.parent;
+		return parent;
+	};
+
+	fragmentPrototype.firstChild = elementPrototype.firstChild = function( evaluator )
+	{
+		var child;
+
+		for ( var i = 0 ; i < this.children.length ; i++ )
+		{
+			child = this.children[ i ];
+			if ( evaluator( child ) )
+				return child;
+			else if ( child.name )
+			{
+				child = child.firstChild( evaluator );
+				if ( child )
+					return child;
+				else
+					continue;
+			}
+		}
+
+		return null;
+	};
+
+	// Adding a (set) of styles to the element's attributes.
+	elementPrototype.addStyle = function( name, value, isPrepend )
+	{
+		var styleText, addingStyleText = '';
+		// name/value pair.
+		if ( typeof value == 'string' )
+			addingStyleText += name + ':' + value + ';';
+		else
+		{
+			// style literal.
+			if ( typeof name == 'object' )
+			{
+				for ( var style in name )
+				{
+					if ( name.hasOwnProperty( style ) )
+						addingStyleText += style + ':' + name[ style ] + ';';
+				}
+			}
+			// raw style text form.
+			else
+				addingStyleText += name;
+
+			isPrepend = value;
+		}
+
+		if ( !this.attributes )
+			this.attributes = {};
+
+		styleText = this.attributes.style || '';
+
+		styleText = ( isPrepend ?
+		              [ addingStyleText, styleText ]
+					  : [ styleText, addingStyleText ] ).join( ';' );
+
+		this.attributes.style = styleText.replace( /^;|;(?=;)/, '' );
+	};
+
+	/**
+	 * Return the DTD-valid parent tag names of the specified one.
+	 * @param tagName
+	 */
+	CKEDITOR.dtd.parentOf = function( tagName )
+	{
+		var result = {};
+		for ( var tag in this )
+		{
+			if ( tag.indexOf( '$' ) == -1 && this[ tag ][ tagName ] )
+				result[ tag ] = 1;
+		}
+		return result;
+	};
+
+	var cssLengthRelativeUnit = /^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz){1}?/i;
+	var emptyMarginRegex = /^(?:\b0[^\s]*\s*){1,4}$/;
+
+	var listBaseIndent = 0,
+		 previousListItemMargin;
+
+	CKEDITOR.plugins.pastefromword =
+	{
+		utils :
+		{
+			// Create a <cke:listbullet> which indicate an list item type.
+			createListBulletMarker : function ( bulletStyle, bulletText )
+			{
+				var marker = new CKEDITOR.htmlParser.element( 'cke:listbullet' ),
+					listType;
+
+				// TODO: Support more list style type from MS-Word.
+				if ( !bulletStyle )
+				{
+					bulletStyle = 'decimal';
+					listType = 'ol';
+				}
+				else if ( bulletStyle[ 2 ] )
+				{
+					if ( !isNaN( bulletStyle[ 1 ] ) )
+						bulletStyle = 'decimal';
+					// No way to distinguish between Roman numerals and Alphas,
+					// detect them as a whole.
+					else if ( /^[a-z]+$/.test( bulletStyle[ 1 ] ) )
+						bulletStyle = 'lower-alpha';
+					else if ( /^[A-Z]+$/.test( bulletStyle[ 1 ] ) )
+						bulletStyle = 'upper-alpha';
+					// Simply use decimal for the rest forms of unrepresentable
+					// numerals, e.g. Chinese...
+					else
+						bulletStyle = 'decimal';
+
+					listType = 'ol';
+				}
+				else
+				{
+					if ( /[l\u00B7\u2002]/.test( bulletStyle[ 1 ] ) ) //l·•
+						bulletStyle = 'disc';
+					else if ( /[\u006F\u00D8]/.test( bulletStyle[ 1 ] ) )  //oØ
+						bulletStyle = 'circle';
+					else if ( /[\u006E\u25C6]/.test( bulletStyle[ 1 ] ) ) //n◆
+						bulletStyle = 'square';
+					else
+						bulletStyle = 'disc';
+
+					listType = 'ul';
+				}
+
+				// Represent list type as CSS style.
+				marker.attributes =
+				{
+					'cke:listtype' : listType,
+					'style' : 'list-style-type:' + bulletStyle + ';'
+				};
+				marker.add( new CKEDITOR.htmlParser.text( bulletText ) );
+				return marker;
+			},
+
+			isListBulletIndicator : function( element )
+			{
+				var styleText = element.attributes && element.attributes.style;
+				if ( /mso-list\s*:\s*Ignore/i.test( styleText ) )
+					return true;
+			},
+
+			isContainingOnlySpaces : function( element )
+			{
+				var text;
+				return ( ( text = element.onlyChild() )
+					    && ( /^(:?\s|&nbsp;)+$/ ).test( text.value ) );
+			},
+
+			resolveList : function( element )
+			{
+				// <cke:listbullet> indicate a list item.
+				var children = element.children,
+					attrs = element.attributes,
+					listMarker;
+
+				if ( ( listMarker = element.removeAnyChildWithName( 'cke:listbullet' ) )
+					  && listMarker.length
+					  && ( listMarker = listMarker[ 0 ] ) )
+				{
+					element.name = 'cke:li';
+
+					if ( attrs.style )
+					{
+						attrs.style = CKEDITOR.plugins.pastefromword.filters.stylesFilter(
+								[
+									// Text-indent is not representing list item level any more.
+									[ 'text-indent' ],
+									[ 'line-height' ],
+									// Resolve indent level from 'margin-left' value.
+									[ ( /^margin(:?-left)?$/ ), null, function( margin )
+									{
+										// Be able to deal with component/short-hand form style.
+										var values = margin.split( ' ' );
+										margin = values[ 3 ] || values[ 1 ] || values [ 0 ];
+										margin = parseInt( margin, 10 );
+
+										// Figure out the indent unit by looking at the first increament.
+										if ( !listBaseIndent && previousListItemMargin && margin > previousListItemMargin )
+											listBaseIndent = margin - previousListItemMargin;
+
+										attrs[ 'cke:margin' ] = previousListItemMargin = margin;
+									} ]
+							] )( attrs.style, element ) || '' ;
+					}
+
+					// Inherit list-type-style from bullet.
+					var listBulletAttrs = listMarker.attributes,
+						listBulletStyle = listBulletAttrs.style;
+
+					element.addStyle( listBulletStyle );
+					CKEDITOR.tools.extend( attrs, listBulletAttrs );
+					return true;
+				}
+
+				return false;
+			},
+
+			// Convert various length units to 'px' in ignorance of DPI.
+			convertToPx : ( function ()
+			{
+				var calculator = CKEDITOR.dom.element.createFromHtml(
+								'<div style="position:absolute;left:-9999px;' +
+								'top:-9999px;margin:0px;padding:0px;border:0px;"' +
+								'></div>', CKEDITOR.document );
+				CKEDITOR.document.getBody().append( calculator );
+
+				return function( cssLength )
+				{
+					if ( cssLengthRelativeUnit.test( cssLength ) )
+					{
+						calculator.setStyle( 'width', cssLength );
+						return calculator.$.clientWidth + 'px';
+					}
+
+					return cssLength;
+				};
+			} )(),
+
+			// Providing a shorthand style then retrieve one or more style component values.
+			getStyleComponents : ( function()
+			{
+				var calculator = CKEDITOR.dom.element.createFromHtml(
+								'<div style="position:absolute;left:-9999px;top:-9999px;"></div>',
+								CKEDITOR.document );
+				CKEDITOR.document.getBody().append( calculator );
+
+				return function( name, styleValue, fetchList )
+				{
+					calculator.setStyle( name, styleValue );
+					var styles = {},
+						count = fetchList.length;
+					for ( var i = 0; i < count; i++ )
+						styles[ fetchList[ i ] ]  = calculator.getStyle( fetchList[ i ] );
+
+					return styles;
+				};
+			} )(),
+
+			listDtdParents : CKEDITOR.dtd.parentOf( 'ol' )
+		},
+
+		filters :
+		{
+				// Transform a normal list into flat list items only presentation.
+				// E.g. <ul><li>level1<ol><li>level2</li></ol></li> =>
+				// <cke:li cke:listtype="ul" cke:indent="1">level1</cke:li>
+				// <cke:li cke:listtype="ol" cke:indent="2">level2</cke:li>
+				flattenList : function( element )
+				{
+					var	attrs = element.attributes,
+						parent = element.parent;
+
+					var listStyleType,
+						indentLevel = 1;
+
+					// Resolve how many level nested.
+					while ( parent )
+					{
+						parent.attributes && parent.attributes[ 'cke:list'] && indentLevel++;
+						parent = parent.parent;
+					}
+
+					// All list items are of the same type.
+					switch ( attrs.type )
+					{
+						case 'a' :
+							listStyleType = 'lower-alpha';
+							break;
+						// TODO: Support more list style type from MS-Word.
+					}
+
+					var children = element.children,
+						child;
+
+					for ( var i = 0; i < children.length; i++ )
+					{
+						child = children[ i ];
+						var attributes = child.attributes;
+
+						if ( child.name in CKEDITOR.dtd.$listItem )
+						{
+							var listItemChildren = child.children,
+								count = listItemChildren.length,
+								last = listItemChildren[ count - 1 ];
+
+							// Move out nested list.
+							if ( last.name in CKEDITOR.dtd.$list )
+							{
+								children.splice( i + 1, 0, last );
+								last.parent = element;
+
+								// Remove the parent list item if it's just a holder.
+								if ( !--listItemChildren.length )
+									children.splice( i, 1 );
+							}
+
+							child.name = 'cke:li';
+							attributes[ 'cke:indent' ] = indentLevel;
+							previousListItemMargin = 0;
+							attributes[ 'cke:listtype' ] = element.name;
+							listStyleType && child.addStyle( 'list-style-type', listStyleType, true );
+						}
+					}
+
+					delete element.name;
+
+					// We're loosing tag name here, signalize this element as a list.
+					attrs[ 'cke:list' ] = 1;
+				},
+
+				/**
+				 *  Try to collect all list items among the children and establish one
+				 *  or more HTML list structures for them.
+				 * @param element
+				 */
+				assembleList : function( element )
+				{
+					var children = element.children, child,
+							listItem,   // The current processing cke:li element.
+							listItemAttrs,
+							listType,   // Determine the root type of the list.
+							listItemIndent, // Indent level of current list item.
+							lastListItem, // The previous one just been added to the list.
+							list, parentList, // Current staging list and it's parent list if any.
+							indent;
+
+					for ( var i = 0; i < children.length; i++ )
+					{
+						child = children[ i ];
+
+						if ( 'cke:li' == child.name )
+						{
+							child.name = 'li';
+							listItem = child;
+							listItemAttrs = listItem.attributes;
+							listType = listItem.attributes[ 'cke:listtype' ];
+
+							// List item indent level might come from a real list indentation or
+							// been resolved from a pseudo list item's margin value, even get
+							// no indentation at all.
+							listItemIndent = parseInt( listItemAttrs[ 'cke:indent' ], 10 )
+													|| listBaseIndent && ( Math.ceil( listItemAttrs[ 'cke:margin' ] / listBaseIndent ) )
+													|| 1;
+
+							// Ignore the 'list-style-type' attribute if it's matched with
+							// the list root element's default style type.
+							listItemAttrs.style && ( listItemAttrs.style =
+							        CKEDITOR.plugins.pastefromword.filters.stylesFilter(
+									[
+										[ 'list-style-type', listType == 'ol' ? 'decimal' : 'disc' ]
+									] )( listItemAttrs.style )
+									|| '' );
+
+							if ( !list )
+							{
+								list = new CKEDITOR.htmlParser.element( listType );
+								list.add( listItem );
+								children[ i ] = list;
+							}
+							else
+							{
+								if ( listItemIndent > indent )
+								{
+									list = new CKEDITOR.htmlParser.element( listType );
+									list.add( listItem );
+									lastListItem.add( list );
+								}
+								else if ( listItemIndent < indent )
+								{
+									// There might be a negative gap between two list levels. (#4944)
+									var diff = indent - listItemIndent,
+										parent;
+									while ( diff-- && ( parent = list.parent ) )
+										list = parent.parent;
+
+									list.add( listItem );
+								}
+								else
+									list.add( listItem );
+
+								children.splice( i--, 1 );
+							}
+
+							lastListItem = listItem;
+							indent = listItemIndent;
+						}
+						else
+							list = null;
+					}
+
+					listBaseIndent = 0;
+				},
+
+				/**
+				 * A simple filter which always rejecting.
+				 */
+				falsyFilter : function( value )
+				{
+					return false;
+				},
+
+				/**
+				 * A filter dedicated on the 'style' attribute filtering, e.g. dropping/replacing style properties.
+				 * @param styles {Array} in form of [ styleNameRegexp, styleValueRegexp,
+				 *  newStyleValue/newStyleGenerator, newStyleName ] where only the first
+				 *  parameter is mandatory.
+				 * @param whitelist {Boolean} Whether the {@param styles} will be considered as a white-list.
+				 */
+				stylesFilter : function( styles, whitelist )
+				{
+					return function( styleText, element )
+					{
+						 var rules = [];
+						// html-encoded quote might be introduced by 'font-family'
+						// from MS-Word which confused the following regexp. e.g.
+						//'font-family: &quot;Lucida, Console&quot;'
+						 styleText
+							.replace( /&quot;/g, '"' )
+							.replace( /\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,
+								 function( match, name, value )
+								 {
+									 name = name.toLowerCase();
+									 name == 'font-family' && ( value = value.replace( /["']/g, '' ) );
+
+									 var namePattern,
+										 valuePattern,
+										 newValue,
+										 newName;
+									 for ( var i = 0 ; i < styles.length; i++ )
+									 {
+										if ( styles[ i ] )
+										{
+											namePattern = styles[ i ][ 0 ];
+											valuePattern = styles[ i ][ 1 ];
+											newValue = styles[ i ][ 2 ];
+											newName = styles[ i ][ 3 ];
+
+											if ( name.match( namePattern )
+												 && ( !valuePattern || value.match( valuePattern ) ) )
+											{
+												name = newName || name;
+												whitelist && ( newValue = newValue || value );
+
+												if ( typeof newValue == 'function' )
+													newValue = newValue( value, element, name );
+
+												// Return an couple indicate both name and value
+												// changed.
+												if ( newValue && newValue.push )
+													name = newValue[ 0 ], newValue = newValue[ 1 ];
+
+												if ( typeof newValue == 'string' )
+													rules.push( [ name, newValue ] );
+												return;
+											}
+										}
+									 }
+
+									 !whitelist && rules.push( [ name, value ] );
+
+								 });
+
+						for ( var i = 0 ; i < rules.length ; i++ )
+							 rules[ i ] = rules[ i ].join( ':' );
+						return rules.length ?
+						         ( rules.join( ';' ) + ';' ) : false;
+					 };
+				},
+
+				/**
+				 * Migrate the element by decorate styles on it.
+				 * @param styleDefiniton
+				 * @param variables
+				 */
+				elementMigrateFilter : function ( styleDefiniton, variables )
+				{
+					return function( element )
+						{
+							var styleDef =
+									variables ?
+										new CKEDITOR.style( styleDefiniton, variables )._.definition
+										: styleDefiniton;
+							element.name = styleDef.element;
+							CKEDITOR.tools.extend( element.attributes, CKEDITOR.tools.clone( styleDef.attributes ) );
+							element.addStyle( CKEDITOR.style.getStyleText( styleDef ) );
+						};
+				},
+
+				/**
+				 * Migrate styles by creating a new nested stylish element.
+				 * @param styleDefinition
+				 */
+				styleMigrateFilter : function( styleDefinition, variableName )
+				{
+
+					var elementMigrateFilter = this.elementMigrateFilter;
+					return function( value, element )
+					{
+						// Build an stylish element first.
+						var styleElement = new CKEDITOR.htmlParser.element( null ),
+							variables = {};
+
+						variables[ variableName ] = value;
+						elementMigrateFilter( styleDefinition, variables )( styleElement );
+						// Place the new element inside the existing span.
+						styleElement.children = element.children;
+						element.children = [ styleElement ];
+					};
+				},
+
+				/**
+				 * A filter which remove cke-namespaced-attribute on
+				 * all none-cke-namespaced elements.
+				 * @param value
+				 * @param element
+				 */
+				bogusAttrFilter : function( value, element )
+				{
+					if ( element.name.indexOf( 'cke:' ) == -1 )
+						return false;
+				},
+
+				/**
+				 * A filter which will be used to apply inline css style according the stylesheet
+				 * definition rules, is generated lazily when filtering.
+				 */
+				applyStyleFilter : null
+
+			},
+
+		getRules : function( editor )
+		{
+			var dtd = CKEDITOR.dtd,
+				blockLike = CKEDITOR.tools.extend( {}, dtd.$block, dtd.$listItem, dtd.$tableContent ),
+				config = editor.config,
+				filters = this.filters,
+				falsyFilter = filters.falsyFilter,
+				stylesFilter = filters.stylesFilter,
+				elementMigrateFilter = filters.elementMigrateFilter,
+				styleMigrateFilter = CKEDITOR.tools.bind( this.filters.styleMigrateFilter, this.filters ),
+				bogusAttrFilter = filters.bogusAttrFilter,
+				createListBulletMarker = this.utils.createListBulletMarker,
+				flattenList = filters.flattenList,
+				assembleList = filters.assembleList,
+				isListBulletIndicator = this.utils.isListBulletIndicator,
+				containsNothingButSpaces = this.utils.isContainingOnlySpaces,
+				resolveListItem = this.utils.resolveList,
+				convertToPx = this.utils.convertToPx,
+				getStyleComponents = this.utils.getStyleComponents,
+				listDtdParents = this.utils.listDtdParents,
+				removeFontStyles = config.pasteFromWordRemoveFontStyles !== false,
+				removeStyles = config.pasteFromWordRemoveStyles !== false;
+
+			return {
+
+				elementNames :
+				[
+					// Remove script, meta and link elements.
+					[ ( /meta|link|script/ ), '' ]
+				],
+
+				root : function( element )
+				{
+					element.filterChildren();
+					assembleList( element );
+				},
+
+				elements :
+				{
+					'^' : function( element )
+					{
+						// Transform CSS style declaration to inline style.
+						var applyStyleFilter;
+						if ( CKEDITOR.env.gecko && ( applyStyleFilter = filters.applyStyleFilter ) )
+							applyStyleFilter( element );
+					},
+
+					$ : function( element )
+					{
+						var tagName = element.name || '',
+							attrs = element.attributes;
+
+						// Convert length unit of width/height on blocks to
+						// a more editor-friendly way (px).
+						if ( tagName in blockLike
+							&& attrs.style )
+						{
+							attrs.style = stylesFilter(
+										[ [ ( /^(:?width|height)$/ ), null, convertToPx ] ] )( attrs.style ) || '';
+						}
+
+						// Processing headings.
+						if ( tagName.match( /h\d/ ) )
+						{
+							element.filterChildren();
+							// Is the heading actually a list item?
+							if ( resolveListItem( element ) )
+								return;
+
+							// Adapt heading styles to editor's convention.
+							elementMigrateFilter( config[ 'format_' + tagName ] )( element );
+						}
+						// Remove inline elements which contain only empty spaces.
+						else if ( tagName in dtd.$inline )
+						{
+							element.filterChildren();
+							if ( containsNothingButSpaces( element ) )
+								delete element.name;
+						}
+						// Remove element with ms-office namespace,
+						// with it's content preserved, e.g. 'o:p'.
+						else if ( tagName.indexOf( ':' ) != -1
+								 && tagName.indexOf( 'cke' ) == -1 )
+						{
+							element.filterChildren();
+
+							// Restore image real link from vml.
+							if ( tagName == 'v:imagedata' )
+							{
+								var href = element.attributes[ 'o:href' ];
+								if ( href )
+									element.attributes.src = href;
+								element.name = 'img';
+								return;
+							}
+							delete element.name;
+						}
+
+						// Assembling list items into a whole list.
+						if ( tagName in listDtdParents )
+						{
+							element.filterChildren();
+							assembleList( element );
+						}
+					},
+
+					// We'll drop any style sheet, but Firefox conclude
+					// certain styles in a single style element, which are
+					// required to be changed into inline ones.
+					'style' : function( element )
+					{
+						if ( CKEDITOR.env.gecko )
+						{
+							// Grab only the style definition section.
+							var styleDefSection = element.onlyChild().value.match( /\/\* Style Definitions \*\/([\s\S]*?)\/\*/ ),
+								styleDefText = styleDefSection && styleDefSection[ 1 ],
+								rules = {}; // Storing the parsed result.
+
+							if ( styleDefText )
+							{
+								styleDefText
+									// Remove line-breaks.
+									.replace(/[\n\r]/g,'')
+									// Extract selectors and style properties.
+									.replace( /(.+?)\{(.+?)\}/g,
+										function( rule, selectors, styleBlock )
+										{
+											selectors = selectors.split( ',' );
+											var length = selectors.length, selector;
+											for ( var i = 0; i < length; i++ )
+											{
+												// Assume MS-Word mostly generate only simple
+												// selector( [Type selector][Class selector]).
+												CKEDITOR.tools.trim( selectors[ i ] )
+															  .replace( /^(\w+)(\.[\w-]+)?$/g,
+												function( match, tagName, className )
+												{
+													tagName = tagName || '*';
+													className = className.substring( 1, className.length );
+
+													// Reject MS-Word Normal styles.
+													if ( className.match( /MsoNormal/ ) )
+														return;
+
+													if ( !rules[ tagName ] )
+														rules[ tagName ] = {};
+													if ( className )
+														rules[ tagName ][ className ] = styleBlock;
+													else
+														rules[ tagName ] = styleBlock;
+												} );
+											}
+										});
+
+								filters.applyStyleFilter = function( element )
+								{
+									var name = rules[ '*' ] ? '*' : element.name,
+										className = element.attributes && element.attributes[ 'class' ],
+										style;
+									if ( name in rules )
+									{
+										style = rules[ name ];
+										if ( typeof style == 'object' )
+											style = style[ className ];
+										// Maintain style rules priorities.
+										style && element.addStyle( style, true );
+									}
+								};
+							}
+						}
+						return false;
+					},
+
+					'p' : function( element )
+					{
+						element.filterChildren();
+
+						var attrs = element.attributes,
+							parent = element.parent,
+							children = element.children;
+
+						// Is the paragraph actually a list item?
+						if ( resolveListItem( element ) )
+							return;
+
+						// Adapt paragraph formatting to editor's convention
+						// according to enter-mode.
+						if ( config.enterMode == CKEDITOR.ENTER_BR )
+						{
+							// We suffer from attribute/style lost in this situation.
+							delete element.name;
+							element.add( new CKEDITOR.htmlParser.element( 'br' ) );
+						}
+						else
+							elementMigrateFilter( config[ 'format_' + ( config.enterMode == CKEDITOR.ENTER_P ? 'p' : 'div' ) ] )( element );
+					},
+
+					'div' : function( element )
+					{
+						// Aligned table with no text surrounded is represented by a wrapper div, from which
+						// table cells inherit as text-align styles, which is wrong.
+						// Instead we use a clear-float div after the table to properly achieve the same layout.
+						var singleChild = element.onlyChild();
+						if ( singleChild && singleChild.name == 'table' )
+						{
+							var attrs = element.attributes;
+							singleChild.attributes = CKEDITOR.tools.extend( singleChild.attributes, attrs );
+							attrs.style && singleChild.addStyle( attrs.style );
+
+							var clearFloatDiv = new CKEDITOR.htmlParser.element( 'div' );
+							clearFloatDiv.addStyle( 'clear' ,'both' );
+							element.add( clearFloatDiv );
+							delete element.name;
+						}
+					},
+
+					'td' : function ( element )
+					{
+						// 'td' in 'thead' is actually <th>.
+						if ( element.getAncestor( 'thead') )
+							element.name = 'th';
+					},
+
+					// MS-Word sometimes present list as a mixing of normal list
+					// and pseudo-list, normalize the previous ones into pseudo form.
+					'ol' : flattenList,
+					'ul' : flattenList,
+					'dl' : flattenList,
+
+					'font' : function( element )
+					{
+						// IE/Safari: drop the font tag if it comes from list bullet text.
+						if ( !CKEDITOR.env.gecko && isListBulletIndicator( element.parent ) )
+						{
+							delete element.name;
+							return;
+						}
+
+						element.filterChildren();
+
+						var attrs = element.attributes,
+							styleText = attrs.style,
+							parent = element.parent;
+
+						if ( 'font' == parent.name )     // Merge nested <font> tags.
+						{
+							CKEDITOR.tools.extend( parent.attributes,
+									element.attributes );
+							styleText && parent.addStyle( styleText );
+							delete element.name;
+							return;
+						}
+						// Convert the merged into a span with all attributes preserved.
+						else
+						{
+							styleText = styleText || '';
+							// IE's having those deprecated attributes, normalize them.
+							if ( attrs.color )
+							{
+								attrs.color != '#000000' && ( styleText += 'color:' + attrs.color + ';' );
+								delete attrs.color;
+							}
+							if ( attrs.face )
+							{
+								styleText += 'font-family:' + attrs.face + ';';
+								delete attrs.face;
+							}
+							// TODO: Mapping size in ranges of xx-small,
+							// x-small, small, medium, large, x-large, xx-large.
+							if ( attrs.size )
+							{
+								styleText += 'font-size:' +
+								             ( attrs.size > 3 ? 'large'
+										             : ( attrs.size < 3 ? 'small' : 'medium' ) ) + ';';
+								delete attrs.size;
+							}
+
+							element.name = 'span';
+							element.addStyle( styleText );
+						}
+					},
+
+					'span' : function( element )
+					{
+						// IE/Safari: remove the span if it comes from list bullet text.
+						if ( !CKEDITOR.env.gecko && isListBulletIndicator( element.parent ) )
+							return false;
+
+						element.filterChildren();
+						if ( containsNothingButSpaces( element ) )
+						{
+							delete element.name;
+							return null;
+						}
+
+						// For IE/Safari: List item bullet type is supposed to be indicated by
+						// the text of a span with style 'mso-list : Ignore' or an image.
+						if ( !CKEDITOR.env.gecko && isListBulletIndicator( element ) )
+						{
+							var listSymbolNode = element.firstChild( function( node )
+							{
+								return node.value || node.name == 'img';
+							});
+
+							var listSymbol =  listSymbolNode && ( listSymbolNode.value || 'l.' ),
+								listType = listSymbol.match( /^([^\s]+?)([.)]?)$/ );
+							return createListBulletMarker( listType, listSymbol );
+						}
+
+						// Update the src attribute of image element with href.
+						var children = element.children,
+							attrs = element.attributes,
+							styleText = attrs && attrs.style,
+							firstChild = children && children[ 0 ];
+
+						// Assume MS-Word mostly carry font related styles on <span>,
+						// adapting them to editor's convention.
+						if ( styleText )
+						{
+							attrs.style = stylesFilter(
+									[
+										// Drop 'inline-height' style which make lines overlapping.
+										[ 'line-height' ],
+										[ ( /^font-family$/ ), null, !removeFontStyles ? styleMigrateFilter( config[ 'font_style' ], 'family' ) : null ] ,
+										[ ( /^font-size$/ ), null, !removeFontStyles ? styleMigrateFilter( config[ 'fontSize_style' ], 'size' ) : null ] ,
+										[ ( /^color$/ ), null, !removeFontStyles ? styleMigrateFilter( config[ 'colorButton_foreStyle' ], 'color' ) : null ] ,
+										[ ( /^background-color$/ ), null, !removeFontStyles ? styleMigrateFilter( config[ 'colorButton_backStyle' ], 'color' ) : null ]
+									] )( styleText, element ) || '';
+						}
+
+						return null;
+					},
+
+					// Migrate basic style formats to editor configured ones.
+					'b' : elementMigrateFilter( config[ 'coreStyles_bold' ] ),
+					'i' : elementMigrateFilter( config[ 'coreStyles_italic' ] ),
+					'u' : elementMigrateFilter( config[ 'coreStyles_underline' ] ),
+					's' : elementMigrateFilter( config[ 'coreStyles_strike' ] ),
+					'sup' : elementMigrateFilter( config[ 'coreStyles_superscript' ] ),
+					'sub' : elementMigrateFilter( config[ 'coreStyles_subscript' ] ),
+					// Editor doesn't support anchor with content currently (#3582),
+					// drop such anchors with content preserved.
+					'a' : function( element )
+					{
+						var attrs = element.attributes;
+						if ( attrs && !attrs.href && attrs.name )
+							delete element.name;
+					},
+					'cke:listbullet' : function( element )
+					{
+						if ( element.getAncestor( /h\d/ ) && !config.pasteFromWordNumberedHeadingToList )
+							delete element.name;
+						}
+				},
+
+				attributeNames :
+				[
+					// Remove onmouseover and onmouseout events (from MS Word comments effect)
+					[ ( /^onmouse(:?out|over)/ ), '' ],
+					// Onload on image element.
+					[ ( /^onload$/ ), '' ],
+					// Remove office and vml attribute from elements.
+					[ ( /(?:v|o):\w+/ ), '' ],
+					// Remove lang/language attributes.
+					[ ( /^lang/ ), '' ]
+				],
+
+				attributes :
+				{
+					'style' : stylesFilter(
+					removeStyles ?
+					// Provide a white-list of styles that we preserve, those should
+					// be the ones that could later be altered with editor tools.
+					[
+						// Preserve margin-left/right which used as default indent style in the editor.
+						[ ( /^margin$|^margin-(?!bottom|top)/ ), null, function( value, element, name )
+							{
+								if ( element.name in { p : 1, div : 1 } )
+								{
+									var indentStyleName = config.contentsLangDirection == 'ltr' ?
+											'margin-left' : 'margin-right';
+
+									// Extract component value from 'margin' shorthand.
+									if ( name == 'margin' )
+									{
+										value = getStyleComponents( name, value,
+												[ indentStyleName ] )[ indentStyleName ];
+									}
+									else if ( name != indentStyleName )
+										return null;
+
+									if ( value && !emptyMarginRegex.test( value ) )
+										return [ indentStyleName, value ];
+								}
+
+								return null;
+							} ],
+
+						// Preserve clear float style.
+						[ ( /^clear$/ ) ],
+
+						[ ( /^border.*|margin.*|vertical-align|float$/ ), null,
+							function( value, element )
+							{
+								if ( element.name == 'img' )
+									return value;
+							} ],
+
+						[ (/^width|height$/ ), null,
+							function( value, element )
+							{
+								if ( element.name in { table : 1, td : 1, th : 1, img : 1 } )
+									return value;
+							} ]
+					] :
+					// Otherwise provide a black-list of styles that we remove.
+					[
+						[ ( /^mso-/ ) ],
+						// Fixing color values.
+						[ ( /-color$/ ), null, function( value )
+						{
+							if ( value == 'transparent' )
+								return false;
+							if ( CKEDITOR.env.gecko )
+								return value.replace( /-moz-use-text-color/g, 'transparent' );
+						} ],
+						// Remove empty margin values, e.g. 0.00001pt 0em 0pt
+						[ ( /^margin$/ ), emptyMarginRegex ],
+						[ 'text-indent', '0cm' ],
+						[ 'page-break-before' ],
+						[ 'tab-stops' ],
+						[ 'display', 'none' ],
+						removeFontStyles ? [ ( /font-?/ ) ] : null
+					], removeStyles ),
+
+					// Prefer width styles over 'width' attributes.
+					'width' : function( value, element )
+					{
+						if ( element.name in dtd.$tableContent )
+							return false;
+					},
+					// Prefer border styles over table 'border' attributes.
+					'border' : function( value, element )
+					{
+						if ( element.name in dtd.$tableContent )
+							return false;
+					},
+
+					// Only Firefox carry style sheet from MS-Word, which
+					// will be applied by us manually. For other browsers
+					// the css className is useless.
+					'class' : falsyFilter,
+
+					// MS-Word always generate 'background-color' along with 'bgcolor',
+					// simply drop the deprecated attributes.
+					'bgcolor' : falsyFilter,
+
+					// Deprecate 'valign' attribute in favor of 'vertical-align'.
+					'valign' : removeStyles ? falsyFilter : function( value, element )
+					{
+						element.addStyle( 'vertical-align', value );
+						return false;
+					}
+				},
+
+				// Fore none-IE, some useful data might be buried under these IE-conditional
+				// comments where RegExp were the right approach to dig them out where usual approach
+				// is transform it into a fake element node which hold the desired data.
+				comment :
+					!CKEDITOR.env.ie ?
+						function( value, node )
+						{
+							var imageInfo = value.match( /<img.*?>/ ),
+								listInfo = value.match( /^\[if !supportLists\]([\s\S]*?)\[endif\]$/ );
+
+							// Seek for list bullet indicator.
+							if ( listInfo )
+							{
+								// Bullet symbol could be either text or an image.
+								var listSymbol = listInfo[ 1 ] || ( imageInfo && 'l.' ),
+									listType = listSymbol && listSymbol.match( />([^\s]+?)([.)]?)</ );
+								return createListBulletMarker( listType, listSymbol );
+							}
+
+							// Reveal the <img> element in conditional comments for Firefox.
+							if ( CKEDITOR.env.gecko && imageInfo )
+							{
+								var img = CKEDITOR.htmlParser.fragment.fromHtml( imageInfo[ 0 ] ).children[ 0 ],
+									previousComment = node.previous,
+									// Try to dig the real image link from vml markup from previous comment text.
+									imgSrcInfo = previousComment && previousComment.value.match( /<v:imagedata[^>]*o:href=['"](.*?)['"]/ ),
+									imgSrc = imgSrcInfo && imgSrcInfo[ 1 ];
+
+								// Is there a real 'src' url to be used?
+								imgSrc && ( img.attributes.src = imgSrc );
+								return img;
+							}
+
+							return false;
+						}
+					: falsyFilter
+			};
+		}
+	};
+
+	// The paste processor here is just a reduced copy of html data processor.
+	var pasteProcessor = function()
+	{
+		this.dataFilter = new CKEDITOR.htmlParser.filter();
+	};
+
+	pasteProcessor.prototype =
+	{
+		toHtml : function( data )
+		{
+			var fragment = CKEDITOR.htmlParser.fragment.fromHtml( data, false ),
+				writer = new CKEDITOR.htmlParser.basicWriter();
+
+			fragment.writeHtml( writer, this.dataFilter );
+			return writer.getHtml( true );
+		}
+	};
+
+	CKEDITOR.cleanWord = function( data, editor )
+	{
+		// Firefox will be confused by those downlevel-revealed IE conditional
+		// comments, fixing them first( convert it to upperlevel-revealed one ).
+		// e.g. <![if !vml]>...<![endif]>
+		if ( CKEDITOR.env.gecko )
+			data = data.replace( /(<!--\[if[^<]*?\])-->([\S\s]*?)<!--(\[endif\]-->)/gi, '$1$2$3' );
+
+		var dataProcessor = new pasteProcessor(),
+			dataFilter = dataProcessor.dataFilter;
+
+		// These rules will have higher priorities than default ones.
+		dataFilter.addRules( CKEDITOR.plugins.pastefromword.getRules( editor ) );
+
+		// Allow extending data filter rules.
+		editor.fire( 'beforeCleanWord', { filter : dataFilter } );
+
+		try
+		{
+			data = dataProcessor.toHtml( data, false );
+		}
+		catch ( e )
+		{
+			alert( editor.lang.pastefromword.error );
+		}
+
+		/* Below post processing those things that are unable to delivered by filter rules. */
+
+		// Remove 'cke' namespaced attribute used in filter rules as marker.
+		data = data.replace( /cke:.*?".*?"/g, '' );
+
+		// Remove empty style attribute.
+		data = data.replace( /style=""/g, '' );
+
+		// Remove the dummy spans ( having no inline style ).
+		data = data.replace( /<span>/g, '' );
+
+		return data;
+	};
+})();
+
+/**
+ * Whether to ignore all font related formatting styles, including:
+ * <ul>	<li>font size;</li>
+ *		<li>font family;</li>
+ *		<li>font foreground/background color.</li></ul>
+ * @name CKEDITOR.config.pasteFromWordRemoveFontStyles
+ * @since 3.1
+ * @type Boolean
+ * @default true
+ * @example
+ * config.pasteFromWordRemoveFontStyles = false;
+ */
+
+/**
+ * Whether to transform MS Word outline numbered headings into lists.
+ * @name CKEDITOR.config.pasteFromWordNumberedHeadingToList
+ * @since 3.1
+ * @type Boolean
+ * @default false
+ * @example
+ * config.pasteFromWordNumberedHeadingToList = true;
+ */
+
+/**
+ * Whether to remove element styles that can't be managed with the editor. Note
+ * that this doesn't handle the font specific styles, which depends on the
+ * {@link CKEDITOR.config.pasteFromWordRemoveFontStyles} setting instead.
+ * @name CKEDITOR.config.pasteFromWordRemoveStyles
+ * @since 3.1
+ * @type Boolean
+ * @default true
+ * @example
+ * config.pasteFromWordRemoveStyles = false;
+ */
Index: /CKEditor/branches/features/adobeair/_source/plugins/pastefromword/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/pastefromword/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/pastefromword/plugin.js	(revision 5613)
@@ -1,54 +1,122 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
+(function()
+{
+	CKEDITOR.plugins.add( 'pastefromword',
+	{
+		init : function( editor )
+		{
 
-CKEDITOR.plugins.add( 'pastefromword',
-{
-	init : function( editor )
-	{
-		// Register the command.
-		editor.addCommand( 'pastefromword', new CKEDITOR.dialogCommand( 'pastefromword' ) );
+			// Flag indicate this command is actually been asked instead of a generic
+			// pasting.
+			var forceFromWord = 0;
+			var resetFromWord = function()
+				{
+					setTimeout( function() { forceFromWord = 0; }, 0 );
+				};
 
-		// Register the toolbar button.
-		editor.ui.addButton( 'PasteFromWord',
+			// Features bring by this command beside the normal process:
+			// 1. No more bothering of user about the clean-up.
+			// 2. Perform the clean-up even if content is not from MS-Word.
+			// (e.g. from a MS-Word similar application.)
+			editor.addCommand( 'pastefromword',
 			{
-				label : editor.lang.pastefromword.toolbar,
-				command : 'pastefromword'
-			} );
+				canUndo : false,
+				exec : function()
+				{
+					forceFromWord = 1;
+					if ( editor.execCommand( 'paste' ) === false )
+					{
+						editor.on( 'dialogHide', function ( evt )
+							{
+								evt.removeListener();
+								resetFromWord();
+							});
+					}
+					else
+						resetFromWord();
+				}
+			});
 
-		// Register the dialog.
-		CKEDITOR.dialog.add( 'pastefromword', this.path + 'dialogs/pastefromword.js' );
-	}
-} );
+			// Register the toolbar button.
+			editor.ui.addButton( 'PasteFromWord',
+				{
+					label : editor.lang.pastefromword.toolbar,
+					command : 'pastefromword'
+				});
+
+			editor.on( 'paste', function( evt )
+			{
+				var data = evt.data,
+					mswordHtml;
+
+				// MS-WORD format sniffing.
+				if ( ( mswordHtml = data[ 'html' ] )
+					 && ( forceFromWord || ( /(class=\"?Mso|style=\"[^\"]*\bmso\-|w:WordDocument)/ ).test( mswordHtml ) ) )
+				{
+					var isLazyLoad = this.loadFilterRules( function()
+						{
+							// Event continuation with the original data.
+							if ( isLazyLoad )
+								editor.fire( 'paste', data );
+							else if ( !editor.config.pasteFromWordPromptCleanup
+							  || ( forceFromWord || confirm( editor.lang.pastefromword.confirmCleanup ) ) )
+							 {
+								data[ 'html' ] = CKEDITOR.cleanWord( mswordHtml, editor );
+							}
+						});
+
+					// The cleanup rules are to be loaded, we should just cancel
+					// this event.
+					isLazyLoad && evt.cancel();
+				}
+			}, this );
+		},
+
+		loadFilterRules : function( callback )
+		{
+
+			var isLoaded = CKEDITOR.cleanWord;
+
+			if ( isLoaded )
+				callback();
+			else
+			{
+				var filterFilePath = CKEDITOR.getUrl(
+						CKEDITOR.config.pasteFromWordCleanupFile
+						|| ( this.path + 'filter/default.js' ) );
+
+				// Load with busy indicator.
+				CKEDITOR.scriptLoader.load( filterFilePath, callback, null, false, true );
+			}
+
+			return !isLoaded;
+		}
+	});
+})();
 
 /**
- * Whether the "Ignore font face definitions" checkbox is enabled by default in
- * the Paste from Word dialog.
+ * Whether to prompt the user about the clean up of content being pasted from
+ * MS Word.
+ * @name CKEDITOR.config.pasteFromWordPromptCleanup
+ * @since 3.1
  * @type Boolean
- * @default true
+ * @default undefined
  * @example
- * config.pasteFromWordIgnoreFontFace = false;
+ * config.pasteFromWordPromptCleanup = true;
  */
-CKEDITOR.config.pasteFromWordIgnoreFontFace = true;
 
 /**
- * Whether the "Remove styles definitions" checkbox is enabled by default in
- * the Paste from Word dialog.
- * @type Boolean
- * @default false
+ * The file that provides the MS Word cleanup function for pasting operations.
+ * Note: This is a global configuration shared by all editor instances present
+ * in the page.
+ * @name CKEDITOR.config.pasteFromWordCleanupFile
+ * @since 3.1
+ * @type String
+ * @default 'default'
  * @example
- * config.pasteFromWordRemoveStyle = true;
+ * // Load from 'pastefromword' plugin 'filter' sub folder (custom.js file).
+ * CKEDITOR.config.pasteFromWordCleanupFile = 'custom';
  */
-CKEDITOR.config.pasteFromWordRemoveStyle = false;
-
-/**
- * Whether to keep structure markup (&lt;h1&gt;, &lt;h2&gt;, etc.) or replace
- * it with elements that create more similar pasting results when pasting
- * content from Microsoft Word into the Paste from Word dialog.
- * @type Boolean
- * @default false
- * @example
- * config.pasteFromWordKeepsStructure = true;
- */
-CKEDITOR.config.pasteFromWordKeepsStructure = false;
Index: /CKEditor/branches/features/adobeair/_source/plugins/pastetext/dialogs/pastetext.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/pastetext/dialogs/pastetext.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/pastetext/dialogs/pastetext.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -23,8 +23,11 @@
 				{
 					// Get the textarea value.
-					var text = this.getContentElement( 'general', 'content' ).getInputElement().getValue();
+					var text = this.getContentElement( 'general', 'content' ).getInputElement().getValue(),
+						editor = this.getParentEditor();
 
-					// Inserts the text.
-					this.getParentEditor().insertText( text );
+					setTimeout( function()
+					{
+						editor.fire( 'paste', { 'text' : text } );
+					}, 0 );
 				},
 
@@ -50,7 +53,17 @@
 										'height:170px;' +
 										'resize: none;' +
+										'direction:' + editor.config.contentsLangDirection + ';' +
 										'border:1px solid black;' +
 										'background-color:white">' +
 									'</textarea>',
+
+								onLoad : function()
+								{
+									var label = this.getDialog().getContentElement( 'general', 'pasteMsg' ).getElement(),
+										input = this.getElement();
+
+									input.setAttribute( 'aria-labelledby', label.$.id );
+								},
+
 								focus : function()
 								{
Index: /CKEditor/branches/features/adobeair/_source/plugins/pastetext/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/pastetext/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/pastetext/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -15,15 +15,57 @@
 		exec : function( editor )
 		{
-			// We use getClipboardData just to test if the clipboard access has
-			// been granted by the user.
-			if ( CKEDITOR.getClipboardData() === false || !window.clipboardData )
+			var clipboardText = CKEDITOR.tools.tryThese(
+				function()
+				{
+					var clipboardText = window.clipboardData.getData( 'Text' );
+					if ( !clipboardText )
+						throw 0;
+					return clipboardText;
+				},
+				function()
+				{
+					window.netscape.security.PrivilegeManager.enablePrivilege( "UniversalXPConnect" );
+
+					var clip = window.Components.classes[ "@mozilla.org/widget/clipboard;1" ]
+							.getService( window.Components.interfaces.nsIClipboard );
+					var trans = window.Components.classes[ "@mozilla.org/widget/transferable;1" ]
+							.createInstance( window.Components.interfaces.nsITransferable );
+					trans.addDataFlavor( "text/unicode" );
+					clip.getData( trans, clip.kGlobalClipboard );
+
+					var str = {}, strLength = {}, clipboardText;
+					trans.getTransferData( "text/unicode", str, strLength );
+					str = str.value.QueryInterface( window.Components.interfaces.nsISupportsString );
+					clipboardText = str.data.substring( 0, strLength.value / 2 );
+					return clipboardText;
+				}
+				// Any other approach that's working...
+				);
+
+			if ( !clipboardText )   // Clipboard access privilege is not granted.
 			{
 				editor.openDialog( 'pastetext' );
-				return;
+				return false;
 			}
+			else
+				editor.fire( 'paste', { 'text' : clipboardText } );
 
-			editor.insertText( window.clipboardData.getData( 'Text' ) );
+			return true;
 		}
 	};
+
+	function doInsertText( doc, text )
+	{
+		// Native text insertion.
+		if ( CKEDITOR.env.ie )
+		{
+			var selection = doc.selection;
+			if ( selection.type == 'Control' )
+				selection.clear();
+			selection.createRange().pasteHTML( text );
+		}
+		else
+			doc.execCommand( 'inserthtml', false, text );
+	}
 
 	// Register the plugin.
@@ -45,89 +87,67 @@
 			if ( editor.config.forcePasteAsPlainText )
 			{
-				editor.on( 'beforePaste', function( event )
+				// Intercept the default pasting process.
+				editor.on( 'beforeCommandExec', function ( evt )
+				{
+					if ( evt.data.name == 'paste' )
 					{
-						if ( editor.mode == "wysiwyg" )
-						{
-							setTimeout( function() { command.exec(); }, 0 );
-							event.cancel();
-						}
-					},
-					null, null, 20 );
+						editor.execCommand( 'pastetext' );
+						evt.cancel();
+					}
+				}, null, null, 0 );
 			}
 		},
+
 		requires : [ 'clipboard' ]
 	});
 
-	var clipboardDiv;
+	function doEnter( editor, mode, times, forceMode )
+	{
+		while ( times-- )
+		{
+			CKEDITOR.plugins.enterkey[ mode == CKEDITOR.ENTER_BR ? 'enterBr' : 'enterBlock' ]
+					( editor, mode, null, forceMode );
+		}
+	}
 
-	CKEDITOR.getClipboardData = function()
+	CKEDITOR.editor.prototype.insertText = function( text )
 	{
-		if ( !CKEDITOR.env.ie )
-			return false;
+		this.focus();
+		this.fire( 'saveSnapshot' );
 
-		var doc = CKEDITOR.document,
-			body = doc.getBody();
+		var mode = this.getSelection().getStartElement().hasAscendant( 'pre', true ) ? CKEDITOR.ENTER_BR : this.config.enterMode,
+			isEnterBrMode = mode == CKEDITOR.ENTER_BR,
+			doc = this.document.$,
+			self = this,
+			line;
 
-		if ( !clipboardDiv )
-		{
-			clipboardDiv = doc.createElement( 'div',
-				{
-					attributes :
-						{
-							id: 'cke_hiddenDiv'
-						},
-					styles :
-						{
-							position : 'absolute',
-							visibility : 'hidden',
-							overflow : 'hidden',
-							width : '1px',
-							height : '1px'
-						}
-				});
+		text = CKEDITOR.tools.htmlEncode( text.replace( /\r\n|\r/g, '\n' ) );
 
-			clipboardDiv.setHtml( '' );
+		var startIndex = 0;
+		text.replace( /\n+/g, function( match, lastIndex )
+		 {
+			line = text.substring( startIndex, lastIndex );
+			startIndex = lastIndex + match.length;
+			line.length && doInsertText( doc, line );
 
-			clipboardDiv.appendTo( body );
-		}
+			var lineBreakNums = match.length,
+				// Duo consequence line-break as a enter block.
+				enterBlockTimes = isEnterBrMode ? 0 : Math.floor( lineBreakNums / 2 ),
+				// Per link-break as a enter br.
+				enterBrTimes = isEnterBrMode ? lineBreakNums : lineBreakNums % 2;
 
-		// The "enabled" flag is used to check whether the paste operation has
-		// been completed (the onpaste event has been fired).
-		var	enabled = false;
-		var setEnabled = function()
-		{
-			enabled = true;
-		};
+			// Line-breaks are converted to editor enter key strokes.
+			doEnter( self, mode, enterBlockTimes );
+			doEnter( self, CKEDITOR.ENTER_BR, enterBrTimes, isEnterBrMode ? false : true );
+		 });
 
-		body.on( 'paste', setEnabled );
+		// Insert the last text line of text.
+		line = text.substring( startIndex, text.length );
+		line.length && doInsertText( doc, line );
 
-		// Create a text range and move it inside the div.
-		var textRange = body.$.createTextRange();
-		textRange.moveToElementText( clipboardDiv.$ );
-
-		// The execCommand in will fire the "onpaste", only if the
-		// security settings are enabled.
-		textRange.execCommand( 'Paste' );
-
-		// Get the DIV html and reset it.
-		var html = clipboardDiv.getHtml();
-		clipboardDiv.setHtml( '' );
-
-		body.removeListener( 'paste', setEnabled );
-
-		// Return the HTML or false if not enabled.
-		return enabled && html;
+		this.fire( 'saveSnapshot' );
 	};
 })();
 
-CKEDITOR.editor.prototype.insertText = function( text )
-{
-	text = CKEDITOR.tools.htmlEncode( text );
-
-	// TODO: Replace the following with fill line break processing (see V2).
-	text = text.replace( /(?:\r\n)|\n|\r/g, '<br>' );
-
-	this.insertHtml( text );
-};
 
 /**
@@ -135,4 +155,5 @@
  * editor, loosing any formatting information possibly available in the source
  * text.
+ * @name CKEDITOR.config.forcePasteAsPlainText
  * @type Boolean
  * @default false
@@ -140,3 +161,2 @@
  * config.forcePasteAsPlainText = true;
  */
-CKEDITOR.config.forcePasteAsPlainText = false;
Index: /CKEditor/branches/features/adobeair/_source/plugins/popup/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/popup/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/popup/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/plugins/preview/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/preview/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/preview/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -17,17 +17,27 @@
 		{
 			var sHTML,
+				config = editor.config,
+				baseTag = config.baseHref ? '<base href="' + config.baseHref + '"/>' : '',
 				isCustomDomain = CKEDITOR.env.isCustomDomain();
-			if ( editor.config.fullPage )
-				sHTML = editor.getData();
+
+			if ( config.fullPage )
+			{
+				sHTML = editor.getData()
+						.replace( /<head>/, '$&' + baseTag )
+						.replace( /[^>]*(?=<\/title>)/, editor.lang.preview );
+			}
 			else
 			{
 				var bodyHtml = '<body ',
-					body = CKEDITOR.document.getBody(),
-					baseTag = ( editor.config.baseHref.length > 0 ) ? '<base href="' + editor.config.baseHref + '" _cktemp="true"></base>' : '';
+						body = editor.document && editor.document.getBody();
 
-				if ( body.getAttribute( 'id' ) )
-					bodyHtml += 'id="' + body.getAttribute( 'id' ) + '" ';
-				if ( body.getAttribute( 'class' ) )
-					bodyHtml += 'class="' + body.getAttribute( 'class' ) + '" ';
+				if ( body )
+				{
+					if ( body.getAttribute( 'id' ) )
+						bodyHtml += 'id="' + body.getAttribute( 'id' ) + '" ';
+					if ( body.getAttribute( 'class' ) )
+						bodyHtml += 'class="' + body.getAttribute( 'class' ) + '" ';
+				}
+
 				bodyHtml += '>';
 
@@ -38,5 +48,5 @@
 					baseTag +
 					'<title>' + editor.lang.preview + '</title>' +
-					'<link href="' + editor.config.contentsCss + '" type="text/css" rel="stylesheet" _cktemp="true"/>' +
+					CKEDITOR.tools.buildStyleHtml( editor.config.contentsCss ) +
 					'</head>' + bodyHtml +
 					editor.getData() +
@@ -74,4 +84,5 @@
 			if ( !isCustomDomain )
 			{
+				oWindow.document.open();
 				oWindow.document.write( sHTML );
 				oWindow.document.close();
Index: /CKEditor/branches/features/adobeair/_source/plugins/print/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/print/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/print/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/plugins/removeformat/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/removeformat/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/removeformat/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -16,4 +16,6 @@
 				command : 'removeFormat'
 			});
+
+		editor._.removeFormat = { filters: [] };
 	}
 });
@@ -33,4 +35,5 @@
 					( editor._.removeAttributes = editor.config.removeFormatAttributes.split( ',' ) );
 
+				var filter = CKEDITOR.plugins.removeformat.filter;
 				var ranges = editor.getSelection().getRanges();
 
@@ -71,5 +74,5 @@
 
 							// If this element can be removed (even partially).
-							if ( tagsRegex.test( pathElement.getName() ) )
+							if ( tagsRegex.test( pathElement.getName() ) && filter( editor, pathElement ) )
 								node.breakParent( pathElement );
 						}
@@ -93,5 +96,7 @@
 
 						// This node must not be a fake element.
-						if ( currentNode.getName() != 'img' || !currentNode.getAttribute( '_cke_protected_html' ) )
+						if ( !( currentNode.getName() == 'img'
+							&& currentNode.getAttribute( '_cke_realelement' ) )
+							&& filter( editor, currentNode ) )
 						{
 							// Remove elements nodes that match with this style rules.
@@ -111,5 +116,40 @@
 			}
 		}
+	},
+
+	/**
+	 * Perform the remove format filters on the passed element.
+	 * @param {CKEDITOR.editor} editor
+	 * @param {CKEDITOR.dom.element} element
+	 */
+	filter : function ( editor, element )
+	{
+		var filters = editor._.removeFormat.filters;
+		for ( var i = 0; i < filters.length; i++ )
+		{
+			if ( filters[ i ]( element ) === false )
+				return false;
+		}
+		return true;
 	}
+};
+
+/**
+ * Add to a collection of functions to decide whether a specific
+ * element should be considered as formatting element and thus
+ * could be removed during <b>removeFormat</b> command,
+ * Note: Only available with the existence of 'removeformat' plugin.
+ * @since 3.3
+ * @param {Function} func The function to be called, which will be passed a {CKEDITOR.dom.element} element to test.
+ * @example
+ *  // Don't remove empty span
+ *  editor.addRemoveFormatFilter.push( function( element )
+ *		{
+ *			return !( element.is( 'span' ) && CKEDITOR.tools.isEmpty( element.getAttributes() ) );
+ *		});
+ */
+CKEDITOR.editor.prototype.addRemoveFormatFilter = function( func )
+{
+	this._.removeFormat.filters.push( func );
 };
 
Index: /CKEditor/branches/features/adobeair/_source/plugins/resize/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/resize/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/resize/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -12,16 +12,28 @@
 		if ( config.resize_enabled )
 		{
-			var container = null;
-			var origin, startSize;
+			var container = null,
+				origin,
+				startSize,
+				resizeHorizontal = ( config.resize_dir == 'both' || config.resize_dir == 'horizontal' ) &&
+					( config.resize_minWidth != config.resize_maxWidth ),
+				resizeVertical = ( config.resize_dir == 'both' || config.resize_dir == 'vertical' ) &&
+					( config.resize_minHeight != config.resize_maxHeight );
 
 			function dragHandler( evt )
 			{
-				var dx = evt.data.$.screenX - origin.x;
-				var dy = evt.data.$.screenY - origin.y;
-				var internalWidth = startSize.width + dx * ( editor.lang.dir == 'rtl' ? -1 : 1 );
-				var internalHeight = startSize.height + dy;
+				var dx = evt.data.$.screenX - origin.x,
+					dy = evt.data.$.screenY - origin.y,
+					width = startSize.width,
+					height = startSize.height,
+					internalWidth = width + dx * ( editor.lang.dir == 'rtl' ? -1 : 1 ),
+					internalHeight = height + dy;
 
-				editor.resize( Math.max( config.resize_minWidth, Math.min( internalWidth, config.resize_maxWidth ) ),
-						Math.max( config.resize_minHeight, Math.min( internalHeight, config.resize_maxHeight ) ) );
+				if ( resizeHorizontal )
+					width =  Math.max( config.resize_minWidth, Math.min( internalWidth, config.resize_maxWidth ) );
+
+				if ( resizeVertical )
+					height =  Math.max( config.resize_minHeight, Math.min( internalHeight, config.resize_maxHeight ) );
+
+				editor.resize( width, height );
 			}
 
@@ -54,5 +66,7 @@
 						editor.document.on( 'mouseup', dragEndHandler );
 					}
-				} );
+				});
+
+			editor.on( 'destroy', function() { CKEDITOR.tools.removeFunction( mouseDownFn ); } );
 
 			editor.on( 'themeSpace', function( event )
@@ -60,5 +74,11 @@
 					if ( event.data.space == 'bottom' )
 					{
-						event.data.html += '<div class="cke_resizer"' +
+						var direction = '';
+						if ( resizeHorizontal && !resizeVertical)
+							direction = ' cke_resizer_horizontal';
+						if ( !resizeHorizontal && resizeVertical)
+							direction = ' cke_resizer_vertical';
+
+						event.data.html += '<div class="cke_resizer' + direction + '"' +
 							' title="' + CKEDITOR.tools.htmlEncode( editor.lang.resize ) + '"' +
 							' onmousedown="CKEDITOR.tools.callFunction(' + mouseDownFn + ', event)"' +
@@ -107,5 +127,5 @@
 
 /**
- * Whether to enable the resizing feature. If disabed the resize handler will not be visible.
+ * Whether to enable the resizing feature. If disabled the resize handler will not be visible.
  * @type Boolean
  * @default true
@@ -114,2 +134,13 @@
  */
 CKEDITOR.config.resize_enabled = true;
+
+/**
+ * The directions to which the editor resizing is enabled. Possible values
+ * are "both", "vertical" and "horizontal".
+ * @type String
+ * @default 'both'
+ * @since 3.3
+ * @example
+ * config.resize_dir = 'vertical';
+ */
+CKEDITOR.config.resize_dir = 'both';
Index: /CKEditor/branches/features/adobeair/_source/plugins/richcombo/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/richcombo/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/richcombo/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -45,4 +45,9 @@
 
 		panelDefinition.className = ( panelDefinition.className || '' ) + ' cke_rcombopanel';
+		panelDefinition.block =
+		{
+			multiSelect : panelDefinition.multiSelect,
+			attributes : panelDefinition.attributes
+		};
 
 		this._ =
@@ -84,4 +89,6 @@
 		render : function( editor, output )
 		{
+			var env = CKEDITOR.env;
+
 			var id = 'cke_' + this.id;
 			var clickFn = CKEDITOR.tools.addFunction( function( $element )
@@ -100,4 +107,11 @@
 					}
 
+					this.commit();
+					var value = this.getValue();
+					if ( value )
+						_.list.mark( value );
+					else
+						_.list.unmarkAll();
+
 					_.panel.showBlock( this.id, new CKEDITOR.dom.element( $element ), 4 );
 				},
@@ -112,5 +126,5 @@
 					element.focus();
 				},
-				execute : clickFn
+				clickFn : clickFn
 			};
 
@@ -143,4 +157,7 @@
 				});
 
+			// For clean up
+			instance.keyDownFn = keyDownFn;
+
 			output.push(
 				'<span class="cke_rcombo">',
@@ -151,7 +168,9 @@
 
 			output.push(
-				'>' +
-					'<span class=cke_label>', this.label, '</span>' +
-					'<a hidefocus=true title="', this.title, '" tabindex="-1" href="javascript:void(\'', this.label, '\')"' );
+				'>',
+					'<span id="' + id+ '_label" class=cke_label>', this.label, '</span>',
+					'<a hidefocus=true title="', this.title, '" tabindex="-1"',
+						env.gecko && env.version >= 10900 && !env.hc ? '' : ' href="javascript:void(\'' + this.label + '\')"',
+						' role="button" aria-labelledby="', id , '_label" aria-describedby="', id, '_text" aria-haspopup="true"' );
 
 			// Some browsers don't cancel key events in the keydown but in the
@@ -176,8 +195,7 @@
 					' onclick="CKEDITOR.tools.callFunction(', clickFn, ', this); return false;">' +
 						'<span>' +
-							'<span class="cke_accessibility">' + ( this.voiceLabel ? this.voiceLabel + ' ' : '' ) + '</span>' +
 							'<span id="' + id + '_text" class="cke_text cke_inline_label">' + this.label + '</span>' +
 						'</span>' +
-						'<span class=cke_openbutton></span>' +
+						'<span class=cke_openbutton>' + ( CKEDITOR.env.hc ? '<span>&#9660;</span>' : '' ) + '</span>' +	// BLACK DOWN-POINTING TRIANGLE
 					'</a>' +
 				'</span>' +
@@ -196,17 +214,12 @@
 
 			var panelDefinition = this._.panelDefinition,
+				panelBlockDefinition = this._.panelDefinition.block,
 				panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(),
 				panel = new CKEDITOR.ui.floatPanel( editor, panelParentElement, panelDefinition ),
-				list = panel.addListBlock( this.id, this.multiSelect ),
+				list = panel.addListBlock( this.id, panelBlockDefinition ),
 				me = this;
 
 			panel.onShow = function()
 				{
-					var value = me.getValue();
-					if ( value )
-						me._.list.mark( value );
-					else
-						me._.list.unmarkAll();
-
 					if ( me.className )
 						this.element.getFirst().addClass( me.className + '_panel' );
@@ -259,4 +272,7 @@
 				};
 
+			this._.panel = panel;
+			this._.list = list;
+
 			panel.getBlock( this.id ).onHide = function()
 				{
@@ -265,7 +281,6 @@
 				};
 
-			this._.panel = panel;
-			this._.list = list;
-			this.init && this.init();
+			if ( this.init )
+				this.init();
 		},
 
@@ -276,5 +291,5 @@
 			var textElement = this.document.getById( 'cke_' + this.id + '_text' );
 
-			if ( !value )
+			if ( !( value || text ) )
 			{
 				text = this.label;
@@ -283,4 +298,5 @@
 			else
 				textElement.removeClass( 'cke_inline_label' );
+
 			textElement.setHtml( typeof text != 'undefined' ? text : value );
 		},
@@ -329,6 +345,10 @@
 		commit : function()
 		{
-			this._.list.commit();
-			CKEDITOR.ui.richCombo.fire( 'uiReady', this );
+			if ( !this._.committed )
+			{
+				this._.list.commit();
+				this._.committed = 1;
+				CKEDITOR.ui.richCombo.fire( 'uiReady', this );
+			}
 		},
 
Index: /CKEditor/branches/features/adobeair/_source/plugins/save/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/save/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/save/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/plugins/scayt/dialogs/options.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/scayt/dialogs/options.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/scayt/dialogs/options.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -12,11 +12,38 @@
 		i,
 		contents = [],
-		userDicActive = false;
-	var dic_buttons = [
-		// [0] contains buttons for creating
-		"dic_create,dic_restore",
-		// [1] contains buton for manipulation
-		"dic_rename,dic_delete"
-	];
+		userDicActive = false,
+		dic_buttons = [
+			// [0] contains buttons for creating
+			"dic_create,dic_restore",
+			// [1] contains buton for manipulation
+			"dic_rename,dic_delete"
+		],
+		optionsIds= [ 'mixedCase','mixedWithDigits','allCaps','ignoreDomainNames' ];
+
+	// common operations
+
+	function getBOMAllOptions () {
+		 return document.forms.optionsbar["options"];
+	}
+	function getBOMAllLangs () {
+		 return document.forms.languagesbar["scayt_lang"];
+	}
+
+	function setCheckedValue(radioObj, newValue) {
+		if (!radioObj)
+			return;
+		var radioLength = radioObj.length;
+		if (radioLength == undefined) {
+			radioObj.checked = (radioObj.value == newValue.toString());
+			return;
+		}
+		for (var i = 0; i < radioLength; i++) {
+			radioObj[i].checked = false;
+			if (radioObj[i].value == newValue.toString()) {
+				radioObj[i].checked = true;
+			}
+		}
+	}
+
 	var tags_contents =  [
 				{
@@ -27,23 +54,23 @@
 							type : 'html',
 							id : 'options',
-							html : 	'<div class="inner_options">' +
+							html : 	'<form name="optionsbar"><div class="inner_options">' +
 									'	<div class="messagebox"></div>' +
 									'	<div style="display:none;">' +
-									'		<input type="checkbox" value="0" id="allCaps" />' +
+									'		<input type="checkbox" name="options"  id="allCaps" />' +
 									'		<label for="allCaps" id="label_allCaps"></label>' +
 									'	</div>' +
 									'	<div style="display:none;">' +
-									'		<input type="checkbox" value="0" id="ignoreDomainNames" />' +
+									'		<input name="options" type="checkbox"  id="ignoreDomainNames" />' +
 									'		<label for="ignoreDomainNames" id="label_ignoreDomainNames"></label>' +
 									'	</div>' +
 									'	<div style="display:none;">' +
-									'	<input type="checkbox" value="0" id="mixedCase" />' +
+									'	<input name="options" type="checkbox"  id="mixedCase" />' +
 									'		<label for="mixedCase" id="label_mixedCase"></label>' +
 									'	</div>' +
 									'	<div style="display:none;">' +
-									'		<input type="checkbox" value="0" id="mixedWithDigits" />' +
+									'		<input name="options" type="checkbox"  id="mixedWithDigits" />' +
 									'		<label for="mixedWithDigits" id="label_mixedWithDigits"></label>' +
 									'	</div>' +
-									'</div>'
+									'</div></form>'
 						}
 					]
@@ -56,9 +83,9 @@
 							type : 'html',
 							id : 'langs',
-							html : 	'<div class="inner_langs">' +
+							html : 	'<form name="languagesbar"><div class="inner_langs">' +
 									'	<div class="messagebox"></div>	' +
-									'   <div style="float:left;width:47%;margin-left:5px;" id="scayt_lcol" ></div>' +
-									'   <div style="float:left;width:47%;margin-left:15px;" id="scayt_rcol"></div>' +
-									'</div>'
+									'   <div style="float:left;width:45%;margin-left:5px;" id="scayt_lcol" ></div>' +
+									'   <div style="float:left;width:45%;margin-left:15px;" id="scayt_rcol"></div>' +
+									'</div></form>'
 						}
 					]
@@ -71,6 +98,6 @@
 							type : 'html',
 							style: '',
-							id : 'dic',
-							html : 	'<div class="inner_dictionary" style="text-align:left; white-space:normal;">' +
+							id : 'dictionaries',
+							html : 	'<form name="dictionarybar"><div class="inner_dictionary" style="text-align:left; white-space:normal; width:320px; overflow: hidden;">' +
 									'	<div style="margin:5px auto; width:80%;white-space:normal; overflow:hidden;" id="dic_message"> </div>' +
 									'	<div style="margin:5px auto; width:80%;white-space:normal;"> ' +
@@ -91,5 +118,5 @@
 									'		</div>' +
 									'	<div style="margin:5px auto; width:95%;white-space:normal;" id="dic_info"></div>' +
-									'</div>'
+									'</div></form>'
 						}
 					]
@@ -102,5 +129,5 @@
 							type : 'html',
 							id : 'about',
-							style : 'margin: 10px 40px;',
+							style : 'margin: 5px 5px;',
 							html : '<div id="scayt_about"></div>'
 						}
@@ -108,8 +135,9 @@
 				}
 			];
+
 	var dialogDefiniton = {
 		title : editor.lang.scayt.title,
-		minWidth : 340,
-		minHeight : 200,
+		minWidth : 360,
+		minHeight : 220,
 		onShow : function()
 		{
@@ -129,13 +157,13 @@
 			if ( firstLoad )
 			{
-				dialog.data.scayt.getCaption( 'en', function( caps )
-					{
-						if ( stop++ > 0 )	// Once only
-							return;
-						captions = caps;
-						init_with_captions.apply( dialog );
-						reload.apply( dialog );
-						firstLoad = false;
-					});
+				dialog.data.scayt.getCaption( editor.langCode || 'en', function( caps )
+				{
+					if ( stop++ > 0 )	// Once only
+						return;
+					captions = caps;
+					init_with_captions.apply( dialog );
+					reload.apply( dialog );
+					firstLoad = false;
+				});
 			}
 			else
@@ -146,38 +174,28 @@
 		onOk : function()
 		{
-			var scayt_control =  this.data.scayt_control,
-				o = scayt_control.option(),
-				c = 0;
-
-			// Set up options if any was set.
-			for ( var i in this.options )
-			{
-				if (o[i] != this.options[ i ] && c === 0 )
-				{
-					scayt_control.option( this.options );
-					c++;
-				}
-			}
-
+			var scayt_control =  this.data.scayt_control;
+			scayt_control.option( this.options );
 			// Setup languge if it was changed.
 			var csLang = this.chosed_lang;
-			if ( csLang && this.data.sLang != csLang )
-			{
-				scayt_control.setLang( csLang );
-				c++;
-			}
-			if ( c > 0 )
-				scayt_control.refresh();
+			scayt_control.setLang( csLang );
+			scayt_control.refresh();
+		},
+		onCancel: function()
+		{
+			var o = getBOMAllOptions();
+			for (i in o)
+				o[i].checked = false;
+
+			setCheckedValue(getBOMAllLangs(),"");
 		},
 		contents : contents
-        };
+	};
 
 	var scayt_control = CKEDITOR.plugins.scayt.getScayt( editor );
-	if ( scayt_control )
-	{
-		tags = scayt_control.uiTags;
-	}
-
-	for ( i in tags ) {
+
+	tags = CKEDITOR.plugins.scayt.uiTabs;
+
+	for ( i in tags )
+	{
 		if ( tags[ i ] == 1 )
 			contents[ contents.length ] = tags_contents[ i ];
@@ -186,17 +204,5 @@
 		userDicActive = true;
 
-	function onDicButtonClick()
-	{
-		var dic_name = doc.getById('dic_name').getValue();
-		if ( !dic_name )
-		{
-			dic_error_message(" Dictionary name should not be empty. ");
-			return false;
-		}
-		//apply handler
-		window.dic[ this.getId() ].apply( null, [ this, dic_name, dic_buttons ] );
-
-		return true;
-	}
+
 	var init_with_captions = function()
 	{
@@ -204,11 +210,11 @@
 			lang_list = dialog.data.scayt.getLangList(),
 			buttons = [ 'dic_create','dic_delete','dic_rename','dic_restore' ],
-			labels = [ 'mixedCase','mixedWithDigits','allCaps','ignoreDomainNames' ],
+			labels = optionsIds,
 			i;
 
 		// Add buttons titles
-		if (userDicActive)
-		{
-			for ( i in buttons )
+		if ( userDicActive )
+		{
+			for ( i = 0; i < buttons.length; i++ )
 			{
 				var button = buttons[ i ];
@@ -220,22 +226,25 @@
 
 		// Fill options and dictionary labels.
-		for ( i in labels )
-		{
-			var label = 'label_' + labels[ i ],
-				labelElement = doc.getById( label );
-
-			if (  'undefined' != typeof labelElement
-			   && 'undefined' != typeof captions[ label ]
-			   && 'undefined' != typeof dialog.options[labels[ i ]] )
-			{
-				labelElement.setHtml( captions[ label ] );
-				var labelParent = labelElement.getParent();
-				labelParent.$.style.display = "block";
-			}
-		}
-
-		var about = '<p>' + captions[ 'about_throwt_image' ] + '</p>'+
-					'<p>' + captions[ 'version' ]  + dialog.data.scayt.version.toString() + '</p>' +
-					'<p>' + captions[ 'about_throwt_copy' ] + '</p>';
+		if ( tags[0] == 1 )
+		{
+			for ( i in labels )
+			{
+				var label = 'label_' + labels[ i ],
+					labelElement = doc.getById( label );
+
+				if (  'undefined' != typeof labelElement
+				   && 'undefined' != typeof captions[ label ]
+				   && 'undefined' != typeof dialog.options[labels[ i ]] )
+				{
+					labelElement.setHtml( captions[ label ] );
+					var labelParent = labelElement.getParent();
+					labelParent.$.style.display = "block";
+				}
+			}
+		}
+
+		var about = '<p><img src="' + window.scayt.getAboutInfo().logoURL + '" /></p>' +
+				'<p>' + captions[ 'version' ] + window.scayt.getAboutInfo().version.toString() + '</p>' +
+				'<p>' + captions[ 'about_throwt_copy' ] + '</p>';
 
 		doc.getById( 'scayt_about' ).setHtml( about );
@@ -274,21 +283,24 @@
 
 		var langList = [];
-		for ( i in lang_list.rtl )
-			langList[ langList.length ] = createOption( i, lang_list.ltr );
-
-		for ( i in lang_list.ltr )
-			langList[ langList.length  ] = createOption( i, lang_list.ltr );
-
-		langList.sort( 	function( lang1, lang2 )
-			{
-				return ( lang2.lang > lang1.lang ) ? -1 : 1 ;
-			});
-
-		var fieldL = doc.getById( 'scayt_lcol' ),
-			fieldR = doc.getById( 'scayt_rcol' );
-		for ( i=0; i < langList.length; i++ )
-		{
-			var field = ( i < langList.length / 2 ) ? fieldL : fieldR;
-			field.append( langList[ i ].radio );
+		if (tags[1] ==1 )
+		{
+			for ( i in lang_list.rtl )
+				langList[ langList.length ] = createOption( i, lang_list.ltr );
+
+			for ( i in lang_list.ltr )
+				langList[ langList.length  ] = createOption( i, lang_list.ltr );
+
+			langList.sort( 	function( lang1, lang2 )
+				{
+					return ( lang2.lang > lang1.lang ) ? -1 : 1 ;
+				});
+
+			var fieldL = doc.getById( 'scayt_lcol' ),
+				fieldR = doc.getById( 'scayt_rcol' );
+			for ( i=0; i < langList.length; i++ )
+			{
+				var field = ( i < langList.length / 2 ) ? fieldL : fieldR;
+				field.append( langList[ i ].radio );
+			}
 		}
 
@@ -296,80 +308,70 @@
 		var dic = {};
 		dic.dic_create = function( el, dic_name , dic_buttons )
-			{
-				// comma separated button's ids include repeats if exists
-				var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
-
-				var err_massage = captions["err_dic_create"];
-				var suc_massage = captions["succ_dic_create"];
-				//console.info("--plugin ");
-
-				window.scayt.createUserDictionary(dic_name,
-					function(arg)
-						{
-							//console.info( "dic_create callback called with args" , arg );
-							hide_dic_buttons ( all_buttons );
-							display_dic_buttons ( dic_buttons[1] );
-							suc_massage = suc_massage.replace("%s" , arg.dname );
-							dic_success_message (suc_massage);
-						},
-					function(arg)
-						{
-							//console.info( "dic_create errorback called with args" , arg )
-							err_massage = err_massage.replace("%s" ,arg.dname );
-							dic_error_message ( err_massage + "( "+ (arg.message || "") +")");
-						});
-
-			};
+		{
+			// comma separated button's ids include repeats if exists
+			var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
+
+			var err_massage = captions["err_dic_create"];
+			var suc_massage = captions["succ_dic_create"];
+
+			window.scayt.createUserDictionary(dic_name,
+				function(arg)
+				{
+					hide_dic_buttons ( all_buttons );
+					display_dic_buttons ( dic_buttons[1] );
+					suc_massage = suc_massage.replace("%s" , arg.dname );
+					dic_success_message (suc_massage);
+				},
+				function(arg)
+				{
+					err_massage = err_massage.replace("%s" ,arg.dname );
+					dic_error_message ( err_massage + "( "+ (arg.message || "") +")");
+				});
+
+		};
 
 		dic.dic_rename = function( el, dic_name )
-			{
-				//
-				// try to rename dictionary
-				// @TODO: rename dict
-				//console.info ( captions["err_dic_rename"] )
-				var err_massage = captions["err_dic_rename"] || "";
-				var suc_massage = captions["succ_dic_rename"] || "";
-				window.scayt.renameUserDictionary(dic_name,
-					function(arg)
-						{
-							//console.info( "dic_rename callback called with args" , arg );
-							suc_massage = suc_massage.replace("%s" , arg.dname );
-							set_dic_name( dic_name );
-							dic_success_message ( suc_massage );
-						},
-					function(arg)
-						{
-							//console.info( "dic_rename errorback called with args" , arg )
-							err_massage = err_massage.replace("%s" , arg.dname  );
-							set_dic_name( dic_name );
-							dic_error_message( err_massage + "( " + ( arg.message || "" ) + " )" );
-						});
-			};
+		{
+			//
+			// try to rename dictionary
+			var err_massage = captions["err_dic_rename"] || "";
+			var suc_massage = captions["succ_dic_rename"] || "";
+			window.scayt.renameUserDictionary(dic_name,
+				function(arg)
+					{
+						suc_massage = suc_massage.replace("%s" , arg.dname );
+						set_dic_name( dic_name );
+						dic_success_message ( suc_massage );
+					},
+				function(arg)
+					{
+						err_massage = err_massage.replace("%s" , arg.dname  );
+						set_dic_name( dic_name );
+						dic_error_message( err_massage + "( " + ( arg.message || "" ) + " )" );
+					});
+		};
 
 		dic.dic_delete = function ( el, dic_name , dic_buttons )
-			{
-				var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
-				var err_massage = captions["err_dic_delete"];
-				var suc_massage = captions["succ_dic_delete"];
-
-				// try to delete dictionary
-				// @TODO: delete dict
-				window.scayt.deleteUserDictionary(
-					function(arg)
-						{
-							//console.info( "dic_delete callback " , dic_name ,arg );
-							suc_massage = suc_massage.replace("%s" , arg.dname );
-							hide_dic_buttons ( all_buttons );
-							display_dic_buttons ( dic_buttons[0] );
-							set_dic_name( "" ); // empty input field
-							dic_success_message( suc_massage );
-						},
-					function(arg)
-						{
-							//console.info( " dic_delete errorback called with args" , arg )
-							err_massage = err_massage.replace("%s" , arg.dname );
-							dic_error_message(err_massage);
-						});
-			};
+		{
+			var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
+			var err_massage = captions["err_dic_delete"];
+			var suc_massage = captions["succ_dic_delete"];
+
+			// try to delete dictionary
+			window.scayt.deleteUserDictionary(
+				function(arg)
+				{
+					suc_massage = suc_massage.replace("%s" , arg.dname );
+					hide_dic_buttons ( all_buttons );
+					display_dic_buttons ( dic_buttons[0] );
+					set_dic_name( "" ); // empty input field
+					dic_success_message( suc_massage );
+				},
+				function(arg)
+				{
+					err_massage = err_massage.replace("%s" , arg.dname );
+					dic_error_message(err_massage);
+				});
+		};
 
 		dic.dic_restore = dialog.dic_restore || function ( el, dic_name , dic_buttons )
@@ -382,18 +384,35 @@
 				window.scayt.restoreUserDictionary(dic_name,
 					function(arg)
-						{
-							//console.info( "dic_restore callback called with args" , arg );
-							suc_massage = suc_massage.replace("%s" , arg.dname );
-							hide_dic_buttons ( all_buttons );
-							display_dic_buttons(dic_buttons[1]);
-							dic_success_message( suc_massage );
-						},
+					{
+						suc_massage = suc_massage.replace("%s" , arg.dname );
+						hide_dic_buttons ( all_buttons );
+						display_dic_buttons(dic_buttons[1]);
+						dic_success_message( suc_massage );
+					},
 					function(arg)
-						{
-							//console.info( " dic_restore errorback called with args" , arg )
-							err_massage = err_massage.replace("%s" , arg.dname );
-							dic_error_message( err_massage );
-						});
+					{
+						err_massage = err_massage.replace("%s" , arg.dname );
+						dic_error_message( err_massage );
+					});
 			};
+
+		function onDicButtonClick( ev )
+		{
+			var dic_name = doc.getById('dic_name').getValue();
+			if ( !dic_name )
+			{
+				dic_error_message(" Dictionary name should not be empty. ");
+				return false;
+			}
+			try{
+				var el = id = ev.data.getTarget().getParent();
+				var id = el.getId();
+				dic[ id ].apply( null, [ el, dic_name, dic_buttons ] );
+			}catch(err){
+				dic_error_message(" Dictionary error. ");
+			}
+
+			return true;
+		}
 
 		// ** bind event listeners
@@ -403,5 +422,5 @@
 		for ( i = 0, l = arr_buttons.length ; i < l ; i += 1 )
 		{
-		 	var dic_button = doc.getById(arr_buttons[i]);
+			var dic_button = doc.getById(arr_buttons[i]);
 			if ( dic_button )
 				dic_button.on( 'click', onDicButtonClick, this );
@@ -412,45 +431,65 @@
 	{
 		var dialog = this;
-
-		// Animate options.
-		for ( var i in dialog.options )
-		{
-			var checkbox = doc.getById( i );
-			if ( checkbox )
-			{
-				checkbox.removeAttribute( 'checked' );
-				if ( dialog.options[ i ] == 1 )
-					checkbox.setAttribute( 'checked', 'checked' );
-
-				// Bind events. Do it only once.
-				if ( firstLoad )
-				{
-					checkbox.on( 'click', function()
+		// for enabled options tab
+		if (tags[0] == 1){
+			var opto = getBOMAllOptions();
+
+			// Animate options.
+			for ( var k=0,l = opto.length; k<l;k++ )
+			{
+
+				var i = opto[k].id;
+				var checkbox = doc.getById( i );
+
+				if ( checkbox )
+				{
+					opto[k].checked = false;
+					//alert (opto[k].removeAttribute)
+					if ( dialog.options[ i ] == 1 )
+					{
+						opto[k].checked = true;
+					}
+
+
+					// Bind events. Do it only once.
+					if ( firstLoad )
+					{
+						checkbox.on( 'click', function()
 						{
 							dialog.options[ this.getId() ] = this.$.checked ? 1 : 0 ;
-						} );
+						});
+					}
 				}
 			}
 		}
 
+		//for enabled languages tab
+		if ( tags[1] == 1 )
+		{
+			var domLang = doc.getById("cke_option"+dialog.sLang);
+			setCheckedValue(domLang.$,dialog.sLang);
+		}
+
 		// * user dictionary
-		if ( userDicActive ){
+		if ( userDicActive )
+		{
 			window.scayt.getNameUserDictionary(
-			function( o )
-			{
-				var dic_name = o.dname;
-				if ( dic_name )
-				{
-					doc.getById( 'dic_name' ).setValue(dic_name);
-					display_dic_buttons( dic_buttons[1] );
-				}
-				else
-					display_dic_buttons( dic_buttons[0] );
-
-			},
-			function ()
-			{
-				doc.getById( 'dic_name' ).setValue("");
-			});
+				function( o )
+				{
+					var dic_name = o.dname;
+					hide_dic_buttons( dic_buttons[0] + ',' + dic_buttons[1] );
+					if ( dic_name )
+					{
+						doc.getById( 'dic_name' ).setValue(dic_name);
+						display_dic_buttons( dic_buttons[1] );
+					}
+					else
+						display_dic_buttons( dic_buttons[0] );
+
+				},
+				function ()
+				{
+					doc.getById( 'dic_name' ).setValue("");
+				});
 			dic_success_message("");
 		}
@@ -459,35 +498,35 @@
 
 	function dic_error_message ( m )
-		{
-			doc.getById('dic_message').setHtml('<span style="color:red;">' + m + '</span>' );
-		}
-    function dic_success_message ( m )
-		{
-			doc.getById('dic_message').setHtml('<span style="color:blue;">' + m + '</span>') ;
-		}
+	{
+		doc.getById('dic_message').setHtml('<span style="color:red;">' + m + '</span>' );
+	}
+	function dic_success_message ( m )
+	{
+		doc.getById('dic_message').setHtml('<span style="color:blue;">' + m + '</span>') ;
+	}
 	function display_dic_buttons ( sIds )
-		{
-
-			sIds = String( sIds );
-			var aIds = sIds.split(',');
-			for ( var i=0, l = aIds.length; i < l ; i+=1)
-			{
-				doc.getById( aIds[i] ).$.style.display = "inline";
-			}
-
-		}
+	{
+
+		sIds = String( sIds );
+		var aIds = sIds.split(',');
+		for ( var i=0, l = aIds.length; i < l ; i+=1)
+		{
+			doc.getById( aIds[i] ).$.style.display = "inline";
+		}
+
+	}
 	function hide_dic_buttons ( sIds )
-		{
-			sIds = String( sIds );
-			var aIds = sIds.split(',');
-			for ( var i = 0, l = aIds.length; i < l ; i += 1 )
-			{
-				doc.getById( aIds[i] ).$.style.display = "none";
-			}
-		}
+	{
+		sIds = String( sIds );
+		var aIds = sIds.split(',');
+		for ( var i = 0, l = aIds.length; i < l ; i += 1 )
+		{
+			doc.getById( aIds[i] ).$.style.display = "none";
+		}
+	}
 	function set_dic_name ( dic_name )
-		{
-			doc.getById('dic_name').$.value= dic_name;
-		}
+	{
+		doc.getById('dic_name').$.value= dic_name;
+	}
 
 	return dialogDefiniton;
Index: /CKEditor/branches/features/adobeair/_source/plugins/scayt/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/scayt/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/scayt/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -14,4 +14,19 @@
 		openPage		= '';
 
+	// Checks if a value exists in an array
+	function in_array(needle, haystack)
+	{
+		var found = false, key;
+		for (key in haystack)
+		{
+			if ((haystack[key] === needle) || ( haystack[key] == needle))
+			{
+				found = true;
+				break;
+			}
+		}
+		return found;
+	}
+
 	var onEngineLoad = function()
 	{
@@ -22,22 +37,51 @@
 			// Initialise Scayt instance.
 			var oParams = {};
-			oParams.srcNodeRef = editor.document.getWindow().$.frameElement; 		// Get the iframe.
+			// Get the iframe.
+			oParams.srcNodeRef = editor.document.getWindow().$.frameElement;
 			// syntax : AppName.AppVersion@AppRevision
-			oParams.assocApp  = "CKEDITOR." + CKEDITOR.version + "@" + CKEDITOR.revision;
-
-			oParams.customerid = editor.config.scayt_customerid  || "1:11111111111111111111111111111111111111";
-			oParams.customDictionaryName = editor.config.scayt_customDictionaryName;
-			oParams.userDictionaryName = editor.config.scayt_userDictionaryName;
-			oParams.defLang = editor.scayt_defLang;
-
-			if ( CKEDITOR._scaytParams )
-			{
-				for ( var k in CKEDITOR._scaytParams )
-				{
-					oParams[ k ] = CKEDITOR._scaytParams[ k ];
+			oParams.assocApp  = 'CKEDITOR.' + CKEDITOR.version + '@' + CKEDITOR.revision;
+			oParams.customerid = editor.config.scayt_customerid  || '1:WvF0D4-UtPqN1-43nkD4-NKvUm2-daQqk3-LmNiI-z7Ysb4-mwry24-T8YrS3-Q2tpq2';
+			oParams.customDictionaryIds = editor.config.scayt_customDictionaryIds || '';
+			oParams.userDictionaryName = editor.config.scayt_userDictionaryName || '';
+			oParams.sLang = editor.config.scayt_sLang || 'en_US';
+
+			// Introduce SCAYT onLoad callback. (#5632)
+			oParams.onLoad = function()
+				{
+					// Draw down word marker to avoid being covered by background-color style.(#5466)
+					if ( !( CKEDITOR.env.ie && CKEDITOR.env.version < 8 ) )
+						this.addStyle( this.selectorCss(), 'padding-bottom: 2px !important;' );
+
+					// Call scayt_control.focus when SCAYT loaded
+					// and only if editor has focus and scayt control creates at first time (#5720)
+					if ( editor.focusManager.hasFocus && !plugin.isControlRestored( editor ) )
+						this.focus();
+
+				};
+
+			oParams.onBeforeChange = function()
+			{
+				if ( plugin.getScayt( editor ) && !editor.checkDirty() )
+					setTimeout( function(){ editor.resetDirty(); } );
+			};
+
+			var scayt_custom_params = window.scayt_custom_params;
+			if ( typeof scayt_custom_params == 'object')
+			{
+				for ( var k in scayt_custom_params )
+				{
+					oParams[ k ] = scayt_custom_params[ k ];
 				}
 			}
+			// needs for restoring a specific scayt control settings
+			if ( plugin.getControlId(editor) )
+				oParams.id = plugin.getControlId(editor);
 
 			var scayt_control = new window.scayt( oParams );
+
+			scayt_control.afterMarkupRemove.push( function( node )
+			{
+				( new CKEDITOR.dom.element( node, scayt_control.document ) ).mergeSiblings();
+			} );
 
 			// Copy config.
@@ -52,7 +96,17 @@
 			plugin.instances[ editor.name ] = scayt_control;
 
+			//window.scayt.uiTags
+			var menuGroup = 'scaytButton';
+			var uiTabs = window.scayt.uiTags;
+			var fTabs  = [];
+
+			for (var i = 0,l=4; i<l; i++)
+			    fTabs.push( uiTabs[i] && plugin.uiTabs[i] );
+
+			plugin.uiTabs = fTabs;
 			try {
-				scayt_control.setDisabled( scayt_control.paused === false );				// I really don't know why it causes JS error in IE
+				scayt_control.setDisabled( plugin.isPaused( editor ) === false );
 			} catch (e) {}
+
 			editor.fire( 'showScaytState' );
 		};
@@ -81,12 +135,41 @@
 				if ( (ev.data.name == 'source' ||  ev.data.name == 'newpage') && editor.mode == 'wysiwyg' )
 				{
-					var scayt_instanse = plugin.getScayt( editor );
-					if ( scayt_instanse )
-					{
-						scayt_instanse.paused = !scayt_instanse.disabled;
-						scayt_instanse.destroy();
+					var scayt_instance = plugin.getScayt( editor );
+					if ( scayt_instance )
+					{
+						plugin.setPaused( editor, !scayt_instance.disabled );
+						// store a control id for restore a specific scayt control settings
+						plugin.setControlId( editor, scayt_instance.id );
+						scayt_instance.destroy( true );
 						delete plugin.instances[ editor.name ];
 					}
 				}
+				// Catch on source mode switch off (#5720)
+				else if ( ev.data.name == 'source'  && editor.mode == 'source' )
+					plugin.markControlRestore( editor );
+			});
+
+		editor.on( 'afterCommandExec', function( ev )
+			{
+				if ( !plugin.isScaytEnabled( editor ) )
+					return;
+
+				if ( editor.mode == 'wysiwyg' && ( ev.data.name == 'undo' || ev.data.name == 'redo' ) )
+					window.setTimeout( function() { plugin.getScayt( editor ).refresh(); }, 10 );
+			});
+
+		editor.on( 'destroy', function( ev )
+			{
+				var editor = ev.editor,
+					scayt_instance = plugin.getScayt( editor );
+
+				// SCAYT instance might already get destroyed by mode switch (#5744).
+				if ( !scayt_instance )
+					return;
+
+				delete plugin.instances[ editor.name ];
+				// store a control id for restore a specific scayt control settings
+				plugin.setControlId( editor, scayt_instance.id );
+				scayt_instance.destroy( true );
 			});
 
@@ -94,6 +177,11 @@
 		editor.on( 'afterSetData', function()
 			{
-				if ( plugin.isScaytEnabled( editor ) )
-					plugin.getScayt( editor ).refresh();
+				if ( plugin.isScaytEnabled( editor ) ) {
+					window.setTimeout( function()
+						{
+							var instance = plugin.getScayt( editor );
+							instance && instance.refresh();
+						}, 10 );
+				}
 			});
 
@@ -109,9 +197,30 @@
 						editor.getSelection().unlock( true );
 
-					// Swallow any SCAYT engine errors.
-					try{
+					// Return focus to the editor and refresh SCAYT markup (#5573).
+					window.setTimeout( function()
+					{
+						scayt_instance.focus();
 						scayt_instance.refresh();
-					}catch( er )
-					{}
+					}, 10 );
+				}
+			}, this, null, 50 );
+
+		editor.on( 'insertHtml', function()
+			{
+				var scayt_instance = plugin.getScayt( editor );
+				if ( plugin.isScaytEnabled( editor ) )
+				{
+					// Unlock the selection before reload, SCAYT will take
+					// care selection update.
+					if ( CKEDITOR.env.ie )
+						editor.getSelection().unlock( true );
+
+					// Return focus to the editor (#5573)
+					// Refresh SCAYT markup
+					window.setTimeout( function()
+					{
+						scayt_instance.focus();
+						scayt_instance.refresh();
+					}, 10 );
 				}
 			}, this, null, 50 );
@@ -127,4 +236,5 @@
 		var dataProcessor = editor.dataProcessor,
 			htmlFilter = dataProcessor && dataProcessor.htmlFilter;
+
 		if ( htmlFilter )
 		{
@@ -146,12 +256,90 @@
 		}
 
+		// Override Image.equals method avoid CK snapshot module to add SCAYT markup to snapshots. (#5546)
+		var undoImagePrototype = CKEDITOR.plugins.undo.Image.prototype;
+		undoImagePrototype.equals =	 CKEDITOR.tools.override( undoImagePrototype.equals, function( org )
+		{
+			return function( otherImage )
+			{
+				var thisContents = this.contents,
+					otherContents = otherImage.contents;
+				var scayt_instance = plugin.getScayt( this.editor );
+				// Making the comparison based on content without SCAYT word markers.
+				if ( scayt_instance && plugin.isScaytReady( this.editor ) )
+				{
+					// scayt::reset might return value undefined. (#5742)
+					this.contents = scayt_instance.reset( thisContents ) || '';
+					otherImage.contents = scayt_instance.reset( otherContents ) || '';
+				}
+
+				var retval = org.apply( this, arguments );
+
+				this.contents = thisContents;
+				otherImage.contents = otherContents;
+				return retval;
+			};
+		});
+
 		if ( editor.document )
 			createInstance();
 	};
 
-	CKEDITOR.plugins.scayt =
+CKEDITOR.plugins.scayt =
 	{
 		engineLoaded : false,
 		instances : {},
+		// Data storage for SCAYT control, based on editor instances
+		controlInfo : {},
+		setControlInfo : function( editor, o )
+		{
+			if ( editor && editor.name && typeof ( this.controlInfo[ editor.name ] ) != 'object' )
+				this.controlInfo[ editor.name ] = {};
+
+			for ( var infoOpt in o )
+				this.controlInfo[ editor.name ][ infoOpt ] = o[ infoOpt ];
+		},
+		isControlRestored : function ( editor )
+		{
+			if ( editor &&
+					editor.name &&
+					this.controlInfo[ editor.name ] )
+			{
+				return this.controlInfo[ editor.name ].restored ;
+			}
+			return false;
+		},
+		markControlRestore : function ( editor )
+		{
+			this.setControlInfo( editor,{ restored:true } );
+		},
+		setControlId: function (editor, id)
+		{
+			this.setControlInfo( editor,{ id:id } );
+		},
+		getControlId: function (editor)
+		{
+			if ( editor &&
+					editor.name &&
+					this.controlInfo[ editor.name ] &&
+					this.controlInfo[ editor.name ].id )
+			{
+				return this.controlInfo[ editor.name ].id;
+			}
+			return null;
+		},
+		setPaused: function ( editor , bool )
+		{
+			this.setControlInfo( editor,{ paused:bool } );
+		},
+		isPaused: function (editor)
+		{
+			if ( editor &&
+					editor.name &&
+					this.controlInfo[editor.name] )
+			{
+				return this.controlInfo[editor.name].paused ;
+			}
+			return undefined;
+		},
 		getScayt : function( editor )
 		{
@@ -165,13 +353,17 @@
 		isScaytEnabled : function( editor )
 		{
-			var scayt_instanse = this.getScayt( editor );
-			return ( scayt_instanse ) ? scayt_instanse.disabled === false : false;
+			var scayt_instance = this.getScayt( editor );
+			return ( scayt_instance ) ? scayt_instance.disabled === false : false;
 		},
 		loadEngine : function( editor )
 		{
+			// SCAYT doesn't work with Firefox2, Opera.
+			if ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 || CKEDITOR.env.opera )
+				return editor.fire( 'showScaytState' );
+
 			if ( this.engineLoaded === true )
 				return onEngineLoad.apply( editor );	// Add new instance.
 			else if ( this.engineLoaded == -1 )			// We are waiting.
-				return CKEDITOR.on( 'scaytReady', function(){ onEngineLoad.apply( editor );} );	// Use function(){} to avoid rejection as duplicate.
+				return CKEDITOR.on( 'scaytReady', function(){ onEngineLoad.apply( editor ); } );	// Use function(){} to avoid rejection as duplicate.
 
 			CKEDITOR.on( 'scaytReady', onEngineLoad, editor );
@@ -182,5 +374,6 @@
 				this,
 				null,
-				0 );	// First to run.
+				0
+			);	// First to run.
 
 			this.engineLoaded = -1;	// Loading in progress.
@@ -190,32 +383,38 @@
 			// Default to 'http' for unknown.
 			protocol = protocol.search( /https?:/) != -1? protocol : 'http:';
-			var baseUrl  = "svc.spellchecker.net/spellcheck/lf/scayt/scayt1.js";
-
-			var scaytUrl  =  editor.config.scayt_srcUrl || ( protocol + "//" + baseUrl );
-			var scaytConfigBaseUrl =  plugin.parseUrl( scaytUrl ).path +  "/";
-
-			CKEDITOR._djScaytConfig =
-			{
-				baseUrl: scaytConfigBaseUrl,
-				addOnLoad:
-				[
-					function()
-					{
-						CKEDITOR.fireOnce( "scaytReady" );
-					}
-				],
-				isDebug: false
-			};
-			// Append javascript code.
-			CKEDITOR.document.getHead().append(
-				CKEDITOR.document.createElement( 'script',
-					{
-						attributes :
-							{
-								type : 'text/javascript',
-								src : scaytUrl
-							}
-					})
-			);
+			var baseUrl  = 'svc.spellchecker.net/spellcheck31/lf/scayt24/loader__base.js';
+
+			var scaytUrl  =  editor.config.scayt_srcUrl || ( protocol + '//' + baseUrl );
+			var scaytConfigBaseUrl =  plugin.parseUrl( scaytUrl ).path +  '/';
+
+			if( window.scayt == undefined )
+			{
+				CKEDITOR._djScaytConfig =
+				{
+					baseUrl: scaytConfigBaseUrl,
+					addOnLoad:
+					[
+						function()
+						{
+							CKEDITOR.fireOnce( 'scaytReady' );
+						}
+					],
+					isDebug: false
+				};
+				// Append javascript code.
+				CKEDITOR.document.getHead().append(
+					CKEDITOR.document.createElement( 'script',
+						{
+							attributes :
+								{
+									type : 'text/javascript',
+									async : 'true',
+									src : scaytUrl
+								}
+						})
+				);
+			}
+			else
+				CKEDITOR.fireOnce( 'scaytReady' );
 
 			return null;
@@ -251,7 +450,11 @@
 	{
 		preserveState : true,
+		editorFocus : false,
 
 		exec: function( editor )
 		{
+			var autoStartup = editor.config.scayt_autoStartup;
+			autoStartup = ( autoStartup == undefined ) || autoStartup;
+
 			if ( plugin.isScaytReady( editor ) )
 			{
@@ -261,17 +464,16 @@
 
 				var scayt_control = plugin.getScayt( editor );
+				// the place where the status of editor focus should be restored
+				// after there will be ability to store its state before SCAYT button click
+				// if (storedFocusState is focused )
+				//   scayt_control.focus();
+				//
+				// now focus is set certainly
+				scayt_control.focus( );
 				scayt_control.setDisabled( isEnabled );
 			}
-			else if ( !editor.config.scayt_autoStartup && plugin.engineLoaded >= 0 )	// Load first time
+			else if ( !autoStartup && plugin.engineLoaded >= 0 )	// Load first time
 			{
 				this.setState( CKEDITOR.TRISTATE_DISABLED );
-
-				editor.on( 'showScaytState', function()
-					{
-						this.removeListener();
-						this.setState( plugin.isScaytEnabled( editor ) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF );
-					},
-					this);
-
 				plugin.loadEngine( editor );
 			}
@@ -286,6 +488,23 @@
 		beforeInit : function( editor )
 		{
-			// Register own rbc menu group.
-			editor.config.menu_groups = 'scayt_suggest,scayt_moresuggest,scayt_control,' + editor.config.menu_groups;
+			var items_order = editor.config.scayt_contextMenuItemsOrder
+					|| 'suggest|moresuggest|control',
+				items_order_str = "";
+
+			items_order = items_order.split( '|' );
+
+			if ( items_order && items_order.length )
+			{
+				for ( var pos in items_order )
+					items_order_str += 'scayt_' + items_order[ pos ] + ( items_order.length != parseInt( pos, 10 ) + 1 ? ',' : '' );
+			}
+
+			// Register scayt rbc menu group.
+			if ( editor.config.scayt_contextMenuOntop )
+				// Put it on top of all context menu items
+				editor.config.menu_groups =  items_order_str + ',' + editor.config.menu_groups;
+			else
+				// Put it down
+				editor.config.menu_groups = editor.config.menu_groups + ',' +items_order_str;
 		},
 
@@ -300,74 +519,106 @@
 			// Add Options dialog.
 			CKEDITOR.dialog.add( commandName, CKEDITOR.getUrl( this.path + 'dialogs/options.js' ) );
+			// read ui tags
+			var confuiTabs = editor.config.scayt_uiTabs || '1,1,1';
+			var uiTabs =[];
+			// string to array convert
+			confuiTabs = confuiTabs.split( ',' );
+			// check array length ! always must be 3 filled with 1 or 0
+			for (var i=0,l=3; i<l; i++)
+			{
+				var flag = parseInt(confuiTabs[i] || '1' ,10);
+				uiTabs.push( flag );
+			}
 
 			var menuGroup = 'scaytButton';
 			editor.addMenuGroup( menuGroup );
-			editor.addMenuItems(
-				{
-					scaytToggle :
-					{
-						label : editor.lang.scayt.enable,
-						command : commandName,
-						group : menuGroup
-					},
-
-					scaytOptions :
-					{
-						label : editor.lang.scayt.options,
-						group : menuGroup,
-						onClick : function()
-						{
-							openPage = 'options';
-							editor.openDialog( commandName );
-						}
-					},
-
-					scaytLangs :
-					{
-						label : editor.lang.scayt.langs,
-						group : menuGroup,
-						onClick : function()
-						{
-							openPage = 'langs';
-							editor.openDialog( commandName );
-						}
-					},
-
-					scaytAbout :
-					{
-						label : editor.lang.scayt.about,
-						group : menuGroup,
-						onClick : function()
-						{
-							openPage = 'about';
-							editor.openDialog( commandName );
-						}
+			// combine menu items to render
+			var uiMuneItems = {};
+
+			// always added
+			uiMuneItems.scaytToggle =
+				{
+					label : editor.lang.scayt.enable,
+					command : commandName,
+					group : menuGroup
+				};
+
+			if (uiTabs[0] == 1)
+				uiMuneItems.scaytOptions =
+				{
+					label : editor.lang.scayt.options,
+					group : menuGroup,
+					onClick : function()
+					{
+						openPage = 'options';
+						editor.openDialog( commandName );
 					}
-				});
+				};
+
+			if (uiTabs[1] == 1)
+				uiMuneItems.scaytLangs =
+				{
+					label : editor.lang.scayt.langs,
+					group : menuGroup,
+					onClick : function()
+					{
+						openPage = 'langs';
+						editor.openDialog( commandName );
+					}
+				};
+			if (uiTabs[2] == 1)
+				uiMuneItems.scaytDict =
+				{
+					label : editor.lang.scayt.dictionariesTab,
+					group : menuGroup,
+					onClick : function()
+					{
+						openPage = 'dictionaries';
+						editor.openDialog( commandName );
+					}
+				};
+			// always added
+			uiMuneItems.scaytAbout =
+				{
+					label : editor.lang.scayt.about,
+					group : menuGroup,
+					onClick : function()
+					{
+						openPage = 'about';
+						editor.openDialog( commandName );
+					}
+				}
+			;
+
+			uiTabs[3] = 1; // about us tab is always on
+			plugin.uiTabs = uiTabs;
+
+			editor.addMenuItems( uiMuneItems );
 
 				editor.ui.add( 'Scayt', CKEDITOR.UI_MENUBUTTON,
 					{
 						label : editor.lang.scayt.title,
-						title : editor.lang.scayt.title,
+						title : CKEDITOR.env.opera ? editor.lang.scayt.opera_title : editor.lang.scayt.title,
 						className : 'cke_button_scayt',
 						onRender: function()
 						{
-						command.on( 'state', function()
+							command.on( 'state', function()
 							{
 								this.setState( command.state );
 							},
 							this);
-					},
-					onMenu : function()
-					{
-						var isEnabled = plugin.isScaytEnabled( editor );
-
-						editor.getMenuItem( 'scaytToggle' ).label = editor.lang.scayt[ isEnabled ? 'disable' : 'enable' ];
+						},
+						onMenu : function()
+						{
+							var isEnabled = plugin.isScaytEnabled( editor );
+
+							editor.getMenuItem( 'scaytToggle' ).label = editor.lang.scayt[ isEnabled ? 'disable' : 'enable' ];
 
 							return {
-								scaytToggle : CKEDITOR.TRISTATE_OFF,
-								scaytOptions : isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
-								scaytLangs : isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
-								scaytAbout : isEnabled ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED
+								scaytToggle  : CKEDITOR.TRISTATE_OFF,
+								scaytOptions : isEnabled && plugin.uiTabs[0] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
+								scaytLangs   : isEnabled && plugin.uiTabs[1] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
+								scaytDict    : isEnabled && plugin.uiTabs[2] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
+								scaytAbout   : isEnabled && plugin.uiTabs[3] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED
 							};
 						}
@@ -377,11 +628,16 @@
 			if ( editor.contextMenu && editor.addMenuItems )
 			{
-				editor.contextMenu.addListener( function( element )
-					{
-						if ( !( plugin.isScaytEnabled( editor ) && element ) )
+				editor.contextMenu.addListener( function(  )
+					{
+						if ( !plugin.isScaytEnabled( editor ) )
 							return null;
 
 						var scayt_control = plugin.getScayt( editor ),
-							word = scayt_control.getWord( element.$ );
+							node = scayt_control.getScaytNode();
+
+						if ( !node )
+							return null;
+
+							var word = scayt_control.getWord( node );
 
 						if ( !word )
@@ -391,5 +647,5 @@
 							_r = {},
 							items_suggestion = window.scayt.getSuggestion( word, sLang );
-						if (!items_suggestion || !items_suggestion.length )
+						if ( !items_suggestion || !items_suggestion.length )
 							return null;
 						// Remove unused commands and menuitems
@@ -407,5 +663,13 @@
 						mainSuggestions = {};
 
-						var moreSuggestionsUnable = false;
+						var moreSuggestionsUnable = editor.config.scayt_moreSuggestions || 'on';
+						var moreSuggestionsUnableAdded = false;
+
+						var maxSuggestions = editor.config.scayt_maxSuggestions;
+						( typeof maxSuggestions != 'number' ) && ( maxSuggestions = 5 );
+						!maxSuggestions && ( maxSuggestions = items_suggestion.length );
+
+						var contextCommands = editor.config.scayt_contextCommands || 'all';
+						contextCommands = contextCommands.split( '|' );
 
 						for ( var i = 0, l = items_suggestion.length; i < l; i += 1 )
@@ -420,7 +684,7 @@
 										}
 									};
-								})( element.$, items_suggestion[i] );
-
-							if ( i < editor.config.scayt_maxSuggestions )
+								})( node, items_suggestion[i] );
+
+							if ( i < maxSuggestions )
 							{
 								addButtonCommand( editor, 'button_' + commandName, items_suggestion[i],
@@ -429,59 +693,61 @@
 								mainSuggestions[ commandName ] = CKEDITOR.TRISTATE_OFF;
 							}
-							else
+							else if ( moreSuggestionsUnable == 'on' )
 							{
 								addButtonCommand( editor, 'button_' + commandName, items_suggestion[i],
 									commandName, exec, 'scayt_moresuggest', i + 1 );
 								moreSuggestions[ commandName ] = CKEDITOR.TRISTATE_OFF;
-								moreSuggestionsUnable = true;
+								moreSuggestionsUnableAdded = true;
 							}
 						}
-						if ( moreSuggestionsUnable )
-							// Rgister the More suggestions group;
+
+						if ( moreSuggestionsUnableAdded )
+						{
+							// Register the More suggestions group;
 							editor.addMenuItem( 'scayt_moresuggest',
+							{
+								label : editor.lang.scayt.moreSuggestions,
+								group : 'scayt_moresuggest',
+								order : 10,
+								getItems : function()
 								{
-									label : editor.lang.scayt.moreSuggestions,
-									group : 'scayt_moresuggest',
-									order : 10,
-									getItems : function()
-									{
-										return moreSuggestions;
-									}
-								});
-
-
-						var ignore_command =
-						{
-							exec: function()
-							{
-								scayt_control.ignore( element.$ );
-							}
-						};
-						var ignore_all_command =
-						{
-							exec: function()
-							{
-								scayt_control.ignoreAll( element.$ );
-							}
-						};
-						var addword_command =
-						{
-							exec: function()
-							{
-								window.scayt.addWordToUserDictionary( element.$ );
-							}
-						};
-
-						addButtonCommand( editor, 'ignore', editor.lang.scayt.ignore,
-							'scayt_ignore', ignore_command, 'scayt_control', 1);
-						addButtonCommand( editor, 'ignore_all', editor.lang.scayt.ignoreAll,
-							'scayt_ignore_all', ignore_all_command, 'scayt_control', 2);
-						addButtonCommand( editor, 'add_word', editor.lang.scayt.addWord,
-							'scayt_add_word', addword_command, 'scayt_control', 3);
-
-						mainSuggestions[ 'scayt_moresuggest' ] = CKEDITOR.TRISTATE_OFF;
-						mainSuggestions[ 'scayt_ignore' ] = CKEDITOR.TRISTATE_OFF;
-						mainSuggestions[ 'scayt_ignore_all' ] = CKEDITOR.TRISTATE_OFF;
-						mainSuggestions[ 'scayt_add_word' ] = CKEDITOR.TRISTATE_OFF;
+									return moreSuggestions;
+								}
+							});
+							mainSuggestions[ 'scayt_moresuggest' ] = CKEDITOR.TRISTATE_OFF;
+						}
+
+						if ( in_array( 'all', contextCommands )  || in_array( 'ignore', contextCommands)  )
+						{
+							var ignore_command = {
+								exec: function(){
+									scayt_control.ignore( node );
+								}
+							};
+							addButtonCommand( editor, 'ignore', editor.lang.scayt.ignore, 'scayt_ignore', ignore_command, 'scayt_control', 1 );
+							mainSuggestions[ 'scayt_ignore' ] = CKEDITOR.TRISTATE_OFF;
+						}
+
+						if ( in_array( 'all', contextCommands )  || in_array( 'ignoreall', contextCommands ) )
+						{
+							var ignore_all_command = {
+								exec: function(){
+									scayt_control.ignoreAll( node );
+								}
+							};
+							addButtonCommand(editor, 'ignore_all', editor.lang.scayt.ignoreAll, 'scayt_ignore_all', ignore_all_command, 'scayt_control', 2);
+							mainSuggestions['scayt_ignore_all'] = CKEDITOR.TRISTATE_OFF;
+						}
+
+						if ( in_array( 'all', contextCommands )  || in_array( 'add', contextCommands ) )
+						{
+							var addword_command = {
+								exec: function(){
+									window.scayt.addWordToUserDictionary( node );
+								}
+							};
+							addButtonCommand(editor, 'add_word', editor.lang.scayt.addWord, 'scayt_add_word', addword_command, 'scayt_control', 3);
+							mainSuggestions['scayt_add_word'] = CKEDITOR.TRISTATE_OFF;
+						}
 
 						if ( scayt_control.fireOnContextMenu )
@@ -492,20 +758,203 @@
 			}
 
+			var showInitialState = function()
+				{
+					editor.removeListener( 'showScaytState', showInitialState );
+
+					if ( !CKEDITOR.env.opera )
+						command.setState( plugin.isScaytEnabled( editor ) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF );
+					else
+						command.setState( CKEDITOR.TRISTATE_DISABLED );
+				};
+
+			editor.on( 'showScaytState', showInitialState );
+
+			if ( CKEDITOR.env.opera )
+			{
+				editor.on( 'instanceReady', function()
+				{
+					showInitialState();
+				});
+			}
+
 			// Start plugin
-			if ( editor.config.scayt_autoStartup )
-			{
-				var showInitialState = function()
-				{
-					editor.removeListener( 'showScaytState', showInitialState );
-					command.setState( plugin.isScaytEnabled( editor ) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF );
-				};
-				editor.on( 'showScaytState', showInitialState );
-
-				plugin.loadEngine( editor );
-			}
+			var autoStartup = editor.config.scayt_autoStartup;
+			if ( ( autoStartup == undefined ) || autoStartup )
+			{
+				editor.on( 'instanceReady', function()
+				{
+					plugin.loadEngine( editor );
+				});
+			}
+		},
+
+		afterInit : function( editor )
+		{
+			// Prevent word marker line from displaying in elements path and been removed when cleaning format. (#3570) (#4125)
+			var elementsPathFilters,
+					scaytFilter = function( element )
+					{
+						if ( element.hasAttribute( 'scaytid' ) )
+							return false;
+					};
+
+			if ( editor._.elementsPath && ( elementsPathFilters = editor._.elementsPath.filters ) )
+				elementsPathFilters.push( scaytFilter );
+
+			editor.addRemoveFormatFilter && editor.addRemoveFormatFilter( scaytFilter );
+
 		}
 	});
 })();
 
-CKEDITOR.config.scayt_maxSuggestions =  5;
-CKEDITOR.config.scayt_autoStartup = false;
+/**
+ * If enabled (true), turns on SCAYT automatically after loading the editor.
+ * @name CKEDITOR.config.scayt_autoStartup
+ * @type Boolean
+ * @default true
+ * @example
+ * config.scayt_autoStartup = false;
+ */
+
+/**
+ * Defines the number of SCAYT suggestions to show in the main context menu.
+ * The possible values are:
+ * <ul>
+ *	<li>0 (zero): All suggestions are displayed in the main context menu.</li>
+ *	<li>Positive number: The maximum number of suggestions to shown in context
+ *		menu. Other entries will be shown in "More Suggestions" sub-menu.</li>
+ *	<li>Negative number: No suggestions are shown in the main context menu. All
+ *		entries will be listed in the "Suggestions" sub-menu.</li>
+ * </ul>
+ * @name CKEDITOR.config.scayt_maxSuggestions
+ * @type Number
+ * @default 5
+ * @example
+ * // Display only three suggestions in the main context menu.
+ * config.scayt_maxSuggestions = 3;
+ * @example
+ * // Do not show the suggestions directly.
+ * config.scayt_maxSuggestions = -1;
+ */
+
+/**
+ * Sets the customer ID for SCAYT. Required for migration from free version
+ * with banner to paid version.
+ * @name CKEDITOR.config.scayt_customerid
+ * @type String
+ * @default ''
+ * @example
+ * // Load SCAYT using my customer ID.
+ * config.scayt_customerid  = 'your-encrypted-customer-id';
+ */
+
+/**
+ * Enables/disables the "More Suggestions" sub-menu in the context menu.
+ * The possible values are "on" or "off".
+ * @name CKEDITOR.config.scayt_moreSuggestions
+ * @type String
+ * @default 'on'
+ * @example
+ * // Disables the "More Suggestions" sub-menu.
+ * config.scayt_moreSuggestions = 'off';
+ */
+
+/**
+ * Customizes the display of SCAYT context menu commands ("Add Word", "Ignore"
+ * and "Ignore All"). It must be a string with one or more of the following
+ * words separated by a pipe ("|"):
+ * <ul>
+ *	<li>"off": disables all options.</li>
+ *	<li>"all": enables all options.</li>
+ *	<li>"ignore": enables the "Ignore" option.</li>
+ *	<li>"ignoreall": enables the "Ignore All" option.</li>
+ *	<li>"add": enables the "Add Word" option.</li>
+ * </ul>
+ * @name CKEDITOR.config.scayt_contextCommands
+ * @type String
+ * @default 'all'
+ * @example
+ * // Show only "Add Word" and "Ignore All" in the context menu.
+ * config.scayt_contextCommands = 'add|ignoreall';
+ */
+
+/**
+ * Sets the default spellchecking language for SCAYT.
+ * @name CKEDITOR.config.scayt_sLang
+ * @type String
+ * @default 'en_US'
+ * @example
+ * // Sets SCAYT to German.
+ * config.scayt_sLang = 'de_DE';
+ */
+
+/**
+ * Sets the visibility of the SCAYT tabs in the settings dialog and toolbar
+ * button. The value must contain a "1" (enabled) or "0" (disabled) number for
+ * each of the following entries, in this precise order, separated by a
+ * comma (","): "Options", "Languages" and "Dictionary".
+ * @name CKEDITOR.config.scayt_uiTabs
+ * @type String
+ * @default '1,1,1'
+ * @example
+ * // Hide the "Languages" tab.
+ * config.scayt_uiTabs = '1,0,1';
+ */
+
+
+/**
+ * Set the URL to SCAYT core. Required to switch to licensed version of SCAYT application.
+ * Further details at http://wiki.spellchecker.net/doku.php?id=3rd:wysiwyg:fckeditor:wscckf3l .
+ * @name CKEDITOR.config.scayt_srcUrl
+ * @type String
+ * @default ''
+ * @example
+ * config.scayt_srcUrl = "http://my-host/spellcheck/lf/scayt/scayt.js";
+ */
+
+/**
+ * Links SCAYT to custom dictionaries. It's a string containing dictionary ids
+ * separared by commas (","). Available only for licensed version.
+ * Further details at http://wiki.spellchecker.net/doku.php?id=custom_dictionary_support .
+ * @name CKEDITOR.config.scayt_customDictionaryIds
+ * @type String
+ * @default ''
+ * @example
+ * config.scayt_customDictionaryIds = '3021,3456,3478"';
+ */
+
+/**
+ * Makes it possible to activate a custom dictionary on SCAYT. The user
+ * dictionary name must be used. Available only for licensed version.
+ * @name CKEDITOR.config.scayt_userDictionaryName
+ * @type String
+ * @default ''
+ * @example
+ * config.scayt_userDictionaryName = 'MyDictionary';
+ */
+
+/**
+ * Makes it possible to place the SCAYT context menu items above others.
+ * @name CKEDITOR.config.scayt_contextMenuOntop
+ * @type Boolean
+ * @default false
+ * @example
+ * config.scayt_contextMenuOntop = true;
+ */
+
+/**
+ * Define order of placing of SCAYT context menu items by groups.
+ * It must be a string with one or more of the following
+ * words separated by a pipe ("|"):
+ * <ul>
+ *     <li>'suggest'     - main suggestion word list,</li>
+ *     <li>'moresuggest' - more suggestions word list,</li>
+ *     <li>'control'     - SCAYT commands, such as 'Ignore' and 'Add Word'</li>
+ * </ul>
+ *
+ * @name CKEDITOR.config.scayt_contextMenuItemsOrder
+ * @type String
+ * @default 'suggest|moresuggest|control'
+ * @example
+ * config.scayt_contextMenuItemsOrder = 'moresuggest|control|suggest';
+ */
Index: /CKEditor/branches/features/adobeair/_source/plugins/selection/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/selection/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/selection/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -73,4 +73,5 @@
 	var selectAllCmd =
 	{
+		modes : { wysiwyg : 1, source : 1 },
 		exec : function( editor )
 		{
@@ -81,5 +82,16 @@
 					break;
 				case 'source' :
-					// TODO
+					// Select the contents of the textarea
+					var textarea = editor.textarea.$ ;
+					if ( CKEDITOR.env.ie )
+					{
+						textarea.createTextRange().execCommand( 'SelectAll' ) ;
+					}
+					else
+					{
+						textarea.selectionStart = 0 ;
+						textarea.selectionEnd = textarea.value.length ;
+					}
+					textarea.focus() ;
 			}
 		},
@@ -93,5 +105,6 @@
 			editor.on( 'contentDom', function()
 				{
-					var doc = editor.document;
+					var doc = editor.document,
+						body = doc.getBody();
 
 					if ( CKEDITOR.env.ie )
@@ -108,6 +121,11 @@
 						// possible to restore the selection before click
 						// events get executed.
-						doc.on( 'focusin', function()
+						body.on( 'focusin', function( evt )
 							{
+								// If there are elements with layout they fire this event but
+								// it must be ignored to allow edit its contents #4682
+								if ( evt.data.$.srcElement.nodeName != 'BODY' )
+									return;
+
 								// If we have saved a range, restore it at this
 								// point.
@@ -126,5 +144,5 @@
 							});
 
-						editor.window.on( 'focus', function()
+						body.on( 'focus', function()
 							{
 								// Enable selections to be saved.
@@ -134,23 +152,29 @@
 							});
 
-						// Check document selection before 'blur' fired, this
-						// will prevent us from breaking text selection somewhere
-						// else on the host page.(#3909)
-						editor.document.on( 'beforedeactivate', function()
+						body.on( 'beforedeactivate', function( evt )
 							{
+								// Ignore this event if it's caused by focus switch between
+								// internal editable control type elements, e.g. layouted paragraph. (#4682)
+								if ( evt.data.$.toElement )
+									return;
+
 								// Disable selections from being saved.
 								saveEnabled = false;
-
-								// IE may leave the selection still inside the
-								// document. Let's force it to be removed.
-								// TODO: The following has effect for
-								// collapsed selections.
-								editor.document.$.execCommand( 'Unselect' );
 							});
+
+						// IE before version 8 will leave cursor blinking inside the document after
+						// editor blurred unless we clean up the selection. (#4716)
+						if ( CKEDITOR.env.ie && CKEDITOR.env.version < 8 )
+						{
+							doc.getWindow().on( 'blur', function( evt )
+							{
+								editor.document.$.selection.empty();
+							});
+						}
 
 						// IE fires the "selectionchange" event when clicking
 						// inside a selection. We don't want to capture that.
-						doc.on( 'mousedown', disableSave );
-						doc.on( 'mouseup',
+						body.on( 'mousedown', disableSave );
+						body.on( 'mouseup',
 							function()
 							{
@@ -163,6 +187,6 @@
 							});
 
-						doc.on( 'keydown', disableSave );
-						doc.on( 'keyup',
+						body.on( 'keydown', disableSave );
+						body.on( 'keyup',
 							function()
 							{
@@ -186,5 +210,6 @@
 							{
 								var doc = editor.document,
-									sel = doc && doc.$.selection;
+									sel = editor.getSelection(),
+									nativeSel = sel && sel.getNative();
 
 								// There is a very specific case, when clicking
@@ -196,5 +221,5 @@
 								// such situation we have to test the range, to
 								// be sure it's valid.
-								if ( testIt && sel && sel.type == 'None' )
+								if ( testIt && nativeSel && nativeSel.type == 'None' )
 								{
 									// The "InsertImage" command can be used to
@@ -209,5 +234,14 @@
 								}
 
-								savedRange = sel && sel.createRange();
+								// Avoid saving selection from within text input. (#5747)
+								var parentTag;
+								if ( nativeSel && nativeSel.type == 'Text'
+									&& ( parentTag = nativeSel.createRange().parentElement().nodeName.toLowerCase() )
+									&& parentTag in { input: 1, textarea : 1 } )
+								{
+									return;
+								}
+
+								savedRange = nativeSel && sel.getRanges()[ 0 ];
 
 								checkSelectionChangeTimeout.call( editor );
@@ -334,5 +368,5 @@
 	var styleObjectElements =
 	{
-		img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1,
+		img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,
 		a:1, input:1, form:1, select:1, textarea:1, button:1, fieldset:1, th:1, thead:1, tfoot:1
 	};
@@ -468,15 +502,19 @@
 
 								testRange.moveToElementText( child );
+
+								var comparisonStart = testRange.compareEndPoints( 'StartToStart', range ),
+									comparisonEnd = testRange.compareEndPoints( 'EndToStart', range );
+
 								testRange.collapse();
 
-								var comparison = testRange.compareEndPoints( 'StartToStart', range );
-
-								if ( comparison > 0 )
+								if ( comparisonStart > 0 )
 									break;
-								else if ( comparison === 0 )
-									return {
-										container : parent,
-										offset : i
-									};
+								// When selection stay at the side of certain self-closing elements, e.g. BR,
+								// our comparison will never shows an equality. (#4824)
+								else if ( !comparisonStart
+									|| comparisonEnd == 1 && comparisonStart == -1 )
+									return { container : parent, offset : i };
+								else if ( !comparisonEnd )
+									return { container : parent, offset : i + 1 };
 
 								testRange = null;
@@ -497,6 +535,15 @@
 						var distance = testRange.text.replace( /(\r\n|\r)/g, '\n' ).length;
 
-						while ( distance > 0 )
-							distance -= siblings[ --i ].nodeValue.length;
+						try
+						{
+							while ( distance > 0 )
+								distance -= siblings[ --i ].nodeValue.length;
+						}
+						// Measurement in IE could be somtimes wrong because of <select> element. (#4611)
+						catch( e )
+						{
+							distance = 0;
+						}
+
 
 						if ( distance === 0 )
@@ -637,10 +684,12 @@
 							// selected node on the start which doesn't have
 							// visual impact. ( #3231 )
-							while( true )
+							while ( true )
 							{
 								var startContainer = range.startContainer,
 									startOffset = range.startOffset;
+								// Limit the fix only to non-block elements.(#3950)
 								if ( startOffset == ( startContainer.getChildCount ?
-									startContainer.getChildCount() : startContainer.getLength() ) )
+									 startContainer.getChildCount() : startContainer.getLength() )
+									 && !startContainer.isBlockBoundary() )
 									range.setStartAfter( startContainer );
 								else break;
@@ -702,24 +751,32 @@
 				return cache.selectedElement;
 
-			var node;
-
-			if ( this.getType() == CKEDITOR.SELECTION_ELEMENT )
-			{
-				var sel = this.getNative();
-
-				if ( CKEDITOR.env.ie )
-				{
-					try
-					{
-						node = sel.createRange().item(0);
+			var self = this;
+
+			var node = CKEDITOR.tools.tryThese(
+				// Is it native IE control type selection?
+				function()
+				{
+					return self.getNative().createRange().item( 0 );
+				},
+				// Figure it out by checking if there's a single enclosed
+				// node of the range.
+				function()
+				{
+					var range  = self.getRanges()[ 0 ],
+						enclosed,
+						selected;
+
+					// Check first any enclosed element, e.g. <ul>[<li><a href="#">item</a></li>]</ul>
+					for ( var i = 2; i && !( ( enclosed = range.getEnclosedNode() )
+						&& ( enclosed.type == CKEDITOR.NODE_ELEMENT )
+						&& styleObjectElements[ enclosed.getName() ]
+						&& ( selected = enclosed ) ); i-- )
+					{
+						// Then check any deep wrapped element, e.g. [<b><i><img /></i></b>]
+						range.shrink( CKEDITOR.SHRINK_ELEMENT );
 					}
-					catch(e) {}
-				}
-				else
-				{
-					var range = sel.getRangeAt( 0 );
-					node = range.startContainer.childNodes[ range.startOffset ];
-				}
-			}
+
+					return  selected.$;
+				});
 
 			return cache.selectedElement = ( node ? new CKEDITOR.dom.element( node ) : null );
@@ -813,4 +870,8 @@
 					range.moveToElementText( element.$ );
 					range.select();
+				}
+				finally
+				{
+					this.document.fire( 'selectionchange' );
 				}
 
@@ -940,7 +1001,29 @@
 			this.selectRanges( ranges );
 			return this;
+		},
+
+		getCommonAncestor : function()
+		{
+			var ranges = this.getRanges(),
+				startNode = ranges[ 0 ].startContainer,
+				endNode = ranges[ ranges.length - 1 ].endContainer;
+			return startNode.getCommonAncestor( endNode );
+		},
+
+		// Moving scroll bar to the current selection's start position.
+		scrollIntoView : function()
+		{
+			// If we have split the block, adds a temporary span at the
+			// range position and scroll relatively to it.
+			var start = this.getStartElement();
+			start.scrollIntoView();
 		}
 	};
 })();
+( function()
+{
+var notWhitespaces = CKEDITOR.dom.walker.whitespaces( true );
+var fillerTextRegex = /\ufeff|\u00a0/;
+var nonCells = { table:1,tbody:1,tr:1 };
 
 CKEDITOR.dom.range.prototype.select =
@@ -953,4 +1036,12 @@
 			var dummySpan;
 
+			// IE doesn't support selecting the entire table row/cell, move the selection into cells, e.g.
+			// <table><tbody><tr>[<td>cell</b></td>... => <table><tbody><tr><td>[cell</td>...
+			if ( this.startContainer.type == CKEDITOR.NODE_ELEMENT && this.startContainer.getName() in nonCells
+				|| this.endContainer.type == CKEDITOR.NODE_ELEMENT && this.endContainer.getName() in nonCells )
+			{
+				this.shrink( CKEDITOR.NODE_ELEMENT, true );
+			}
+
 			var bookmark = this.createBookmark();
 
@@ -987,5 +1078,7 @@
 				// Actually, we are using this flag just to avoid using this hack in all
 				// situations, but just on those needed.
-				isStartMarkerAlone = forceExpand || !startNode.hasPrevious() || ( startNode.getPrevious().is && startNode.getPrevious().is( 'br' ) );
+				var next = startNode.getNext( notWhitespaces );
+				isStartMarkerAlone = ( !( next && next.getText && next.getText().match( fillerTextRegex ) )     // already a filler there?
+									  && ( forceExpand || !startNode.hasPrevious() || ( startNode.getPrevious().is && startNode.getPrevious().is( 'br' ) ) ) );
 
 				// Append a temporary <span>&#65279;</span> before the selection.
@@ -1027,4 +1120,5 @@
 					ieRange.select();
 
+				this.moveToPosition( dummySpan, CKEDITOR.POSITION_BEFORE_START );
 				dummySpan.remove();
 			}
@@ -1035,4 +1129,6 @@
 				ieRange.select();
 			}
+
+			this.document.fire( 'selectionchange' );
 		}
 	:
@@ -1071,2 +1167,3 @@
 			selection.addRange( nativeRange );
 		};
+} )();
Index: /CKEditor/branches/features/adobeair/_source/plugins/showblocks/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/showblocks/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/showblocks/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -90,4 +90,5 @@
 	{
 		preserveState : true,
+		editorFocus : false,
 
 		exec : function ( editor )
Index: /CKEditor/branches/features/adobeair/_source/plugins/showborders/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/showborders/plugin.js	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_source/plugins/showborders/plugin.js	(revision 5613)
@@ -0,0 +1,167 @@
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview The "show border" plugin. The command display visible outline
+ * border line around all table elements if table doesn't have a none-zero 'border' attribute specified.
+ */
+
+(function()
+{
+	var showBorderClassName = 'cke_show_border',
+		cssStyleText,
+		cssTemplate =
+		// TODO: For IE6, we don't have child selector support,
+		// where nested table cells could be incorrect.
+		( CKEDITOR.env.ie6Compat ?
+		  [
+			'.%1 table.%2,',
+			 '.%1 table.%2 td, .%1 table.%2 th,',
+			 '{',
+				'border : #d3d3d3 1px dotted',
+			 '}'
+		  ] :
+		  [
+			 '.%1 table.%2,',
+			 '.%1 table.%2 > tr > td, .%1 table.%2 > tr > th,',
+			 '.%1 table.%2 > tbody > tr > td, .%1 table.%2 > tbody > tr > th,',
+			 '.%1 table.%2 > thead > tr > td, .%1 table.%2 > thead > tr > th,',
+			 '.%1 table.%2 > tfoot > tr > td, .%1 table.%2 > tfoot > tr > th',
+			 '{',
+				'border : #d3d3d3 1px dotted',
+			 '}'
+		  ] ).join( '' );
+
+	cssStyleText = cssTemplate.replace( /%2/g, showBorderClassName ).replace( /%1/g, 'cke_show_borders ' );
+
+	var commandDefinition =
+	{
+		preserveState : true,
+		editorFocus : false,
+
+		exec : function ( editor )
+		{
+			this.toggleState();
+			this.refresh( editor );
+		},
+
+		refresh : function( editor )
+		{
+			var funcName = ( this.state == CKEDITOR.TRISTATE_ON ) ? 'addClass' : 'removeClass';
+			editor.document.getBody()[ funcName ]( 'cke_show_borders' );
+		}
+	};
+
+	CKEDITOR.plugins.add( 'showborders',
+	{
+		requires : [ 'wysiwygarea' ],
+		modes : { 'wysiwyg' : 1 },
+
+		init : function( editor )
+		{
+
+			var command = editor.addCommand( 'showborders', commandDefinition );
+			command.canUndo = false;
+
+			if ( editor.config.startupShowBorders !== false )
+				command.setState( CKEDITOR.TRISTATE_ON );
+
+			editor.addCss( cssStyleText );
+
+			// Refresh the command on setData.
+			editor.on( 'mode', function()
+				{
+					if ( command.state != CKEDITOR.TRISTATE_DISABLED )
+						command.refresh( editor );
+				}, null, null, 100 );
+
+			// Refresh the command on wysiwyg frame reloads.
+			editor.on( 'contentDom', function()
+				{
+					if ( command.state != CKEDITOR.TRISTATE_DISABLED )
+						command.refresh( editor );
+				});
+		},
+
+		afterInit : function( editor )
+		{
+			var dataProcessor = editor.dataProcessor,
+				dataFilter = dataProcessor && dataProcessor.dataFilter,
+				htmlFilter = dataProcessor && dataProcessor.htmlFilter;
+
+			if ( dataFilter )
+			{
+				dataFilter.addRules(
+					{
+						elements :
+						{
+							'table' : function( element )
+							{
+								var attributes = element.attributes,
+									cssClass = attributes[ 'class' ],
+									border = parseInt( attributes.border, 10 );
+
+								if ( !border || border <= 0 )
+									attributes[ 'class' ] = ( cssClass || '' ) + ' ' + showBorderClassName;
+							}
+						}
+					} );
+			}
+
+			if ( htmlFilter )
+			{
+				htmlFilter.addRules(
+				{
+					elements :
+					{
+						'table' : function( table )
+						{
+							var attributes = table.attributes,
+								cssClass = attributes[ 'class' ];
+
+							cssClass && ( attributes[ 'class' ] =
+							              cssClass.replace( showBorderClassName, '' )
+									              .replace( /\s{2}/, ' ' )
+												  .replace( /^\s+|\s+$/, '' ) );
+						}
+					}
+				} );
+			}
+		}
+	});
+
+	// Table dialog must be aware of it.
+	CKEDITOR.on( 'dialogDefinition', function( ev )
+	{
+		var dialogName = ev.data.name;
+
+		if ( dialogName == 'table' || dialogName == 'tableProperties' )
+		{
+			var dialogDefinition = ev.data.definition,
+				infoTab = dialogDefinition.getContents( 'info' ),
+				borderField = infoTab.get( 'txtBorder' ),
+				originalCommit = borderField.commit;
+
+			borderField.commit = CKEDITOR.tools.override( originalCommit, function( org )
+			{
+				return function( data, selectedTable )
+					{
+						org.apply( this, arguments );
+						var value = parseInt( this.getValue(), 10 );
+						selectedTable[ ( !value || value <= 0 ) ? 'addClass' : 'removeClass' ]( showBorderClassName );
+					};
+			} );
+		}
+	});
+
+} )();
+
+/**
+ * Whether to automatically enable the "show borders" command when the editor loads.
+ * @type Boolean
+ * @default true
+ * @example
+ * config.startupShowBorders = false;
+ */
Index: /CKEditor/branches/features/adobeair/_source/plugins/smiley/dialogs/smiley.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/smiley/dialogs/smiley.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/smiley/dialogs/smiley.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -7,4 +7,5 @@
 {
 	var config = editor.config,
+		lang = editor.lang.smiley,
 		images = config.smiley_images,
 		columns = 8,
@@ -45,4 +46,5 @@
 
 		dialog.hide();
+		evt.data.preventDefault();
 	};
 
@@ -54,26 +56,7 @@
 
 		var keystroke = ev.getKeystroke();
+		var rtl = editor.lang.dir == 'rtl';
 		switch ( keystroke )
 		{
-			// RIGHT-ARROW
-			case 39 :
-				// relative is TD
-				if ( ( relative = element.getParent().getNext() ) )
-				{
-					nodeToMove = relative.getChild( 0 );
-					nodeToMove.focus();
-				}
-				ev.preventDefault();
-				break;
-			// LEFT-ARROW
-			case 37 :
-				// relative is TD
-				if ( ( relative = element.getParent().getPrevious() ) )
-				{
-					nodeToMove = relative.getChild( 0 );
-					nodeToMove.focus();
-				}
-				ev.preventDefault();
-				break;
 			// UP-ARROW
 			case 38 :
@@ -103,4 +86,7 @@
 				ev.preventDefault();
 				break;
+
+			// RIGHT-ARROW
+			case rtl ? 37 : 39 :
 			// TAB
 			case 9 :
@@ -121,4 +107,7 @@
 				}
 				break;
+
+			// LEFT-ARROW
+			case rtl ? 39 : 37 :
 			// SHIFT + TAB
 			case CKEDITOR.SHIFT + 9 :
@@ -145,19 +134,28 @@
 
 	// Build the HTML for the smiley images table.
+	var labelId = 'smiley_emtions_label' + CKEDITOR.tools.getNextNumber();
 	var html =
 	[
-		'<table cellspacing="2" cellpadding="2"',
+		'<div>' +
+		'<span id="' + labelId + '" class="cke_voice_label">' + lang.options +'</span>',
+		'<table role="listbox" aria-labelledby="' + labelId + '" style="width:100%;height:100%" cellspacing="2" cellpadding="2"',
 		CKEDITOR.env.ie && CKEDITOR.env.quirks ? ' style="position:absolute;"' : '',
 		'><tbody>'
 	];
 
-	for ( i = 0 ; i < images.length ; i++ )
+	var size = images.length;
+	for ( i = 0 ; i < size ; i++ )
 	{
 		if ( i % columns === 0 )
 			html.push( '<tr>' );
 
+		var smileyLabelId = 'cke_smile_label_' + i + '_' + CKEDITOR.tools.getNextNumber();
 		html.push(
 			'<td class="cke_dark_background cke_hand cke_centered" style="vertical-align: middle;">' +
-				'<a href="javascript:void(0)" class="cke_smile" tabindex="-1" onkeydown="CKEDITOR.tools.callFunction( ', onKeydown, ', event, this );">',
+				'<a href="javascript:void(0)" role="option"',
+					' aria-posinset="' + ( i +1 ) + '"',
+					' aria-setsize="' + size + '"',
+					' aria-labelledby="' + smileyLabelId + '"',
+					' class="cke_smile" tabindex="-1" onkeydown="CKEDITOR.tools.callFunction( ', onKeydown, ', event, this );">',
 					'<img class="hand" title="', config.smiley_descriptions[i], '"' +
 						' cke_src="', CKEDITOR.tools.htmlEncode( config.smiley_path + images[ i ] ), '" alt="', config.smiley_descriptions[i], '"',
@@ -166,4 +164,5 @@
 						( CKEDITOR.env.ie ? ' onload="this.setAttribute(\'width\', 2); this.removeAttribute(\'width\');" ' : '' ),
 					'>' +
+					'<span id="' + smileyLabelId + '" class="cke_voice_label">' +config.smiley_descriptions[ i ]  + '</span>' +
 				'</a>',
  			'</td>' );
@@ -180,5 +179,5 @@
 	}
 
-	html.push( '</tbody></table>' );
+	html.push( '</tbody></table></div>' );
 
 	var smileySelector =
@@ -192,9 +191,9 @@
 		focus : function()
  		{
-			var firstSmile = this.getElement().getChild( [0, 0, 0, 0] );
+			var firstSmile = this.getElement().getElementsByTag( 'a' ).getItem( 0 );
 			firstSmile.focus();
  		},
 		onClick : onClick,
-		style : 'width: 100%; height: 100%; border-collapse: separate;'
+		style : 'width: 100%; border-collapse: separate;'
 	};
 
Index: /CKEditor/branches/features/adobeair/_source/plugins/smiley/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/smiley/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/smiley/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -10,4 +10,5 @@
 	init : function( editor )
 	{
+		editor.config.smiley_path = editor.config.smiley_path || ( this.path + 'images/' );
 		editor.addCommand( 'smiley', new CKEDITOR.dialogCommand( 'smiley' ) );
 		editor.ui.addButton( 'Smiley',
@@ -23,4 +24,5 @@
  * The base path used to build the URL for the smiley images. It must end with
  * a slash.
+ * @name CKEDITOR.config.smiley_path
  * @type String
  * @default {@link CKEDITOR.basePath} + 'plugins/smiley/images/'
@@ -30,7 +32,4 @@
  * config.smiley_path = '/images/smileys/';
  */
-CKEDITOR.config.smiley_path = CKEDITOR.basePath +
-	'_source/' +		// %REMOVE_LINE%
-	'plugins/smiley/images/';
 
 /**
@@ -60,16 +59,26 @@
  * setting.
  * @type Array
- * @default (see example)
+ * @default  The textual descriptions of smiley.
  * @example
- * // This is actually the default value.
- * config.smiley_descriptions = [
- *     ':)', ':(', ';)', ':D', ':/', ':P',
- *     '', '', '', '', '', '',
- *     '', ';(', '', '', '', '',
- *     '', ':kiss', '' ];
+ * // Default settings.
+ * config.smiley_descriptions =
+ *     [
+ *         'smiley', 'sad', 'wink', 'laugh', 'frown', 'cheeky', 'blush', 'surprise',
+ *         'indecision', 'angry', 'angel', 'cool', 'devil', 'crying', 'enlightened', 'no',
+ *         'yes', 'heart', 'broken heart', 'kiss', 'mail'
+ *     ];
+ * @example
+ * // Use textual emoticons as description.
+ * config.smiley_descriptions =
+ *     [
+ *         ':)', ':(', ';)', ':D', ':/', ':P', ':*)', ':-o',
+ *         ':|', '>:(', 'o:)', '8-)', '>:-)', ';(', '', '', '',
+ *         '', '', ':-*', ''
+ *     ];
  */
-CKEDITOR.config.smiley_descriptions = [
-	':)', ':(', ';)', ':D', ':/', ':P',
-	'', '', '', '', '', '',
-	'', ';(', '', '', '', '',
-	'', ':kiss', '' ];
+CKEDITOR.config.smiley_descriptions =
+	[
+		'smiley', 'sad', 'wink', 'laugh', 'frown', 'cheeky', 'blush', 'surprise',
+		'indecision', 'angry', 'angel', 'cool', 'devil', 'crying', 'enlightened', 'no',
+		'yes', 'heart', 'broken heart', 'kiss', 'mail'
+	];
Index: /CKEditor/branches/features/adobeair/_source/plugins/sourcearea/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/sourcearea/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/sourcearea/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -15,5 +15,6 @@
 	init : function( editor )
 	{
-		var sourcearea = CKEDITOR.plugins.sourcearea;
+		var sourcearea = CKEDITOR.plugins.sourcearea,
+			win = CKEDITOR.document.getWindow();
 
 		editor.on( 'editingBlockReady', function()
@@ -34,5 +35,7 @@
 								{
 									dir : 'ltr',
-									tabIndex : -1
+									tabIndex : CKEDITOR.env.webkit ? -1 : editor.tabIndex,
+									'role' : 'textbox',
+									'aria-label' : editor.lang.editorTitle.replace( '%1', editor.name )
 								});
 							textarea.addClass( 'cke_source' );
@@ -49,27 +52,24 @@
 							};
 
-							// The textarea height/width='100%' doesn't
-							// constraint to the 'td' in IE strick mode
+							// Having to make <textarea> fixed sized to conque the following bugs:
+							// 1. The textarea height/width='100%' doesn't constraint to the 'td' in IE6/7.
+							// 2. Unexpected vertical-scrolling behavior happens whenever focus is moving out of editor
+							// if text content within it has overflowed. (#4762)
 							if ( CKEDITOR.env.ie )
 							{
-								if ( !CKEDITOR.env.ie8Compat )
-								{
-									onResize = function()
-										{
-											// Holder rectange size is stretched by textarea,
-											// so hide it just for a moment.
-											textarea.hide();
-											textarea.setStyle( 'height', holderElement.$.clientHeight + 'px' );
-											// When we have proper holder size, show textarea again.
-											textarea.show();
-										};
-									editor.on( 'resize', onResize );
-									editor.on( 'afterCommandExec', function( event )
-									{
-										if ( event.data.name == 'toolbarCollapse' )
-											onResize();
-									});
-									styles.height = holderElement.$.clientHeight + 'px';
-								}
+								onResize = function()
+								{
+									// Holder rectange size is stretched by textarea,
+									// so hide it just for a moment.
+									textarea.hide();
+									textarea.setStyle( 'height', holderElement.$.clientHeight + 'px' );
+									textarea.setStyle( 'width', holderElement.$.clientWidth + 'px' );
+									// When we have proper holder size, show textarea again.
+									textarea.show();
+								};
+
+								editor.on( 'resize', onResize );
+								win.on( 'resize', onResize );
+								setTimeout( onResize, 0 );
 							}
 							else
@@ -91,4 +91,6 @@
 							textarea.setStyles( styles );
 
+							editor.fire( 'ariaWidget', textarea );
+
 							textarea.on( 'blur', function()
 								{
@@ -122,4 +124,5 @@
 						{
 							textarea.setValue( data );
+							editor.fire( 'dataReady' );
 						},
 
@@ -136,8 +139,12 @@
 						unload : function( holderElement )
 						{
+							textarea.clearCustomData();
 							editor.textarea = textarea = null;
 
 							if ( onResize )
+							{
 								editor.removeListener( 'resize', onResize );
+								win.removeListener( 'resize', onResize );
+							}
 
 							if ( CKEDITOR.env.ie && CKEDITOR.env.version < 8 )
@@ -185,4 +192,5 @@
 		{
 			modes : { wysiwyg:1, source:1 },
+			editorFocus : false,
 
 			exec : function( editor )
Index: /CKEditor/branches/features/adobeair/_source/plugins/specialchar/dialogs/specialchar.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/specialchar/dialogs/specialchar.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/specialchar/dialogs/specialchar.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -10,5 +10,30 @@
 	 * @type {CKEDITOR.dialog}
 	 */
-	var dialog;
+	var dialog,
+		lang = editor.lang.specialChar;
+
+	var insertSpecialChar = function ( specialChar )
+	{
+		var selection = editor.getSelection(),
+			ranges	  = selection.getRanges(),
+			range, textNode;
+
+		editor.fire( 'saveSnapshot' );
+
+		for ( var i = 0, len = ranges.length ; i < len ; i++ )
+		{
+			range = ranges[ i ];
+			range.deleteContents();
+
+			textNode =  CKEDITOR.dom.element.createFromHtml( specialChar );
+			range.insertNode( textNode );
+		}
+
+		range.moveToPosition( textNode, CKEDITOR.POSITION_AFTER_END );
+		range.select();
+
+		editor.fire( 'saveSnapshot' );
+	};
+
 	var onChoice = function( evt )
 	{
@@ -23,5 +48,10 @@
 			target.removeClass( "cke_light_background" );
 			dialog.hide();
-			editor.insertHtml( value );
+
+			// Firefox has bug on insert chars into a element use its own API. (#5170)
+			if ( CKEDITOR.env.gecko )
+				insertSpecialChar( value );
+			else
+				editor.insertHtml( value );
 		}
 	};
@@ -81,34 +111,8 @@
 		var relative, nodeToMove;
 		var keystroke = ev.getKeystroke();
+		var rtl = editor.lang.dir == 'rtl';
 
 		switch ( keystroke )
 		{
-			// RIGHT-ARROW
-			case 39 :
-				// relative is TD
-				if ( ( relative = element.getParent().getNext() ) )
-				{
-					nodeToMove = relative.getChild( 0 );
-					if ( nodeToMove.type == 1 )
-					{
-						nodeToMove.focus();
-						onBlur( null, element );
-						onFocus( null, nodeToMove );
-					}
-				}
-				ev.preventDefault();
-				break;
-			// LEFT-ARROW
-			case 37 :
-				// relative is TD
-				if ( ( relative = element.getParent().getPrevious() ) )
-				{
-					nodeToMove = relative.getChild( 0 );
-					nodeToMove.focus();
-					onBlur( null, element );
-					onFocus( null, nodeToMove );
-				}
-				ev.preventDefault();
-				break;
 			// UP-ARROW
 			case 38 :
@@ -144,4 +148,7 @@
 				ev.preventDefault();
 				break;
+
+			// RIGHT-ARROW
+			case rtl ? 37 : 39 :
 			// TAB
 			case 9 :
@@ -175,4 +182,7 @@
 				}
 				break;
+
+			// LEFT-ARROW
+			case rtl ? 39 : 37 :
 			// SHIFT + TAB
 			case CKEDITOR.SHIFT + 9 :
@@ -205,5 +215,5 @@
 
 	return {
-		title : editor.lang.specialChar.title,
+		title : lang.title,
 		minWidth : 430,
 		minHeight : 280,
@@ -220,24 +230,31 @@
 				'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p',
 				'q','r','s','t','u','v','w','x','y','z',
-				'{','|','}','~','&euro;','&lsquo;','&rsquo;','&rsquo;','&ldquo;',
-				'&rdquo;','&ndash;','&mdash;','&iexcl;','&cent;','&pound;',
-				'&curren;','&yen;','&brvbar;','&sect;','&uml;','&copy;','&ordf;',
-				'&laquo;','&not;','&reg;','&macr;','&deg;','&plusmn;','&sup2;',
-				'&sup3;','&acute;','&micro;','&para;','&middot;','&cedil;',
-				'&sup1;','&ordm;','&raquo;','&frac14;','&frac12;','&frac34;',
-				'&iquest;','&Agrave;','&Aacute;','&Acirc;','&Atilde;','&Auml;',
-				'&Aring;','&AElig;','&Ccedil;','&Egrave;','&Eacute;','&Ecirc;',
-				'&Euml;','&Igrave;','&Iacute;','&Icirc;','&Iuml;','&ETH;',
-				'&Ntilde;','&Ograve;','&Oacute;','&Ocirc;','&Otilde;','&Ouml;',
-				'&times;','&Oslash;','&Ugrave;','&Uacute;','&Ucirc;','&Uuml;',
-				'&Yacute;','&THORN;','&szlig;','&agrave;','&aacute;','&acirc;',
-				'&atilde;','&auml;','&aring;','&aelig;','&ccedil;','&egrave;',
-				'&eacute;','&ecirc;','&euml;','&igrave;','&iacute;','&icirc;',
-				'&iuml;','&eth;','&ntilde;','&ograve;','&oacute;','&ocirc;',
-				'&otilde;','&ouml;','&divide;','&oslash;','&ugrave;','&uacute;',
-				'&ucirc;','&uuml;','&uuml;','&yacute;','&thorn;','&yuml;',
-				'&OElig;','&oelig;','&#372;','&#374','&#373','&#375;','&sbquo;',
-				'&#8219;','&bdquo;','&hellip;','&trade;','&#9658;','&bull;',
-				'&rarr;','&rArr;','&hArr;','&diams;','&asymp;'
+				'{','|','}','~','&euro;(EURO SIGN)','&lsquo;(LEFT SINGLE QUOTATION MARK)','&rsquo;(RIGHT SINGLE QUOTATION MARK)','&ldquo;(LEFT DOUBLE QUOTATION MARK)',
+				'&rdquo;(RIGHT DOUBLE QUOTATION MARK)','&ndash;(EN DASH)','&mdash;(EM DASH)','&iexcl;(INVERTED EXCLAMATION MARK)','&cent;(CENT SIGN)','&pound;(POUND SIGN)',
+				'&curren;(CURRENCY SIGN)','&yen;(YEN SIGN)','&brvbar;(BROKEN BAR)','&sect;(SECTION SIGN)','&uml;(DIAERESIS)','&copy;(COPYRIGHT SIGN)','&ordf;(FEMININE ORDINAL INDICATOR)',
+				'&laquo;(LEFT-POINTING DOUBLE ANGLE QUOTATION MARK)','&not;(NOT SIGN)','&reg;(REGISTERED SIGN)','&macr;(MACRON)','&deg;(DEGREE SIGN)','&plusmn;(PLUS-MINUS SIGN)','&sup2;(SUPERSCRIPT TWO)',
+				'&sup3;(SUPERSCRIPT THREE)','&acute;(ACUTE ACCENT)','&micro;(MICRO SIGN)','&para;(PILCROW SIGN)','&middot;(MIDDLE DOT)','&cedil;(CEDILLA)',
+				'&sup1;(SUPERSCRIPT ONE)','&ordm;(MASCULINE ORDINAL INDICATOR)','&raquo;(RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK)','&frac14;(VULGAR FRACTION ONE QUARTER)','&frac12;(VULGAR FRACTION ONE HALF)','&frac34;(VULGAR FRACTION THREE QUARTERS)',
+				'&iquest;(INVERTED QUESTION MARK)','&Agrave;(LATIN CAPITAL LETTER A WITH GRAVE)','&Aacute;(LATIN CAPITAL LETTER A WITH ACUTE)','&Acirc;(LATIN CAPITAL LETTER A WITH CIRCUMFLEX)','&Atilde;(LATIN CAPITAL LETTER A WITH TILDE)','&Auml;(LATIN CAPITAL LETTER A WITH DIAERESIS)',
+				'&Aring;(LATIN CAPITAL LETTER A WITH RING ABOVE)','&AElig;(LATIN CAPITAL LETTER AE)','&Ccedil;(LATIN CAPITAL LETTER C WITH CEDILLA)','&Egrave;(LATIN CAPITAL LETTER E WITH GRAVE)','&Eacute;(LATIN CAPITAL LETTER E WITH ACUTE)','&Ecirc;(LATIN CAPITAL LETTER E WITH CIRCUMFLEX)',
+				'&Euml;(LATIN CAPITAL LETTER E WITH DIAERESIS)','&Igrave;(LATIN CAPITAL LETTER I WITH GRAVE)','&Iacute;(LATIN CAPITAL LETTER I WITH ACUTE)','&Icirc;(LATIN CAPITAL LETTER I WITH CIRCUMFLEX)','&Iuml;(LATIN CAPITAL LETTER I WITH DIAERESIS)','&ETH;(LATIN CAPITAL LETTER ETH)',
+				'&Ntilde;(LATIN CAPITAL LETTER N WITH TILDE)','&Ograve;(LATIN CAPITAL LETTER O WITH GRAVE)','&Oacute;(LATIN CAPITAL LETTER O WITH ACUTE)','&Ocirc;(LATIN CAPITAL LETTER O WITH CIRCUMFLEX)','&Otilde;(LATIN CAPITAL LETTER O WITH TILDE)','&Ouml;(LATIN CAPITAL LETTER O WITH DIAERESIS)',
+				'&times;(MULTIPLICATION SIGN)','&Oslash;(LATIN CAPITAL LETTER O WITH STROKE)','&Ugrave;(LATIN CAPITAL LETTER U WITH GRAVE)','&Uacute;(LATIN CAPITAL LETTER U WITH ACUTE)','&Ucirc;(LATIN CAPITAL LETTER U WITH CIRCUMFLEX)','&Uuml;(LATIN CAPITAL LETTER U WITH DIAERESIS)',
+				'&Yacute;(LATIN CAPITAL LETTER Y WITH ACUTE)','&THORN;(LATIN CAPITAL LETTER THORN)','&szlig;(LATIN SMALL LETTER SHARP S)','&agrave;(LATIN SMALL LETTER A WITH GRAVE)','&aacute;(LATIN SMALL LETTER A WITH ACUTE)','&acirc;(LATIN SMALL LETTER A WITH CIRCUMFLEX)',
+				'&atilde;(LATIN SMALL LETTER A WITH TILDE)','&auml;(LATIN SMALL LETTER A WITH DIAERESIS)','&aring;(LATIN SMALL LETTER A WITH RING ABOVE)','&aelig;(LATIN SMALL LETTER AE)','&ccedil;(LATIN SMALL LETTER C WITH CEDILLA)','&egrave;(LATIN SMALL LETTER E WITH GRAVE)',
+				'&eacute;(LATIN SMALL LETTER E WITH ACUTE)','&ecirc;(LATIN SMALL LETTER E WITH CIRCUMFLEX)','&euml;(LATIN SMALL LETTER E WITH DIAERESIS)','&igrave;(LATIN SMALL LETTER I WITH GRAVE)','&iacute;(LATIN SMALL LETTER I WITH ACUTE)','&icirc;(LATIN SMALL LETTER I WITH CIRCUMFLEX)',
+				'&iuml;(LATIN SMALL LETTER I WITH DIAERESIS)','&eth;(LATIN SMALL LETTER ETH)','&ntilde;(LATIN SMALL LETTER N WITH TILDE)','&ograve;(LATIN SMALL LETTER O WITH GRAVE)','&oacute;(LATIN SMALL LETTER O WITH ACUTE)','&ocirc;(LATIN SMALL LETTER O WITH CIRCUMFLEX)',
+				'&otilde;(LATIN SMALL LETTER O WITH TILDE)','&ouml;(LATIN SMALL LETTER O WITH DIAERESIS)',
+				'&divide;(DIVISION SIGN)','&oslash;(LATIN SMALL LETTER O WITH STROKE)',
+				'&ugrave;(LATIN SMALL LETTER U WITH GRAVE)','&uacute;(LATIN SMALL LETTER U WITH ACUTE)',
+				'&ucirc;(LATIN SMALL LETTER U WITH CIRCUMFLEX)','&uuml;(LATIN SMALL LETTER U WITH DIAERESIS)',
+				'&uuml;(LATIN SMALL LETTER U WITH DIAERESIS)','&yacute;(LATIN SMALL LETTER Y WITH ACUTE)','&thorn;(LATIN SMALL LETTER THORN)','&yuml;(LATIN SMALL LETTER Y WITH DIAERESIS)',
+				'&OElig;(LATIN CAPITAL LIGATURE OE)',
+				'&oelig;(LATIN SMALL LIGATURE OE)','&#372;(LATIN CAPITAL LETTER W WITH CIRCUMFLEX)',
+				'&#374(LATIN CAPITAL LETTER Y WITH CIRCUMFLEX)','&#373(LATIN SMALL LETTER W WITH CIRCUMFLEX)',
+				'&#375;(LATIN SMALL LETTER Y WITH CIRCUMFLEX)','&sbquo;(SINGLE LOW-9 QUOTATION MARK)',
+				'&#8219;(SINGLE HIGH-REVERSED-9 QUOTATION MARK)','&bdquo;(DOUBLE LOW-9 QUOTATION MARK)','&hellip;(HORIZONTAL ELLIPSIS)',
+				'&trade;(TRADE MARK SIGN)','&#9658;(BLACK RIGHT-POINTING POINTER)','&bull;(BULLET)',
+				'&rarr;(RIGHTWARDS ARROW)','&rArr;(RIGHTWARDS DOUBLE ARROW)','&hArr;(LEFT RIGHT DOUBLE ARROW)','&diams;(BLACK DIAMOND SUIT)','&asymp;(ALMOST EQUAL TO)'
 			],
 		onLoad :  function()
@@ -246,23 +263,49 @@
 				chars = this.definition.chars;
 
-			var html = [ '<table style="width: 320px; height: 100%; border-collapse: separate;" align="center" cellspacing="2" cellpadding="2" border="0">' ];
-
-			var i = 0 ;
-			while ( i < chars.length )
+			var charsTableLabel =  'specialchar_table_label' + CKEDITOR.tools.getNextNumber();
+			var html = [ '<table role="listbox" aria-labelledby="' + charsTableLabel + '"' +
+						 			' style="width: 320px; height: 100%; border-collapse: separate;"' +
+						 			' align="center" cellspacing="2" cellpadding="2" border="0">' ];
+
+			var i = 0,
+				size = chars.length,
+				character,
+				charDesc;
+
+			while ( i < size )
 			{
 				html.push( '<tr>' ) ;
 
-				for( var j = 0 ; j < columns ; j++, i++ )
-				{
-					if ( chars[ i ] )
+				for ( var j = 0 ; j < columns ; j++, i++ )
+				{
+					if ( ( character = chars[ i ] ) )
 					{
+						charDesc = '';
+						character = character.replace( /\((.*?)\)/, function( match, desc )
+							{
+								charDesc = desc;
+								return '';
+							} );
+
+						// Use character in case description unavailable.
+						charDesc = charDesc || character;
+
+						var charLabelId =  'cke_specialchar_label_' + i + '_' + CKEDITOR.tools.getNextNumber();
+
 						html.push(
-							'<td class="cke_dark_background" style="cursor: default">' +
-							'<a href="javascript: void(0);" style="cursor: inherit; display: block; height: 1.25em; margin-top: 0.25em; text-align: center;" title="', chars[i].replace( /&/g, '&amp;' ), '"' +
+							'<td class="cke_dark_background" style="cursor: default" role="presentation">' +
+							'<a href="javascript: void(0);" role="option"' +
+							' aria-posinset="' + ( i +1 ) + '"',
+							' aria-setsize="' + size + '"',
+							' aria-labelledby="' + charLabelId + '"',
+							' style="cursor: inherit; display: block; height: 1.25em; margin-top: 0.25em; text-align: center;" title="', CKEDITOR.tools.htmlEncode( charDesc ), '"' +
 							' onkeydown="CKEDITOR.tools.callFunction( ' + onKeydown + ', event, this )"' +
 							' onclick="CKEDITOR.tools.callFunction(' + onClick + ', this); return false;"' +
 							' tabindex="-1">' +
 							'<span style="margin: 0 auto;cursor: inherit">' +
-							chars[i] +
+							character +
+							'</span>' +
+							'<span class="cke_voice_label" id="' + charLabelId + '">' +
+							charDesc +
 							'</span></a>');
 					}
@@ -275,5 +318,5 @@
 			}
 
-			html.push( '</tbody></table>' );
+			html.push( '</tbody></table>', '<span id="' + charsTableLabel + '" class="cke_voice_label">' + lang.options +'</span>' );
 
 			this.getContentElement( 'info', 'charContainer' ).getElement().setHtml( html.join( '' ) );
@@ -301,5 +344,5 @@
 								focus : function()
 								{
-									var firstChar = this.getElement().getChild( [0, 0, 0, 0, 0] );
+									var firstChar = this.getElement().getElementsByTag( 'a' ).getItem( 0 );
 									setTimeout(function()
 									{
@@ -308,13 +351,12 @@
 									});
 								},
-								// Needed only for webkit.
 								onShow : function()
 								{
-									var firstChar = this.getElement().getChild( [0, 0, 0, 0, 0] );
-									setTimeout(function()
-									{
-										firstChar.focus();
-										onFocus( null, firstChar );
-									});
+									var firstChar = this.getElement().getChild( [ 0, 0, 0, 0, 0 ] );
+									setTimeout( function()
+										{
+											firstChar.focus();
+											onFocus( null, firstChar );
+										});
 								},
 								onLoad : function( event )
@@ -341,5 +383,6 @@
 												type : 'html',
 												id : 'charPreview',
-												style : 'border:1px solid #eeeeee;background-color:#EAEAD1;font-size:28px;height:40px;width:70px;padding-top:9px;font-family:\'Microsoft Sans Serif\',Arial,Helvetica,Verdana;text-align:center;',
+												className : 'cke_dark_background',
+												style : 'border:1px solid #eeeeee;font-size:28px;height:40px;width:70px;padding-top:9px;font-family:\'Microsoft Sans Serif\',Arial,Helvetica,Verdana;text-align:center;',
 												html : '<div>&nbsp;</div>'
 											},
@@ -347,5 +390,6 @@
 												type : 'html',
 												id : 'htmlPreview',
-												style : 'border:1px solid #eeeeee;background-color:#EAEAD1;font-size:14px;height:20px;width:70px;padding-top:2px;font-family:\'Microsoft Sans Serif\',Arial,Helvetica,Verdana;text-align:center;',
+												className : 'cke_dark_background',
+												style : 'border:1px solid #eeeeee;font-size:14px;height:20px;width:70px;padding-top:2px;font-family:\'Microsoft Sans Serif\',Arial,Helvetica,Verdana;text-align:center;',
 												html : '<div>&nbsp;</div>'
 											}
Index: /CKEditor/branches/features/adobeair/_source/plugins/specialchar/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/specialchar/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/specialchar/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/plugins/styles/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/styles/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/styles/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -79,5 +79,5 @@
 {
 	var blockElements	= { address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 };
-	var objectElements	= { a:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,ul:1 };
+	var objectElements	= { a:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,th:1,ul:1,dl:1,dt:1,dd:1,form:1};
 
 	var semicolonFixRegex = /\s*(?:;\s*|$)/;
@@ -128,4 +128,6 @@
 						: this.type == CKEDITOR.STYLE_BLOCK ?
 							applyBlockStyle
+						: this.type == CKEDITOR.STYLE_OBJECT ?
+							applyObjectStyle
 						: null ).call( this, range );
 		},
@@ -155,4 +157,5 @@
 					return this.checkElementRemovable( elementPath.block || elementPath.blockLimit, true );
 
+				case CKEDITOR.STYLE_OBJECT :
 				case CKEDITOR.STYLE_INLINE :
 
@@ -161,8 +164,13 @@
 					for ( var i = 0, element ; i < elements.length ; i++ )
 					{
-						element = elements[i];
-
-						if ( element == elementPath.block || element == elementPath.blockLimit )
+						element = elements[ i ];
+
+						if ( this.type == CKEDITOR.STYLE_INLINE
+							  && ( element == elementPath.block || element == elementPath.blockLimit ) )
 							continue;
+
+						if( this.type == CKEDITOR.STYLE_OBJECT
+							 && !( element.getName() in objectElements ) )
+								continue;
 
 						if ( this.checkElementRemovable( element, true ) )
@@ -171,4 +179,19 @@
 			}
 			return false;
+		},
+
+		checkApplicable : function( elementPath )
+		{
+			switch ( this.type )
+			{
+				case CKEDITOR.STYLE_INLINE :
+				case CKEDITOR.STYLE_BLOCK :
+					break;
+
+				case CKEDITOR.STYLE_OBJECT :
+					return elementPath.lastElement.getAscendant( this.element, true );
+			}
+
+			return true;
 		},
 
@@ -199,8 +222,8 @@
 							continue;
 
-						var elementAttr = element.getAttribute( attName );
-						if ( attribs[attName] ==
-							 ( attName == 'style' ?
-							   normalizeCssText( elementAttr, false ) : elementAttr  ) )
+						var elementAttr = element.getAttribute( attName ) || '';
+						if ( attName == 'style' ?
+							compareCssText( attribs[ attName ], normalizeCssText( elementAttr, false ) )
+							: attribs[ attName ] == elementAttr  )
 						{
 							if ( !fullMatch )
@@ -210,5 +233,5 @@
 								return false;
 					}
-					if( fullMatch )
+					if ( fullMatch )
 						return true;
 				}
@@ -247,4 +270,37 @@
 			}
 			return false;
+		},
+
+		// Builds the preview HTML based on the styles definition.
+		buildPreview : function()
+		{
+			var styleDefinition = this._.definition,
+				html = [],
+				elementName = styleDefinition.element;
+
+			// Avoid <bdo> in the preview.
+			if ( elementName == 'bdo' )
+				elementName = 'span';
+
+			html = [ '<', elementName ];
+
+			// Assign all defined attributes.
+			var attribs	= styleDefinition.attributes;
+			if ( attribs )
+			{
+				for ( var att in attribs )
+				{
+					html.push( ' ', att, '="', attribs[ att ], '"' );
+				}
+			}
+
+			// Assign the style attribute.
+			var cssStyle = CKEDITOR.style.getStyleText( styleDefinition );
+			if ( cssStyle )
+				html.push( ' style="', cssStyle, '"' );
+
+			html.push( '>', styleDefinition.name, '</', elementName, '>' );
+
+			return html.join( '' );
 		}
 	};
@@ -261,6 +317,6 @@
 
 		// Builds the StyleText.
-
-		var stylesText = ( styleDefinition.attributes && styleDefinition.attributes[ 'style' ] ) || '';
+		var stylesText = ( styleDefinition.attributes && styleDefinition.attributes[ 'style' ] ) || '',
+				specialStylesText = '';
 
 		if ( stylesText.length )
@@ -268,5 +324,14 @@
 
 		for ( var style in stylesDef )
-			stylesText += style + ':' + stylesDef[ style ] + ';';
+		{
+			var styleVal = stylesDef[ style ],
+					text = ( style + ':' + styleVal ).replace( semicolonFixRegex, ';' );
+
+			// Some browsers don't support 'inherit' property value, leave them intact. (#5242)
+			if ( styleVal == 'inherit' )
+				specialStylesText += text;
+			else
+				stylesText += text;
+		}
 
 		// Browsers make some changes to the style when applying them. So, here
@@ -275,4 +340,6 @@
 			stylesText = normalizeCssText( stylesText );
 
+		stylesText += specialStylesText;
+
 		// Return it, saving it to the next request.
 		return ( styleDefinition._ST = stylesText );
@@ -313,45 +380,11 @@
 		// Get the first node to be processed and the last, which concludes the
 		// processing.
-		var boundaryNodes = range.getBoundaryNodes();
-		var firstNode = boundaryNodes.startNode;
-		var lastNode = boundaryNodes.endNode.getNextSourceNode( true );
-
-		// Probably the document end is reached, we need a marker node.
-		if ( !lastNode )
-		{
-				var marker;
-				lastNode = marker = document.createText( '' );
-				lastNode.insertAfter( range.endContainer );
-		}
-		// The detection algorithm below skips the contents inside bookmark nodes, so
-		// we'll need to make sure lastNode isn't the &nbsp; inside a bookmark node.
-		var lastParent = lastNode.getParent();
-		if ( lastParent && lastParent.getAttribute( '_fck_bookmark' ) )
-			lastNode = lastParent;
-
-		if ( lastNode.equals( firstNode ) )
-		{
-			// If the last node is the same as the the first one, we must move
-			// it to the next one, otherwise the first one will not be
-			// processed.
-			lastNode = lastNode.getNextSourceNode( true );
-
-			// It may happen that there are no more nodes after it (the end of
-			// the document), so we must add something there to make our code
-			// simpler.
-			if ( !lastNode )
-			{
-				lastNode = marker = document.createText( '' );
-				lastNode.insertAfter( firstNode );
-			}
-		}
+		var boundaryNodes = range.createBookmark(),
+			firstNode = boundaryNodes.startNode,
+			lastNode = boundaryNodes.endNode;
 
 		var currentNode = firstNode;
 
 		var styleRange;
-
-		// Indicates that that some useful inline content has been found, so
-		// the style should be applied.
-		var hasContents;
 
 		while ( currentNode )
@@ -376,5 +409,7 @@
 
 				// Check if the current node can be a child of the style element.
-				if ( !nodeName || ( dtd[ nodeName ] && ( currentNode.getPosition( lastNode ) | CKEDITOR.POSITION_PRECEDING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED ) == ( CKEDITOR.POSITION_PRECEDING + CKEDITOR.POSITION_IDENTICAL + CKEDITOR.POSITION_IS_CONTAINED ) ) )
+				if ( !nodeName || ( dtd[ nodeName ]
+					&& ( currentNode.getPosition( lastNode ) | CKEDITOR.POSITION_PRECEDING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED ) == ( CKEDITOR.POSITION_PRECEDING + CKEDITOR.POSITION_IDENTICAL + CKEDITOR.POSITION_IS_CONTAINED )
+					&& ( !def.childRule || def.childRule( currentNode ) ) ) )
 				{
 					var currentParent = currentNode.getParent();
@@ -382,5 +417,7 @@
 					// Check if the style element can be a child of the current
 					// node parent or if the element is not defined in the DTD.
-					if ( currentParent && ( ( currentParent.getDtd() || CKEDITOR.dtd.span )[ elementName ] || isUnknownElement ) )
+					if ( currentParent
+						&& ( ( currentParent.getDtd() || CKEDITOR.dtd.span )[ elementName ] || isUnknownElement )
+						&& ( !def.parentRule || def.parentRule( currentParent ) ) )
 					{
 						// This node will be part of our range, so if it has not
@@ -407,5 +444,6 @@
 							while ( !includedNode.$.nextSibling
 								&& ( parentNode = includedNode.getParent(), dtd[ parentNode.getName() ] )
-								&& ( parentNode.getPosition( firstNode ) | CKEDITOR.POSITION_FOLLOWING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED ) == ( CKEDITOR.POSITION_FOLLOWING + CKEDITOR.POSITION_IDENTICAL + CKEDITOR.POSITION_IS_CONTAINED ) )
+								&& ( parentNode.getPosition( firstNode ) | CKEDITOR.POSITION_FOLLOWING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED ) == ( CKEDITOR.POSITION_FOLLOWING + CKEDITOR.POSITION_IDENTICAL + CKEDITOR.POSITION_IS_CONTAINED )
+								&& ( !def.childRule || def.childRule( parentNode ) ) )
 							{
 								includedNode = parentNode;
@@ -420,6 +458,4 @@
 								applyStyle = true;
 
-							if ( !hasContents )
-								hasContents = ( nodeType != CKEDITOR.NODE_TEXT || (/[^\s\ufeff]/).test( currentNode.getText() ) );
 						}
 					}
@@ -435,5 +471,5 @@
 
 			// Apply the style if we have something to which apply it.
-			if ( applyStyle && hasContents && styleRange && !styleRange.collapsed )
+			if ( applyStyle && styleRange && !styleRange.collapsed )
 			{
 				// Build the style element, based on the style object definition.
@@ -485,5 +521,5 @@
 
 					// Let's merge our new style with its neighbors, if possible.
-					mergeSiblings( styleNode );
+					styleNode.mergeSiblings();
 
 					// As the style system breaks text nodes constantly, let's normalize
@@ -503,7 +539,9 @@
 		}
 
-		// Remove the temporary marking node.(#4111)
-		marker && marker.remove();
+		firstNode.remove();
+		lastNode.remove();
 		range.moveToBookmark( bookmark );
+		// Minimize the result range to exclude empty text nodes. (#5374)
+		range.shrink( CKEDITOR.SHRINK_TEXT );
 	}
 
@@ -557,5 +595,5 @@
 						 * them before removal.
 						 */
-						mergeSiblings( element );
+						element.mergeSiblings();
 						removeFromElement( this, element );
 
@@ -576,5 +614,5 @@
 						break;
 					// Avoid copying any matched element.
-					else if( newElement.match )
+					else if ( newElement.match )
 						continue;
 					else
@@ -646,5 +684,5 @@
 				{
 					// Remove style from element or overriding element.
-					if( currentNode.getName() == this.element )
+					if ( currentNode.getName() == this.element )
 						removeFromElement( this, currentNode );
 					else
@@ -670,4 +708,11 @@
 }
 
+	function applyObjectStyle( range )
+	{
+		var root = range.getCommonAncestor( true, true ),
+				element = root.getAscendant( this.element, true );
+		element && setupElement( element, this );
+	}
+
 	function applyBlockStyle( range )
 	{
@@ -679,9 +724,13 @@
 		iterator.enforceRealBlocks = true;
 
+		// make recognize <br /> tag as a separator in ENTER_BR mode (#5121)
+		if ( this._.enterMode )
+			iterator.enlargeBr = ( this._.enterMode != CKEDITOR.ENTER_BR );
+
 		var block;
 		var doc = range.document;
 		var previousPreBlock;
 
-		while( ( block = iterator.getNextParagraph() ) )		// Only one =
+		while ( ( block = iterator.getNextParagraph() ) )		// Only one =
 		{
 			var newBlock = getElement( this, doc );
@@ -768,5 +817,5 @@
 
 		var pres = [];
-		splitedHtml.replace( /<pre>([\s\S]*?)<\/pre>/gi, function( match, preContent ){
+		splitedHtml.replace( /<pre\b.*?>([\s\S]*?)<\/pre>/gi, function( match, preContent ){
 			pres.push( preContent );
 		} );
@@ -869,29 +918,32 @@
 	{
 		var def = style._.definition,
-			attributes = def.attributes,
+			attributes = CKEDITOR.tools.extend( {}, def.attributes, getOverrides( style )[ element.getName() ] ),
 			styles = def.styles,
-			overrides = getOverrides( style );
-
-		function removeAttrs()
-		{
-			for ( var attName in attributes )
-			{
-				// The 'class' element value must match (#1318).
-				if ( attName == 'class' && element.getAttribute( attName ) != attributes[ attName ] )
-					continue;
-				element.removeAttribute( attName );
-			}
-		}
+			// If the style is only about the element itself, we have to remove the element.
+			removeEmpty = CKEDITOR.tools.isEmpty( attributes ) && CKEDITOR.tools.isEmpty( styles );
 
 		// Remove definition attributes/style from the elemnt.
-		removeAttrs();
+		for ( var attName in attributes )
+		{
+			// The 'class' element value must match (#1318).
+			if ( ( attName == 'class' || style._.definition.fullMatch )
+				&& element.getAttribute( attName ) != normalizeProperty( attName, attributes[ attName ] ) )
+				continue;
+			removeEmpty = element.hasAttribute( attName );
+			element.removeAttribute( attName );
+		}
+
 		for ( var styleName in styles )
+		{
+			// Full match style insist on having fully equivalence. (#5018)
+			if ( style._.definition.fullMatch
+				&& element.getStyle( styleName ) != normalizeProperty( styleName, styles[ styleName ], true ) )
+				continue;
+
+			removeEmpty = removeEmpty || !!element.getStyle( styleName );
 			element.removeStyle( styleName );
-
-		// Now remove override styles on the element.
-		attributes = overrides[ element.getName() ];
-		if( attributes )
-			removeAttrs();
-		removeNoAttribsElement( element );
+		}
+
+		removeEmpty && removeNoAttribsElement( element );
 	}
 
@@ -980,45 +1032,9 @@
 			{
 				// Check the cached nodes for merging.
-				mergeSiblings( firstChild );
-
-				if ( lastChild && !firstChild.equals( lastChild ) )
-					mergeSiblings( lastChild );
-			}
-		}
-	}
-
-	function mergeSiblings( element )
-	{
-		if ( !element || element.type != CKEDITOR.NODE_ELEMENT || !CKEDITOR.dtd.$removeEmpty[ element.getName() ] )
-			return;
-
-		mergeElements( element, element.getNext(), true );
-		mergeElements( element, element.getPrevious() );
-	}
-
-	function mergeElements( element, sibling, isNext )
-	{
-		if ( sibling && sibling.type == CKEDITOR.NODE_ELEMENT )
-		{
-			var hasBookmark = sibling.getAttribute( '_fck_bookmark' );
-
-			if ( hasBookmark )
-				sibling = isNext ? sibling.getNext() : sibling.getPrevious();
-
-			if ( sibling && sibling.type == CKEDITOR.NODE_ELEMENT && element.isIdentical( sibling ) )
-			{
-				// Save the last child to be checked too, to merge things like
-				// <b><i></i></b><b><i></i></b> => <b><i></i></b>
-				var innerSibling = isNext ? element.getLast() : element.getFirst();
-
-				if ( hasBookmark )
-					( isNext ? sibling.getPrevious() : sibling.getNext() ).move( element, !isNext );
-
-				sibling.moveChildren( element, !isNext );
-				sibling.remove();
-
-				// Now check the last inner child (see two comments above).
-				if ( innerSibling )
-					mergeSiblings( innerSibling );
+				firstChild.type == CKEDITOR.NODE_ELEMENT && firstChild.mergeSiblings();
+
+				if ( lastChild && !firstChild.equals( lastChild )
+					&& lastChild.type == CKEDITOR.NODE_ELEMENT  )
+					lastChild.mergeSiblings();
 			}
 		}
@@ -1127,5 +1143,5 @@
 	function getOverrides( style )
 	{
-		if( style._.overrides )
+		if ( style._.overrides )
 			return style._.overrides;
 
@@ -1183,4 +1199,11 @@
 	}
 
+	function normalizeProperty( name, value, isStyle )
+	{
+		var temp = new CKEDITOR.dom.element( 'span' );
+		temp [ isStyle ? 'setStyle' : 'setAttribute' ]( name, value );
+		return temp[ isStyle ? 'getStyle' : 'getAttribute' ]( name );
+	}
+
 	function normalizeCssText( unparsedCssText, nativeNormalize )
 	{
@@ -1192,5 +1215,5 @@
 			var temp = new CKEDITOR.dom.element( 'span' );
 			temp.setAttribute( 'style', unparsedCssText );
-			styleText = temp.getAttribute( 'style' );
+			styleText = temp.getAttribute( 'style' ) || '';
 		}
 		else
@@ -1201,5 +1224,38 @@
 		return styleText.replace( /\s*([;:])\s*/, '$1' )
 							 .replace( /([^\s;])$/, '$1;')
+							 .replace( /,\s+/g, ',' ) // Trimming spaces after comma (e.g. font-family name)(#4107).
 							 .toLowerCase();
+	}
+
+	// Turn inline style text properties into one hash.
+	function parseStyleText( styleText )
+	{
+		var retval = {};
+		styleText
+		   .replace( /&quot;/g, '"' )
+		   .replace( /\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function( match, name, value )
+		{
+			retval[ name ] = value;
+		} );
+		return retval;
+	}
+
+	function compareCssText( source, target )
+	{
+		typeof source == 'string' && ( source = parseStyleText( source ) );
+		typeof target == 'string' && ( target = parseStyleText( target ) );
+		for( var name in source )
+		{
+			// Value 'inherit'  is treated as a wildcard,
+			// which will match any value.
+			if ( !( name in target &&
+					( target[ name ] == source[ name ]
+						|| source[ name ] == 'inherit'
+						|| target[ name ] == 'inherit' ) ) )
+			{
+				return false;
+			}
+		}
+		return true;
 	}
 
@@ -1241,2 +1297,85 @@
 	return !!doc;
 };
+
+CKEDITOR.stylesSet = new CKEDITOR.resourceManager( '', 'stylesSet' );
+
+// Backward compatibility (#5025).
+CKEDITOR.addStylesSet = CKEDITOR.tools.bind( CKEDITOR.stylesSet.add, CKEDITOR.stylesSet );
+CKEDITOR.loadStylesSet = function( name, url, callback )
+	{
+		CKEDITOR.stylesSet.addExternal( name, url, '' );
+		CKEDITOR.stylesSet.load( name, callback );
+	};
+
+
+/**
+ * Gets the current styleSet for this instance
+ * @param {Function} The function to be called with the styles data.
+ * @example
+ * editor.getStylesSet( function( stylesDefinitions ) {} );
+ */
+CKEDITOR.editor.prototype.getStylesSet = function( callback )
+{
+	if ( !this._.stylesDefinitions )
+	{
+		var editor = this,
+			// Respect the backwards compatible definition entry
+			configStyleSet = editor.config.stylesCombo_stylesSet || editor.config.stylesSet || 'default';
+
+		// #5352 Allow to define the styles directly in the config object
+		if ( configStyleSet instanceof Array )
+		{
+			editor._.stylesDefinitions = configStyleSet;
+			callback( configStyleSet );
+			return;
+		}
+
+		var	partsStylesSet = configStyleSet.split( ':' ),
+			styleSetName = partsStylesSet[ 0 ],
+			externalPath = partsStylesSet[ 1 ],
+			pluginPath = CKEDITOR.plugins.registered.styles.path;
+
+		CKEDITOR.stylesSet.addExternal( styleSetName,
+				externalPath ?
+					partsStylesSet.slice( 1 ).join( ':' ) :
+					pluginPath + 'styles/' + styleSetName + '.js', '' );
+
+		CKEDITOR.stylesSet.load( styleSetName, function( stylesSet )
+			{
+				editor._.stylesDefinitions = stylesSet[ styleSetName ];
+				callback( editor._.stylesDefinitions );
+			} ) ;
+	}
+	else
+		callback( this._.stylesDefinitions );
+};
+
+/**
+ * The "styles definition set" to use in the editor. They will be used in the
+ * styles combo and the Style selector of the div container. <br>
+ * The styles may be defined in the page containing the editor, or can be
+ * loaded on demand from an external file. In the second case, if this setting
+ * contains only a name, the styles definition file will be loaded from the
+ * "styles" folder inside the styles plugin folder.
+ * Otherwise, this setting has the "name:url" syntax, making it
+ * possible to set the URL from which loading the styles file.<br>
+ * Previously this setting was available as config.stylesCombo_stylesSet<br>
+ * @name CKEDITOR.config.stylesSet
+ * @type String|Array
+ * @default 'default'
+ * @since 3.3
+ * @example
+ * // Load from the styles' styles folder (mystyles.js file).
+ * config.stylesSet = 'mystyles';
+ * @example
+ * // Load from a relative URL.
+ * config.stylesSet = 'mystyles:/editorstyles/styles.js';
+ * @example
+ * // Load from a full URL.
+ * config.stylesSet = 'mystyles:http://www.example.com/editorstyles/styles.js';
+ * @example
+ * // Load from a list of definitions.
+ * config.stylesSet = [
+ *  { name : 'Strong Emphasis', element : 'strong' },
+ * { name : 'Emphasis', element : 'em' }, ... ];
+ */
Index: /CKEditor/branches/features/adobeair/_source/plugins/styles/styles/default.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/styles/styles/default.js	(revision 5613)
+++ /CKEditor/branches/features/adobeair/_source/plugins/styles/styles/default.js	(revision 5613)
@@ -0,0 +1,88 @@
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.stylesSet.add( 'default',
+[
+	/* Block Styles */
+
+	// These styles are already available in the "Format" combo, so they are
+	// not needed here by default. You may enable them to avoid placing the
+	// "Format" combo in the toolbar, maintaining the same features.
+	/*
+	{ name : 'Paragraph'		, element : 'p' },
+	{ name : 'Heading 1'		, element : 'h1' },
+	{ name : 'Heading 2'		, element : 'h2' },
+	{ name : 'Heading 3'		, element : 'h3' },
+	{ name : 'Heading 4'		, element : 'h4' },
+	{ name : 'Heading 5'		, element : 'h5' },
+	{ name : 'Heading 6'		, element : 'h6' },
+	{ name : 'Preformatted Text', element : 'pre' },
+	{ name : 'Address'			, element : 'address' },
+	*/
+
+	{ name : 'Blue Title'		, element : 'h3', styles : { 'color' : 'Blue' } },
+	{ name : 'Red Title'		, element : 'h3', styles : { 'color' : 'Red' } },
+
+	/* Inline Styles */
+
+	// These are core styles available as toolbar buttons. You may opt enabling
+	// some of them in the Styles combo, removing them from the toolbar.
+	/*
+	{ name : 'Strong'			, element : 'strong', overrides : 'b' },
+	{ name : 'Emphasis'			, element : 'em'	, overrides : 'i' },
+	{ name : 'Underline'		, element : 'u' },
+	{ name : 'Strikethrough'	, element : 'strike' },
+	{ name : 'Subscript'		, element : 'sub' },
+	{ name : 'Superscript'		, element : 'sup' },
+	*/
+
+	{ name : 'Marker: Yellow'	, element : 'span', styles : { 'background-color' : 'Yellow' } },
+	{ name : 'Marker: Green'	, element : 'span', styles : { 'background-color' : 'Lime' } },
+
+	{ name : 'Big'				, element : 'big' },
+	{ name : 'Small'			, element : 'small' },
+	{ name : 'Typewriter'		, element : 'tt' },
+
+	{ name : 'Computer Code'	, element : 'code' },
+	{ name : 'Keyboard Phrase'	, element : 'kbd' },
+	{ name : 'Sample Text'		, element : 'samp' },
+	{ name : 'Variable'			, element : 'var' },
+
+	{ name : 'Deleted Text'		, element : 'del' },
+	{ name : 'Inserted Text'	, element : 'ins' },
+
+	{ name : 'Cited Work'		, element : 'cite' },
+	{ name : 'Inline Quotation'	, element : 'q' },
+
+	{ name : 'Language: RTL'	, element : 'span', attributes : { 'dir' : 'rtl' } },
+	{ name : 'Language: LTR'	, element : 'span', attributes : { 'dir' : 'ltr' } },
+
+	/* Object Styles */
+
+	{
+		name : 'Image on Left',
+		element : 'img',
+		attributes :
+		{
+			'style' : 'padding: 5px; margin-right: 5px',
+			'border' : '2',
+			'align' : 'left'
+		}
+	},
+
+	{
+		name : 'Image on Right',
+		element : 'img',
+		attributes :
+		{
+			'style' : 'padding: 5px; margin-left: 5px',
+			'border' : '2',
+			'align' : 'right'
+		}
+	},
+
+	{ name : 'Borderless Table', element : 'table', styles: { 'border-style': 'hidden', 'background-color' : '#E6E6FA' } },
+	{ name : 'Square Bulleted List', element : 'ul', styles : { 'list-style-type' : 'square' } }
+]);
Index: /CKEditor/branches/features/adobeair/_source/plugins/stylescombo/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/stylescombo/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/stylescombo/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -14,6 +14,37 @@
 			var config = editor.config,
 				lang = editor.lang.stylesCombo,
-				pluginPath = this.path,
-				styles;
+				styles = {},
+				stylesList = [];
+
+			function loadStylesSet( callback )
+			{
+				editor.getStylesSet( function( stylesDefinitions )
+				{
+					if ( !stylesList.length )
+					{
+						var style,
+							styleName;
+
+						// Put all styles into an Array.
+						for ( var i = 0 ; i < stylesDefinitions.length ; i++ )
+						{
+							var styleDefinition = stylesDefinitions[ i ];
+
+							styleName = styleDefinition.name;
+
+							style = styles[ styleName ] = new CKEDITOR.style( styleDefinition );
+							style._name = styleName;
+							style._.enterMode = config.enterMode;
+
+							stylesList.push( style );
+						}
+
+						// Sorts the Array, so the styles get grouped by type.
+						stylesList.sort( sortStyles );
+					}
+
+					callback && callback();
+				});
+			}
 
 			editor.ui.addRichCombo( 'Styles',
@@ -21,51 +52,25 @@
 					label : lang.label,
 					title : lang.panelTitle,
-					voiceLabel : lang.voiceLabel,
 					className : 'cke_styles',
-					multiSelect : true,
 
 					panel :
 					{
-						css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
-						voiceLabel : lang.panelVoiceLabel
+						css : editor.skin.editor.css.concat( config.contentsCss ),
+						multiSelect : true,
+						attributes : { 'aria-label' : lang.panelTitle }
 					},
 
 					init : function()
 					{
-						var combo = this,
-							stylesSet = config.stylesCombo_stylesSet.split( ':', 2 ),
-							stylesSetPath = stylesSet[ 1 ] || CKEDITOR.getUrl( pluginPath + 'styles/' + stylesSet[ 0 ] + '.js' ) ;
-
-						stylesSet = stylesSet[ 0 ];
-
-						CKEDITOR.loadStylesSet( stylesSet, stylesSetPath, function( stylesDefinitions )
+						var combo = this;
+
+						loadStylesSet( function()
 							{
-								var style,
-									styleName,
-									stylesList = [];
-
-								styles = {};
-
-								// Put all styles into an Array.
-								for ( var i = 0 ; i < stylesDefinitions.length ; i++ )
-								{
-									var styleDefinition = stylesDefinitions[ i ];
-
-									styleName = styleDefinition.name;
-
-									style = styles[ styleName ] = new CKEDITOR.style( styleDefinition );
-									style._name = styleName;
-
-									stylesList.push( style );
-								}
-
-								// Sorts the Array, so the styles get grouped
-								// by type.
-								stylesList.sort( sortStyles );
+								var style, styleName;
 
 								// Loop over the Array, adding all items to the
 								// combo.
 								var lastType;
-								for ( i = 0 ; i < stylesList.length ; i++ )
+								for ( var i = 0 ; i < stylesList.length ; i++ )
 								{
 									style = stylesList[ i ];
@@ -82,5 +87,5 @@
 									combo.add(
 										styleName,
-										style.type == CKEDITOR.STYLE_OBJECT ? styleName : buildPreview( style._.definition ),
+										style.type == CKEDITOR.STYLE_OBJECT ? styleName : style.buildPreview(),
 										styleName );
 								}
@@ -88,4 +93,5 @@
 								combo.commit();
 
+								combo.onOpen();
 							});
 					},
@@ -98,13 +104,4 @@
 						var style = styles[ value ],
 							selection = editor.getSelection();
-
-						if ( style.type == CKEDITOR.STYLE_OBJECT )
-						{
-							var element = selection.getSelectedElement();
-							if ( element )
-								style.applyToObject( element );
-
-							return;
-						}
 
 						var elementPath = new CKEDITOR.dom.elementPath( selection.getStartElement() );
@@ -153,5 +150,5 @@
 					onOpen : function()
 					{
-						if ( CKEDITOR.env.ie )
+						if ( CKEDITOR.env.ie || CKEDITOR.env.webkit )
 							editor.focus();
 
@@ -159,5 +156,4 @@
 
 						var element = selection.getSelectedElement(),
-							elementName = element && element.getName(),
 							elementPath = new CKEDITOR.dom.elementPath( element || selection.getStartElement() );
 
@@ -170,23 +166,13 @@
 								type = style.type;
 
-							if ( type == CKEDITOR.STYLE_OBJECT )
+							if ( style.checkActive( elementPath ) )
+								this.mark( name );
+							else if ( type == CKEDITOR.STYLE_OBJECT && !style.checkApplicable( elementPath ) )
 							{
-								if ( element && style.element == elementName )
-								{
-									if ( style.checkElementRemovable( element, true ) )
-										this.mark( name );
-
-									counter[ type ]++;
-								}
-								else
-									this.hideItem( name );
+								this.hideItem( name );
+								counter[ type ]--;
 							}
-							else
-							{
-								if ( style.checkActive( elementPath ) )
-									this.mark( name );
-
-								counter[ type ]++;
-							}
+
+							counter[ type ]++;
 						}
 
@@ -201,61 +187,8 @@
 					}
 				});
+
+			editor.on( 'instanceReady', function() { loadStylesSet(); } );
 		}
 	});
-
-	var stylesSets = {};
-
-	CKEDITOR.addStylesSet = function( name, styles )
-	{
-		stylesSets[ name ] = styles;
-	};
-
-	CKEDITOR.loadStylesSet = function( name, url, callback )
-	{
-		var stylesSet = stylesSets[ name ];
-
-		if ( stylesSet )
-		{
-			callback( stylesSet );
-			return ;
-		}
-
-		CKEDITOR.scriptLoader.load( url, function()
-			{
-				callback( stylesSets[ name ] );
-			});
-	};
-
-	function buildPreview( styleDefinition )
-	{
-		var html = [];
-
-		var elementName = styleDefinition.element;
-
-		// Avoid <bdo> in the preview.
-		if ( elementName == 'bdo' )
-			elementName = 'span';
-
-		html = [ '<', elementName ];
-
-		// Assign all defined attributes.
-		var attribs	= styleDefinition.attributes;
-		if ( attribs )
-		{
-			for ( var att in attribs )
-			{
-				html.push( ' ', att, '="', attribs[ att ], '"' );
-			}
-		}
-
-		// Assign the style attribute.
-		var cssStyle = CKEDITOR.style.getStyleText( styleDefinition );
-		if ( cssStyle )
-			html.push( ' style="', cssStyle, '"' );
-
-		html.push( '>', styleDefinition.name, '</', elementName, '>' );
-
-		return html.join( '' );
-	}
 
 	function sortStyles( styleA, styleB )
@@ -271,24 +204,2 @@
 	}
 })();
-
-/**
- * The "styles definition set" to load into the styles combo. The styles may
- * be defined in the page containing the editor, or can be loaded on demand
- * from an external file when opening the styles combo for the fist time. In
- * the second case, if this setting contains only a name, the styles definition
- * file will be loaded from the "styles" folder inside the stylescombo plugin
- * folder. Otherwise, this setting has the "name:url" syntax, making it
- * possible to set the URL from which loading the styles file.
- * @type string
- * @default 'default'
- * @example
- * // Load from the stylescombo styles folder (mystyles.js file).
- * config.stylesCombo_stylesSet = 'mystyles';
- * @example
- * // Load from a relative URL.
- * config.stylesCombo_stylesSet = 'mystyles:/editorstyles/styles.js';
- * @example
- * // Load from a full URL.
- * config.stylesCombo_stylesSet = 'mystyles:http://www.example.com/editorstyles/styles.js';
- */
-CKEDITOR.config.stylesCombo_stylesSet = 'default';
Index: /CKEditor/branches/features/adobeair/_source/plugins/tab/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/tab/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/tab/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -6,9 +6,15 @@
 (function()
 {
+	var meta =
+	{
+		editorFocus : false,
+		modes : { wysiwyg:1, source:1 }
+	};
+
 	var blurCommand =
 		{
 			exec : function( editor )
 			{
-				editor.container.focusNext( true );
+				editor.container.focusNext( true, editor.tabIndex );
 			}
 		};
@@ -18,5 +24,5 @@
 			exec : function( editor )
 			{
-				editor.container.focusPrevious( true );
+				editor.container.focusPrevious( true, editor.tabIndex );
 			}
 		};
@@ -28,10 +34,5 @@
 		init : function( editor )
 		{
-			// Register the keystrokes.
-			var keystrokes = editor.keystrokeHandler.keystrokes;
-			keystrokes[ 9 /* TAB */ ] = 'tab';
-			keystrokes[ CKEDITOR.SHIFT + 9 /* TAB */ ] = 'shiftTab';
-
-			var tabSpaces = editor.config.tabSpaces,
+			var tabSpaces = editor.config.tabSpaces || 0,
 				tabText = '';
 
@@ -39,44 +40,38 @@
 				tabText += '\xa0';
 
-			// Register the "tab" and "shiftTab" commands.
-			editor.addCommand( 'tab',
-				{
-					exec : function( editor )
+			if ( tabText )
+			{
+				editor.on( 'key', function( ev )
 					{
-						// Fire the "tab" event, making it possible to
-						// customize the TAB key behavior on specific cases.
-						if ( !editor.fire( 'tab' ) )
+						if ( ev.data.keyCode == 9 )	// TAB
 						{
-							if ( tabText.length > 0 )
-								editor.insertHtml( tabText );
-							else
-							{
-								// All browsers jump to the next field on TAB,
-								// except Safari, so we have to do that manually
-								// here.
-								/// https://bugs.webkit.org/show_bug.cgi?id=20597
-								return editor.execCommand( 'blur' );
-							}
+							editor.insertHtml( tabText );
+							ev.cancel();
 						}
-
-						return true;
-					}
-				});
-
-			editor.addCommand( 'shiftTab',
-				{
-					exec : function( editor )
+					});
+			}
+
+			if ( CKEDITOR.env.webkit || CKEDITOR.env.gecko )
+			{
+				editor.on( 'key', function( ev )
 					{
-						// Fire the "tab" event, making it possible to
-						// customize the TAB key behavior on specific cases.
-						if ( !editor.fire( 'shiftTab' ) )
-							return editor.execCommand( 'blurBack' );
-
-						return true;
-					}
-				});
-
-			editor.addCommand( 'blur', blurCommand );
-			editor.addCommand( 'blurBack', blurBackCommand );
+						var keyCode = ev.data.keyCode;
+
+						if ( keyCode == 9 && !tabText )				// TAB
+						{
+							ev.cancel();
+							editor.execCommand( 'blur' );
+						}
+
+						if ( keyCode == ( CKEDITOR.SHIFT + 9 ) )	// SHIFT+TAB
+						{
+							editor.execCommand( 'blurBack' );
+							ev.cancel();
+						}
+					});
+			}
+
+			editor.addCommand( 'blur', CKEDITOR.tools.extend( blurCommand, meta ) );
+			editor.addCommand( 'blurBack', CKEDITOR.tools.extend( blurBackCommand, meta ) );
 		}
 	});
@@ -90,8 +85,8 @@
  * element.focusNext();
  */
-CKEDITOR.dom.element.prototype.focusNext = function( ignoreChildren )
+CKEDITOR.dom.element.prototype.focusNext = function( ignoreChildren, indexToUse )
 {
 	var $ = this.$,
-		curTabIndex = this.getTabIndex(),
+		curTabIndex = ( indexToUse === undefined ? this.getTabIndex() : indexToUse ),
 		passedCurrent, enteredCurrent,
 		elected, electedTabIndex,
@@ -105,5 +100,5 @@
 		element = this.getNextSourceNode( ignoreChildren, CKEDITOR.NODE_ELEMENT );
 
-		while( element )
+		while ( element )
 		{
 			if ( element.isVisible() && element.getTabIndex() === 0 )
@@ -126,5 +121,5 @@
 		element = this.getDocument().getBody().getFirst();
 
-		while( ( element = element.getNextSourceNode( false, CKEDITOR.NODE_ELEMENT ) ) )
+		while ( ( element = element.getNextSourceNode( false, CKEDITOR.NODE_ELEMENT ) ) )
 		{
 			if ( !passedCurrent )
@@ -178,8 +173,8 @@
  * element.focusPrevious();
  */
-CKEDITOR.dom.element.prototype.focusPrevious = function( ignoreChildren )
+CKEDITOR.dom.element.prototype.focusPrevious = function( ignoreChildren, indexToUse )
 {
 	var $ = this.$,
-		curTabIndex = this.getTabIndex(),
+		curTabIndex = ( indexToUse === undefined ? this.getTabIndex() : indexToUse ),
 		passedCurrent, enteredCurrent,
 		elected,
@@ -189,5 +184,5 @@
 	var element = this.getDocument().getBody().getLast();
 
-	while( ( element = element.getPreviousSourceNode( false, CKEDITOR.NODE_ELEMENT ) ) )
+	while ( ( element = element.getPreviousSourceNode( false, CKEDITOR.NODE_ELEMENT ) ) )
 	{
 		if ( !passedCurrent )
@@ -259,4 +254,5 @@
  * hitting the TAB key. If set to zero, the TAB key will be used to move the
  * cursor focus to the next element in the page, out of the editor focus.
+ * @name CKEDITOR.config.tabSpaces
  * @type Number
  * @default 0
@@ -264,3 +260,2 @@
  * config.tabSpaces = 4;
  */
-CKEDITOR.config.tabSpaces = 0 ;
Index: /CKEditor/branches/features/adobeair/_source/plugins/table/dialogs/table.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/table/dialogs/table.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/table/dialogs/table.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -44,4 +44,9 @@
 					else if ( ranges.length > 0 )
 					{
+						// Webkit could report the following range on cell selection (#4948):
+						// <table><tr><td>[&nbsp;</td></tr></table>]
+						if ( CKEDITOR.env.webkit )
+							ranges[ 0 ].shrink( CKEDITOR.NODE_ELEMENT );
+
 						var rangeRoot = ranges[0].getCommonAncestor( true );
 						selectedTable = rangeRoot.getAscendant( 'table', true );
@@ -69,4 +74,10 @@
 			onOk : function()
 			{
+				if ( this._.selectedElement )
+				{
+					var selection = editor.getSelection(),
+						bms = editor.getSelection().createBookmarks();
+				}
+
 				var table = this._.selectedElement || makeElement( 'table' ),
 					me = this,
@@ -98,5 +109,5 @@
 					}
 
-					// Modify the table headers. Depends on havint rows and cols generated
+					// Modify the table headers. Depends on having rows and cols generated
 					// correctly so it can't be done in commit functions.
 
@@ -116,6 +127,5 @@
 							{
 								th.renameNode( 'th' );
-								if ( !i )
-									th.setAttribute( 'scope', 'col' );
+								th.setAttribute( 'scope', 'col' );
 							}
 						}
@@ -150,9 +160,9 @@
 					if ( !this.hasColumnHeaders && ( headers == 'col' || headers == 'both' ) )
 					{
-						for( row = 0 ; row < table.$.rows.length ; row++ )
+						for ( row = 0 ; row < table.$.rows.length ; row++ )
 						{
 							newCell = new CKEDITOR.dom.element( table.$.rows[ row ].cells[ 0 ] );
 							newCell.renameNode( 'th' );
-							newCell.setAttribute( 'scope', 'col' );
+							newCell.setAttribute( 'scope', 'row' );
 						}
 					}
@@ -161,5 +171,5 @@
 					if ( ( this.hasColumnHeaders ) && !( headers == 'col' || headers == 'both' ) )
 					{
-						for( i = 0 ; i < table.$.rows.length ; i++ )
+						for ( i = 0 ; i < table.$.rows.length ; i++ )
 						{
 							row = new CKEDITOR.dom.element( table.$.rows[i] );
@@ -167,5 +177,5 @@
 							{
 								newCell = new CKEDITOR.dom.element( row.$.cells[0] );
-								newCell.renameNode( 'td');
+								newCell.renameNode( 'td' );
 								newCell.removeAttribute( 'scope' );
 							}
@@ -176,14 +186,17 @@
 					var styles = [];
 					if ( info.txtHeight )
-						styles.push( 'height:' + info.txtHeight + 'px' );
+						table.setStyle( 'height', CKEDITOR.tools.cssLength( info.txtHeight ) );
+					else
+						table.removeStyle( 'height' );
+
 					if ( info.txtWidth )
 					{
 						var type = info.cmbWidthType || 'pixels';
-						styles.push( 'width:' + info.txtWidth + ( type == 'pixels' ? 'px' : '%' ) );
-					}
-					styles = styles.join( ';' );
-					if ( styles )
-						table.$.style.cssText = styles;
+						table.setStyle( 'width', info.txtWidth + ( type == 'pixels' ? 'px' : '%' ) );
+					}
 					else
+						table.removeStyle( 'width' );
+
+					if ( !table.getAttribute( 'style' ) )
 						table.removeAttribute( 'style' );
 				}
@@ -192,4 +205,7 @@
 				if ( !this._.selectedElement )
 					editor.insertElement( table );
+				// Properly restore the selection inside table. (#4822)
+				else
+					selection.selectBookmarks( bms );
 
 				return true;
@@ -329,5 +345,5 @@
 											items :
 											[
-												[ editor.lang.table.alignNotSet , ''],
+												[ editor.lang.common.notSet , ''],
 												[ editor.lang.table.alignLeft , 'left'],
 												[ editor.lang.table.alignCenter , 'center'],
@@ -365,4 +381,16 @@
 													'default' : 200,
 													validate : CKEDITOR.dialog.validate['number']( editor.lang.table.invalidWidth ),
+
+													// Extra labelling of width unit type.
+													onLoad : function()
+													{
+														var widthType = this.getDialog().getContentElement( 'info', 'cmbWidthType' ),
+															labelElement = widthType.getElement(),
+															inputElement = this.getInputElement(),
+															ariaLabelledByAttr = inputElement.getAttribute( 'aria-labelledby' );
+
+														inputElement.setAttribute( 'aria-labelledby', [ ariaLabelledByAttr, labelElement.$.id ].join( ' ' ) );
+													},
+
 													setup : function( selectedTable )
 													{
@@ -370,4 +398,6 @@
 														if ( widthMatch )
 															this.setValue( widthMatch[1] );
+														else
+															this.setValue( '' );
 													},
 													commit : commitValue
@@ -376,5 +406,6 @@
 													id : 'cmbWidthType',
 													type : 'select',
-													label : '&nbsp;',
+													label : editor.lang.table.widthUnit,
+													labelStyle: 'visibility:hidden',
 													'default' : 'pixels',
 													items :
@@ -405,4 +436,16 @@
 													'default' : '',
 													validate : CKEDITOR.dialog.validate['number']( editor.lang.table.invalidHeight ),
+
+													// Extra labelling of height unit type.
+													onLoad : function()
+													{
+														var heightType = this.getDialog().getContentElement( 'info', 'htmlHeightType' ),
+															labelElement = heightType.getElement(),
+															inputElement = this.getInputElement(),
+															ariaLabelledByAttr = inputElement.getAttribute( 'aria-labelledby' );
+
+														inputElement.setAttribute( 'aria-labelledby', [ ariaLabelledByAttr, labelElement.$.id ].join( ' ' ) );
+													},
+
 													setup : function( selectedTable )
 													{
@@ -414,6 +457,7 @@
 												},
 												{
+													id : 'htmlHeightType',
 													type : 'html',
-													html : '<br />' + editor.lang.table.widthPx
+													html : '<div><br />' + editor.lang.table.widthPx + '</div>'
 												}
 											]
@@ -530,4 +574,6 @@
 										if ( this.getValue() )
 											selectedTable.setAttribute( 'summary', this.getValue() );
+										else
+											selectedTable.removeAttribute( 'summary' );
 									}
 								}
Index: /CKEditor/branches/features/adobeair/_source/plugins/table/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/table/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/table/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -46,4 +46,12 @@
 		}
 
+		editor.on( 'doubleclick', function( evt )
+			{
+				var element = evt.data.element;
+
+				if ( element.is( 'table' ) )
+					evt.data.dialog = 'tableProperties';
+			});
+
 		// If the "contextmenu" plugin is loaded, register the listeners.
 		if ( editor.contextMenu )
Index: /CKEditor/branches/features/adobeair/_source/plugins/tabletools/dialogs/tableCell.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/tabletools/dialogs/tableCell.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/tabletools/dialogs/tableCell.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -56,5 +56,5 @@
 
 					var definition = e.data.definition;
-					
+
 					e.removeListener();
 					definition.onLoad = CKEDITOR.tools.override( definition.onLoad, function( orginal )
@@ -70,5 +70,5 @@
 				});
 			}
-		};
+		}
 
 		return {
@@ -105,17 +105,35 @@
 													labelLayout : 'horizontal',
 													validate : validate[ 'number' ]( langCell.invalidWidth ),
-													setup : function( selectedCell )
-													{
-														var widthMatch = widthPattern.exec( selectedCell.$.style.width );
-														if ( widthMatch )
-															this.setValue( widthMatch[1] );
-													},
-													commit : function( selectedCell )
-													{
-														var unit = this.getDialog().getValueOf( 'info', 'widthType' );
-														if ( this.getValue() !== '' )
-															selectedCell.$.style.width = this.getValue() + unit;
+
+													// Extra labelling of width unit type.
+													onLoad : function()
+													{
+														var widthType = this.getDialog().getContentElement( 'info', 'widthType' ),
+															labelElement = widthType.getElement(),
+															inputElement = this.getInputElement(),
+															ariaLabelledByAttr = inputElement.getAttribute( 'aria-labelledby' );
+
+														inputElement.setAttribute( 'aria-labelledby', [ ariaLabelledByAttr, labelElement.$.id ].join( ' ' ) );
+													},
+
+													setup : function( element )
+													{
+														var widthAttr = parseInt( element.getAttribute( 'width' ), 10 ),
+																widthStyle = parseInt( element.getStyle( 'width' ), 10 );
+
+														!isNaN( widthAttr ) && this.setValue( widthAttr );
+														!isNaN( widthStyle ) && this.setValue( widthStyle );
+													},
+													commit : function( element )
+													{
+														var value = parseInt( this.getValue(), 10 ),
+																unit = this.getDialog().getValueOf( 'info', 'widthType' );
+
+														if ( !isNaN( value ) )
+															element.setStyle( 'width', value + unit );
 														else
-															selectedCell.$.style.width = '';
+															element.removeStyle( 'width' );
+
+														element.removeAttribute( 'width' );
 													},
 													'default' : ''
@@ -126,5 +144,6 @@
 													labelLayout : 'horizontal',
 													widths : [ '0%', '100%' ],
-													label : '',
+													label : editor.lang.table.widthUnit,
+													labelStyle: 'display:none',
 													'default' : 'px',
 													items :
@@ -155,19 +174,38 @@
 													labelLayout : 'horizontal',
 													validate : validate[ 'number' ]( langCell.invalidHeight ),
-													setup : function( selectedCell )
-													{
-														var heightMatch = heightPattern.exec( selectedCell.$.style.height );
-														if ( heightMatch )
-															this.setValue( heightMatch[1] );
-													},
-													commit : function( selectedCell )
-													{
-														if ( this.getValue() !== '' )
-															selectedCell.$.style.height = this.getValue() + 'px';
+
+													// Extra labelling of height unit type.
+													onLoad : function()
+													{
+														var heightType = this.getDialog().getContentElement( 'info', 'htmlHeightType' ),
+															labelElement = heightType.getElement(),
+															inputElement = this.getInputElement(),
+															ariaLabelledByAttr = inputElement.getAttribute( 'aria-labelledby' );
+
+														inputElement.setAttribute( 'aria-labelledby', [ ariaLabelledByAttr, labelElement.$.id ].join( ' ' ) );
+													},
+
+													setup : function( element )
+													{
+														var heightAttr = parseInt( element.getAttribute( 'height' ), 10 ),
+																heightStyle = parseInt( element.getStyle( 'height' ), 10 );
+
+														!isNaN( heightAttr ) && this.setValue( heightAttr );
+														!isNaN( heightStyle ) && this.setValue( heightStyle );
+													},
+													commit : function( element )
+													{
+														var value = parseInt( this.getValue(), 10 );
+
+														if ( !isNaN( value ) )
+															element.setStyle( 'height', CKEDITOR.tools.cssLength( value ) );
 														else
-															selectedCell.$.style.height = '';
+															element.removeStyle( 'height' );
+
+														element.removeAttribute( 'height' );
 													}
 												},
 												{
+													id : 'htmlHeightType',
 													type : 'html',
 													html : langTable.widthPx
@@ -188,10 +226,20 @@
 												[ langCell.no, 'no' ]
 											],
-											commit : function( selectedCell )
+											setup : function( element )
+											{
+												var wordWrapAttr = element.getAttribute( 'noWrap' ),
+														wordWrapStyle = element.getStyle( 'white-space' );
+
+												if ( wordWrapStyle == 'nowrap' || wordWrapAttr )
+													this.setValue( 'no' );
+											},
+											commit : function( element )
 											{
 												if ( this.getValue() == 'no' )
-													selectedCell.setAttribute( 'noWrap', 'nowrap' );
+													element.setStyle( 'white-space', 'nowrap' );
 												else
-													selectedCell.removeAttribute( 'noWrap' );
+													element.removeStyle( 'white-space' );
+
+												element.removeAttribute( 'noWrap' );
 											}
 										},
@@ -211,14 +259,21 @@
 												[ langTable.alignRight, 'right' ]
 											],
-											setup : function( selectedCell )
-											{
-												this.setValue( selectedCell.getAttribute( 'align' ) || '' );
+											setup : function( element )
+											{
+												var alignAttr = element.getAttribute( 'align' ),
+														textAlignStyle = element.getStyle( 'text-align');
+
+												this.setValue(  textAlignStyle || alignAttr || '' );
 											},
 											commit : function( selectedCell )
 											{
-												if ( this.getValue() )
-													selectedCell.setAttribute( 'align', this.getValue() );
+												var value = this.getValue();
+
+												if ( value )
+													selectedCell.setStyle( 'text-align', value );
 												else
-													selectedCell.removeAttribute( 'align' );
+													selectedCell.removeStyle( 'text-align' );
+
+												selectedCell.removeAttribute( 'align' );
 											}
 										},
@@ -238,14 +293,33 @@
 												[ langCell.alignBaseline, 'baseline' ]
 											],
-											setup : function( selectedCell )
-											{
-												this.setValue( selectedCell.getAttribute( 'vAlign' ) || '' );
+											setup : function( element )
+											{
+												var vAlignAttr = element.getAttribute( 'vAlign' ),
+														vAlignStyle = element.getStyle( 'vertical-align' );
+
+												switch( vAlignStyle )
+												{
+													// Ignore all other unrelated style values..
+													case 'top':
+													case 'middle':
+													case 'bottom':
+													case 'baseline':
+														break;
+													default:
+														vAlignStyle = '';
+												}
+
+												this.setValue( vAlignStyle || vAlignAttr || '' );
 											},
-											commit : function( selectedCell )
-											{
-												if ( this.getValue() )
-													selectedCell.setAttribute( 'vAlign', this.getValue() );
+											commit : function( element )
+											{
+												var value = this.getValue();
+
+												if ( value )
+													element.setStyle( 'vertical-align', value );
 												else
-													selectedCell.removeAttribute( 'vAlign' );
+													element.removeStyle( 'vertical-align' );
+
+												element.removeAttribute( 'vAlign' );
 											}
 										}
@@ -290,9 +364,12 @@
 											setup : function( selectedCell )
 											{
-												this.setValue( selectedCell.getAttribute( 'rowSpan' ) || '' );
+												var attrVal = parseInt( selectedCell.getAttribute( 'rowSpan' ), 10 );
+												if ( attrVal && attrVal  != 1 )
+												 	this.setValue(  attrVal );
 											},
 											commit : function( selectedCell )
 											{
-												if ( this.getValue() )
+												var value = parseInt( this.getValue(), 10 );
+												if ( value && value != 1 )
 													selectedCell.setAttribute( 'rowSpan', this.getValue() );
 												else
@@ -308,11 +385,14 @@
 											'default' : '',
 											validate : validate.integer( langCell.invalidColSpan ),
-											setup : function( selectedCell )
-											{
-												this.setValue( selectedCell.getAttribute( 'colSpan' ) || '' );
+											setup : function( element )
+											{
+												var attrVal = parseInt( element.getAttribute( 'colSpan' ), 10 );
+												if ( attrVal && attrVal  != 1 )
+												 	this.setValue(  attrVal );
 											},
 											commit : function( selectedCell )
 											{
-												if ( this.getValue() )
+												var value = parseInt( this.getValue(), 10 );
+												if ( value && value != 1 )
 													selectedCell.setAttribute( 'colSpan', this.getValue() );
 												else
@@ -334,14 +414,21 @@
 													widths : [ '70%', '30%' ],
 													'default' : '',
-													setup : function( selectedCell )
-													{
-														this.setValue( selectedCell.getAttribute( 'bgColor' ) || '' );
+													setup : function( element )
+													{
+														var bgColorAttr = element.getAttribute( 'bgColor' ),
+																bgColorStyle = element.getStyle( 'background-color' );
+
+														this.setValue( bgColorStyle || bgColorAttr );
 													},
 													commit : function( selectedCell )
 													{
-														if ( this.getValue() )
-															selectedCell.setAttribute( 'bgColor', this.getValue() );
+														var value = this.getValue();
+
+														if ( value )
+															selectedCell.setStyle( 'background-color', this.getValue() );
 														else
-															selectedCell.removeAttribute( 'bgColor' );
+															selectedCell.removeStyle( 'background-color' );
+
+														selectedCell.removeAttribute( 'bgColor');
 													}
 												},
@@ -378,14 +465,20 @@
 													widths : [ '70%', '30%' ],
 													'default' : '',
-													setup : function( selectedCell )
-													{
-														this.setValue( selectedCell.getStyle( 'border-color' ) || '' );
+													setup : function( element )
+													{
+														var borderColorAttr = element.getAttribute( 'borderColor' ),
+																borderColorStyle = element.getStyle( 'border-color' );
+
+														this.setValue( borderColorStyle || borderColorAttr );
 													},
 													commit : function( selectedCell )
 													{
-														if ( this.getValue() )
+														var value = this.getValue();
+														if ( value )
 															selectedCell.setStyle( 'border-color', this.getValue() );
 														else
 															selectedCell.removeStyle( 'border-color' );
+
+														selectedCell.removeAttribute( 'borderColor');
 													}
 												},
@@ -423,7 +516,12 @@
 			onOk : function()
 			{
+				var selection = this._.editor.getSelection(),
+					bookmarks = selection.createBookmarks();
+
 				var cells = this.cells;
 				for ( var i = 0 ; i < cells.length ; i++ )
 					this.commitContent( cells[ i ] );
+
+				selection.selectBookmarks( bookmarks );
 			}
 		};
Index: /CKEditor/branches/features/adobeair/_source/plugins/tabletools/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/tabletools/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/tabletools/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -87,154 +87,39 @@
 	}
 
-	function createTableMap( $refCell )
-	{
-		var refCell = new CKEDITOR.dom.element( $refCell );
-		var $table = ( refCell.getName() == 'table' ? $refCell : refCell.getAscendant( 'table' ) ).$;
-		var $rows = $table.rows;
-
-		// Row and column counters.
-		var r = -1;
-		var map = [];
-		for ( var i = 0 ; i < $rows.length ; i++ )
-		{
-			r++;
-			if ( !map[ r ] )
-				map[ r ] = [];
-
-			var c = -1;
-
-			for ( var j = 0 ; j < $rows[ i ].cells.length ; j++ )
-			{
-				var $cell = $rows[ i ].cells[ j ];
-
-				c++;
-				while ( map[ r ][ c ] )
-					c++;
-
-				var colSpan = isNaN( $cell.colSpan ) ? 1 : $cell.colSpan;
-				var rowSpan = isNaN( $cell.rowSpan ) ? 1 : $cell.rowSpan;
-
-				for ( var rs = 0 ; rs < rowSpan ; rs++ )
-				{
-					if ( !map[ r + rs ] )
-						map[ r + rs ] = [];
-
-					for ( var cs = 0 ; cs < colSpan ; cs++ )
-						map [ r + rs ][ c + cs ] = $rows[ i ].cells[ j ];
-				}
-
-				c += colSpan - 1;
-			}
-		}
-
-		return map;
-	}
-
-	function installTableMap( tableMap, $table )
-	{
-		/*
-		 * IE BUG: rowSpan is always 1 in IE if the cell isn't attached to a row. So
-		 * store is separately in another attribute. (#1917)
-		 */
-		var rowSpanAttr = CKEDITOR.env.ie ? '_cke_rowspan' : 'rowSpan';
-
-		/*
-		 * Disconnect all the cells in tableMap from their parents, set all colSpan
-		 * and rowSpan attributes to 1.
-		 */
-		for ( var i = 0 ; i < tableMap.length ; i++ )
-		{
-			for ( var j = 0 ; j < tableMap[ i ].length ; j++ )
-			{
-				var $cell = tableMap[ i ][ j ];
-				if ( $cell.parentNode )
-					$cell.parentNode.removeChild( $cell );
-				$cell.colSpan = $cell[ rowSpanAttr ] = 1;
-			}
-		}
-
-		// Scan by rows and set colSpan.
-		var maxCol = 0;
-		for ( i = 0 ; i < tableMap.length ; i++ )
-		{
-			for ( j = 0 ; j < tableMap[ i ].length ; j++ )
-			{
-				$cell = tableMap[ i ][ j ];
-				if ( !$cell )
-					continue;
-				if ( j > maxCol )
-					maxCol = j;
-				if ( $cell[ '_cke_colScanned' ] )
-					continue;
-				if ( tableMap[ i ][ j - 1 ] == $cell )
-					$cell.colSpan++;
-				if ( tableMap[ i ][ j + 1 ] != $cell )
-					$cell[ '_cke_colScanned' ] = 1;
-			}
-		}
-
-		// Scan by columns and set rowSpan.
-		for ( i = 0 ; i <= maxCol ; i++ )
-		{
-			for ( j = 0 ; j < tableMap.length ; j++ )
-			{
-				if ( !tableMap[ j ] )
-					continue;
-				$cell = tableMap[ j ][ i ];
-				if ( !$cell || $cell[ '_cke_rowScanned' ] )
-					continue;
-				if ( tableMap[ j - 1 ] && tableMap[ j - 1 ][ i ] == $cell )
-					$cell[ rowSpanAttr ]++;
-				if ( !tableMap[ j + 1 ] || tableMap[ j + 1 ][ i ] != $cell  )
-					$cell[ '_cke_rowScanned' ] = 1;
-			}
-		}
-
-		// Clear all temporary flags.
-		for ( i = 0 ; i < tableMap.length ; i++ )
-		{
-			for ( j = 0 ; j < tableMap[ i ].length ; j++ )
-			{
-				$cell = tableMap[ i ][ j ];
-				removeRawAttribute( $cell, '_cke_colScanned' );
-				removeRawAttribute( $cell, '_cke_rowScanned' );
-			}
-		}
-
-		// Insert physical rows and columns to table.
-		for ( i = 0 ; i < tableMap.length ; i++ )
-		{
-			var $row = $table.ownerDocument.createElement( 'tr' );
-			for ( j = 0 ; j < tableMap[ i ].length ; )
-			{
-				$cell = tableMap[ i ][ j ];
-				if ( tableMap[ i - 1 ] && tableMap[ i - 1 ][ j ] == $cell )
-				{
-					j += $cell.colSpan;
-					continue;
-				}
-				$row.appendChild( $cell );
-				if ( rowSpanAttr != 'rowSpan' )
-				{
-					$cell.rowSpan = $cell[ rowSpanAttr ];
-					$cell.removeAttribute( rowSpanAttr );
-				}
-				j += $cell.colSpan;
-				if ( $cell.colSpan == 1 )
-					$cell.removeAttribute( 'colSpan' );
-				if ( $cell.rowSpan == 1 )
-					$cell.removeAttribute( 'rowSpan' );
-			}
-
-			if ( CKEDITOR.env.ie )
-				$table.rows[ i ].replaceNode( $row );
-			else
-			{
-				var dest = new CKEDITOR.dom.element( $table.rows[ i ] );
-				var src = new CKEDITOR.dom.element( $row );
-				dest.setHtml( '' );
-				src.moveChildren( dest );
-			}
-		}
+	function getFocusElementAfterDelCells( cellsToDelete ) {
+		var i = 0,
+			last = cellsToDelete.length - 1,
+			database = {},
+			cell,focusedCell,
+			tr;
+
+		while ( ( cell = cellsToDelete[ i++ ] ) )
+			CKEDITOR.dom.element.setMarker( database, cell, 'delete_cell', true );
+
+		// 1.first we check left or right side focusable cell row by row;
+		i = 0;
+		while ( ( cell = cellsToDelete[ i++ ] ) )
+		{
+			if ( ( focusedCell = cell.getPrevious() ) && !focusedCell.getCustomData( 'delete_cell' )
+			  || ( focusedCell = cell.getNext()     ) && !focusedCell.getCustomData( 'delete_cell' ) )
+			{
+				CKEDITOR.dom.element.clearAllMarkers( database );
+				return focusedCell;
+			}
+		}
+
+		CKEDITOR.dom.element.clearAllMarkers( database );
+
+		// 2. then we check the toppest row (outside the selection area square) focusable cell
+		tr = cellsToDelete[ 0 ].getParent();
+		if ( ( tr = tr.getPrevious() ) )
+			return tr.getLast();
+
+		// 3. last we check the lowerest  row focusable cell
+		tr = cellsToDelete[ last ].getParent();
+		if ( ( tr = tr.getNext() ) )
+			return tr.getChild( 0 );
+
+		return null;
 	}
 
@@ -276,13 +161,34 @@
 		if ( selectionOrRow instanceof CKEDITOR.dom.selection )
 		{
-			var cells = getSelectedCells( selectionOrRow );
-			var rowsToDelete = [];
+			var cells = getSelectedCells( selectionOrRow ),
+				cellsCount = cells.length,
+				rowsToDelete = [],
+				cursorPosition,
+				previousRowIndex,
+				nextRowIndex;
 
 			// Queue up the rows - it's possible and likely that we have duplicates.
-			for ( var i = 0 ; i < cells.length ; i++ )
-			{
-				var row = cells[ i ].getParent();
-				rowsToDelete[ row.$.rowIndex ] = row;
-			}
+			for ( var i = 0 ; i < cellsCount ; i++ )
+			{
+				var row = cells[ i ].getParent(),
+						rowIndex = row.$.rowIndex;
+
+				!i && ( previousRowIndex = rowIndex - 1 );
+				rowsToDelete[ rowIndex ] = row;
+				i == cellsCount - 1 && ( nextRowIndex = rowIndex + 1 );
+			}
+
+			var table = row.getAscendant( 'table' ),
+					rows =  table.$.rows,
+					rowCount = rows.length;
+
+			// Where to put the cursor after rows been deleted?
+			// 1. Into next sibling row if any;
+			// 2. Into previous sibling row if any;
+			// 3. Into table's parent element if it's the very last row.
+			cursorPosition = new CKEDITOR.dom.element(
+				nextRowIndex < rowCount && table.$.rows[ nextRowIndex ] ||
+				previousRowIndex > 0 && table.$.rows[ previousRowIndex ] ||
+				table.$.parentNode );
 
 			for ( i = rowsToDelete.length ; i >= 0 ; i-- )
@@ -291,8 +197,10 @@
 					deleteRows( rowsToDelete[ i ] );
 			}
+
+			return cursorPosition;
 		}
 		else if ( selectionOrRow instanceof CKEDITOR.dom.element )
 		{
-			var table = selectionOrRow.getAscendant( 'table' );
+			table = selectionOrRow.getAscendant( 'table' );
 
 			if ( table.$.rows.length == 1 )
@@ -301,4 +209,6 @@
 				selectionOrRow.remove();
 		}
+
+		return 0;
 	}
 
@@ -339,14 +249,56 @@
 	}
 
+	function getFocusElementAfterDelCols( cells )
+	{
+		var cellIndexList = [],
+			table = cells[ 0 ] && cells[ 0 ].getAscendant( 'table' ),
+			i, length,
+			targetIndex, targetCell;
+
+		// get the cellIndex list of delete cells
+		for ( i = 0, length = cells.length; i < length; i++ )
+			cellIndexList.push( cells[i].$.cellIndex );
+
+		// get the focusable column index
+		cellIndexList.sort();
+		for ( i = 1, length = cellIndexList.length; i < length; i++ )
+		{
+			if ( cellIndexList[ i ] - cellIndexList[ i - 1 ] > 1 )
+			{
+				targetIndex = cellIndexList[ i - 1 ] + 1;
+				break;
+			}
+		}
+
+		if ( !targetIndex )
+			targetIndex = cellIndexList[ 0 ] > 0 ? ( cellIndexList[ 0 ] - 1 )
+							: ( cellIndexList[ cellIndexList.length - 1 ] + 1 );
+
+		// scan row by row to get the target cell
+		var rows = table.$.rows;
+		for ( i = 0, length = rows.length; i < length ; i++ )
+		{
+			targetCell = rows[ i ].cells[ targetIndex ];
+			if ( targetCell )
+				break;
+		}
+
+		return targetCell ?  new CKEDITOR.dom.element( targetCell ) :  table.getPrevious();
+	}
+
 	function deleteColumns( selectionOrCell )
 	{
 		if ( selectionOrCell instanceof CKEDITOR.dom.selection )
 		{
-			var colsToDelete = getSelectedCells( selectionOrCell );
-			for ( var i = colsToDelete.length ; i >= 0 ; i-- )
+			var colsToDelete = getSelectedCells( selectionOrCell ),
+				elementToFocus = getFocusElementAfterDelCols( colsToDelete );
+
+			for ( var i = colsToDelete.length - 1 ; i >= 0 ; i-- )
 			{
 				if ( colsToDelete[ i ] )
 					deleteColumns( colsToDelete[ i ] );
 			}
+
+			return elementToFocus;
 		}
 		else if ( selectionOrCell instanceof CKEDITOR.dom.element )
@@ -354,4 +306,6 @@
 			// Get the cell's table.
 			var table = selectionOrCell.getAscendant( 'table' );
+			if ( !table )
+				return null;
 
 			// Get the cell index.
@@ -379,4 +333,6 @@
 			}
 		}
+
+		return null;
 	}
 
@@ -405,11 +361,20 @@
 		{
 			var cellsToDelete = getSelectedCells( selectionOrCell );
+			var table = cellsToDelete[ 0 ] && cellsToDelete[ 0 ].getAscendant( 'table' );
+			var cellToFocus   = getFocusElementAfterDelCells( cellsToDelete );
+
 			for ( var i = cellsToDelete.length - 1 ; i >= 0 ; i-- )
 				deleteCells( cellsToDelete[ i ] );
+
+			if ( cellToFocus )
+				placeCursorInCell( cellToFocus, true );
+			else if ( table )
+				table.remove();
 		}
 		else if ( selectionOrCell instanceof CKEDITOR.dom.element )
 		{
-			if ( selectionOrCell.getParent().getChildCount() == 1 )
-				selectionOrCell.getParent().remove();
+			var tr = selectionOrCell.getParent();
+			if ( tr.getChildCount() == 1 )
+				tr.remove();
 			else
 				selectionOrCell.remove();
@@ -417,4 +382,366 @@
 	}
 
+	// Remove filler at end and empty spaces around the cell content.
+	function trimCell( cell )
+	{
+		var bogus = cell.getBogus();
+		bogus && bogus.remove();
+		cell.trim();
+	}
+
+	function placeCursorInCell( cell, placeAtEnd )
+	{
+		var range = new CKEDITOR.dom.range( cell.getDocument() );
+		if ( !range[ 'moveToElementEdit' + ( placeAtEnd ? 'End' : 'Start' ) ]( cell ) )
+		{
+			range.selectNodeContents( cell );
+			range.collapse( placeAtEnd ? false : true );
+		}
+		range.select( true );
+	}
+
+	function buildTableMap( table )
+	{
+
+		var aRows = table.$.rows ;
+
+		// Row and Column counters.
+		var r = -1 ;
+
+		var aMap = [];
+
+		for ( var i = 0 ; i < aRows.length ; i++ )
+		{
+			r++ ;
+			!aMap[r] && ( aMap[r] = [] );
+
+			var c = -1 ;
+
+			for ( var j = 0 ; j < aRows[i].cells.length ; j++ )
+			{
+				var oCell = aRows[i].cells[j] ;
+
+				c++ ;
+				while ( aMap[r][c] )
+					c++ ;
+
+				var iColSpan = isNaN( oCell.colSpan ) ? 1 : oCell.colSpan ;
+				var iRowSpan = isNaN( oCell.rowSpan ) ? 1 : oCell.rowSpan ;
+
+				for ( var rs = 0 ; rs < iRowSpan ; rs++ )
+				{
+					if ( !aMap[r + rs] )
+						aMap[r + rs] = new Array() ;
+
+					for ( var cs = 0 ; cs < iColSpan ; cs++ )
+					{
+						aMap[r + rs][c + cs] = aRows[i].cells[j] ;
+					}
+				}
+
+				c += iColSpan - 1 ;
+			}
+		}
+		return aMap ;
+	}
+
+	function cellInRow( tableMap, rowIndex, cell )
+	{
+		var oRow = tableMap[ rowIndex ];
+		if ( typeof cell == 'undefined' )
+			return oRow;
+
+		for ( var c = 0 ; oRow && c < oRow.length ; c++ )
+		{
+			if ( cell.is && oRow[c] == cell.$ )
+				return c;
+			else if ( c == cell )
+				return new CKEDITOR.dom.element( oRow[ c ] );
+		}
+		return cell.is ? -1 : null;
+	}
+
+	function cellInCol( tableMap, colIndex, cell )
+	{
+		var oCol = [];
+		for ( var r = 0; r < tableMap.length; r++ )
+		{
+			var row = tableMap[ r ];
+			if ( typeof cell == 'undefined' )
+				oCol.push( row[ colIndex ] );
+			else if ( cell.is && row[ colIndex ] == cell.$ )
+				return r;
+			else if ( r == cell )
+				return new CKEDITOR.dom.element( row[ colIndex ] );
+		}
+
+		return ( typeof cell == 'undefined' )? oCol : cell.is ? -1 :  null;
+	}
+
+	function mergeCells( selection, mergeDirection, isDetect )
+	{
+		var cells = getSelectedCells( selection );
+
+		// Invalid merge request if:
+		// 1. In batch mode despite that less than two selected.
+		// 2. In solo mode while not exactly only one selected.
+		// 3. Cells distributed in different table groups (e.g. from both thead and tbody).
+		var commonAncestor;
+		if ( ( mergeDirection ? cells.length != 1 : cells.length < 2 )
+				|| ( commonAncestor = selection.getCommonAncestor() )
+				&& commonAncestor.type == CKEDITOR.NODE_ELEMENT
+				&& commonAncestor.is( 'table' ) )
+		{
+			return false;
+		}
+
+		var	cell,
+			firstCell = cells[ 0 ],
+			table = firstCell.getAscendant( 'table' ),
+			map = buildTableMap( table ),
+			mapHeight = map.length,
+			mapWidth = map[ 0 ].length,
+			startRow = firstCell.getParent().$.rowIndex,
+			startColumn = cellInRow( map, startRow, firstCell );
+
+		if ( mergeDirection )
+		{
+			var targetCell;
+			try
+			{
+				targetCell =
+					map[ mergeDirection == 'up' ?
+							( startRow - 1 ):
+							mergeDirection == 'down' ? ( startRow + 1 ) : startRow  ] [
+						 mergeDirection == 'left' ?
+							( startColumn - 1 ):
+						 mergeDirection == 'right' ?  ( startColumn + 1 ) : startColumn ];
+
+			}
+			catch( er )
+			{
+				return false;
+			}
+
+			// 1. No cell could be merged.
+			// 2. Same cell actually.
+			if ( !targetCell || firstCell.$ == targetCell  )
+				return false;
+
+			// Sort in map order regardless of the DOM sequence.
+			cells[ ( mergeDirection == 'up' || mergeDirection == 'left' ) ?
+			         'unshift' : 'push' ]( new CKEDITOR.dom.element( targetCell ) );
+		}
+
+		// Start from here are merging way ignorance (merge up/right, batch merge).
+		var	doc = firstCell.getDocument(),
+			lastRowIndex = startRow,
+			totalRowSpan = 0,
+			totalColSpan = 0,
+			// Use a documentFragment as buffer when appending cell contents.
+			frag = !isDetect && new CKEDITOR.dom.documentFragment( doc ),
+			dimension = 0;
+
+		for ( var i = 0; i < cells.length; i++ )
+		{
+			cell = cells[ i ];
+
+			var tr = cell.getParent(),
+				cellFirstChild = cell.getFirst(),
+				colSpan = cell.$.colSpan,
+				rowSpan = cell.$.rowSpan,
+				rowIndex = tr.$.rowIndex,
+				colIndex = cellInRow( map, rowIndex, cell );
+
+			// Accumulated the actual places taken by all selected cells.
+			dimension += colSpan * rowSpan;
+			// Accumulated the maximum virtual spans from column and row.
+			totalColSpan = Math.max( totalColSpan, colIndex - startColumn + colSpan ) ;
+			totalRowSpan = Math.max( totalRowSpan, rowIndex - startRow + rowSpan );
+
+			if ( !isDetect )
+			{
+				// Trim all cell fillers and check to remove empty cells.
+				if ( trimCell( cell ), cell.getChildren().count() )
+				{
+					// Merge vertically cells as two separated paragraphs.
+					if ( rowIndex != lastRowIndex
+						&& cellFirstChild
+						&& !( cellFirstChild.isBlockBoundary
+							  && cellFirstChild.isBlockBoundary( { br : 1 } ) ) )
+					{
+						var last = frag.getLast( CKEDITOR.dom.walker.whitespaces( true ) );
+						if ( last && !( last.is && last.is( 'br' ) ) )
+							frag.append( new CKEDITOR.dom.element( 'br' ) );
+					}
+
+					cell.moveChildren( frag );
+				}
+				i ? cell.remove() : cell.setHtml( '' );
+			}
+			lastRowIndex = rowIndex;
+		}
+
+		if ( !isDetect )
+		{
+			frag.moveChildren( firstCell );
+
+			if ( !CKEDITOR.env.ie )
+				firstCell.appendBogus();
+
+			if ( totalColSpan >= mapWidth )
+				firstCell.removeAttribute( 'rowSpan' );
+			else
+				firstCell.$.rowSpan = totalRowSpan;
+
+			if ( totalRowSpan >= mapHeight )
+				firstCell.removeAttribute( 'colSpan' );
+			else
+				firstCell.$.colSpan = totalColSpan;
+
+			// Swip empty <tr> left at the end of table due to the merging.
+			var trs = new CKEDITOR.dom.nodeList( table.$.rows ),
+				count = trs.count();
+
+			for ( i = count - 1; i >= 0; i-- )
+			{
+				var tailTr = trs.getItem( i );
+				if ( !tailTr.$.cells.length )
+				{
+					tailTr.remove();
+					count++;
+					continue;
+				}
+			}
+
+			return firstCell;
+		}
+		// Be able to merge cells only if actual dimension of selected
+		// cells equals to the caculated rectangle.
+		else
+			return ( totalRowSpan * totalColSpan ) == dimension;
+	}
+
+	function verticalSplitCell ( selection, isDetect )
+	{
+		var cells = getSelectedCells( selection );
+		if ( cells.length > 1 )
+			return false;
+		else if ( isDetect )
+			return true;
+
+		var cell = cells[ 0 ],
+			tr = cell.getParent(),
+			table = tr.getAscendant( 'table' ),
+			map = buildTableMap( table ),
+			rowIndex = tr.$.rowIndex,
+			colIndex = cellInRow( map, rowIndex, cell ),
+			rowSpan = cell.$.rowSpan,
+			newCell,
+			newRowSpan,
+			newCellRowSpan,
+			newRowIndex;
+
+		if ( rowSpan > 1 )
+		{
+			newRowSpan = Math.ceil( rowSpan / 2 );
+			newCellRowSpan = Math.floor( rowSpan / 2 );
+			newRowIndex = rowIndex + newRowSpan;
+			var newCellTr = new CKEDITOR.dom.element( table.$.rows[ newRowIndex ] ),
+				newCellRow = cellInRow( map, newRowIndex ),
+				candidateCell;
+
+			newCell = cell.clone();
+
+			// Figure out where to insert the new cell by checking the vitual row.
+			for ( var c = 0; c < newCellRow.length; c++ )
+			{
+				candidateCell = newCellRow[ c ];
+				// Catch first cell actually following the column.
+				if ( candidateCell.parentNode == newCellTr.$
+					&& c > colIndex )
+				{
+					newCell.insertBefore( new CKEDITOR.dom.element( candidateCell ) );
+					break;
+				}
+				else
+					candidateCell = null;
+			}
+
+			// The destination row is empty, append at will.
+			if ( !candidateCell )
+				newCellTr.append( newCell, true );
+		}
+		else
+		{
+			newCellRowSpan = newRowSpan = 1;
+
+			newCellTr = tr.clone();
+			newCellTr.insertAfter( tr );
+			newCellTr.append( newCell = cell.clone() );
+
+			var cellsInSameRow = cellInRow( map, rowIndex );
+			for ( var i = 0; i < cellsInSameRow.length; i++ )
+				cellsInSameRow[ i ].rowSpan++;
+		}
+
+		if ( !CKEDITOR.env.ie )
+			newCell.appendBogus();
+
+		cell.$.rowSpan = newRowSpan;
+		newCell.$.rowSpan = newCellRowSpan;
+		if ( newRowSpan == 1 )
+			cell.removeAttribute( 'rowSpan' );
+		if ( newCellRowSpan == 1 )
+			newCell.removeAttribute( 'rowSpan' );
+
+		return newCell;
+	}
+
+	function horizontalSplitCell( selection, isDetect )
+	{
+		var cells = getSelectedCells( selection );
+		if ( cells.length > 1 )
+			return false;
+		else if ( isDetect )
+			return true;
+
+		var cell = cells[ 0 ],
+			tr = cell.getParent(),
+			table = tr.getAscendant( 'table' ),
+			map = buildTableMap( table ),
+			rowIndex = tr.$.rowIndex,
+			colIndex = cellInRow( map, rowIndex, cell ),
+			colSpan = cell.$.colSpan,
+			newCell,
+			newColSpan,
+			newCellColSpan;
+
+		if ( colSpan > 1 )
+		{
+			newColSpan = Math.ceil( colSpan / 2 );
+			newCellColSpan = Math.floor( colSpan / 2 );
+		}
+		else
+		{
+			newCellColSpan = newColSpan = 1;
+			var cellsInSameCol = cellInCol( map, colIndex );
+			for ( var i = 0; i < cellsInSameCol.length; i++ )
+				cellsInSameCol[ i ].colSpan++;
+		}
+		newCell = cell.clone();
+		newCell.insertAfter( cell );
+		if ( !CKEDITOR.env.ie )
+			newCell.appendBogus();
+
+		cell.$.colSpan = newColSpan;
+		newCell.$.colSpan = newCellColSpan;
+		if ( newColSpan == 1 )
+			cell.removeAttribute( 'colSpan' );
+		if ( newCellColSpan == 1 )
+			newCell.removeAttribute( 'colSpan' );
+
+		return newCell;
+	}
 	// Context menu on table caption incorrect (#3834)
 	var contextMenuTags = { thead : 1, tbody : 1, tfoot : 1, td : 1, tr : 1, th : 1 };
@@ -446,7 +773,8 @@
 						selection.selectRanges( [ range ] );
 
-						// If the table's parent has only one child, remove it as well.
-						if ( table.getParent().getChildCount() == 1 )
-							table.getParent().remove();
+						// If the table's parent has only one child, remove it,except body,as well.( #5416 )
+						var parent = table.getParent();
+						if ( parent.getChildCount() == 1 && parent.getName() != 'body' )
+							parent.remove();
 						else
 							table.remove();
@@ -459,5 +787,5 @@
 					{
 						var selection = editor.getSelection();
-						deleteRows( selection );
+						placeCursorInCell( deleteRows( selection ) );
 					}
 				} );
@@ -486,5 +814,6 @@
 					{
 						var selection = editor.getSelection();
-						deleteColumns( selection );
+						var element = deleteColumns( selection );
+						element &&  placeCursorInCell( element, true );
 					}
 				} );
@@ -514,4 +843,44 @@
 						var selection = editor.getSelection();
 						deleteCells( selection );
+					}
+				} );
+
+			editor.addCommand( 'cellMerge',
+				{
+					exec : function( editor )
+					{
+						placeCursorInCell( mergeCells( editor.getSelection() ), true );
+					}
+				} );
+
+			editor.addCommand( 'cellMergeRight',
+				{
+					exec : function( editor )
+					{
+						placeCursorInCell( mergeCells( editor.getSelection(), 'right' ), true );
+					}
+				} );
+
+			editor.addCommand( 'cellMergeDown',
+				{
+					exec : function( editor )
+					{
+						placeCursorInCell( mergeCells( editor.getSelection(), 'down' ), true );
+					}
+				} );
+
+			editor.addCommand( 'cellVerticalSplit',
+				{
+					exec : function( editor )
+					{
+						placeCursorInCell( verticalSplitCell( editor.getSelection() ) );
+					}
+				} );
+
+			editor.addCommand( 'cellHorizontalSplit',
+				{
+					exec : function( editor )
+					{
+						placeCursorInCell( horizontalSplitCell( editor.getSelection() ) );
 					}
 				} );
@@ -547,9 +916,15 @@
 							getItems : function()
 							{
-								var cells = getSelectedCells( editor.getSelection() );
+								var selection = editor.getSelection(),
+									cells = getSelectedCells( selection );
 								return {
 									tablecell_insertBefore : CKEDITOR.TRISTATE_OFF,
 									tablecell_insertAfter : CKEDITOR.TRISTATE_OFF,
 									tablecell_delete : CKEDITOR.TRISTATE_OFF,
+									tablecell_merge : mergeCells( selection, null, true ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
+									tablecell_merge_right : mergeCells( selection, 'right', true ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
+									tablecell_merge_down : mergeCells( selection, 'down', true ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
+									tablecell_split_vertical : verticalSplitCell( selection, true ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
+									tablecell_split_horizontal : horizontalSplitCell( selection, true ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
 									tablecell_properties : cells.length > 0 ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED
 								};
@@ -581,4 +956,44 @@
 						},
 
+						tablecell_merge :
+						{
+							label : lang.cell.merge,
+							group : 'tablecell',
+							command : 'cellMerge',
+							order : 16
+						},
+
+						tablecell_merge_right :
+						{
+							label : lang.cell.mergeRight,
+							group : 'tablecell',
+							command : 'cellMergeRight',
+							order : 17
+						},
+
+						tablecell_merge_down :
+						{
+							label : lang.cell.mergeDown,
+							group : 'tablecell',
+							command : 'cellMergeDown',
+							order : 18
+						},
+
+						tablecell_split_horizontal :
+						{
+							label : lang.cell.splitHorizontal,
+							group : 'tablecell',
+							command : 'cellHorizontalSplit',
+							order : 19
+						},
+
+						tablecell_split_vertical :
+						{
+							label : lang.cell.splitVertical,
+							group : 'tablecell',
+							command : 'cellVerticalSplit',
+							order : 20
+						},
+
 						tablecell_properties :
 						{
@@ -586,5 +1001,5 @@
 							group : 'tablecellproperties',
 							command : 'cellProperties',
-							order : 20
+							order : 21
 						},
 
Index: /CKEditor/branches/features/adobeair/_source/plugins/templates/dialogs/templates.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/templates/dialogs/templates.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/templates/dialogs/templates.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -8,98 +8,144 @@
 	var doc = CKEDITOR.document;
 
-	var listId = 'cke' + CKEDITOR.tools.getNextNumber();
-
-	// Constructs the HTML view of the specified templates data.
-	function renderTemplatesList( editor, templatesDefinitions )
-	{
-		var listDiv = doc.getById( listId );
-
-		// clear loading wait text.
-		listDiv.setHtml( '' );
-
-		for ( var i = 0 ; i < templatesDefinitions.length ; i++ )
-		{
-			var definition = CKEDITOR.getTemplates( templatesDefinitions[ i ] ),
-				imagesPath = definition.imagesPath,
-				templates = definition.templates;
-
-			for ( var j = 0 ; j < templates.length ; j++ )
-			{
-				var template = templates[ j ];
-				listDiv.append( createTemplateItem( editor, template, imagesPath ) );
-			}
-		}
-	}
-
-	function createTemplateItem( editor, template, imagesPath )
-	{
-		var div = doc.createElement( 'div' );
-		div.setAttribute( 'class', 'cke_tpl_item' );
-
-		// Build the inner HTML of our new item DIV.
-		var html = '<table style="width:350px;" class="cke_tpl_preview"><tr>';
-
-		if( template.image && imagesPath )
-			html += '<td class="cke_tpl_preview_img"><img src="' + CKEDITOR.getUrl( imagesPath + template.image ) + '"></td>';
-
-		html += '<td style="white-space:normal;"><span class="cke_tpl_title">' + template.title + '</span><br/>';
-
-		if( template.description )
-			html += '<span>' + template.description + '</span>';
-
-		html += '</td></tr></table>';
-
-		div.setHtml( html );
-
-		div.on( 'mouseover', function()
-			{
-				div.addClass( 'cke_tpl_hover' );
-			});
-
-		div.on( 'mouseout', function()
-			{
-				div.removeClass( 'cke_tpl_hover' );
-			});
-
-		div.on( 'click', function()
-			{
-				insertTemplate( editor, template.html );
-			});
-
-		return div;
-	}
-
-	/**
-	 * Insert the specified template content
-	 * to document.
-	 * @param {Number} index
-	 */
-	function insertTemplate( editor, html )
-	{
-		var dialog = CKEDITOR.dialog.getCurrent(),
-			isInsert = dialog.getValueOf( 'selectTpl', 'chkInsertOpt' );
-
-		if( isInsert )
-		{
-			editor.setData( html );
-		}
-		else
-		{
-			editor.insertHtml( html );
-		}
-
-		dialog.hide();
-	}
-
 	CKEDITOR.dialog.add( 'templates', function( editor )
 		{
+			// Constructs the HTML view of the specified templates data.
+			function renderTemplatesList( container, templatesDefinitions )
+			{
+				// clear loading wait text.
+				container.setHtml( '' );
+
+				for ( var i = 0 ; i < templatesDefinitions.length ; i++ )
+				{
+					var definition = CKEDITOR.getTemplates( templatesDefinitions[ i ] ),
+						imagesPath = definition.imagesPath,
+						templates = definition.templates,
+						count = templates.length;
+
+					for ( var j = 0 ; j < count ; j++ )
+					{
+						var template = templates[ j ],
+							item =  createTemplateItem( template, imagesPath );
+						item.setAttribute( 'aria-posinset', j + 1 );
+						item.setAttribute( 'aria-setsize', count );
+						container.append( item );
+					}
+				}
+			}
+
+			function createTemplateItem( template, imagesPath )
+			{
+				var item = CKEDITOR.dom.element.createFromHtml(
+						'<a href="javascript:void(0)" tabIndex="-1" role="option" >' +
+							'<div class="cke_tpl_item"></div>' +
+						'</a>' );
+
+				// Build the inner HTML of our new item DIV.
+				var html = '<table style="width:350px;" class="cke_tpl_preview" role="presentation"><tr>';
+
+				if ( template.image && imagesPath )
+					html += '<td class="cke_tpl_preview_img"><img src="' + CKEDITOR.getUrl( imagesPath + template.image ) + '"' + ( CKEDITOR.env.ie6Compat? ' onload="this.width=this.width"' : '' ) + ' alt="" title=""></td>';
+
+				html += '<td style="white-space:normal;"><span class="cke_tpl_title">' + template.title + '</span><br/>';
+
+				if ( template.description )
+					html += '<span>' + template.description + '</span>';
+
+				html += '</td></tr></table>';
+
+				item.getFirst().setHtml( html );
+
+				item.on( 'click', function() { insertTemplate( template.html ); } );
+
+				return item;
+			}
+
+			/**
+			 * Insert the specified template content into editor.
+			 * @param {Number} index
+			 */
+			function insertTemplate( html )
+			{
+				var dialog = CKEDITOR.dialog.getCurrent(),
+					isInsert = dialog.getValueOf( 'selectTpl', 'chkInsertOpt' );
+
+				if ( isInsert )
+				{
+					// Everything should happen after the document is loaded (#4073).
+					editor.on( 'contentDom', function( evt )
+					{
+						evt.removeListener();
+						dialog.hide();
+
+						// Place the cursor at the first editable place.
+						var range = new CKEDITOR.dom.range( editor.document );
+						range.moveToElementEditStart( editor.document.getBody() );
+						range.select( true );
+						setTimeout( function ()
+						{
+							editor.fire( 'saveSnapshot' );
+						}, 0 );
+					} );
+
+					editor.fire( 'saveSnapshot' );
+					editor.setData( html );
+				}
+				else
+				{
+					editor.insertHtml( html );
+					dialog.hide();
+				}
+			}
+
+			function keyNavigation( evt )
+			{
+				var target = evt.data.getTarget(),
+						onList = listContainer.equals( target );
+
+				// Keyboard navigation for template list.
+				if (  onList || listContainer.contains( target ) )
+				{
+					var keystroke = evt.data.getKeystroke(),
+						items = listContainer.getElementsByTag( 'a' ),
+						focusItem;
+
+					if ( items )
+					{
+						// Focus not yet onto list items?
+						if ( onList )
+							focusItem = items.getItem( 0 );
+						else
+						{
+							switch ( keystroke )
+							{
+								case 40 :					// ARROW-DOWN
+									focusItem = target.getNext();
+									break;
+
+								case 38 :					// ARROW-UP
+									focusItem = target.getPrevious();
+									break;
+
+								case 13 :					// ENTER
+								case 32 :					// SPACE
+									target.fire( 'click' );
+							}
+						}
+
+						if ( focusItem )
+						{
+							focusItem.focus();
+							evt.data.preventDefault();
+						}
+					}
+				}
+			}
+
 			// Load skin at first.
 			CKEDITOR.skins.load( editor, 'templates' );
 
-			/**
-			 * Load templates once.
-			 */
-			var isLoaded = false;
-
+			var listContainer;
+
+			var templateListLabelId = 'cke_tpl_list_label_' + CKEDITOR.tools.getNextNumber();
 			return {
 				title :editor.lang.templates.title,
@@ -128,9 +174,12 @@
 									},
 									{
+										id : "templatesList",
 										type : 'html',
+										focus: true,
 										html :
-											'<div id="' + listId + '" class="cke_tpl_list">' +
+											'<div class="cke_tpl_list" tabIndex="-1" role="listbox" aria-labelledby="' + templateListLabelId+ '">' +
 												'<div class="cke_tpl_loading"><span></span></div>' +
-											'</div>'
+											'</div>' +
+											'<span class="cke_voice_label" id="' + templateListLabelId + '">' + editor.lang.templates.options+ '</span>'
 									},
 									{
@@ -150,4 +199,7 @@
 				onShow : function()
 				{
+					var templatesListField = this.getContentElement( 'selectTpl' , 'templatesList' );
+					listContainer = templatesListField.getElement();
+
 					CKEDITOR.loadTemplates( editor.config.templates_files, function()
 						{
@@ -155,9 +207,11 @@
 
 							if ( templates.length )
-								renderTemplatesList( editor, templates );
+							{
+								renderTemplatesList( listContainer, templates );
+								templatesListField.focus();
+							}
 							else
 							{
-								var listCtEl = doc.getById( listId );
-								listCtEl.setHtml(
+								listContainer.setHtml(
 									'<div class="cke_tpl_empty">' +
 										'<span>' + editor.lang.templates.emptyListMsg + '</span>' +
@@ -165,4 +219,11 @@
 							}
 						});
+
+					this._.element.on( 'keydown', keyNavigation );
+				},
+
+				onHide : function ()
+				{
+					this._.element.removeListener( 'keydown', keyNavigation );
 				}
 			};
Index: /CKEditor/branches/features/adobeair/_source/plugins/templates/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/templates/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/templates/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -86,5 +86,5 @@
 	[
 		CKEDITOR.getUrl(
-			'_source/' + // %REMOVE_LINE%
+			'_source/' + // @Packager.RemoveLine
 			'plugins/templates/templates/default.js' )
 	];
Index: /CKEditor/branches/features/adobeair/_source/plugins/templates/templates/default.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/templates/templates/default.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/templates/templates/default.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -20,5 +20,5 @@
 				html:
 					'<h3>' +
-						'<img style="margin-right: 10px" height="100" alt="" width="100" align="left"/>' +
+						'<img style="margin-right: 10px" height="100" width="100" align="left"/>' +
 						'Type the title here'+
 					'</h3>' +
@@ -32,11 +32,11 @@
 				description: 'A template that defines two colums, each one with a title, and some text.',
 				html:
-					'<table cellspacing="0" cellpadding="0" width="100%" border="0">' +
+					'<table cellspacing="0" cellpadding="0" style="width:100%" border="0">' +
 						'<tr>' +
-							'<td width="50%">' +
+							'<td style="width:50%">' +
 								'<h3>Title 1</h3>' +
 							'</td>' +
 							'<td></td>' +
-							'<td width="50%">' +
+							'<td style="width:50%">' +
 								'<h3>Title 2</h3>' +
 							'</td>' +
@@ -65,5 +65,5 @@
 							'Title goes here' +
 						'</h3>' +
-						'<table style="float: right" cellspacing="0" cellpadding="0" width="150" border="1">' +
+						'<table style="width:150px;float: right" cellspacing="0" cellpadding="0" border="1">' +
 							'<caption style="border:solid 1px black">' +
 								'<strong>Table title</strong>' +
Index: /CKEditor/branches/features/adobeair/_source/plugins/toolbar/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/toolbar/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/toolbar/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -60,11 +60,35 @@
 			var itemKeystroke = function( item, keystroke )
 			{
+				var next, nextToolGroup, groupItemsCount;
+				var rtl = editor.lang.dir == 'rtl';
+
 				switch ( keystroke )
 				{
-					case 39 :					// RIGHT-ARROW
+					case rtl ? 37 : 39 :					// RIGHT-ARROW
 					case 9 :					// TAB
-						// Look for the next item in the toolbar.
-						while ( ( item = item.next || ( item.toolbar.next && item.toolbar.next.items[ 0 ] ) ) && !item.focus )
-						{ /*jsl:pass*/ }
+						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 )
 
 						// If available, just focus it, otherwise focus the
@@ -77,9 +101,30 @@
 						return false;
 
-					case 37 :					// LEFT-ARROW
+					case rtl ? 39 : 37 :					// LEFT-ARROW
 					case CKEDITOR.SHIFT + 9 :	// SHIFT + TAB
-						// Look for the previous item in the toolbar.
-						while ( ( item = item.previous || ( item.toolbar.previous && item.toolbar.previous.items[ item.toolbar.previous.items.length - 1 ] ) ) && !item.focus )
-						{ /*jsl:pass*/ }
+						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 )
 
 						// If available, just focus it, otherwise focus the
@@ -113,9 +158,14 @@
 						editor.toolbox = new toolbox();
 
-						var output = [ '<div class="cke_toolbox"' ],
-							expanded =  editor.config.toolbarStartupExpanded,
+						var labelId = 'cke_' + CKEDITOR.tools.getNextNumber();
+
+						var output = [ '<div class="cke_toolbox" role="toolbar" aria-labelledby="', labelId, '"' ],
+							expanded =  editor.config.toolbarStartupExpanded !== false,
 							groupStarted;
 
 						output.push( expanded ? '>' : ' style="display:none">' );
+
+						// Sends the ARIA label.
+						output.push( '<span id="', labelId, '" class="cke_voice_label">', editor.lang.toolbar, '</span>' );
 
 						var toolbars = editor.toolbox.toolbars,
@@ -153,5 +203,5 @@
 							}
 
-							output.push( '<span id="', toolbarId, '" class="cke_toolbar"><span class="cke_toolbar_start"></span>' );
+							output.push( '<span id="', toolbarId, '" class="cke_toolbar" role="presentation"><span class="cke_toolbar_start"></span>' );
 
 							// Add the toolbar to the "editor.toolbox.toolbars"
@@ -183,5 +233,5 @@
 										if ( !groupStarted )
 										{
-											output.push( '<span class="cke_toolgroup">' );
+											output.push( '<span class="cke_toolgroup" role="presentation">' );
 											groupStarted = 1;
 										}
@@ -236,4 +286,8 @@
 								} );
 
+							editor.on( 'destroy', function () {
+									CKEDITOR.tools.removeFunction( collapserFn );
+								} );
+
 							var collapserId = 'cke_' + CKEDITOR.tools.getNextNumber();
 
@@ -248,9 +302,11 @@
 										var contentHeight = parseInt( contents.$.style.height, 10 );
 										var previousHeight = toolboxContainer.$.offsetHeight;
-
-										if ( toolbox.isVisible() )
+										var collapsed = !toolbox.isVisible();
+
+										if ( !collapsed )
 										{
 											toolbox.hide();
 											collapser.addClass( 'cke_toolbox_collapser_min' );
+											collapser.setAttribute( 'title', editor.lang.toolbarExpand );
 										}
 										else
@@ -258,8 +314,16 @@
 											toolbox.show();
 											collapser.removeClass( 'cke_toolbox_collapser_min' );
+											collapser.setAttribute( 'title', editor.lang.toolbarCollapse );
 										}
+
+										// Update collapser symbol.
+										collapser.getFirst().setText( collapsed ?
+											'\u25B2' :		// BLACK UP-POINTING TRIANGLE
+											'\u25C0' );		// BLACK LEFT-POINTING TRIANGLE
 
 										var dy = toolboxContainer.$.offsetHeight - previousHeight;
 										contents.setStyle( 'height', ( contentHeight - dy ) + 'px' );
+
+										editor.fire( 'resize' );
 									},
 
@@ -267,10 +331,13 @@
 								} );
 
-							output.push( '<a id="' + collapserId + '" class="cke_toolbox_collapser' );
+							output.push( '<a title="' + ( expanded ? editor.lang.toolbarCollapse : editor.lang.toolbarExpand )
+													  + '" id="' + collapserId + '" tabIndex="-1" class="cke_toolbox_collapser' );
 
 							if ( !expanded )
 								output.push( ' cke_toolbox_collapser_min' );
 
-							output.push( '" onclick="CKEDITOR.tools.callFunction(' + collapserFn + ')"></a>' );
+							output.push( '" onclick="CKEDITOR.tools.callFunction(' + collapserFn + ')">',
+										'<span>&#9650;</span>',		// BLACK UP-POINTING TRIANGLE
+										'</a>' );
 						}
 
@@ -293,5 +360,5 @@
 	render : function( editor, output )
 	{
-		output.push( '<span class="cke_separator"></span>' );
+		output.push( '<span class="cke_separator" role="separator"></span>' );
 		return {};
 	}
@@ -347,5 +414,5 @@
  *     '/',
  *     ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
- *     ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
+ *     ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote','CreateDiv'],
  *     ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
  *     ['Link','Unlink','Anchor'],
@@ -365,5 +432,5 @@
 	'/',
 	['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
-	['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
+	['NumberedList','BulletedList','-','Outdent','Indent','Blockquote','CreateDiv'],
 	['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
 	['Link','Unlink','Anchor'],
@@ -405,4 +472,5 @@
 /**
  * Whether the toolbar must start expanded when the editor is loaded.
+ * @name CKEDITOR.config.toolbarStartupExpanded
  * @type Boolean
  * @default true
@@ -410,3 +478,2 @@
  * config.toolbarStartupExpanded = false;
  */
-CKEDITOR.config.toolbarStartupExpanded = true;
Index: /CKEditor/branches/features/adobeair/_source/plugins/uicolor/dialogs/uicolor.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/uicolor/dialogs/uicolor.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/uicolor/dialogs/uicolor.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -8,5 +8,6 @@
 	var dialog, picker, pickerContents,
 		// Actual UI color value.
-		uiColor = editor.getUiColor();
+		uiColor = editor.getUiColor(),
+		pickerId = 'cke_uicolor_picker' + CKEDITOR.tools.getNextNumber();
 
 	function setNewPickerColor( color )
@@ -17,5 +18,5 @@
 		picker.setValue( color, true );
 		// Refresh picker UI.
-		picker.refresh( 'cke_uicolor_picker' );
+		picker.refresh( pickerId );
 	}
 
@@ -34,14 +35,14 @@
 		id : 'yuiColorPicker',
 		type : 'html',
-		html : "<div id='cke_uicolor_picker' style='width: 360px; height: 200px; position: relative;'></div>",
+		html : "<div id='" + pickerId + "' class='cke_uicolor_picker' style='width: 360px; height: 200px; position: relative;'></div>",
 		onLoad : function( event )
 		{
 			var url = CKEDITOR.getUrl(
-					'_source/' + // %REMOVE_LINE%
+					'_source/' + // @Packager.RemoveLine
 					'plugins/uicolor/yui/'
 				);
 
 			// Create new color picker widget.
-			picker = new window.YAHOO.widget.ColorPicker( "cke_uicolor_picker",
+			picker = new window.YAHOO.widget.ColorPicker( pickerId,
 				{
 					showhsvcontrols : true,
Index: /CKEditor/branches/features/adobeair/_source/plugins/uicolor/lang/en.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/uicolor/lang/en.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/uicolor/lang/en.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/plugins/uicolor/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/uicolor/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/uicolor/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -25,5 +25,5 @@
 		// Load YUI js files.
 		CKEDITOR.scriptLoader.load( CKEDITOR.getUrl(
-			'_source/' + // %REMOVE_LINE%
+			'_source/' + // @Packager.RemoveLine
 			'plugins/uicolor/yui/yui.js'
 		));
@@ -31,5 +31,5 @@
 		// Load YUI css files.
 		editor.element.getDocument().appendStyleSheet( CKEDITOR.getUrl(
-				'_source/' + // %REMOVE_LINE%
+				'_source/' + // @Packager.RemoveLine
 				'plugins/uicolor/yui/assets/yui.css'
 		));
Index: /CKEditor/branches/features/adobeair/_source/plugins/uicolor/yui/assets/yui.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/uicolor/yui/assets/yui.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/uicolor/yui/assets/yui.css	(revision 5613)
@@ -13,3 +13,3 @@
 version: 2.7.0
 */
-#cke_uicolor_picker .yui-picker-panel{background:#e3e3e3;border-color:#888;}#cke_uicolor_picker .yui-picker-panel .hd{background-color:#ccc;font-size:100%;line-height:100%;border:1px solid #e3e3e3;font-weight:bold;overflow:hidden;padding:6px;color:#000;}#cke_uicolor_picker .yui-picker-panel .bd{background:#e8e8e8;margin:1px;height:200px;}#cke_uicolor_picker .yui-picker-panel .ft{background:#e8e8e8;margin:1px;padding:1px;}#cke_uicolor_picker .yui-picker{position:relative;}#cke_uicolor_picker .yui-picker-hue-thumb{cursor:default;width:18px;height:18px;top:-8px;left:-2px;z-index:9;position:absolute;}#cke_uicolor_picker .yui-picker-hue-bg{-moz-outline:none;outline:0 none;position:absolute;left:200px;height:183px;width:14px;background:url(hue_bg.png) no-repeat;top:4px;}#cke_uicolor_picker .yui-picker-bg{-moz-outline:none;outline:0 none;position:absolute;top:4px;left:4px;height:182px;width:182px;background-color:#F00;background-image:url(picker_mask.png);}*html #cke_uicolor_picker .yui-picker-bg{background-image:none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='picker_mask.png',sizingMethod='scale');}#cke_uicolor_picker .yui-picker-mask{position:absolute;z-index:1;top:0;left:0;}#cke_uicolor_picker .yui-picker-thumb{cursor:default;width:11px;height:11px;z-index:9;position:absolute;top:-4px;left:-4px;}#cke_uicolor_picker .yui-picker-swatch{position:absolute;left:240px;top:4px;height:60px;width:55px;border:1px solid #888;}#cke_uicolor_picker .yui-picker-websafe-swatch{position:absolute;left:304px;top:4px;height:24px;width:24px;border:1px solid #888;}#cke_uicolor_picker .yui-picker-controls{position:absolute;top:72px;left:226px;font:1em monospace;}#cke_uicolor_picker .yui-picker-controls .hd{background:transparent;border-width:0!important;}#cke_uicolor_picker .yui-picker-controls .bd{height:100px;border-width:0!important;}#cke_uicolor_picker .yui-picker-controls ul{float:left;padding:0 2px 0 0;margin:0;}#cke_uicolor_picker .yui-picker-controls li{padding:2px;list-style:none;margin:0;}#cke_uicolor_picker .yui-picker-controls input{font-size:.85em;width:2.4em;}#cke_uicolor_picker .yui-picker-hex-controls{clear:both;padding:2px;}#cke_uicolor_picker .yui-picker-hex-controls input{width:4.6em;}#cke_uicolor_picker .yui-picker-controls a{font:1em arial,helvetica,clean,sans-serif;display:block;*display:inline-block;padding:0;color:#000;}
+.cke_uicolor_picker .yui-picker-panel{background:#e3e3e3;border-color:#888;}.cke_uicolor_picker .yui-picker-panel .hd{background-color:#ccc;font-size:100%;line-height:100%;border:1px solid #e3e3e3;font-weight:bold;overflow:hidden;padding:6px;color:#000;}.cke_uicolor_picker .yui-picker-panel .bd{background:#e8e8e8;margin:1px;height:200px;}.cke_uicolor_picker .yui-picker-panel .ft{background:#e8e8e8;margin:1px;padding:1px;}.cke_uicolor_picker .yui-picker{position:relative;}.cke_uicolor_picker .yui-picker-hue-thumb{cursor:default;width:18px;height:18px;top:-8px;left:-2px;z-index:9;position:absolute;}.cke_uicolor_picker .yui-picker-hue-bg{-moz-outline:none;outline:0 none;position:absolute;left:200px;height:183px;width:14px;background:url(hue_bg.png) no-repeat;top:4px;}.cke_uicolor_picker .yui-picker-bg{-moz-outline:none;outline:0 none;position:absolute;top:4px;left:4px;height:182px;width:182px;background-color:#F00;background-image:url(picker_mask.png);}*html .cke_uicolor_picker .yui-picker-bg{background-image:none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='picker_mask.png',sizingMethod='scale');}.cke_uicolor_picker .yui-picker-mask{position:absolute;z-index:1;top:0;left:0;}.cke_uicolor_picker .yui-picker-thumb{cursor:default;width:11px;height:11px;z-index:9;position:absolute;top:-4px;left:-4px;}.cke_uicolor_picker .yui-picker-swatch{position:absolute;left:240px;top:4px;height:60px;width:55px;border:1px solid #888;}.cke_uicolor_picker .yui-picker-websafe-swatch{position:absolute;left:304px;top:4px;height:24px;width:24px;border:1px solid #888;}.cke_uicolor_picker .yui-picker-controls{position:absolute;top:72px;left:226px;font:1em monospace;}.cke_uicolor_picker .yui-picker-controls .hd{background:transparent;border-width:0!important;}.cke_uicolor_picker .yui-picker-controls .bd{height:100px;border-width:0!important;}.cke_uicolor_picker .yui-picker-controls ul{float:left;padding:0 2px 0 0;margin:0;}.cke_uicolor_picker .yui-picker-controls li{padding:2px;list-style:none;margin:0;}.cke_uicolor_picker .yui-picker-controls input{font-size:.85em;width:2.4em;}.cke_uicolor_picker .yui-picker-hex-controls{clear:both;padding:2px;}.cke_uicolor_picker .yui-picker-hex-controls input{width:4.6em;}.cke_uicolor_picker .yui-picker-controls a{font:1em arial,helvetica,clean,sans-serif;display:block;*display:inline-block;padding:0;color:#000;}
Index: /CKEditor/branches/features/adobeair/_source/plugins/uicolor/yui/yui.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/uicolor/yui/yui.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/uicolor/yui/yui.js	(revision 5613)
@@ -1,3 +1,3 @@
-/*jsl:ignoreall*/
+﻿/*jsl:ignoreall*/
 /*
 Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Index: /CKEditor/branches/features/adobeair/_source/plugins/undo/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/undo/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/undo/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -115,19 +115,50 @@
 				editor.fire( 'saveSnapshot' );
 			};
+
+			/**
+			 * Update the undo stacks with any subsequent DOM changes after this call.
+			 * @name CKEDITOR.editor#updateUndo
+			 * @example
+			 * function()
+			 * {
+			 * editor.fire( 'updateSnapshot' );
+			 * ...
+			 *  // Ask to include subsequent (in this call stack) DOM changes to be
+			 * // considered as part of the first snapshot.
+			 * 	editor.fire( 'updateSnapshot' );
+			 * 	editor.document.body.append(...);
+			 * ...
+			 * }
+			 */
+			editor.on( 'updateSnapshot', function()
+			{
+				if ( undoManager.currentImage && new Image( editor ).equals( undoManager.currentImage ) )
+					setTimeout( function () { undoManager.update(); }, 0 );
+			});
 		}
 	});
 
-	// Gets a snapshot image which represent the current document status.
-	function Image( editor )
+	CKEDITOR.plugins.undo = {};
+
+	/**
+	 * Undo snapshot which represents the current document status.
+	 * @name CKEDITOR.plugins.undo.Image
+	 * @param editor The editor instance on which the image is created.
+	 */
+	var Image = CKEDITOR.plugins.undo.Image = function( editor )
 	{
-		var selection = editor.getSelection();
-
-		this.contents	= editor.getSnapshot();
+		this.editor = editor;
+		var contents = editor.getSnapshot(),
+			selection	= contents && editor.getSelection();
+
+		// In IE, we need to remove the expando attributes.
+		CKEDITOR.env.ie && contents && ( contents = contents.replace( /\s+_cke_expando=".*?"/g, '' ) );
+
+		this.contents	= contents;
 		this.bookmarks	= selection && selection.createBookmarks2( true );
-
-		// In IE, we need to remove the expando attributes.
-		if ( CKEDITOR.env.ie )
-			this.contents = this.contents.replace( /\s+_cke_expando=".*?"/g, '' );
-	}
+	};
+
+	// Attributes that browser may changing them when setting via innerHTML.
+	var protectedAttrs = /\b(?:href|src|name)="[^"]*?"/gi;
 
 	Image.prototype =
@@ -135,5 +166,16 @@
 		equals : function( otherImage, contentOnly )
 		{
-			if ( this.contents != otherImage.contents )
+
+			var thisContents = this.contents,
+				otherContents = otherImage.contents;
+
+			// For IE6/7 : Comparing only the protected attribute values but not the original ones.(#4522)
+			if ( CKEDITOR.env.ie && ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) )
+			{
+				thisContents = thisContents.replace( protectedAttrs, '' );
+				otherContents = otherContents.replace( protectedAttrs, '' );
+			}
+
+			if ( thisContents != otherContents )
 				return false;
 
@@ -180,4 +222,9 @@
 	}
 
+
+	var editingKeyCodes = { /*Backspace*/ 8:1, /*Delete*/ 46:1 },
+		modifierKeyCodes = { /*Shift*/ 16:1, /*Ctrl*/ 17:1, /*Alt*/ 18:1 },
+		navigationKeyCodes = { 37:1, 38:1, 39:1, 40:1 };  // Arrows: L, T, R, B
+
 	UndoManager.prototype =
 	{
@@ -188,30 +235,24 @@
 		type : function( event )
 		{
-			var keystroke = event && event.data.getKeystroke(),
-
-				// Backspace, Delete
-				modifierCodes = { 8:1, 46:1 },
-				// Keystrokes which will modify the contents.
-				isModifier = keystroke in modifierCodes,
-				wasModifier = this.lastKeystroke in modifierCodes,
-				lastWasSameModifier = isModifier && keystroke == this.lastKeystroke,
-
-				// Arrows: L, T, R, B
-				resetTypingCodes = { 37:1, 38:1, 39:1, 40:1 },
+			var keystroke = event && event.data.getKey(),
+				isModifierKey = keystroke in modifierKeyCodes,
+				isEditingKey = keystroke in editingKeyCodes,
+				wasEditingKey = this.lastKeystroke in editingKeyCodes,
+				sameAsLastEditingKey = isEditingKey && keystroke == this.lastKeystroke,
 				// Keystrokes which navigation through contents.
-				isReset = keystroke in resetTypingCodes,
-				wasReset = this.lastKeystroke in resetTypingCodes,
+				isReset = keystroke in navigationKeyCodes,
+				wasReset = this.lastKeystroke in navigationKeyCodes,
 
 				// Keystrokes which just introduce new contents.
-				isContent = ( !isModifier && !isReset ),
+				isContent = ( !isEditingKey && !isReset ),
 
 				// Create undo snap for every different modifier key.
-				modifierSnapshot = ( isModifier && !lastWasSameModifier ),
+				modifierSnapshot = ( isEditingKey && !sameAsLastEditingKey ),
 				// Create undo snap on the following cases:
-				// 1. Just start to type.
+				// 1. Just start to type .
 				// 2. Typing some content after a modifier.
 				// 3. Typing some content after make a visible selection.
-				startedTyping = !this.typing
-					|| ( isContent && ( wasModifier || wasReset ) );
+				startedTyping = !( isModifierKey || this.typing )
+					|| ( isContent && ( wasEditingKey || wasReset ) );
 
 			if ( startedTyping || modifierSnapshot )
@@ -231,4 +272,7 @@
 						if ( beforeTypeImage.contents != currentSnapshot )
 						{
+							// It's safe to now indicate typing state.
+							this.typing = true;
+
 							// This's a special save, with specified snapshot
 							// and without auto 'fireChange'.
@@ -251,6 +295,7 @@
 
 			this.lastKeystroke = keystroke;
+
 			// Create undo snap after typed too much (over 25 times).
-			if ( isModifier )
+			if ( isEditingKey )
 			{
 				this.typesCount = 0;
@@ -259,5 +304,5 @@
 				if ( this.modifiersCount > 25 )
 				{
-					this.save();
+					this.save( false, null, false );
 					this.modifiersCount = 1;
 				}
@@ -270,10 +315,9 @@
 				if ( this.typesCount > 25 )
 				{
-					this.save();
+					this.save( false, null, false );
 					this.typesCount = 1;
 				}
 			}
 
-			this.typing = true;
 		},
 
@@ -336,4 +380,8 @@
 			if ( !image )
 				image = new Image( this.editor );
+
+			// Do nothing if it was not possible to retrieve an image.
+			if ( image.contents === false )
+				return false;
 
 			// Check if this is a duplicate. In such case, do nothing.
@@ -376,6 +424,8 @@
 			this.index = image.index;
 
-			this.currentImage = image;
-
+			// Update current image with the actual editor
+			// content, since actualy content may differ from
+			// the original snapshot due to dom change. (#4622)
+			this.update();
 			this.fireChange();
 		},
@@ -476,4 +526,12 @@
 
 			return false;
+		},
+
+		/**
+		 * Update the last snapshot of the undo stack with the current editor content.
+		 */
+		update : function()
+		{
+			this.snapshots.splice( this.index, 1, ( this.currentImage = new Image( this.editor ) ) );
 		}
 	};
@@ -489,2 +547,9 @@
  */
 CKEDITOR.config.undoStackSize = 20;
+
+/**
+ * Fired when the editor is about to save an undo snapshot. This event can be
+ * fired by plugins and customizations to make the editor saving undo snapshots.
+ * @name CKEDITOR.editor#saveSnapshot
+ * @event
+ */
Index: /CKEditor/branches/features/adobeair/_source/plugins/wsc/dialogs/ciframe.html
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/wsc/dialogs/ciframe.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/wsc/dialogs/ciframe.html	(revision 5613)
@@ -1,5 +1,5 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 -->
@@ -17,5 +17,5 @@
 	var results = regex.exec( window.location.href ) ;
 
-	if( results )
+	if ( results )
 		return results[ 1 ] ;
 	else
Index: /CKEditor/branches/features/adobeair/_source/plugins/wsc/dialogs/tmpFrameset.html
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/wsc/dialogs/tmpFrameset.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/wsc/dialogs/tmpFrameset.html	(revision 5613)
@@ -1,5 +1,5 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
 <!--
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 -->
Index: /CKEditor/branches/features/adobeair/_source/plugins/wsc/dialogs/wsc.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/wsc/dialogs/wsc.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/wsc/dialogs/wsc.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/plugins/wsc/dialogs/wsc.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/wsc/dialogs/wsc.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/wsc/dialogs/wsc.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -85,5 +85,7 @@
 		window.doSpell({
 			ctrl : textareaId,
-			lang : LangComparer.getSPLangCode( editor.langCode ),
+
+			lang : editor.config.wsc_lang || LangComparer.getSPLangCode(editor.langCode ),
+			intLang: editor.config.wsc_uiLang || LangComparer.getSPLangCode(editor.langCode ),
 			winType : iframeId,		// If not defined app will run on winpopup.
 
@@ -106,5 +108,10 @@
 
 			// Styles defining.
-			schemaURI : pluginPath + 'wsc.css'
+			schemaURI : pluginPath + 'wsc.css',
+
+			userDictionaryName: editor.config.wsc_userDictionaryName,
+			customDictionaryName: editor.config.wsc_customDictionaryIds && editor.config.wsc_customDictionaryIds.split(","),
+			domainName: editor.config.wsc_domainName
+
 		});
 
@@ -115,5 +122,5 @@
 
 	return {
-		title : editor.lang.spellCheck.title,
+		title : editor.config.wsc_dialogTitle || editor.lang.spellCheck.title,
 		minWidth : 485,
 		minHeight : 380,
@@ -154,5 +161,5 @@
 			{
 				id : 'general',
-				label : editor.lang.spellCheck.title,
+				label : editor.config.wsc_dialogTitle || editor.lang.spellCheck.title,
 				padding : 0,
 				elements : [
Index: /CKEditor/branches/features/adobeair/_source/plugins/wsc/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/wsc/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/wsc/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -11,4 +11,5 @@
 CKEDITOR.plugins.add( 'wsc',
 {
+	requires : [ 'dialog' ],
 	init : function( editor )
 	{
Index: /CKEditor/branches/features/adobeair/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/wysiwygarea/plugin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/plugins/wysiwygarea/plugin.js	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -11,10 +11,9 @@
 (function()
 {
-	/**
-	 * List of elements in which has no way to move editing focus outside.
-	 */
+	// List of elements in which has no way to move editing focus outside.
 	var nonExitableElementNames = { table:1,pre:1 };
+
 	// Matching an empty paragraph at the end of document.
-	var emptyParagraphRegexp = /\s*<(p|div|address|h\d|center)[^>]*>\s*(?:<br[^>]*>|&nbsp;|&#160;)\s*(:?<\/\1>)?\s*$/gi;
+	var emptyParagraphRegexp = /\s*<(p|div|address|h\d|center)[^>]*>\s*(?:<br[^>]*>|&nbsp;|\u00A0|&#160;)?\s*(:?<\/\1>)?\s*(?=$|<\/body>)/gi;
 
 	function onInsertHtml( evt )
@@ -23,4 +22,5 @@
 		{
 			this.focus();
+			this.fire( 'saveSnapshot' );
 
 			var selection = this.getSelection(),
@@ -47,4 +47,9 @@
 			else
 				this.document.$.execCommand( 'inserthtml', false, data );
+
+			CKEDITOR.tools.setTimeout( function()
+				{
+					this.fire( 'saveSnapshot' );
+				}, 0, this );
 		}
 	}
@@ -82,12 +87,25 @@
 				// If we're inserting a block at dtd-violated position, split
 				// the parent blocks until we reach blockLimit.
-				var parent, dtd;
-				if ( this.config.enterMode != CKEDITOR.ENTER_BR && isBlock )
+				var current, dtd;
+				if ( isBlock )
 				{
-					while( ( parent = range.getCommonAncestor( false, true ) )
-							&& ( dtd = CKEDITOR.dtd[ parent.getName() ] )
+					while ( ( current = range.getCommonAncestor( false, true ) )
+							&& ( dtd = CKEDITOR.dtd[ current.getName() ] )
 							&& !( dtd && dtd [ elementName ] ) )
 					{
-						range.splitBlock();
+						// Split up inline elements.
+						if ( current.getName() in CKEDITOR.dtd.span )
+							range.splitElement( current );
+						// If we're in an empty block which indicate a new paragraph,
+						// simply replace it with the inserting block.(#3664)
+						else if ( range.checkStartOfBlock()
+							 && range.checkEndOfBlock() )
+						{
+							range.setStartBefore( current );
+							range.collapse( true );
+							current.remove();
+						}
+						else
+							range.splitBlock();
 					}
 				}
@@ -126,7 +144,37 @@
 	function restoreDirty( editor )
 	{
-		if( !editor.checkDirty() )
-			setTimeout( function(){ editor.resetDirty() } );
+		if ( !editor.checkDirty() )
+			setTimeout( function(){ editor.resetDirty(); } );
 	}
+
+	var isNotWhitespace = CKEDITOR.dom.walker.whitespaces( true ),
+		isNotBookmark = CKEDITOR.dom.walker.bookmark( false, true );
+
+	function isNotEmpty( node )
+	{
+		return isNotWhitespace( node ) && isNotBookmark( node );
+	}
+
+	function isNbsp( node )
+	{
+		return node.type == CKEDITOR.NODE_TEXT
+			   && CKEDITOR.tools.trim( node.getText() ).match( /^(?:&nbsp;|\xa0)$/ );
+	}
+
+	function restoreSelection( selection )
+	{
+		if ( selection.isLocked )
+		{
+			selection.unlock();
+			setTimeout( function() { selection.lock(); }, 0 );
+		}
+	}
+
+	function isBlankParagraph( block )
+	{
+		return block.getOuterHtml().match( emptyParagraphRegexp );
+	}
+
+	isNotWhitespace = CKEDITOR.dom.walker.whitespaces( true );
 
 	/**
@@ -151,60 +199,73 @@
 			 && !path.block )
 		{
+			editor.fire( 'updateSnapshot' );
 			restoreDirty( editor );
-			var bms = selection.createBookmarks(),
-				fixedBlock = range.fixBlock( true,
+			CKEDITOR.env.ie && restoreSelection( selection );
+
+			var fixedBlock = range.fixBlock( true,
 					editor.config.enterMode == CKEDITOR.ENTER_DIV ? 'div' : 'p'  );
 
-			// For IE, we'll be removing any bogus br ( introduce by fixing body )
-			// right now to prevent it introducing visual line break.
+			// For IE, we should remove any filler node which was introduced before.
 			if ( CKEDITOR.env.ie )
 			{
-				var brNodeList = fixedBlock.getElementsByTag( 'br' ), brNode;
-				for ( var i = 0 ; i < brNodeList.count() ; i++ )
+				var first = fixedBlock.getFirst( isNotEmpty );
+				first && isNbsp( first ) && first.remove();
+			}
+
+			// If the fixed block is actually blank and is already followed by an exitable blank
+			// block, we should revert the fix and move into the existed one. (#3684)
+			if ( isBlankParagraph( fixedBlock ) )
+			{
+				var previousElement = fixedBlock.getPrevious( isNotWhitespace ),
+					nextElement = fixedBlock.getNext( isNotWhitespace );
+
+				if ( previousElement && previousElement.getName
+					 && !( previousElement.getName() in nonExitableElementNames )
+					 && isBlankParagraph( previousElement )
+					 && range.moveToElementEditStart( previousElement )
+					 || nextElement && nextElement.getName
+						&& !( nextElement.getName() in nonExitableElementNames )
+						&& isBlankParagraph( nextElement )
+						&& range.moveToElementEditStart( nextElement ) )
 				{
-					if( ( brNode = brNodeList.getItem( i ) ) && brNode.hasAttribute( '_cke_bogus' ) )
-						brNode.remove();
+					fixedBlock.remove();
 				}
 			}
 
-			selection.selectBookmarks( bms );
-
-			// If the fixed block is blank and is already followed by a exitable
-			// block, we should drop it and move to the exist block(#3684).
-			var children = fixedBlock.getChildren(),
-				count = children.count(),
-				firstChild,
-				whitespaceGuard = CKEDITOR.dom.walker.whitespaces( true ),
-				previousElement = fixedBlock.getPrevious( whitespaceGuard ),
-				nextElement = fixedBlock.getNext( whitespaceGuard ),
-				enterBlock;
-			if ( previousElement && previousElement.getName
-				 && !( previousElement.getName() in nonExitableElementNames ) )
-				enterBlock = previousElement;
-			else if ( nextElement && nextElement.getName
-					  && !( nextElement.getName() in nonExitableElementNames ) )
-				enterBlock = nextElement;
-
-			// Not all blocks are editable, e.g. <hr />, further checking it.(#3994)
-			if( ( !count
-				  || ( firstChild = children.getItem( 0 ) ) && firstChild.is && firstChild.is( 'br' ) )
-				&& enterBlock
-				&& range.moveToElementEditStart( enterBlock ) )
-			{
-				fixedBlock.remove();
-				range.select();
-			}
+			range.select();
+			// Notify non-IE that selection has changed.
+			if ( !CKEDITOR.env.ie )
+				editor.selectionChange();
 		}
 
-		// Inserting the padding-br before body if it's preceded by an
-		// unexitable block.
-		var lastNode = body.getLast( CKEDITOR.dom.walker.whitespaces( true ) );
-		if ( lastNode && lastNode.getName && ( lastNode.getName() in nonExitableElementNames ) )
+		// All browsers are incapable to moving cursor out of certain non-exitable
+		// blocks (e.g. table, list, pre) at the end of document, make this happen by
+		// place a bogus node there, which would be later removed by dataprocessor.
+		var walkerRange = new CKEDITOR.dom.range( editor.document ),
+			walker = new CKEDITOR.dom.walker( walkerRange );
+		walkerRange.selectNodeContents( body );
+		walker.evaluator = function( node )
 		{
+			return node.type == CKEDITOR.NODE_ELEMENT && ( node.getName() in nonExitableElementNames );
+		};
+		walker.guard = function( node, isMoveout )
+		{
+			return !( ( node.type == CKEDITOR.NODE_TEXT && isNotWhitespace( node ) ) || isMoveout );
+		};
+
+		if ( walker.previous() )
+		{
+			editor.fire( 'updateSnapshot' );
 			restoreDirty( editor );
-			var paddingBlock = editor.document.createElement(
-					( CKEDITOR.env.ie && enterMode != CKEDITOR.ENTER_BR ) ?
-						'<br _cke_bogus="true" />' : 'br' );
-			body.append( paddingBlock );
+			CKEDITOR.env.ie && restoreSelection( selection );
+
+			var paddingBlock;
+			if ( enterMode != CKEDITOR.ENTER_BR )
+				paddingBlock = body.append( new CKEDITOR.dom.element( enterMode == CKEDITOR.ENTER_P ? 'p' : 'div' ) );
+			else
+				paddingBlock = body;
+
+			if ( !CKEDITOR.env.ie )
+				paddingBlock.appendBogus();
 		}
 	}
@@ -219,8 +280,10 @@
 				? editor.config.enterMode == CKEDITOR.ENTER_DIV ? 'div' : 'p' : false;
 
+			var frameLabel = editor.lang.editorTitle.replace( '%1', editor.name );
+
+			var contentDomReadyHandler;
 			editor.on( 'editingBlockReady', function()
 				{
 					var mainElement,
-						fieldset,
 						iframe,
 						isLoadingData,
@@ -229,4 +292,5 @@
 						fireMode;
 
+
 					// Support for custom document.domain in IE.
 					var isCustomDomain = CKEDITOR.env.isCustomDomain();
@@ -237,122 +301,71 @@
 						if ( iframe )
 							iframe.remove();
-						if ( fieldset )
-							fieldset.remove();
-
+
+
+						var srcScript =
+							'document.open();' +
+
+							// The document domain must be set any time we
+							// call document.open().
+							( isCustomDomain ? ( 'document.domain="' + document.domain + '";' ) : '' ) +
+
+							'document.close();';
+
+
+						iframe = CKEDITOR.dom.element.createFromHtml( '<iframe' +
+  							' style="width:100%;height:100%"' +
+  							' frameBorder="0"' +
+  							' title="' + frameLabel + '"' +
+							// With IE, the custom domain has to be taken care at first,
+							// for other browers, the 'src' attribute should be left empty to
+							// trigger iframe's 'load' event.
+  							' src="' + ( CKEDITOR.env.air ? CKEDITOR.basePath + 'air_sandbox_frame.html' : CKEDITOR.env.ie ? 'javascript:void(function(){' + encodeURIComponent( srcScript ) + '}())' : '' ) + '"' +
+							'" tabIndex="' + ( CKEDITOR.env.webkit? -1 : editor.tabIndex ) + '"' +
+  							' allowTransparency="true"' +
+  							'></iframe>' );
+
+						if ( CKEDITOR.env.air )
+						{
+							CKEDITOR._.air_sandbox_frame_data = data;
+							frameLoaded = 1;
+						}
+						else
+						{
+							// With FF, it's better to load the data on iframe.load. (#3894,#4058)
+							iframe.on( 'load', function( ev )
+								{
+									frameLoaded = 1;
+									ev.removeListener();
+
+									var doc = iframe.getFrameDocument().$;
+
+									// Don't leave any history log in IE. (#5657)
+									doc.open( "text/html","replace" );
+									doc.write( data );
+									doc.close();
+								});
+						}
+
+						mainElement.append( iframe );
+					};
+
+					// The script that launches the bootstrap logic on 'domReady', so the document
+					// is fully editable even before the editing iframe is fully loaded (#4455).
+					contentDomReadyHandler = CKEDITOR.tools.addFunction( contentDomReady );
+					var activationScript =
+						'<script id="cke_actscrpt" type="text/javascript" cke_temp="1">' +
+							( isCustomDomain ? ( 'document.domain="' + document.domain + '";' ) : '' ) +
+							'window.parent.CKEDITOR.tools.callFunction( ' + contentDomReadyHandler + ', window );' +
+						'</script>';
+
+					// Editing area bootstrap code.
+					function contentDomReady( domWindow )
+					{
+						if ( !frameLoaded )
+							return;
 						frameLoaded = 0;
-						// The document domain must be set within the src
-						// attribute;
-						// Defer the script execution until iframe
-						// has been added to main window, this is needed for some
-						// browsers which will begin to load the frame content
-						// prior to it's presentation in DOM.(#3894)
-						var src = 'void( '
-								+ ( CKEDITOR.env.gecko ? 'setTimeout' : '' ) + '( function(){' +
-								'document.open();' +
-								( CKEDITOR.env.ie && isCustomDomain ? 'document.domain="' + document.domain + '";' : '' ) +
-								'document.write( window.parent[ "_cke_htmlToLoad_' + editor.name + '" ] );' +
-								'document.close();' +
-								'window.parent[ "_cke_htmlToLoad_' + editor.name + '" ] = null;' +
-								'}'
-								+ ( CKEDITOR.env.gecko ? ', 0 )' : ')()' )
-								+ ' )';
-
-						// Loading via src attribute does not work in Opera.
-						if ( CKEDITOR.env.opera )
-							src = 'void(0);';
-
-						iframe = CKEDITOR.dom.element.createFromHtml( '<iframe' +
-								' style="width:100%;height:100%"' +
-								' frameBorder="0"' +
-								' tabIndex="-1"' +
-								' allowTransparency="true"' +
-								// The iframe must source from a 'application sandbox' file,
-								// otherwise the dynamically linked stylesheets and scripts
-								// won't work in AIR.
-								' src="' +
-								 ( CKEDITOR.env.air ? ( CKEDITOR.basePath + 'air_sandbox_frame.html' )
-								 : ( 'javascript:' + encodeURIComponent( src ) ) ) + '"' + 
-								'></iframe>' );
-
-						var accTitle = editor.lang.editorTitle.replace( '%1', editor.name );
-
-						if ( CKEDITOR.env.gecko || CKEDITOR.env.air )
-						{
-							// Double checking the iframe will be loaded properly(#4058).
-							iframe.on( 'load', function( ev )
-							{
-								ev.removeListener();
-								var iframeWindow = iframe.$.contentWindow;
-								// We have no nother way to change iframe content
-								// in Adobe AIR beside DOM manipulation.  
-								if( CKEDITOR.env.air )
-								{
-									var doc = new CKEDITOR.dom.document( iframeWindow.document );
-									doc.write( data );
-								}
-								contentDomReady( iframeWindow );
-							} );
-						}
-
-						if ( CKEDITOR.env.gecko )
-						{
-							// Accessibility attributes for Firefox.
-							mainElement.setAttributes(
-								{
-									role : 'region',
-									title : accTitle
-								} );
-							iframe.setAttributes(
-								{
-									role : 'region',
-									title : ' '
-								} );
-						}
-						else if ( CKEDITOR.env.webkit )
-						{
-							iframe.setAttribute( 'title', accTitle );	// Safari 4
-							iframe.setAttribute( 'name', accTitle );	// Safari 3
-						}
-						else if ( CKEDITOR.env.ie )
-						{
-							// Accessibility label for IE.
-							fieldset = CKEDITOR.dom.element.createFromHtml(
-								'<fieldset style="height:100%' +
-								( CKEDITOR.env.ie && CKEDITOR.env.quirks ? ';position:relative' : '' ) +
-								'">' +
-									'<legend style="display:block;width:0;height:0;overflow:hidden;' +
-									( CKEDITOR.env.ie && CKEDITOR.env.quirks ? 'position:absolute' : '' ) +
-									'">' +
-										CKEDITOR.tools.htmlEncode( accTitle ) +
-									'</legend>' +
-								'</fieldset>'
-								, CKEDITOR.document );
-							iframe.appendTo( fieldset );
-							fieldset.appendTo( mainElement );
-						}
-
-						if ( !CKEDITOR.env.ie )
-							mainElement.append( iframe );
-					};
-
-					// The script that is appended to the data being loaded. It
-					// enables editing, and makes some
-					var activationScript =
-						'<script id="cke_actscrpt" type="text/javascript">' +
-							'window.onload = function()' +
-							'{' +
-								// Call the temporary function for the editing
-								// boostrap.
-								'window.parent.CKEDITOR._["contentDomReady' + editor.name + '"]( window );' +
-							'}' +
-						'</script>';
-
-					// Editing area bootstrap code.
-					var contentDomReady = function( domWindow )
-					{
-						if ( frameLoaded )
-							return;
-
-						frameLoaded = 1;
+
+
+						editor.fire( 'ariaWidget', iframe );
 						
 						var domDocument = domWindow.document,
@@ -361,8 +374,5 @@
 						// Remove this script from the DOM.
 						var script = domDocument.getElementById( "cke_actscrpt" );
-						if( script )
 							script.parentNode.removeChild( script );
-
-						delete CKEDITOR._[ 'contentDomReady' + editor.name ];
 
 						body.spellcheck = !editor.config.disableNativeSpellChecker;
@@ -380,9 +390,42 @@
 						}
 						else
+						{
 							// Avoid opening design mode in a frame window thread,
 							// which will cause host page scrolling.(#4397)
-							setTimeout( function(){
-								domDocument.$.designMode = 'on';
+							setTimeout( function()
+							{
+								// Prefer 'contentEditable' instead of 'designMode'. (#3593)
+								if ( CKEDITOR.env.gecko && CKEDITOR.env.version >= 10900
+										|| CKEDITOR.env.opera )
+									domDocument.$.body.contentEditable = true;
+								else if ( CKEDITOR.env.webkit )
+									domDocument.$.body.parentNode.contentEditable = true;
+								else
+									domDocument.$.designMode = 'on';
 							}, 0 );
+						}
+
+						// Gecko need a key event to 'wake up' the editing
+						// ability when document is empty.(#3864)
+						if ( CKEDITOR.env.gecko && !body.childNodes.length )
+						{
+							setTimeout( function()
+							{
+								restoreDirty( editor );
+
+								// Simulating keyboard character input by dispatching a keydown of white-space text.
+								var keyEventSimulate = domDocument.$.createEvent( "KeyEvents" );
+								keyEventSimulate.initKeyEvent( 'keypress', true, true, domWindow.$, false,
+									false, false, false, 0, 32 );
+								domDocument.$.dispatchEvent( keyEventSimulate );
+
+								// Restore the original document status by placing the cursor before a bogus br created (#5021).
+								domDocument.createElement( 'br', { attributes: { '_moz_editor_bogus_node' : 'TRUE', '_moz_dirty' : "" } } )
+									.replace( domDocument.getBody().getFirst() );
+								var nativeRange = new CKEDITOR.dom.range( domDocument );
+								nativeRange.setStartAt( new CKEDITOR.dom.element( body ) , CKEDITOR.POSITION_AFTER_START );
+								nativeRange.select();
+							}, 0 );
+						}
 
 						// IE, Opera and Safari may not support it and throw
@@ -394,23 +437,11 @@
 						domDocument	= editor.document	= new CKEDITOR.dom.document( domDocument );
 
-						// Gecko need a key event to 'wake up' the editing
-						// ability when document is empty.(#3864)
-						var firstNode = domDocument.getBody().getFirst();
-						if ( CKEDITOR.env.gecko
-							&& firstNode && firstNode.is
-							&& firstNode.is( 'br' ) && firstNode.hasAttribute( '_moz_editor_bogus_node' ) )
-						{
-							var keyEventSimulate = domDocument.$.createEvent( "KeyEvents" );
-							keyEventSimulate.initKeyEvent( 'keypress', true, true, domWindow.$, false,
-								false, false, false, 0, 32 );
-							domDocument.$.dispatchEvent( keyEventSimulate );
-							var bogusText = domDocument.getBody().getFirst() ;
-							// Compensate the line maintaining <br> if enterMode is not block.
-							if ( editor.config.enterMode == CKEDITOR.ENTER_BR )
-								domDocument.createElement( 'br', { attributes: { '_moz_dirty' : "" } } )
-									.replace( bogusText );
-							else
-								bogusText.remove();
-						}
+						domDocument.on( 'dblclick', function( evt )
+						{
+							var element = evt.data.getTarget(),
+								data = { element : element, dialog : '' };
+							editor.fire( 'doubleclick', data );
+							data.dialog && editor.openDialog( data.dialog );
+						});
 
 						// Gecko/Webkit need some help when selecting control type elements. (#3448)
@@ -455,12 +486,51 @@
 						var focusTarget = ( CKEDITOR.env.ie || CKEDITOR.env.webkit ) ?
 								domWindow : domDocument;
-
-						focusTarget.on( 'blur', function()
+						// 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'
+								|| CKEDITOR.env.gecko
+								|| CKEDITOR.env.opera )
+						{
+							var htmlElement = domDocument.getDocumentElement();
+							htmlElement.on( 'mousedown', function( evt )
+							{
+								// Setting focus directly on editor doesn't work, we
+								// have to use here a temporary element to 'redirect'
+								// the focus.
+								if ( evt.data.getTarget().equals( htmlElement ) )
+								{
+									if ( CKEDITOR.env.gecko && CKEDITOR.env.version >= 10900 )
+										blinkCursor();
+									focusGrabber.focus();
+								}
+							} );
+						}
+
+						domWindow.on( 'blur', function()
 							{
 								editor.focusManager.blur();
 							});
 
-						focusTarget.on( 'focus', function()
-							{
+						domWindow.on( 'focus', function()
+							{
+								var doc = editor.document;
+
+								if ( CKEDITOR.env.gecko && CKEDITOR.env.version >= 10900 )
+									blinkCursor();
+								else if ( CKEDITOR.env.opera )
+									doc.getBody().focus();
+								else if ( CKEDITOR.env.webkit )
+								{
+									// Selection will get lost after move focus
+									// to document element, save it first.
+									var sel = editor.getSelection(),
+											type = sel.getType(),
+											range = ( type != CKEDITOR.SELECTION_NONE ) && sel.getRanges()[ 0 ];
+
+									doc.getDocumentElement().focus();
+									range && range.select();
+								}
+
 								editor.focusManager.focus();
 							});
@@ -470,7 +540,59 @@
 							keystrokeHandler.attach( domDocument );
 
+						if ( CKEDITOR.env.ie )
+						{
+							domDocument.getDocumentElement().addClass( domDocument.$.compatMode );
+							// Override keystrokes which should have deletion behavior
+							//  on control types in IE . (#4047)
+							domDocument.on( 'keydown', function( evt )
+							{
+								var keyCode = evt.data.getKeystroke();
+
+								// Backspace OR Delete.
+								if ( keyCode in { 8 : 1, 46 : 1 } )
+								{
+									var sel = editor.getSelection(),
+										control = sel.getSelectedElement();
+
+									if ( control )
+									{
+										// Make undo snapshot.
+										editor.fire( 'saveSnapshot' );
+
+										// Delete any element that 'hasLayout' (e.g. hr,table) in IE8 will
+										// break up the selection, safely manage it here. (#4795)
+										var bookmark = sel.getRanges()[ 0 ].createBookmark();
+										// Remove the control manually.
+										control.remove();
+										sel.selectBookmarks( [ bookmark ] );
+
+										editor.fire( 'saveSnapshot' );
+
+										evt.data.preventDefault();
+									}
+								}
+							} );
+
+							// PageUp/PageDown scrolling is broken in document
+							// with standard doctype, manually fix it. (#4736)
+							if ( domDocument.$.compatMode == 'CSS1Compat' )
+							{
+								var pageUpDownKeys = { 33 : 1, 34 : 1 };
+								domDocument.on( 'keydown', function( evt )
+								{
+									if ( evt.data.getKeystroke() in pageUpDownKeys )
+									{
+										setTimeout( function ()
+										{
+											editor.getSelection().scrollIntoView();
+										}, 0 );
+									}
+								} );
+							}
+						}
+
 						// Adds the document body as a context menu target.
 						if ( editor.contextMenu )
-							editor.contextMenu.addTarget( domDocument );
+							editor.contextMenu.addTarget( domDocument, editor.config.browserContextMenuOnCtrl !== false );
 
 						setTimeout( function()
@@ -492,4 +614,8 @@
 									isPendingFocus = false;
 								}
+								setTimeout( function()
+								{
+									editor.fire( 'dataReady' );
+								}, 0 );
 
 								/*
@@ -515,5 +641,5 @@
 							},
 							0 );
-					};
+					}
 
 					editor.addMode( 'wysiwyg',
@@ -542,42 +668,100 @@
 								isLoadingData = true;
 
+								var config = editor.config,
+									fullPage = config.fullPage,
+									docType = config.docType;
+
+								// Build the additional stuff to be included into <head>.
+								var headExtra =
+									'<style type="text/css" cke_temp="1">' +
+										editor._.styles.join( '\n' ) +
+									'</style>';
+
+								!fullPage && ( headExtra =
+									CKEDITOR.tools.buildStyleHtml( editor.config.contentsCss ) +
+									headExtra );
+
+								var baseTag = config.baseHref ? '<base href="' + config.baseHref + '" cke_temp="1" />' : '';
+
+								if ( fullPage )
+								{
+									// Search and sweep out the doctype declaration.
+									data = data.replace( /<!DOCTYPE[^>]*>/i, function( match )
+										{
+											editor.docType = docType = match;
+											return '';
+										});
+								}
+
 								// Get the HTML version of the data.
 								if ( editor.dataProcessor )
-								{
 									data = editor.dataProcessor.toHtml( data, fixForBody );
+
+								if ( fullPage )
+								{
+									// Check if the <body> tag is available.
+									if ( !(/<body[\s|>]/).test( data ) )
+										data = '<body>' + data;
+
+									// Check if the <html> tag is available.
+									if ( !(/<html[\s|>]/).test( data ) )
+										data = '<html>' + data + '</html>';
+
+									// Check if the <head> tag is available.
+									if ( !(/<head[\s|>]/).test( data ) )
+										data = data.replace( /<html[^>]*>/, '$&<head><title></title></head>' ) ;
+									else if ( !(/<title[\s|>]/).test( data ) )
+										data = data.replace( /<head[^>]*>/, '$&<title></title>' ) ;
+
+									// The base must be the first tag in the HEAD, e.g. to get relative
+									// links on styles.
+									baseTag && ( data = data.replace( /<head>/, '$&' + baseTag ) );
+
+									// Inject the extra stuff into <head>.
+									// Attention: do not change it before testing it well. (V2)
+									// This is tricky... if the head ends with <meta ... content type>,
+									// Firefox will break. But, it works if we place our extra stuff as
+									// the last elements in the HEAD.
+									data = data.replace( /<\/head\s*>/, headExtra + '$&' );
+
+									// Add the DOCTYPE back to it.
+									data = docType + data;
 								}
-
-								data =
-									editor.config.docType +
-									'<html dir="' + editor.config.contentsLangDirection + '">' +
-									'<head>' +
-										'<link href="' + editor.config.contentsCss + '" type="text/css" rel="stylesheet" _fcktemp="true"/>' +
-										'<style type="text/css" _fcktemp="true">' +
-											editor._.styles.join( '\n' ) +
-										'</style>'+
-									'</head>' +
-									'<body>' +
-										data +
-									'</body>' +
-									'</html>' +
-									// Scripts in HTML snippets is forbidden in Adobe AIR.   
-									( !CKEDITOR.env.air ? activationScript : '' );
-
-								window[ '_cke_htmlToLoad_' + editor.name ] = data;
-								CKEDITOR._[ 'contentDomReady' + editor.name ] = contentDomReady;
+								else
+								{
+									data =
+										config.docType +
+										'<html dir="' + config.contentsLangDirection + '"' +
+											' lang="' + ( config.contentsLanguage || editor.langCode ) + '">' +
+										'<head>' +
+											'<title>' + frameLabel + '</title>' +
+											baseTag +
+											headExtra +
+										'</head>' +
+										'<body' + ( config.bodyId ? ' id="' + config.bodyId + '"' : '' ) +
+												  ( config.bodyClass ? ' class="' + config.bodyClass + '"' : '' ) +
+												  '>' +
+											data +
+										'</html>';
+								}
+
+								data += activationScript;
+
+
+								// The iframe is recreated on each call of setData, so we need to clear DOM objects
+								this.onDispose();
 								createIFrame( data );
-
-								// Opera must use the old method for loading contents.
-								if ( CKEDITOR.env.opera )
-								{
-									var doc = new CKEDITOR.dom.document( iframe.$.contentWindow.document );
-									doc.write( data );
-								}
-
 							},
 
 							getData : function()
 							{
-								var data = iframe.getFrameDocument().getBody().getHtml();
+								var config = editor.config,
+									fullPage = config.fullPage,
+									docType = fullPage && editor.docType,
+									doc = iframe.getFrameDocument();
+
+								var data = fullPage
+									? doc.getDocumentElement().getOuterHtml()
+									: doc.getBody().getHtml();
 
 								if ( editor.dataProcessor )
@@ -585,6 +769,9 @@
 
 								// Strip the last blank paragraph within document.
-								if ( editor.config.ignoreEmptyParagraph )
+								if ( config.ignoreEmptyParagraph )
 									data = data.replace( emptyParagraphRegexp, '' );
+
+								if ( docType )
+									data = docType + '\n' + data;
 
 								return data;
@@ -601,6 +788,22 @@
 							},
 
+							onDispose : function()
+							{
+								if ( !editor.document )
+									return;
+
+								editor.document.getDocumentElement().clearCustomData();
+								editor.document.getBody().clearCustomData();
+
+								editor.window.clearCustomData();
+								editor.document.clearCustomData();
+
+								iframe.clearCustomData();
+							},
+
 							unload : function( holderElement )
 							{
+								this.onDispose();
+
 								editor.window = editor.document = iframe = mainElement = isPendingFocus = null;
 
@@ -615,4 +818,5 @@
 								{
 									editor.window.focus();
+
 									editor.selectionChange();
 								}
@@ -625,6 +829,118 @@
 					editor.on( 'selectionChange', onSelectionChangeFixBody, null, null, 1 );
 				});
+
+			var titleBackup;
+			// Setting voice label as window title, backup the original one
+			// and restore it before running into use.
+			editor.on( 'contentDom', function ()
+				{
+					var title = editor.document.getElementsByTag( 'title' ).getItem( 0 );
+					title.setAttribute( '_cke_title', editor.document.$.title );
+					editor.document.$.title = frameLabel;
+				});
+
+			// IE8 stricts mode doesn't have 'contentEditable' in effect
+			// on element unless it has layout. (#5562)
+			if ( CKEDITOR.env.ie8Compat )
+			{
+				editor.addCss( 'html.CSS1Compat [contenteditable=false]{ min-height:0 !important;}' );
+
+				var selectors = [];
+				for ( var tag in CKEDITOR.dtd.$removeEmpty )
+					selectors.push( 'html.CSS1Compat ' + tag + '[contenteditable=false]' );
+				editor.addCss( selectors.join( ',' ) + '{ display:inline-block;}' );
+			}
+
+			// Switch on design mode for a short while and close it after then.
+			function blinkCursor( retry )
+			{
+				CKEDITOR.tools.tryThese( function ()
+					{
+						editor.document.$.designMode = 'on';
+						setTimeout( function ()
+						{
+							editor.document.$.designMode = 'off';
+							editor.document.getBody().focus();
+						}, 50 );
+				}, function ()
+					{
+						// The above call is known to fail when parent DOM
+						// tree layout changes may break design mode. (#5782)
+						// Refresh the 'contentEditable' is a cue to this.
+						editor.document.$.designMode = 'off';
+						var body = editor.document.getBody();
+						body.setAttribute( 'contentEditable', false );
+						body.setAttribute( 'contentEditable', true );
+						// Try it again once..
+						!retry && blinkCursor( 1 );
+				})
+			}
+
+			// Create an invisible element to grab focus.
+			if ( CKEDITOR.env.gecko || CKEDITOR.env.ie || CKEDITOR.env.opera )
+			{
+				var focusGrabber;
+				editor.on( 'uiReady', function()
+				{
+					focusGrabber = editor.container.append( CKEDITOR.dom.element.createFromHtml(
+						// Use 'span' instead of anything else to fly under the screen-reader radar. (#5049)
+						'<span tabindex="-1" style="position:absolute; left:-10000" role="presentation"></span>' ) );
+
+					focusGrabber.on( 'focus', function()
+						{
+							editor.focus();
+						} );
+				} );
+				editor.on( 'destroy', function()
+				{
+					CKEDITOR.tools.removeFunction( contentDomReadyHandler );
+					focusGrabber.clearCustomData();
+				} );
+			}
+
+			// Disable form elements editing mode provided by some browers. (#5746)
+			editor.on( 'insertElement', function ( evt )
+			{
+				var element = evt.data;
+				if ( element.type = CKEDITOR.NODE_ELEMENT
+						&& ( element.is( 'input' ) || element.is( 'textarea' ) ) )
+				{
+					element.setAttribute( 'contentEditable', false );
+				}
+			});
+
 		}
 	});
+
+	// Fixing Firefox 'Back-Forward Cache' break design mode. (#4514)
+	if ( CKEDITOR.env.gecko )
+	{
+		( function ()
+		{
+			var body = document.body;
+
+			if ( !body )
+				window.addEventListener( 'load', arguments.callee, false );
+			else
+			{
+				var currentHandler = body.getAttribute( 'onpageshow' );
+				body.setAttribute( 'onpageshow', ( currentHandler ? currentHandler + ';' : '') +
+							'event.persisted && (function(){' +
+								'var allInstances = CKEDITOR.instances, editor, doc;' +
+								'for ( var i in allInstances )' +
+								'{' +
+								'	editor = allInstances[ i ];' +
+								'	doc = editor.document;' +
+								'	if ( doc )' +
+								'	{' +
+								'		doc.$.designMode = "off";' +
+								'		doc.$.designMode = "on";' +
+								'	}' +
+								'}' +
+						'})();' );
+			}
+		} )();
+
+	}
 })();
 
@@ -675,2 +991,8 @@
  */
 CKEDITOR.config.ignoreEmptyParagraph = true;
+
+/**
+ * Fired when data is loaded and ready for retrieval in an editor instance.
+ * @name CKEDITOR.editor#dataReady
+ * @event
+ */
Index: /CKEditor/branches/features/adobeair/_source/skins/kama/dialog.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/kama/dialog.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/kama/dialog.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -8,4 +8,10 @@
 {
 	visibility: visible;
+}
+
+/* Force Gecko to consider table as positioned */
+.cke_skin_kama table.cke_dialog.cke_browser_gecko
+{
+	display:block;
 }
 
@@ -19,4 +25,9 @@
 	-webkit-border-radius: 5px;
 	border-radius: 5px;
+
+	/* 'cke_dialog' element has been fixed positioned in all but IE6, while we
+		need it to be positioned to hold e.g. close button. */
+	position: relative;
+	_position: static;
 }
 
@@ -55,10 +66,4 @@
 {
 	margin-bottom: 10px;
-}
-
-.cke_skin_kama .cke_browser_ie.cke_rtl .cke_dialog_title
-{
-	position: static !important;
-	unicode-bidi: bidi-override;
 }
 
@@ -159,4 +164,10 @@
 }
 
+.cke_skin_kama .cke_hc a:hover.cke_dialog_tab
+{
+	padding: 2px 6px !important;
+	border-width: 3px;
+}
+
 .cke_skin_kama a.cke_dialog_tab_selected,
 .cke_skin_kama a:link.cke_dialog_tab_selected,
@@ -169,4 +180,14 @@
 }
 
+.cke_skin_kama .cke_hc a.cke_dialog_tab_selected,
+.cke_skin_kama .cke_hc a:link.cke_dialog_tab_selected,
+.cke_skin_kama .cke_hc a:active.cke_dialog_tab_selected,
+.cke_skin_kama .cke_hc a:hover.cke_dialog_tab_selected,
+.cke_skin_kama .cke_hc a:visited.cke_dialog_tab_selected
+{
+	padding: 2px 6px !important;
+	border-width: 3px;
+}
+
 /* single_page */
 
@@ -185,5 +206,5 @@
 .cke_skin_kama .cke_browser_ie7.cke_single_page .cke_dialog_contents
 {
-	margin-top: -10px;
+	margin-top: 0px;
 	position: relative;
 	margin-bottom: -22px;
@@ -217,4 +238,16 @@
 	border: 1px solid #a0a0a0;
 	padding: 1px 0px;
+}
+
+.cke_skin_kama .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_text,
+.cke_skin_kama .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_password
+{
+	border-width: 0px;
+}
+
+.cke_skin_kama .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_text,
+.cke_skin_kama .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_password
+{
+	border-width: 1px;
 }
 
@@ -284,4 +317,5 @@
 	_background: none;
 	padding: 5px 0;
+	text-align: center;
 }
 
@@ -322,5 +356,5 @@
 .cke_skin_kama .cke_browser_webkit a.cke_dialog_ui_button
 {
-	float: right;
+	display:inline-block;
 	padding-top: 3px;
 	padding-bottom: 2px;
@@ -393,4 +427,6 @@
 	display: inline-block;
 	cursor: default;
+	min-width: 60px;
+	+margin: 2px 0; /* IE7 */
 }
 
@@ -413,4 +449,11 @@
 {
 	background-position: 0 -1179px;
+}
+
+.cke_skin_kama .cke_hc a:hover.cke_dialog_ui_button,
+.cke_skin_kama .cke_hc a:focus.cke_dialog_ui_button,
+.cke_skin_kama .cke_hc a:active.cke_dialog_ui_button
+{
+	border-width: 2px;
 }
 
@@ -481,5 +524,5 @@
 /* close_button */
 
-.cke_skin_kama .cke_dialog_close_button
+.cke_skin_kama .cke_dialog .cke_dialog_body .cke_dialog_close_button
 {
 	background-image: url(images/sprites.png);
@@ -492,5 +535,4 @@
 	width: 20px;
 	top: 5px;
-
 	/* IE 6 */
 	_background-image: url(images/sprites_ie6.png);
@@ -638,7 +680,6 @@
 }
 
-.cke_skin_kama .cke_dialog  #ImagePreviewBox
-{
-	white-space : normal;
+.cke_skin_kama .cke_dialog  .ImagePreviewBox
+{
 	border : 2px ridge black;
 	overflow : scroll;
@@ -648,5 +689,16 @@
 	background-color : white;
 }
-.cke_skin_kama .cke_dialog  #ImagePreviewLoader
+
+.cke_skin_kama .cke_dialog .ImagePreviewBox table td {
+	white-space: normal;
+}
+
+/* Fix iframedialog's height doesn't stretch to 100% #4863.*/
+.cke_skin_kama .cke_browser_iequirks .cke_dialog_page_contents
+{
+	_position: absolute;
+}
+
+.cke_skin_kama .cke_dialog  .ImagePreviewLoader
 {
 	position: absolute;
@@ -663,5 +715,5 @@
 }
 
-.cke_skin_kama .cke_dialog  #FlashPreviewBox
+.cke_skin_kama .cke_dialog  .FlashPreviewBox
 {
 	white-space : normal;
@@ -729,4 +781,31 @@
 }
 
+.cke_skin_kama .cke_dialog_body .cke_label
+{
+	display: none;
+}
+
+.cke_skin_kama .cke_hc .cke_dialog_body .cke_label
+{
+	display: inline;
+}
+
+.cke_skin_kama .cke_hc a.cke_btn_locked,
+.cke_skin_kama .cke_hc a.cke_btn_unlocked,
+.cke_skin_kama .cke_hc a.cke_btn_reset
+{
+	border-style: solid;
+	float: left;
+	width: auto;
+	height: auto;
+}
+
+.cke_skin_kama .cke_rtl.cke_hc a.cke_btn_locked,
+.cke_skin_kama .cke_rtl.cke_hc a.cke_btn_unlocked,
+.cke_skin_kama .cke_rtl.cke_hc a.cke_btn_reset
+{
+	float: right;
+}
+
 .cke_skin_kama a.cke_smile img
 {
@@ -741,2 +820,10 @@
 	border-color: #C7C78F;
 }
+
+.cke_skin_kama .cke_hc .cke_dialog_tabs a,
+.cke_skin_kama .cke_hc .cke_dialog_footer a
+{
+	opacity: 1.0;
+	filter: alpha(opacity=100);
+	border: 1px solid white;
+}
Index: /CKEditor/branches/features/adobeair/_source/skins/kama/editor.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/kama/editor.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/kama/editor.css	(revision 5613)
@@ -1,4 +1,4 @@
-﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -15,5 +15,9 @@
 
 /* Restore the container visibility */
-html .cke_skin_kama,
+html .cke_skin_kama
+{
+	visibility: inherit;
+}
+
 html.cke_skin_kama_container
 {
Index: /CKEditor/branches/features/adobeair/_source/skins/kama/elementspath.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/kama/elementspath.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/kama/elementspath.css	(revision 5613)
@@ -1,4 +1,4 @@
-﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -14,7 +14,7 @@
 .cke_skin_kama .cke_path
 {
-	padding: 0 5px;
 	display: inline-block;
 	float: left;
+	margin-top: 5px;
 }
 
@@ -24,4 +24,10 @@
 }
 
+.cke_shared .cke_skin_kama .cke_path
+{
+	_width: 100%;
+	margin: 0 0 5px;
+}
+
 .cke_skin_kama .cke_path a,
 .cke_skin_kama .cke_path .cke_empty
@@ -29,9 +35,5 @@
 	display: inline-block;
 	float: left;
-	padding-top: 1px;
-	padding-bottom: 1px;
-	padding-left: 4px;
-	padding-right: 4px;
-	margin-bottom : 3px;
+	padding: 1px 4px 0;
 	color: #60676a;
 }
@@ -53,8 +55,5 @@
 {
 	background-color: #dff1ff;
-	padding-top: 1px;
-	padding-bottom: 1px;
-	padding-left: 4px;
-	padding-right: 4px;
+	padding: 1px 4px 0;
 	outline: none;
 	color : #000;
@@ -67,2 +66,7 @@
 	float: none;
 }
+
+.cke_skin_kama .cke_path .cke_label
+{
+	display: none;
+}
Index: /CKEditor/branches/features/adobeair/_source/skins/kama/icons.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/kama/icons.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/kama/icons.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -284,4 +284,17 @@
 }
 
+.cke_skin_kama .cke_button_creatediv .cke_icon
+{
+	background-position: 0 -1168px;
+}
+.cke_skin_kama .cke_button_editdiv .cke_icon
+{
+	background-position: 0 -1184px;
+}
+.cke_skin_kama .cke_button_removediv .cke_icon
+{
+	background-position: 0 -1200px;
+}
+
 .cke_skin_kama .cke_button_flash .cke_icon
 {
@@ -308,2 +321,6 @@
 	background-position: 0 -1040px;
 }
+.cke_skin_office2003 .cke_button_editdiv .cke_icon
+{
+	background-position: 0 -1184px;
+}
Index: /CKEditor/branches/features/adobeair/_source/skins/kama/mainui.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/kama/mainui.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/kama/mainui.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -7,5 +7,4 @@
 {
 	display: block;
-	_display: inline-block;
 }
 
@@ -20,4 +19,10 @@
 }
 
+.cke_skin_kama span.cke_browser_webkit,
+.cke_skin_kama span.cke_browser_gecko18
+{
+	display: block;
+}
+
 .cke_skin_kama .cke_wrapper
 {
@@ -30,6 +35,14 @@
 	background-position: 0 -1950px;
 	display: block;
+	/* IE Quirks: editor chrome overflow horizontally without an explicit width. */
+	_display: inline-block;
+	padding: 5px;
 
 	/*background-color: Red;*/
+}
+
+.cke_shared .cke_skin_kama .cke_wrapper
+{
+	padding-bottom: 0;
 }
 
@@ -67,5 +80,4 @@
 {
 	margin: 5px;
-	padding: 0 5px 5px;
 }
 
@@ -122,4 +134,16 @@
 }
 
+.cke_skin_kama .cke_resizer_horizontal,
+.cke_skin_kama .cke_rtl .cke_resizer_horizontal
+{
+	cursor: e-resize;
+}
+
+.cke_skin_kama .cke_resizer_vertical,
+.cke_skin_kama .cke_rtl .cke_resizer_vertical
+{
+	cursor: n-resize;
+}
+
 .cke_skin_kama .cke_maximized .cke_resizer
 {
@@ -138,2 +162,34 @@
 	top: 0;
 }
+
+.cke_skin_kama .cke_browser_ie6 .cke_editor,
+.cke_skin_kama .cke_browser_ie7 .cke_editor
+{
+	display: inline-block;
+}
+
+.cke_skin_kama .cke_browser_ie6 .cke_editor,
+.cke_shared .cke_skin_kama .cke_browser_ie7 .cke_wrapper
+{
+	padding-bottom: 5px;
+}
+
+/* All voice labels are not displayed. */
+.cke_skin_kama .cke_voice_label
+{
+	display: none;
+}
+
+.cke_skin_kama legend.cke_voice_label
+{
+	display: none;
+}
+
+.cke_skin_kama .cke_browser_ie legend.cke_voice_label
+{
+	position: absolute;
+	display: block;
+	width: 0;
+	height: 0;
+	overflow: hidden;
+}
Index: /CKEditor/branches/features/adobeair/_source/skins/kama/menu.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/kama/menu.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/kama/menu.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -27,9 +27,9 @@
 }
 
-.cke_skin_kama .cke_menuitem a.cke_disabled:hover,
-.cke_skin_kama .cke_menuitem a.cke_disabled:focus,
-.cke_skin_kama .cke_menuitem a.cke_disabled:active
+.cke_hc .cke_menuitem a:hover,
+.cke_hc .cke_menuitem a:focus,
+.cke_hc .cke_menuitem a:active
 {
-	background-color: transparent !important;
+	border: 2px solid;
 }
 
@@ -95,6 +95,8 @@
 	margin-left: 24px;
 	background-color: #fff;
-	_overflow: hidden;
-	_width: 80px;
+}
+/* Set these after the document has been loaded and we know the dimensions*/
+.cke_skin_kama .cke_frameLoaded .cke_menuitem .cke_label
+{
 	filter: alpha(opacity=70); /* IE */
 	opacity: 0.70; /* Safari, Opera and Mozilla */
@@ -165,4 +167,20 @@
 }
 
+.cke_skin_kama .cke_menuarrow span
+{
+	display: none;
+}
+
+.cke_hc .cke_skin_kama .cke_menuarrow
+{
+	width: auto;
+	margin-top: 0;
+}
+
+.cke_hc .cke_skin_kama .cke_menuarrow span
+{
+	display: inline;
+}
+
 /* #3766 In the context menu, long labels with second level menu get wrapped */
 .cke_browser_ie.cke_ltr .cke_skin_kama .cke_menuarrow
Index: /CKEditor/branches/features/adobeair/_source/skins/kama/panel.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/kama/panel.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/kama/panel.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -47,6 +47,10 @@
 body.cke_panel_frame
 {
-	overflow: auto;
-	overflow-x: hidden;
+	overflow: hidden;
+}
+
+.cke_panel_frame .cke_label
+{
+	display: none;
 }
 
@@ -103,4 +107,13 @@
 	border-color: #316ac5;
 	background-color: #dff1ff;
+}
+
+.cke_hc .cke_panel_listItem.cke_selected a,
+.cke_hc .cke_panel_listItem a:hover,
+.cke_hc .cke_panel_listItem a:focus,
+.cke_hc .cke_panel_listItem a:active
+{
+	border-width: 3px;
+	padding: 0px;
 }
 
Index: /CKEditor/branches/features/adobeair/_source/skins/kama/presets.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/kama/presets.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/kama/presets.css	(revision 5613)
@@ -1,4 +1,4 @@
-﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/skins/kama/reset.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/kama/reset.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/kama/reset.css	(revision 5613)
@@ -1,4 +1,4 @@
-﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/skins/kama/richcombo.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/kama/richcombo.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/kama/richcombo.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -90,7 +90,7 @@
 }
 
-.cke_skin_kama .cke_browser_ie .cke_rcombo .cke_text
-{
-/*	float: left; */
+.cke_skin_kama .cke_hc .cke_rcombo .cke_openbutton
+{
+	vertical-align: top;
 }
 
@@ -133,4 +133,14 @@
 }
 
+.cke_skin_kama .cke_rcombo .cke_openbutton span
+{
+	display: none;
+}
+
+.cke_skin_kama .cke_hc .cke_rcombo .cke_openbutton span
+{
+	display	: inline;
+}
+
 .cke_skin_kama .cke_browser_iequirks .cke_rcombo .cke_openbutton
 {
Index: /CKEditor/branches/features/adobeair/_source/skins/kama/skin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/kama/skin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/kama/skin.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -6,5 +6,6 @@
 CKEDITOR.skins.add( 'kama', (function()
 {
-	var preload = [];
+	var preload = [],
+		uiColorStylesheetId = 'cke_ui_color';
 
 	if ( CKEDITOR.env.ie && CKEDITOR.env.version < 7 )
@@ -86,17 +87,20 @@
 			{
 				uiColorMenuCss = uiColorMenuCss.split( '}' ).slice( 0, -1 );
-				for ( var i = 0 ; i < uiColorMenuCss.length ; i++ ) 
+				for ( var i = 0 ; i < uiColorMenuCss.length ; i++ )
 					uiColorMenuCss[ i ] = uiColorMenuCss[ i ].split( '{' );
 			}
 
-			function addStylesheet( document )
-			{
-				var node = document.getHead().append( 'style' );
-				node.setAttribute( "id", "cke_ui_color" );
-				node.setAttribute( "type", "text/css" );
-				
+			function getStylesheet( document )
+			{
+				var node = document.getById( uiColorStylesheetId );
+				if ( !node )
+				{
+					node = document.getHead().append( 'style' );
+					node.setAttribute( "id", uiColorStylesheetId );
+					node.setAttribute( "type", "text/css" );
+				}
 				return node;
 			}
-			
+
 			function updateStylesheets( styleNodes, styleContent, replace )
 			{
@@ -106,8 +110,4 @@
 					if ( CKEDITOR.env.webkit )
 					{
-						// Truncate manually.
-						for ( i = 0 ; i < styleNodes[ id ].$.sheet.rules.length ; i++ )
-							styleNodes[ id ].$.sheet.removeRule( i );
-
 						for ( i = 0 ; i < styleContent.length ; i++ )
 						{
@@ -126,7 +126,7 @@
 
 						if ( CKEDITOR.env.ie )
-							styleNodes[ id ].$.styleSheet.cssText = content;
+							styleNodes[ id ].$.styleSheet.cssText += content;
 						else
-							styleNodes[ id ].setHtml( content );
+							styleNodes[ id ].$.innerHTML += content;
 					}
 				}
@@ -146,6 +146,7 @@
 				setUiColor : function( color )
 				{
-					var uiStyle = addStylesheet( CKEDITOR.document ),
-						cssId = '#cke_' + editor.name.replace('.', '\\.');
+					var cssContent,
+						uiStyle = getStylesheet( CKEDITOR.document ),
+						cssId = '.cke_editor_' + CKEDITOR.tools.escapeCssSelector( editor.name );
 
 					var cssSelectors =
@@ -159,7 +160,7 @@
 
 					if ( CKEDITOR.env.webkit )
-						var cssContent = [ [ cssSelectors, cssProperties ] ];
+						cssContent = [ [ cssSelectors, cssProperties ] ];
 					else
-						var cssContent = cssSelectors + '{' + cssProperties + '}';
+						cssContent = cssSelectors + '{' + cssProperties + '}';
 
 					return ( this.setUiColor =
@@ -186,5 +187,5 @@
 				if ( !iframe.getById( 'cke_ui_color' ) )
 				{
-					var node = addStylesheet( iframe );
+					var node = getStylesheet( iframe );
 					uiColorMenus.push( node );
 
@@ -203,61 +204,53 @@
 })() );
 
-if ( CKEDITOR.dialog )
+(function()
 {
-	CKEDITOR.dialog.on( 'resize', function( evt )
-		{
-			var data = evt.data,
-				width = data.width,
-				height = data.height,
-				dialog = data.dialog,
-				contents = dialog.parts.contents,
-				standardsMode = !CKEDITOR.env.quirks;
-
-			if ( data.skin != 'kama' )
-				return;
-
-			contents.setStyles(
-				( CKEDITOR.env.ie || ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 ) ) ?		// IE && FF2
+	CKEDITOR.dialog ? dialogSetup() : CKEDITOR.on( 'dialogPluginReady', dialogSetup );
+
+	function dialogSetup()
+	{
+		CKEDITOR.dialog.on( 'resize', function( evt )
+			{
+				var data = evt.data,
+					width = data.width,
+					height = data.height,
+					dialog = data.dialog,
+					contents = dialog.parts.contents;
+
+				if ( data.skin != 'kama' )
+					return;
+
+				contents.setStyles(
 					{
 						width : width + 'px',
 						height : height + 'px'
-					}
-				:
-					{
-						// To avoid having scrollbars in the dialogs, we're
-						// (for now) using the "min-xxx" properties, for
-						// browsers which well support it (#3878).
-						'min-width' : width + 'px',
-						'min-height' : height + 'px'
 					});
 
-			if ( !CKEDITOR.env.ie )
-				return;
-
-			// Fix the size of the elements which have flexible lengths.
-			setTimeout( function()
-				{
-					var body = contents.getParent(),
-						innerDialog = body.getParent();
-
-					// tc
-					var el = innerDialog.getChild( 2 );
-					el.setStyle( 'width', ( body.$.offsetWidth ) + 'px' );
-
-					// bc
-					el = innerDialog.getChild( 7 );
-					el.setStyle( 'width', ( body.$.offsetWidth - 28 ) + 'px' );
-
-					// ml
-					el = innerDialog.getChild( 4 );
-					el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
-
-					// mr
-					el = innerDialog.getChild( 5 );
-					el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
-				},
-				100 );
-		});
-}
+				// Fix the size of the elements which have flexible lengths.
+				setTimeout( function()
+					{
+						var innerDialog = dialog.parts.dialog.getChild( [ 0, 0, 0 ] ),
+							body = innerDialog.getChild( 0 );
+
+						// tc
+						var el = innerDialog.getChild( 2 );
+						el.setStyle( 'width', ( body.$.offsetWidth ) + 'px' );
+
+						// bc
+						el = innerDialog.getChild( 7 );
+						el.setStyle( 'width', ( body.$.offsetWidth - 28 ) + 'px' );
+
+						// ml
+						el = innerDialog.getChild( 4 );
+						el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
+
+						// mr
+						el = innerDialog.getChild( 5 );
+						el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
+					},
+					100 );
+			});
+	}
+})();
 
 /**
Index: /CKEditor/branches/features/adobeair/_source/skins/kama/templates.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/kama/templates.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/kama/templates.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -12,5 +12,6 @@
 	border: #dcdcdc 2px solid;
 	background-color: #ffffff;
-	overflow: auto;
+	overflow-y: auto;
+	overflow-x: hidden;
 	width: 100%;
 	height: 220px;
@@ -50,17 +51,33 @@
 }
 
-.cke_skin_kama .cke_tpl_hover
+.cke_skin_kama .cke_tpl_list a:active .cke_tpl_item,
+.cke_skin_kama .cke_tpl_list a:hover .cke_tpl_item,
+.cke_skin_kama .cke_tpl_list a:focus .cke_tpl_item
 {
-	border: #ff9933 1px solid !important;
-	background-color: #fffacd !important;
+	border: #ff9933 1px solid;
+	background-color: #fffacd;
+}
+
+.cke_skin_kama .cke_tpl_list a:active *,
+.cke_skin_kama .cke_tpl_list a:hover *,
+.cke_skin_kama .cke_tpl_list a:focus *
+{
 	cursor: pointer;
-	cursor: hand;
 }
-/*
- * Fix property 'cursor' doesn't inherit on table
- */
-.cke_skin_kama .cke_tpl_hover *
+
+/* IE6 contextual selectors childs won't get :hover transition until,
+	the hover style of the link itself contains certain CSS declarations.*/
+.cke_skin_kama .cke_browser_ie6 .cke_tpl_list a:active,
+.cke_skin_kama .cke_browser_ie6 .cke_tpl_list a:hover,
+.cke_skin_kama .cke_browser_ie6 .cke_tpl_list a:focus
 {
-	cursor: inherit;
+	background-position: 0 0;
+}
+
+.cke_skin_kama .cke_hc .cke_tpl_list a:active .cke_tpl_item,
+.cke_skin_kama .cke_hc .cke_tpl_list a:hover .cke_tpl_item,
+.cke_skin_kama .cke_hc .cke_tpl_list a:focus .cke_tpl_item
+{
+	border-width: 3px;
 }
 
Index: /CKEditor/branches/features/adobeair/_source/skins/kama/toolbar.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/kama/toolbar.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/kama/toolbar.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -23,10 +23,6 @@
 {
 	clear: both;
-	padding: 5px 3px 5px 6px;
-}
-
-.cke_skin_kama .cke_rtl .cke_toolbox
-{
-	padding: 5px 6px 5px 3px;
+	/* Define the padding-bottom otherwise the collapser button will not be clickable #4932*/
+	padding-bottom: 1px;
 }
 
@@ -43,5 +39,5 @@
 	float: right;
 	border: 1px outset #D3D3D3;
-	margin: 11px 4px 2px;
+	margin: 11px 0 2px;
 	cursor: pointer;
 }
@@ -51,4 +47,17 @@
 {
 	float: left;
+}
+
+.cke_skin_kama a.cke_toolbox_collapser span
+{
+	display: none;
+}
+
+.cke_skin_kama .cke_hc a.cke_toolbox_collapser span
+{
+	font-size: 10px;
+	font-weight: bold;
+	font-family: Arial;
+	display: inline;
 }
 
@@ -120,4 +129,10 @@
 }
 
+.cke_skin_kama .cke_toolgroup
+{
+	display: block;
+	height: 22px;
+}
+
 .cke_skin_kama .cke_button a,
 .cke_skin_kama .cke_button a:hover,
@@ -165,6 +180,6 @@
 }
 
-.cke_skin_kama .cke_button a.cke_disabled,
-.cke_skin_kama .cke_browser_ie a:hover.cke_button .cke_disabled
+.cke_skin_kama .cke_button a.cke_disabled *,
+.cke_skin_kama .cke_browser_ie a:hover.cke_button .cke_disabled *
 {
 	filter: alpha(opacity=30); /* IE */
@@ -172,6 +187,6 @@
 }
 
-.cke_skin_kama .cke_hc .cke_button a.cke_disabled,
-.cke_skin_kama .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled
+.cke_skin_kama .cke_hc .cke_button a.cke_disabled *,
+.cke_skin_kama .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled *
 {
 	filter: alpha(opacity=60);
@@ -191,4 +206,11 @@
 }
 
+.cke_skin_kama .cke_button a:hover,
+.cke_skin_kama .cke_button a:focus,
+.cke_skin_kama .cke_button a:active	/* IE */
+{
+	background-color: #dff1ff;
+}
+
 .cke_skin_kama .cke_button a:hover.cke_on,
 .cke_skin_kama .cke_button a:focus.cke_on,
@@ -198,17 +220,7 @@
 }
 
-.cke_skin_kama .cke_button a:hover.cke_off,
-.cke_skin_kama .cke_button a:focus.cke_off,
-.cke_skin_kama .cke_button a:active.cke_off	/* IE */
-{
-	background-color: #dff1ff;
-}
-
-.cke_skin_kama .cke_hc .cke_button a:hover.cke_on,
-.cke_skin_kama .cke_hc .cke_button a:focus.cke_on,
-.cke_skin_kama .cke_hc .cke_button a:active.cke_on,	/* IE */
-.cke_skin_kama .cke_hc .cke_button a:hover.cke_off,
-.cke_skin_kama .cke_hc .cke_button a:focus.cke_off,
-.cke_skin_kama .cke_hc .cke_button a:active.cke_off	/* IE */
+.cke_skin_kama .cke_hc .cke_button a:hover,
+.cke_skin_kama .cke_hc .cke_button a:focus,
+.cke_skin_kama .cke_hc .cke_button a:active	/* IE */
 {
 	padding: 0 2px !important;
@@ -288,9 +300,4 @@
 }
 
-.cke_skin_kama .cke_hc .cke_button .cke_buttonarrow
-{
-	display: none;
-}
-
 /*** Firefox 2 ***/
 
@@ -377,14 +384,19 @@
 }
 
-/* IE8 strict button valign correction */
-.cke_skin_kama .cke_browser_ie8 .cke_button .cke_label
-{
-	vertical-align: top;
-}
-
-.cke_skin_kama .cke_browser_iequirks.cke_browser_ie8 .cke_button .cke_label
-{
-	/* revert previous */
-	vertical-align: middle;
-}
-/* END IE8 strict button valign correction */
+/* Fix cursor shape consistency on toolbar combos (#4031) */
+.cke_skin_kama .cke_browser_ie .cke_rcombo,
+.cke_skin_kama .cke_browser_ie .cke_rcombo *
+{
+	cursor: default;
+}
+
+.cke_skin_kama .cke_browser_ie .cke_toolbox
+{
+	padding-bottom: 5px;
+	_padding-bottom: 6px;
+}
+
+.cke_shared .cke_skin_kama .cke_browser_ie .cke_toolbox
+{
+	padding-bottom: 0;
+}
Index: /CKEditor/branches/features/adobeair/_source/skins/office2003/dialog.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/office2003/dialog.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/office2003/dialog.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -8,4 +8,10 @@
 {
 	visibility: visible;
+}
+
+/* Force Gecko to consider table as positioned */
+.cke_skin_office2003 table.cke_dialog.cke_browser_gecko
+{
+	display:block;
 }
 
@@ -16,6 +22,10 @@
 	margin-top: 2px;
 	margin-bottom: 20px;
+	z-index: 1;
+
+	/* 'cke_dialog' element has been fixed positioned in all but IE6, while we
+		need it to be positioned to hold e.g. close button. */
 	position: relative;
-	z-index: 1;
+	_position: static;
 }
 
@@ -33,4 +43,6 @@
 	/* IE6 does not support full color transparent PNG. */
 	_background-image: url(images/sprites_ie6.png);
+	/* Dialog corner parts require a negative z-index to avoid covering dialog body. (#4954) */
+	_z-index: -1;
 }
 
@@ -246,4 +258,9 @@
 	background-color: #f7f8fd;
 }
+.cke_skin_office2003 .cke_hc a:hover.cke_dialog_tab
+{
+	padding: 2px 3px !important;
+	border-width: 3px;
+}
 
 .cke_skin_office2003 a.cke_dialog_tab_selected,
@@ -258,4 +275,13 @@
 	cursor: default;
 }
+.cke_skin_office2003 .cke_hc a.cke_dialog_tab_selected,
+.cke_skin_office2003 .cke_hc a:link.cke_dialog_tab_selected,
+.cke_skin_office2003 .cke_hc a:active.cke_dialog_tab_selected,
+.cke_skin_office2003 .cke_hc a:hover.cke_dialog_tab_selected,
+.cke_skin_office2003 .cke_hc a:visited.cke_dialog_tab_selected
+{
+	padding: 2px 3px !important;
+	border-width: 3px;
+}
 
 /* single_page */
@@ -264,4 +290,12 @@
 {
 	display: none;
+}
+
+.cke_skin_office2003 .cke_hc .cke_dialog_tabs a,
+.cke_skin_office2003 .cke_hc .cke_dialog_footer a
+{
+	opacity: 1.0;
+	filter: alpha(opacity=100);
+	border: 1px solid white;
 }
 
@@ -298,4 +332,16 @@
 	border: 1px solid #a0a0a0;
 	padding: 1px 0px;
+}
+
+.cke_skin_office2003 .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_text,
+.cke_skin_office2003 .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_password
+{
+	border-width: 0px;
+}
+
+.cke_skin_office2003 .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_text,
+.cke_skin_office2003 .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_password
+{
+	border-width: 1px;
 }
 
@@ -393,4 +439,9 @@
 	background-color: #8db1ff;
 }
+.cke_skin_office2003 .cke_hc a:focus span.cke_dialog_ui_button,
+.cke_skin_office2003 .cke_hc a:active span.cke_dialog_ui_button
+{
+	border-width: 2px;
+}
 
 .cke_skin_office2003 .cke_dialog_footer_buttons
@@ -422,5 +473,8 @@
 /* close_button */
 
-.cke_skin_office2003 .cke_dialog_close_button
+.cke_skin_office2003 a.cke_dialog_close_button,
+.cke_skin_office2003 a:hover.cke_dialog_close_button,
+.cke_skin_office2003 .cke_browser_ie6 a.cke_dialog_close_button,
+.cke_skin_office2003 .cke_browser_ie6 a:hover.cke_dialog_close_button
 {
 	background-image: url(images/sprites.png);
@@ -438,10 +492,10 @@
 }
 
-.cke_skin_office2003 .cke_dialog_close_button span
+.cke_skin_office2003 a.cke_dialog_close_button span
 {
 	display: none;
 }
 
-.cke_skin_office2003 .cke_ltr .cke_dialog_close_button
+.cke_skin_office2003 .cke_ltr a.cke_dialog_close_button
 {
 	right: 10px;
@@ -449,5 +503,6 @@
 }
 
-.cke_skin_office2003 .cke_rtl .cke_dialog_close_button
+.cke_skin_office2003 .cke_rtl a.cke_dialog_close_button,
+.cke_skin_office2003 .cke_rtl a:hover.cke_dialog_close_button
 {
 	left: 10px;
@@ -456,5 +511,6 @@
 }
 
-.cke_skin_office2003 .cke_browser_ie6.cke_rtl .cke_dialog_close_button
+.cke_skin_office2003 .cke_browser_ie6.cke_rtl a.cke_dialog_close_button,
+.cke_skin_office2003 .cke_browser_ie6.cke_rtl a:hover.cke_dialog_close_button
 {
 	position: relative;
@@ -464,10 +520,12 @@
 }
 
-.cke_skin_office2003 .cke_browser_iequirks.cke_rtl.cke_single_page .cke_dialog_close_button
+.cke_skin_office2003 .cke_browser_iequirks.cke_rtl.cke_single_page a.cke_dialog_close_button,
+.cke_skin_office2003 .cke_browser_iequirks.cke_rtl.cke_single_page a:hover.cke_dialog_close_button
 {
 	margin-top: -32px;
 }
 
-.cke_skin_office2003 .cke_browser_iequirks.cke_ltr .cke_dialog_close_button
+.cke_skin_office2003 .cke_browser_iequirks.cke_ltr a.cke_dialog_close_button,
+.cke_skin_office2003 .cke_browser_iequirks.cke_ltr a:hover.cke_dialog_close_button
 {
 	margin-top: 0;
@@ -553,7 +611,6 @@
 }
 
-.cke_skin_office2003 .cke_dialog  #ImagePreviewBox
-{
-	white-space : normal;
+.cke_skin_office2003 .cke_dialog  .ImagePreviewBox
+{
 	border : 2px ridge black;
 	overflow : scroll;
@@ -563,5 +620,16 @@
 	background-color : white;
 }
-.cke_skin_office2003 .cke_dialog  #ImagePreviewLoader
+
+.cke_skin_office2003 .cke_dialog .ImagePreviewBox table td {
+	white-space: normal;
+}
+
+/* Fix iframedialog's height doesn't stretch to 100% #4863.*/
+.cke_skin_office2003 .cke_browser_iequirks .cke_dialog_page_contents
+{
+	_position: absolute;
+}
+
+.cke_skin_office2003 .cke_dialog  .ImagePreviewLoader
 {
 	position: absolute;
@@ -578,5 +646,5 @@
 }
 
-.cke_skin_office2003 .cke_dialog  #FlashPreviewBox
+.cke_skin_office2003 .cke_dialog  .FlashPreviewBox
 {
 	white-space : normal;
@@ -642,2 +710,29 @@
 	top: 3px;
 }
+
+.cke_skin_office2003 .cke_dialog_body .cke_label
+{
+	display: none;
+}
+
+.cke_skin_office2003 .cke_hc .cke_dialog_body .cke_label
+{
+	display: inline;
+}
+
+.cke_skin_office2003 .cke_hc a.cke_btn_locked,
+.cke_skin_office2003 .cke_hc a.cke_btn_unlocked,
+.cke_skin_office2003 .cke_hc a.cke_btn_reset
+{
+	border-style: solid;
+	float: left;
+	width: auto;
+	height: auto;
+}
+
+.cke_skin_office2003 .cke_rtl.cke_hc a.cke_btn_locked,
+.cke_skin_office2003 .cke_rtl.cke_hc a.cke_btn_unlocked,
+.cke_skin_office2003 .cke_rtl.cke_hc a.cke_btn_reset
+{
+	float: right;
+}
Index: /CKEditor/branches/features/adobeair/_source/skins/office2003/editor.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/office2003/editor.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/office2003/editor.css	(revision 5613)
@@ -1,4 +1,4 @@
-﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -15,5 +15,9 @@
 
 /* Restore the container visibility */
-html .cke_skin_office2003,
+html .cke_skin_office2003
+{
+	visibility: inherit;
+}
+
 html.cke_skin_office2003_container
 {
Index: /CKEditor/branches/features/adobeair/_source/skins/office2003/elementspath.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/office2003/elementspath.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/office2003/elementspath.css	(revision 5613)
@@ -1,4 +1,4 @@
-﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -67,2 +67,7 @@
 	float: none;
 }
+
+.cke_skin_office2003 .cke_path .cke_label
+{
+	display: none;
+}
Index: /CKEditor/branches/features/adobeair/_source/skins/office2003/icons.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/office2003/icons.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/office2003/icons.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -308,2 +308,17 @@
 	background-position: 0 -1040px;
 }
+
+.cke_skin_office2003 .cke_button_creatediv .cke_icon
+{
+	background-position: 0 -1168px;
+}
+
+.cke_skin_office2003 .cke_button_editdiv .cke_icon
+{
+	background-position: 0 -1184px;
+}
+
+.cke_skin_office2003 .cke_button_removediv .cke_icon
+{
+	background-position: 0 -1200px;
+}
Index: /CKEditor/branches/features/adobeair/_source/skins/office2003/mainui.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/office2003/mainui.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/office2003/mainui.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -13,4 +13,10 @@
 }
 
+.cke_skin_office2003 span.cke_browser_webkit,
+.cke_skin_office2003 span.cke_browser_gecko18
+{
+	display: block;
+}
+
 .cke_skin_office2003,
 .cke_skin_office2003 .cke_wrapper
@@ -19,5 +25,7 @@
 }
 
-.cke_skin_office2003 .cke_top, .cke_skin_office2003 .cke_bottom
+.cke_skin_office2003 .cke_top,
+.cke_skin_office2003 .cke_bottom,
+ .cke_shared .cke_skin_office2003
 {
 	background-color: #f7f8fd;
@@ -48,4 +56,6 @@
 {
 	border: solid 1px #696969;
+	/* Prevent background content from penetrate through when switching between editing modes. (#4918) */
+	background-color: white;
 }
 
@@ -61,4 +71,10 @@
 	white-space: pre;
 	background-color: #fff;
+}
+
+.cke_skin_office2003 .cke_browser_iequirks textarea.cke_source
+{
+    /* For IE6+Quirks only */
+    _white-space: normal;
 }
 
@@ -78,9 +94,4 @@
 }
 
-.cke_skin_office2003 .cke_maximized .cke_resizer
-{
-	display: none;
-}
-
 .cke_skin_office2003 .cke_rtl .cke_resizer
 {
@@ -91,4 +102,21 @@
 }
 
+.cke_skin_office2003 .cke_resizer_horizontal,
+.cke_skin_office2003 .cke_rtl .cke_resizer_horizontal
+{
+	cursor: e-resize;
+}
+
+.cke_skin_office2003 .cke_resizer_vertical,
+.cke_skin_office2003 .cke_rtl .cke_resizer_vertical
+{
+	cursor: n-resize;
+}
+
+.cke_skin_office2003 .cke_maximized .cke_resizer
+{
+	display: none;
+}
+
 .cke_skin_office2003 .cke_browser_ie6 .cke_contents textarea,
 .cke_skin_office2003 .cke_browser_ie7 .cke_contents textarea
@@ -96,2 +124,22 @@
 	position: absolute;
 }
+
+/* All voice labels are not displayed. */
+.cke_skin_office2003 .cke_voice_label
+{
+	display: none;
+}
+
+.cke_skin_office2003 legend.cke_voice_label
+{
+	display: none;
+}
+
+.cke_skin_office2003 .cke_browser_ie legend.cke_voice_label
+{
+	position: absolute;
+	display: block;
+	width: 0;
+	height: 0;
+	overflow: hidden;
+}
Index: /CKEditor/branches/features/adobeair/_source/skins/office2003/menu.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/office2003/menu.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/office2003/menu.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -27,9 +27,9 @@
 }
 
-.cke_skin_office2003 .cke_menuitem a.cke_disabled:hover,
-.cke_skin_office2003 .cke_menuitem a.cke_disabled:focus,
-.cke_skin_office2003 .cke_menuitem a.cke_disabled:active
+.cke_hc .cke_menuitem a:hover,
+.cke_hc .cke_menuitem a:focus,
+.cke_hc .cke_menuitem a:active
 {
-	background-color: transparent !important;
+	border: 2px solid;
 }
 
@@ -60,4 +60,5 @@
 	filter: alpha(opacity=70); /* IE */
 	opacity: 0.70; /* Safari, Opera and Mozilla */
+	clear: both;
 }
 
@@ -94,6 +95,8 @@
 	margin-left: 24px;
 	background-color: #fff;
-	_overflow: hidden;
-	_width: 80px;
+}
+/* Set these after the document has been loaded and we know the dimensions*/
+.cke_skin_office2003 .cke_frameLoaded .cke_menuitem .cke_label
+{
 	filter: alpha(opacity=70); /* IE */
 	opacity: 0.70; /* Safari, Opera and Mozilla */
@@ -161,4 +164,20 @@
 }
 
+.cke_skin_office2003 .cke_menuarrow span
+{
+	display: none;
+}
+
+.cke_hc .cke_skin_office2003 .cke_menuarrow
+{
+	width: auto;
+	margin-top: 0;
+}
+
+.cke_hc .cke_skin_office2003 .cke_menuarrow span
+{
+	display: inline;
+}
+
 /* #3766 In the context menu, long labels with second level menu get wrapped */
 .cke_browser_ie.cke_ltr .cke_skin_office2003 .cke_menuarrow
Index: /CKEditor/branches/features/adobeair/_source/skins/office2003/panel.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/office2003/panel.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/office2003/panel.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -24,4 +24,9 @@
 	width: 100%;
 	height: 100%;
+}
+
+cke_skin_office2003 .cke_panel_frame .cke_label
+{
+	display: none;
 }
 
@@ -43,5 +48,4 @@
 {
 	overflow: auto;
-	overflow-x: hidden;
 }
 
@@ -98,4 +102,13 @@
 	border-color: #316ac5;
 	background-color: #dff1ff;
+}
+
+.cke_hc .cke_panel_listItem.cke_selected a,
+.cke_hc .cke_panel_listItem a:hover,
+.cke_hc .cke_panel_listItem a:focus,
+.cke_hc .cke_panel_listItem a:active
+{
+	border-width: 3px;
+	padding: 0px;
 }
 
Index: /CKEditor/branches/features/adobeair/_source/skins/office2003/presets.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/office2003/presets.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/office2003/presets.css	(revision 5613)
@@ -1,4 +1,4 @@
-﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/skins/office2003/reset.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/office2003/reset.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/office2003/reset.css	(revision 5613)
@@ -1,4 +1,4 @@
-﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/skins/office2003/richcombo.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/office2003/richcombo.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/office2003/richcombo.css	(revision 5613)
@@ -152,4 +152,14 @@
 }
 
+.cke_skin_office2003 .cke_rcombo .cke_openbutton span
+{
+	display: none;
+}
+
+.cke_skin_office2003 .cke_hc .cke_rcombo .cke_openbutton span
+{
+	display	: inline;
+}
+
 .cke_skin_office2003 .cke_ltr .cke_rcombo .cke_openbutton
 {
Index: /CKEditor/branches/features/adobeair/_source/skins/office2003/skin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/office2003/skin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/office2003/skin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -24,54 +24,58 @@
 })() );
 
-if ( CKEDITOR.dialog )
+(function()
 {
-	CKEDITOR.dialog.on( 'resize', function( evt )
-		{
-			var data = evt.data,
-				width = data.width,
-				height = data.height,
-				dialog = data.dialog,
-				standardsMode = !CKEDITOR.env.quirk;
+	CKEDITOR.dialog ? dialogSetup() : CKEDITOR.on( 'dialogPluginReady', dialogSetup );
 
-			if ( data.skin != 'office2003' )
-				return;
+	function dialogSetup()
+	{
+		CKEDITOR.dialog.on( 'resize', function( evt )
+			{
+				var data = evt.data,
+					width = data.width,
+					height = data.height,
+					dialog = data.dialog,
+					contents = dialog.parts.contents;
 
-			dialog.parts.contents.setStyles(
-				{
-					width : width + 'px',
-					height : height + 'px'
-				});
+				if ( data.skin != 'office2003' )
+					return;
 
-			if ( !CKEDITOR.env.ie )
-				return;
+				contents.setStyles(
+					{
+						width : width + 'px',
+						height : height + 'px'
+					});
 
-			// Fix the size of the elements which have flexible lengths.
-			var fixSize = function()
-				{
-					var content = dialog.parts.contents,
-						body = content.getParent(),
-						innerDialog = body.getParent();
+				if ( !CKEDITOR.env.ie )
+					return;
 
-					// tc
-					var el = innerDialog.getChild( 2 );
-					el.setStyle( 'width', ( body.$.offsetWidth ) + 'px' );
+				// Fix the size of the elements which have flexible lengths.
+				var fixSize = function()
+					{
+						var innerDialog = dialog.parts.dialog.getChild( [ 0, 0, 0 ] ),
+							body = innerDialog.getChild( 0 );
 
-					// bc
-					el = innerDialog.getChild( 7 );
-					el.setStyle( 'width', ( body.$.offsetWidth - 28 ) + 'px' );
+						// tc
+						var el = innerDialog.getChild( 2 );
+						el.setStyle( 'width', ( body.$.offsetWidth ) + 'px' );
 
-					// ml
-					el = innerDialog.getChild( 4 );
-					el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
+						// bc
+						el = innerDialog.getChild( 7 );
+						el.setStyle( 'width', ( body.$.offsetWidth - 28 ) + 'px' );
 
-					// mr
-					el = innerDialog.getChild( 5 );
-					el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
-				};
-			setTimeout( fixSize, 100 );
+						// ml
+						el = innerDialog.getChild( 4 );
+						el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
 
-			// Ensure size is correct for RTL mode. (#4003)
-			if ( evt.editor.lang.dir == 'rtl' )
-				setTimeout( fixSize, 1000 );
-		});
-}
+						// mr
+						el = innerDialog.getChild( 5 );
+						el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
+					};
+				setTimeout( fixSize, 100 );
+
+				// Ensure size is correct for RTL mode. (#4003)
+				if ( evt.editor.lang.dir == 'rtl' )
+					setTimeout( fixSize, 1000 );
+			});
+	}
+})();
Index: /CKEditor/branches/features/adobeair/_source/skins/office2003/templates.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/office2003/templates.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/office2003/templates.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -50,17 +50,33 @@
 }
 
-.cke_skin_office2003 .cke_tpl_hover
+.cke_skin_office2003 .cke_tpl_list a:active .cke_tpl_item,
+.cke_skin_office2003 .cke_tpl_list a:hover .cke_tpl_item,
+.cke_skin_office2003 .cke_tpl_list a:focus .cke_tpl_item
 {
 	border: #ff9933 1px solid !important;
 	background-color: #fffacd !important;
+}
+
+.cke_skin_office2003 .cke_tpl_list a:active *,
+.cke_skin_office2003 .cke_tpl_list a:hover *,
+.cke_skin_office2003 .cke_tpl_list a:focus *
+{
 	cursor: pointer;
-	cursor: hand;
 }
-/*
- * Fix property 'cursor' doesn't inherit on table
- */
-.cke_skin_office2003 .cke_tpl_hover *
+
+/* IE6 contextual selectors childs won't get :hover transition until,
+	the hover style of the link itself contains certain CSS declarations.*/
+.cke_skin_office2003 .cke_browser_ie6 .cke_tpl_list a:active,
+.cke_skin_office2003 .cke_browser_ie6 .cke_tpl_list a:hover,
+.cke_skin_office2003 .cke_browser_ie6 .cke_tpl_list a:focus
 {
-	cursor: inherit;
+	background-position: 0 0;
+}
+
+.cke_skin_office2003 .cke_tpl_list a:active .cke_tpl_item,
+.cke_skin_office2003 .cke_tpl_list a:hover .cke_tpl_item,
+.cke_skin_office2003 .cke_tpl_list a:focus .cke_tpl_item
+{
+	border-width: 3px;
 }
 
Index: /CKEditor/branches/features/adobeair/_source/skins/office2003/toolbar.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/office2003/toolbar.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/office2003/toolbar.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -18,4 +18,11 @@
 }
 
+.cke_skin_office2003 .cke_toolbox
+{
+	clear: both;
+	/* Define the padding-bottom otherwise the collapser button will not be clickable #4932*/
+	padding-bottom: 1px;
+}
+
 .cke_skin_office2003 a.cke_toolbox_collapser,
 .cke_skin_office2003 a:hover.cke_toolbox_collapser
@@ -39,4 +46,17 @@
 }
 
+.cke_skin_office2003 a.cke_toolbox_collapser span
+{
+	display: none;
+}
+
+.cke_skin_office2003 .cke_hc a.cke_toolbox_collapser span
+{
+	font-size: 10px;
+	font-weight: bold;
+	font-family: Arial;
+	display: inline;
+}
+
 .cke_skin_office2003 a.cke_toolbox_collapser_min,
 .cke_skin_office2003 a:hover.cke_toolbox_collapser_min
@@ -66,4 +86,6 @@
 	display: inline-block;
 	float: left;
+	!height: 28px;
+	!line-height: 28px;
 }
 
@@ -226,4 +248,5 @@
 	opacity: 1.0;
 	filter: alpha(opacity=100);
+	_border: 1px solid transparent;
 }
 
@@ -238,5 +261,7 @@
 }
 
-.cke_skin_office2003 .cke_hc .cke_button a.cke_on
+.cke_skin_office2003 .cke_hc .cke_button a:hover,
+.cke_skin_office2003 .cke_hc .cke_button a:focus,
+.cke_skin_office2003 .cke_hc .cke_button a:active	/* IE */
 {
 	padding: 0 2px !important;
@@ -244,20 +269,13 @@
 }
 
-.cke_skin_office2003 .cke_button a.cke_disabled,
-.cke_skin_office2003 .cke_button a:hover.cke_disabled,
-.cke_skin_office2003 .cke_button a:focus.cke_disabled,
-.cke_skin_office2003 .cke_button a:active.cke_disabled
-{
-	border: solid 1px transparent;
+.cke_skin_office2003 .cke_button a.cke_disabled *,
+.cke_skin_office2003 .cke_browser_ie a:hover.cke_button .cke_disabled *
+{
 	filter: alpha(opacity=30); /* IE */
-	opacity : 0.3; /* Safari, Opera and Mozilla */
-	vertical-align: top;
-
-	_border: none;
-	_margin: 3px 1px 1px 1px;
-}
-
-.cke_skin_office2003 .cke_hc .cke_button a.cke_disabled,
-.cke_skin_office2003 .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled
+	opacity: 0.3; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_office2003 .cke_hc .cke_button a.cke_disabled *,
+.cke_skin_office2003 .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled *
 {
 	filter: alpha(opacity=60);
@@ -265,10 +283,7 @@
 }
 
-.cke_skin_office2003 .cke_button a:hover.cke_on,
-.cke_skin_office2003 .cke_button a:focus.cke_on,
-.cke_skin_office2003 .cke_button a:active.cke_on,	/* IE */
-.cke_skin_office2003 .cke_button a:hover.cke_off,
-.cke_skin_office2003 .cke_button a:focus.cke_off,
-.cke_skin_office2003 .cke_button a:active.cke_off	/* IE */
+.cke_skin_office2003 .cke_button a:hover,
+.cke_skin_office2003 .cke_button a:focus,
+.cke_skin_office2003 .cke_button a:active	/* IE */
 {
 	border: solid 1px #316ac5;
@@ -280,15 +295,4 @@
 	_margin: 2px 0 0 0;
 	padding: 2px 4px;
-}
-
-.cke_skin_office2003 .cke_hc .cke_button a:hover.cke_on,
-.cke_skin_office2003 .cke_hc .cke_button a:focus.cke_on,
-.cke_skin_office2003 .cke_hc .cke_button a:active.cke_on,	/* IE */
-.cke_skin_office2003 .cke_hc .cke_button a:hover.cke_off,
-.cke_skin_office2003 .cke_hc .cke_button a:focus.cke_off,
-.cke_skin_office2003 .cke_hc .cke_button a:active.cke_off	/* IE */
-{
-	padding: 0 2px !important;
-	border-width: 3px;
 }
 
@@ -308,7 +312,6 @@
 	display: none;
 	padding-left: 3px;
-	vertical-align: 3px;
 	cursor: default;
-
+	vertical-align:middle;
 	_background-image: url(images/sprites_ie6.png);
 	_background-position: 0 -970px;
@@ -447,2 +450,14 @@
 	vertical-align: baseline;
 }
+
+/* Separator + Combo penetrate toolbar in IE quirks. (#4461) */
+.cke_skin_office2003 .cke_browser_iequirks .cke_separator
+{
+	vertical-align: text-bottom;
+}
+/* Fix cursor shape consistency on toolbar combos (#4031) */
+.cke_skin_office2003 .cke_browser_ie .cke_rcombo,
+.cke_skin_office2003 .cke_browser_ie .cke_rcombo *
+{
+	cursor: default;
+}
Index: /CKEditor/branches/features/adobeair/_source/skins/v2/dialog.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/v2/dialog.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/v2/dialog.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -8,4 +8,10 @@
 {
 	visibility: visible;
+}
+
+/* Force Gecko to consider table as positioned */
+.cke_skin_v2 table.cke_dialog.cke_browser_gecko
+{
+	display:block;
 }
 
@@ -16,6 +22,11 @@
 	margin-top: 2px;
 	margin-bottom: 20px;
+	z-index: 1;
+
+	/* 'cke_dialog' element has been fixed positioned in all but IE6, while we
+		need it to be positioned to hold e.g. close button. */
 	position: relative;
-	z-index: 1;
+	_position: static;
+
 }
 
@@ -33,4 +44,6 @@
 	/* IE6 does not support full color transparent PNG. */
 	_background-image: url(images/sprites_ie6.png);
+	/* Dialog corner parts require a negative z-index to avoid covering dialog body. (#4954) */
+	_z-index: -1;
 }
 
@@ -243,4 +256,10 @@
 }
 
+.cke_skin_v2 .cke_hc a:hover.cke_dialog_tab
+{
+	padding: 2px 3px !important;
+	border-width: 3px;
+}
+
 .cke_skin_v2 a.cke_dialog_tab_selected,
 .cke_skin_v2 a:link.cke_dialog_tab_selected,
@@ -255,4 +274,22 @@
 }
 
+.cke_skin_v2 .cke_hc a.cke_dialog_tab_selected,
+.cke_skin_v2 .cke_hc a:link.cke_dialog_tab_selected,
+.cke_skin_v2 .cke_hc a:active.cke_dialog_tab_selected,
+.cke_skin_v2 .cke_hc a:hover.cke_dialog_tab_selected,
+.cke_skin_v2 .cke_hc a:visited.cke_dialog_tab_selected
+{
+	padding: 2px 3px !important;
+	border-width: 3px;
+}
+
+.cke_skin_v2 .cke_hc .cke_dialog_tabs a,
+.cke_skin_v2 .cke_hc .cke_dialog_footer a
+{
+	opacity: 1.0;
+	filter: alpha(opacity=100);
+	border: 1px solid white;
+}
+
 /* single_page */
 
@@ -286,4 +323,16 @@
 	width: 100%;
 	height: 14px;
+}
+
+.cke_skin_v2 .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_text,
+.cke_skin_v2 .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_password
+{
+	border-width: 0px;
+}
+
+.cke_skin_v2 .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_text,
+.cke_skin_v2 .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_password
+{
+	border-width: 1px;
 }
 
@@ -386,4 +435,10 @@
 }
 
+.cke_skin_v2 .cke_hc a:focus span.cke_dialog_ui_button,
+.cke_skin_v2 .cke_hc a:active span.cke_dialog_ui_button
+{
+	border-width: 2px;
+}
+
 .cke_skin_v2 .cke_dialog_footer_buttons
 {
@@ -414,5 +469,8 @@
 /* close_button */
 
-.cke_skin_v2 .cke_dialog_close_button
+.cke_skin_v2 a.cke_dialog_close_button,
+.cke_skin_v2 a:hover.cke_dialog_close_button,
+.cke_skin_v2 .cke_browser_ie6 a.cke_dialog_close_button,
+.cke_skin_v2 .cke_browser_ie6 a:hover.cke_dialog_close_button
 {
 	background-image: url(images/sprites.png);
@@ -430,15 +488,16 @@
 }
 
-.cke_skin_v2 .cke_dialog_close_button span
+.cke_skin_v2 a.cke_dialog_close_button span
 {
 	display: none;
 }
 
-.cke_skin_v2 .cke_dialog_close_button:hover
+.cke_skin_v2 a:hover.cke_dialog_close_button
 {
 	background-position: -16px -687px;
 }
 
-.cke_skin_v2 .cke_ltr .cke_dialog_close_button
+.cke_skin_v2 .cke_ltr a.cke_dialog_close_button,
+.cke_skin_v2 .cke_ltr a:hover.cke_dialog_close_button
 {
 	right: 10px;
@@ -446,5 +505,6 @@
 }
 
-.cke_skin_v2 .cke_rtl .cke_dialog_close_button
+.cke_skin_v2 .cke_rtl a.cke_dialog_close_button,
+.cke_skin_v2 .cke_rtl a:hover.cke_dialog_close_button
 {
 	left: 10px;
@@ -453,5 +513,6 @@
 }
 
-.cke_skin_v2 .cke_browser_ie6.cke_rtl .cke_dialog_close_button
+.cke_skin_v2 .cke_browser_ie6.cke_rtl a.cke_dialog_close_button,
+.cke_skin_v2 .cke_browser_ie6.cke_rtl a:hover.cke_dialog_close_button
 {
 	position: relative;
@@ -461,10 +522,12 @@
 }
 
-.cke_skin_v2 .cke_browser_iequirks.cke_rtl.cke_single_page .cke_dialog_close_button
+.cke_skin_v2 .cke_browser_iequirks.cke_rtl.cke_single_page a.cke_dialog_close_button,
+.cke_skin_v2 .cke_browser_iequirks.cke_rtl.cke_single_page a:hover.cke_dialog_close_button
 {
 	margin-top: -32px;
 }
 
-.cke_skin_v2 .cke_browser_iequirks.cke_ltr .cke_dialog_close_button
+.cke_skin_v2 .cke_browser_iequirks.cke_ltr a.cke_dialog_close_button,
+.cke_skin_v2 .cke_browser_iequirks.cke_ltr a:hover.cke_dialog_close_button
 {
 	margin-top: 0;
@@ -550,7 +613,6 @@
 }
 
-.cke_skin_v2 .cke_dialog  #ImagePreviewBox
-{
-	white-space : normal;
+.cke_skin_v2 .cke_dialog  .ImagePreviewBox
+{
 	border : 2px ridge black;
 	overflow : scroll;
@@ -560,5 +622,16 @@
 	background-color : white;
 }
-.cke_skin_v2 .cke_dialog  #ImagePreviewLoader
+
+.cke_skin_v2 .cke_dialog .ImagePreviewBox table td {
+	white-space: normal;
+}
+
+/* Fix iframedialog's height doesn't stretch to 100% #4863.*/
+.cke_skin_v2 .cke_browser_iequirks .cke_dialog_page_contents
+{
+	_position: absolute;
+}
+
+.cke_skin_v2 .cke_dialog  .ImagePreviewLoader
 {
 	position: absolute;
@@ -575,5 +648,5 @@
 }
 
-.cke_skin_v2 .cke_dialog  #FlashPreviewBox
+.cke_skin_v2 .cke_dialog  .FlashPreviewBox
 {
 	white-space : normal;
@@ -640,4 +713,31 @@
 }
 
+.cke_skin_v2 .cke_dialog_body .cke_label
+{
+	display: none;
+}
+
+.cke_skin_v2 .cke_hc .cke_dialog_body .cke_label
+{
+	display: inline;
+}
+
+.cke_skin_v2 .cke_hc a.cke_btn_locked,
+.cke_skin_v2 .cke_hc a.cke_btn_unlocked,
+.cke_skin_v2 .cke_hc a.cke_btn_reset
+{
+	border-style: solid;
+	float:left;
+	width:auto;
+	height:auto;
+}
+
+.cke_skin_v2 .cke_rtl.cke_hc a.cke_btn_locked,
+.cke_skin_v2 .cke_rtl.cke_hc a.cke_btn_unlocked,
+.cke_skin_v2 .cke_rtl.cke_hc a.cke_btn_reset
+{
+	float:right;
+}
+
 .cke_skin_v2 a.cke_smile img
 {
Index: /CKEditor/branches/features/adobeair/_source/skins/v2/editor.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/v2/editor.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/v2/editor.css	(revision 5613)
@@ -1,4 +1,4 @@
-﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -15,5 +15,9 @@
 
 /* Restore the container visibility */
-html .cke_skin_v2,
+html .cke_skin_v2
+{
+	visibility: inherit;
+}
+
 html.cke_skin_v2_container
 {
Index: /CKEditor/branches/features/adobeair/_source/skins/v2/elementspath.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/v2/elementspath.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/v2/elementspath.css	(revision 5613)
@@ -1,4 +1,4 @@
-﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -67,2 +67,7 @@
 	float: none;
 }
+
+.cke_skin_v2 .cke_path .cke_label
+{
+	display: none;
+}
Index: /CKEditor/branches/features/adobeair/_source/skins/v2/icons.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/v2/icons.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/v2/icons.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -308,2 +308,17 @@
 	background-position: 0 -1040px;
 }
+
+.cke_skin_v2 .cke_button_creatediv .cke_icon
+{
+	background-position: 0 -1168px;
+}
+
+.cke_skin_v2 .cke_button_editdiv .cke_icon
+{
+	background-position: 0 -1184px;
+}
+
+.cke_skin_v2 .cke_button_removediv .cke_icon
+{
+	background-position: 0 -1200px;
+}
Index: /CKEditor/branches/features/adobeair/_source/skins/v2/mainui.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/v2/mainui.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/v2/mainui.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -18,4 +18,10 @@
 }
 
+.cke_skin_v2 span.cke_browser_webkit,
+.cke_skin_v2 span.cke_browser_gecko18
+{
+	display: block;
+}
+
 .cke_skin_v2 .cke_wrapper
 {
@@ -28,5 +34,7 @@
 }
 
-.cke_skin_v2 .cke_top, .cke_skin_v2 .cke_bottom
+.cke_skin_v2 .cke_top,
+.cke_skin_v2 .cke_bottom,
+ .cke_shared .cke_skin_v2
 {
 	background-color: #efefde;
@@ -57,4 +65,6 @@
 {
 	border: solid 1px #696969;
+	/* Prevent background content from penetrate through when switching between editing modes. (#4918) */
+	background-color: white;
 }
 
@@ -101,4 +111,16 @@
 }
 
+.cke_skin_v2 .cke_resizer_horizontal,
+.cke_skin_v2 .cke_rtl .cke_resizer_horizontal
+{
+	cursor: e-resize;
+}
+
+.cke_skin_v2 .cke_resizer_vertical,
+.cke_skin_v2 .cke_rtl .cke_resizer_vertical
+{
+	cursor: n-resize;
+}
+
 .cke_skin_v2 .cke_maximized .cke_resizer
 {
@@ -111,2 +133,22 @@
 	position: absolute;
 }
+
+/* All voice labels are not displayed. */
+.cke_skin_v2 .cke_voice_label
+{
+	display: none;
+}
+
+.cke_skin_v2 legend.cke_voice_label
+{
+	display: none;
+}
+
+.cke_skin_v2 .cke_browser_ie legend.cke_voice_label
+{
+	position: absolute;
+	display: block;
+	width: 0;
+	height: 0;
+	overflow: hidden;
+}
Index: /CKEditor/branches/features/adobeair/_source/skins/v2/menu.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/v2/menu.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/v2/menu.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -26,10 +26,9 @@
 	display:block;
 }
-
-.cke_skin_v2 .cke_menuitem a.cke_disabled:hover,
-.cke_skin_v2 .cke_menuitem a.cke_disabled:focus,
-.cke_skin_v2 .cke_menuitem a.cke_disabled:active
+.cke_hc .cke_menuitem a:hover,
+.cke_hc .cke_menuitem a:focus,
+.cke_hc .cke_menuitem a:active
 {
-	background-color: transparent !important;
+	border: 2px solid;
 }
 
@@ -60,4 +59,5 @@
 	filter: alpha(opacity=70); /* IE */
 	opacity: 0.70; /* Safari, Opera and Mozilla */
+	clear: both;
 }
 
@@ -94,6 +94,8 @@
 	margin-left: 24px;
 	background-color: #fff;
-	_overflow: hidden;
-	_width: 80px;
+}
+/* Set these after the document has been loaded and we know the dimensions*/
+.cke_skin_v2 .cke_frameLoaded .cke_menuitem .cke_label
+{
 	filter: alpha(opacity=70); /* IE */
 	opacity: 0.70; /* Safari, Opera and Mozilla */
@@ -164,4 +166,20 @@
 }
 
+.cke_skin_v2 .cke_menuarrow span
+{
+	display: none;
+}
+
+.cke_hc .cke_skin_v2 .cke_menuarrow
+{
+	width: auto;
+	margin-top: 0;
+}
+
+.cke_hc .cke_skin_v2 .cke_menuarrow span
+{
+	display: inline;
+}
+
 /* #3766 In the context menu, long labels with second level menu get wrapped */
 .cke_browser_ie.cke_ltr .cke_skin_v2 .cke_menuarrow
Index: /CKEditor/branches/features/adobeair/_source/skins/v2/panel.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/v2/panel.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/v2/panel.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -24,4 +24,9 @@
 	width: 100%;
 	height: 100%;
+}
+
+.cke_skin_v2 .cke_panel_frame .cke_label
+{
+	display: none;
 }
 
@@ -43,5 +48,4 @@
 {
 	overflow: auto;
-	overflow-x: hidden;
 }
 
@@ -98,4 +102,13 @@
 	border-color: #316ac5;
 	background-color: #dff1ff;
+}
+
+.cke_hc .cke_panel_listItem.cke_selected a,
+.cke_hc .cke_panel_listItem a:hover,
+.cke_hc .cke_panel_listItem a:focus,
+.cke_hc .cke_panel_listItem a:active
+{
+	border-width: 3px;
+	padding: 0px;
 }
 
Index: /CKEditor/branches/features/adobeair/_source/skins/v2/presets.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/v2/presets.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/v2/presets.css	(revision 5613)
@@ -1,4 +1,4 @@
-﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/skins/v2/reset.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/v2/reset.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/v2/reset.css	(revision 5613)
@@ -1,4 +1,4 @@
-﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/_source/skins/v2/richcombo.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/v2/richcombo.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/v2/richcombo.css	(revision 5613)
@@ -63,6 +63,5 @@
 
 	line-height: 24px;
-	height: 24px;
-
+	height: 22px;
 	vertical-align: top;
 	padding-left: 4px;
@@ -95,5 +94,5 @@
 	border: 1px solid #8f8f73;
 	background-color: #fff;
-	height: 14px;
+	height: 12px;
 	width:60px;
 	padding-top: 4px;
@@ -145,5 +144,15 @@
 	border-bottom: 1px solid #8f8f73;
 	width: 14px;
-	height: 22px;
+	height: 20px;
+}
+
+.cke_skin_v2 .cke_rcombo .cke_openbutton span
+{
+	display: none;
+}
+
+.cke_skin_v2 .cke_hc .cke_rcombo .cke_openbutton span
+{
+	display	: inline;
 }
 
@@ -274,2 +283,7 @@
 	float: none;
 }
+
+.cke_skin_v2 .cke_browser_iequirks .cke_rcombo .cke_openbutton
+{
+	height: 22px;
+}
Index: /CKEditor/branches/features/adobeair/_source/skins/v2/skin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/v2/skin.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/v2/skin.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -24,50 +24,54 @@
 })() );
 
-if ( CKEDITOR.dialog )
+(function()
 {
-	CKEDITOR.dialog.on( 'resize', function( evt )
-		{
-			var data = evt.data,
-				width = data.width,
-				height = data.height,
-				dialog = data.dialog,
-				standardsMode = !CKEDITOR.env.quirk;
+	CKEDITOR.dialog ? dialogSetup() : CKEDITOR.on( 'dialogPluginReady', dialogSetup );
 
-			if ( data.skin != 'v2' )
-				return;
+	function dialogSetup()
+	{
+		CKEDITOR.dialog.on( 'resize', function( evt )
+			{
+				var data = evt.data,
+					width = data.width,
+					height = data.height,
+					dialog = data.dialog,
+					contents = dialog.parts.contents;
 
-			dialog.parts.contents.setStyles(
-				{
-					width : width + 'px',
-					height : height + 'px'
-				});
+				if ( data.skin != 'v2' )
+					return;
 
-			if ( !CKEDITOR.env.ie )
-				return;
+				contents.setStyles(
+					{
+						width : width + 'px',
+						height : height + 'px'
+					});
 
-			// Fix the size of the elements which have flexible lengths.
-			setTimeout( function()
-				{
-					var content = dialog.parts.contents,
-						body = content.getParent(),
-						innerDialog = body.getParent();
+				if ( !CKEDITOR.env.ie )
+					return;
 
-					// tc
-					var el = innerDialog.getChild( 2 );
-					el.setStyle( 'width', ( body.$.offsetWidth ) + 'px' );
+				// Fix the size of the elements which have flexible lengths.
+				setTimeout( function()
+					{
+						var innerDialog = dialog.parts.dialog.getChild( [ 0, 0, 0 ] ),
+							body = innerDialog.getChild( 0 );
 
-					// bc
-					el = innerDialog.getChild( 7 );
-					el.setStyle( 'width', ( body.$.offsetWidth - 28 ) + 'px' );
+						// tc
+						var el = innerDialog.getChild( 2 );
+						el.setStyle( 'width', ( body.$.offsetWidth ) + 'px' );
 
-					// ml
-					el = innerDialog.getChild( 4 );
-					el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
+						// bc
+						el = innerDialog.getChild( 7 );
+						el.setStyle( 'width', ( body.$.offsetWidth - 28 ) + 'px' );
 
-					// mr
-					el = innerDialog.getChild( 5 );
-					el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
-				},
-				100 );
-		});
-}
+						// ml
+						el = innerDialog.getChild( 4 );
+						el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
+
+						// mr
+						el = innerDialog.getChild( 5 );
+						el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
+					},
+					100 );
+			});
+	}
+})();
Index: /CKEditor/branches/features/adobeair/_source/skins/v2/templates.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/v2/templates.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/v2/templates.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -50,17 +50,33 @@
 }
 
-.cke_skin_v2 .cke_tpl_hover
+.cke_skin_v2 .cke_tpl_list a:active .cke_tpl_item,
+.cke_skin_v2 .cke_tpl_list a:hover .cke_tpl_item,
+.cke_skin_v2 .cke_tpl_list a:focus .cke_tpl_item
 {
 	border: #ff9933 1px solid !important;
 	background-color: #fffacd !important;
+}
+
+.cke_skin_v2 .cke_tpl_list a:active *,
+.cke_skin_v2 .cke_tpl_list a:hover *,
+.cke_skin_v2 .cke_tpl_list a:focus *
+{
 	cursor: pointer;
-	cursor: hand;
 }
-/*
- * Fix property 'cursor' doesn't inherit on table
- */
-.cke_skin_v2 .cke_tpl_hover *
+
+/* IE6 contextual selectors childs won't get :hover transition until,
+	the hover style of the link itself contains certain CSS declarations.*/
+.cke_skin_v2 .cke_browser_ie6 .cke_tpl_list a:active,
+.cke_skin_v2 .cke_browser_ie6 .cke_tpl_list a:hover,
+.cke_skin_v2 .cke_browser_ie6 .cke_tpl_list a:focus
 {
-	cursor: inherit;
+	background-position: 0 0;
+}
+
+.cke_skin_v2 .cke_tpl_list a:active .cke_tpl_item,
+.cke_skin_v2 .cke_tpl_list a:hover .cke_tpl_item,
+.cke_skin_v2 .cke_tpl_list a:focus .cke_tpl_item
+{
+	border-width: 3px;
 }
 
Index: /CKEditor/branches/features/adobeair/_source/skins/v2/toolbar.css
===================================================================
--- /CKEditor/branches/features/adobeair/_source/skins/v2/toolbar.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/skins/v2/toolbar.css	(revision 5613)
@@ -1,4 +1,4 @@
 /*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -16,4 +16,11 @@
 {
 	white-space: normal;
+}
+
+.cke_skin_v2 .cke_toolbox
+{
+	clear: both;
+	/* Define the padding-bottom otherwise the collapser button will not be clickable #4932*/
+	padding-bottom: 1px;
 }
 
@@ -33,4 +40,17 @@
 }
 
+.cke_skin_v2 a.cke_toolbox_collapser span
+{
+	display: none;
+}
+
+.cke_skin_v2 .cke_hc a.cke_toolbox_collapser span
+{
+	font-size: 10px;
+	font-weight: bold;
+	font-family: Arial;
+	display: inline;
+}
+
 .cke_skin_v2 .cke_rtl a.cke_toolbox_collapser,
 .cke_skin_v2 .cke_rtl a:hover.cke_toolbox_collapser
@@ -97,5 +117,5 @@
 	float: left;
 	border-left: solid 1px #999;
-	margin: 0 2px;
+	margin: 4px 2px;
 	height: 16px;
 }
@@ -134,5 +154,5 @@
 	margin: 4px 2px 0 2px;
 	width: 3px;
-	height: 16px;
+	height: 20px;
 	float: left;
 }
@@ -219,21 +239,13 @@
 }
 
-.cke_skin_v2 .cke_hc .cke_button a.cke_on
-{
-	padding: 0 2px !important;
-	border-width: 3px;
-}
-
-.cke_skin_v2 .cke_button a.cke_disabled,
-.cke_skin_v2 .cke_browser_ie a:hover.cke_button .cke_disabled
-{
-	border: solid 1px #efefde;
-	background-color: #efefde;
+.cke_skin_v2 .cke_button a.cke_disabled *,
+.cke_skin_v2 .cke_browser_ie a:hover.cke_button .cke_disabled *
+{
 	filter: alpha(opacity=30); /* IE */
-	opacity : 0.3; /* Safari, Opera and Mozilla */
-}
-
-.cke_skin_v2 .cke_hc .cke_button a.cke_disabled,
-.cke_skin_v2 .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled
+	opacity: 0.3; /* Safari, Opera and Mozilla */
+}
+
+.cke_skin_v2 .cke_hc .cke_button a.cke_disabled *,
+.cke_skin_v2 .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled *
 {
 	filter: alpha(opacity=60);
@@ -241,24 +253,16 @@
 }
 
-.cke_skin_v2 .cke_button a:hover.cke_on,
-.cke_skin_v2 .cke_button a:focus.cke_on,
-.cke_skin_v2 .cke_button a:active.cke_on,	/* IE */
-.cke_skin_v2 .cke_button a:hover.cke_off,
-.cke_skin_v2 .cke_button a:focus.cke_off,
-.cke_skin_v2 .cke_button a:active.cke_off	/* IE */
+.cke_skin_v2 .cke_button a:hover,
+.cke_skin_v2 .cke_button a:focus,
+.cke_skin_v2 .cke_button a:active	/* IE */
 {
 	border: solid 1px #316ac5;
 	background-color: #dff1ff;
-	filter: alpha(opacity=100); /* IE */
-	opacity: 1; /* Safari, Opera and Mozilla */
 	padding: 2px 4px;
 }
 
-.cke_skin_v2 .cke_hc .cke_button a:hover.cke_on,
-.cke_skin_v2 .cke_hc .cke_button a:focus.cke_on,
-.cke_skin_v2 .cke_hc .cke_button a:active.cke_on,	/* IE */
-.cke_skin_v2 .cke_hc .cke_button a:hover.cke_off,
-.cke_skin_v2 .cke_hc .cke_button a:focus.cke_off,
-.cke_skin_v2 .cke_hc .cke_button a:active.cke_off	/* IE */
+.cke_skin_v2 .cke_hc .cke_button a:hover,
+.cke_skin_v2 .cke_hc .cke_button a:focus,
+.cke_skin_v2 .cke_hc .cke_button a:active	/* IE */
 {
 	padding: 0 2px !important;
@@ -282,5 +286,5 @@
 	display: none;
 	padding-left: 3px;
-	vertical-align: 3px;
+	vertical-align:middle;
 }
 
@@ -404,2 +408,9 @@
 	vertical-align: baseline;
 }
+
+/* Fix cursor shape consistency on toolbar combos (#4031) */
+.cke_skin_v2 .cke_browser_ie .cke_rcombo,
+.cke_skin_v2 .cke_browser_ie .cke_rcombo *
+{
+	cursor: default;
+}
Index: /CKEditor/branches/features/adobeair/_source/themes/default/theme.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/themes/default/theme.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/_source/themes/default/theme.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -6,4 +6,64 @@
 CKEDITOR.themes.add( 'default', (function()
 {
+	function checkSharedSpace( editor, spaceName )
+	{
+		var container,
+			element;
+
+		// Try to retrieve the target element from the sharedSpaces settings.
+		element = editor.config.sharedSpaces;
+		element = element && element[ spaceName ];
+		element = element && CKEDITOR.document.getById( element );
+
+		// If the element is available, we'll then create the container for
+		// the space.
+		if ( element )
+		{
+			// Creates an HTML structure that reproduces the editor class hierarchy.
+			var html =
+				'<span class="cke_shared">' +
+				'<span class="' + editor.skinClass + ' cke_editor_' + editor.name + '">' +
+				'<span class="' + CKEDITOR.env.cssClass + '">' +
+				'<span class="cke_wrapper cke_' + editor.lang.dir + '">' +
+				'<span class="cke_editor">' +
+				'<div class="cke_' + spaceName + '">' +
+				'</div></span></span></span></span></span>';
+
+			var mainContainer = element.append( CKEDITOR.dom.element.createFromHtml( html, element.getDocument() ) );
+
+			// Only the first container starts visible. Others get hidden.
+			if ( element.getCustomData( 'cke_hasshared' ) )
+				mainContainer.hide();
+			else
+				element.setCustomData( 'cke_hasshared', 1 );
+
+			// Get the deeper inner <div>.
+			container = mainContainer.getChild( [0,0,0,0] );
+
+			// When the editor gets focus, we show the space container, hiding others.
+			editor.on( 'focus', function()
+				{
+					for ( var i = 0, sibling, children = element.getChildren() ; ( sibling = children.getItem( i ) ) ; i++ )
+					{
+						if ( sibling.type == CKEDITOR.NODE_ELEMENT
+							&& !sibling.equals( mainContainer )
+							&& sibling.hasClass( 'cke_shared' ) )
+						{
+							sibling.hide();
+						}
+					}
+
+					mainContainer.show();
+				});
+
+			editor.on( 'destroy', function()
+				{
+					mainContainer.remove();
+				});
+		}
+
+		return container;
+	}
+
 	return {
 		build : function( editor, themePath )
@@ -45,21 +105,30 @@
 			}
 
+			var sharedTop		= topHtml && checkSharedSpace( editor, 'top' ),
+				sharedBottoms	= checkSharedSpace( editor, 'bottom' );
+
+			sharedTop		&& ( sharedTop.setHtml( topHtml )		, topHtml = '' );
+			sharedBottoms	&& ( sharedBottoms.setHtml( bottomHtml ), bottomHtml = '' );
+
 			var container = CKEDITOR.dom.element.createFromHtml( [
 				'<span' +
 					' id="cke_', name, '"' +
 					' onmousedown="return false;"' +
-					' class="', editor.skinClass, '"' +
+					' class="', editor.skinClass, ' cke_editor_', name, '"' +
 					' dir="', editor.lang.dir, '"' +
 					' title="', ( CKEDITOR.env.gecko ? ' ' : '' ), '"' +
 					' lang="', editor.langCode, '"' +
-					' tabindex="' + tabIndex + '"' +
+					( CKEDITOR.env.webkit? ' tabindex="' + tabIndex + '"' : '' ) +
+					' role="application"' +
+					' aria-labelledby="cke_', name, '_arialbl"' +
 					( style ? ' style="' + style + '"' : '' ) +
 					'>' +
-					'<span class="' , CKEDITOR.env.cssClass, '">' +
-						'<span class="cke_wrapper cke_', editor.lang.dir, '">' +
-							'<table class="cke_editor" border="0" cellspacing="0" cellpadding="0"><tbody>' +
-								'<tr', topHtml		? '' : ' style="display:none"', '><td id="cke_top_'		, name, '" class="cke_top">'	, topHtml		, '</td></tr>' +
-								'<tr', contentsHtml	? '' : ' style="display:none"', '><td id="cke_contents_', name, '" class="cke_contents" style="height:', height, '">', contentsHtml, '</td></tr>' +
-								'<tr', bottomHtml	? '' : ' style="display:none"', '><td id="cke_bottom_'	, name, '" class="cke_bottom">'	, bottomHtml	, '</td></tr>' +
+					'<span id="cke_', name, '_arialbl" class="cke_voice_label">' + editor.lang.editor + '</span>' +
+					'<span class="' , CKEDITOR.env.cssClass, '" role="presentation">' +
+						'<span class="cke_wrapper cke_', editor.lang.dir, '" role="presentation">' +
+							'<table class="cke_editor" border="0" cellspacing="0" cellpadding="0" role="presentation"><tbody>' +
+								'<tr', topHtml		? '' : ' style="display:none"', ' role="presentation"><td id="cke_top_'		, name, '" class="cke_top" role="presentation">'	, topHtml		, '</td></tr>' +
+								'<tr', contentsHtml	? '' : ' style="display:none"', ' role="presentation"><td id="cke_contents_', name, '" class="cke_contents" style="height:', height, '" role="presentation">', contentsHtml, '</td></tr>' +
+								'<tr', bottomHtml	? '' : ' style="display:none"', ' role="presentation"><td id="cke_bottom_'	, name, '" class="cke_bottom" role="presentation">'	, bottomHtml	, '</td></tr>' +
 							'</tbody></table>' +
 							//Hide the container when loading skins, later restored by skin css.
@@ -69,6 +138,6 @@
 				'</span>' ].join( '' ) );
 
-			container.getChild( [0, 0, 0, 0, 0] ).unselectable();
-			container.getChild( [0, 0, 0, 0, 2] ).unselectable();
+			container.getChild( [1, 0, 0, 0, 0] ).unselectable();
+			container.getChild( [1, 0, 0, 0, 2] ).unselectable();
 
 			if ( elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
@@ -99,19 +168,21 @@
 
 			var element = CKEDITOR.dom.element.createFromHtml( [
-					'<div id="cke_' + editor.name.replace('.', '\\.') + '_dialog" class="cke_skin_', editor.skinName,
+					'<div class="cke_editor_' + editor.name.replace('.', '\\.') + '_dialog cke_skin_', editor.skinName,
 						'" dir="', editor.lang.dir, '"' +
 						' lang="', editor.langCode, '"' +
+						' role="dialog"' +
+						' aria-labelledby="%title#"' +
 						'>' +
-
-						'<div class="cke_dialog', ' ' + CKEDITOR.env.cssClass,
-							' cke_', editor.lang.dir, '" style="position:absolute">' +
-							'<div class="%body">' +
-								'<div id="%title#" class="%title"></div>' +
-								'<div id="%close_button#" class="%close_button">' +
-									'<span>X</span>' +
-								'</div>' +
-								'<div id="%tabs#" class="%tabs"></div>' +
-								'<div id="%contents#" class="%contents"></div>' +
-								'<div id="%footer#" class="%footer"></div>' +
+						'<table class="cke_dialog', ' ' + CKEDITOR.env.cssClass,
+							' cke_', editor.lang.dir, '" style="position:absolute" role="presentation">' +
+							'<tr><td role="presentation">' +
+							'<div class="%body" role="presentation">' +
+								'<div id="%title#" class="%title" role="presentation"></div>' +
+								'<a id="%close_button#" class="%close_button" href="javascript:void(0)" title="' +  editor.lang.common.close+'" role="button"><span class="cke_label">X</span></a>' +
+								'<div id="%tabs#" class="%tabs" role="tablist"></div>' +
+								'<table class="%contents" role="presentation"><tr>' +
+								  '<td id="%contents#" class="%contents" role="presentation"></td>' +
+								'</tr></table>' +
+								'<div id="%footer#" class="%footer" role="presentation"></div>' +
 							'</div>' +
 							'<div id="%tl#" class="%tl"></div>' +
@@ -123,5 +194,6 @@
 							'<div id="%bc#" class="%bc"></div>' +
 							'<div id="%br#" class="%br"></div>' +
-						'</div>',
+							'</td></tr>' +
+						'</table>',
 
 						//Hide the container when loading skins, later restored by skin css.
@@ -133,9 +205,11 @@
 					.replace( /%/g, 'cke_dialog_' ) );
 
-			var body = element.getChild( [ 0, 0 ] );
+			var body = element.getChild( [ 0, 0, 0, 0, 0 ] ),
+				title = body.getChild( 0 ),
+				close = body.getChild( 1 );
 
 			// Make the Title and Close Button unselectable.
-			body.getChild( 0 ).unselectable();
-			body.getChild( 1 ).unselectable();
+			title.unselectable();
+			close.unselectable();
 
 
@@ -145,8 +219,8 @@
 				{
 					dialog		: element.getChild( 0 ),
-					title		: body.getChild( 0 ),
-					close		: body.getChild( 1 ),
+					title		: title,
+					close		: close,
 					tabs		: body.getChild( 2 ),
-					contents	: body.getChild( 3 ),
+					contents	: body.getChild( [ 3, 0, 0, 0 ] ),
 					footer		: body.getChild( 4 )
 				}
@@ -156,6 +230,7 @@
 		destroy : function( editor )
 		{
-			var container = editor.container,
-				panels = editor.panels;
+			var container = editor.container;
+			container.clearCustomData();
+			editor.element.clearCustomData();
 
 			/*
@@ -184,12 +259,8 @@
 				container.remove();
 
-			for( var i = 0 ; panels && i < panels.length ; i++ )
-					panels[ i ].remove();
-
 			if ( editor.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
-			{
 				editor.element.show();
-				delete editor.element;
-			}
+
+			delete editor.element;
 		}
 	};
@@ -210,7 +281,7 @@
 		width += 'px';
 
-	var contents = CKEDITOR.document.getById( 'cke_contents_' + this.name );
-	var outer = resizeInner ? contents.getAscendant( 'table' ).getParent()
-		: contents.getAscendant( 'table' ).getParent().getParent().getParent();
+	var container = this.container,
+		contents = CKEDITOR.document.getById( 'cke_contents_' + this.name ),
+		outer = resizeInner ? container.getChild( 1 ) : container;
 
 	// Resize the width first.
@@ -236,4 +307,30 @@
 CKEDITOR.editor.prototype.getResizable = function()
 {
-	return this.container.getChild( [ 0, 0 ] );
+	return this.container.getChild( 1 );
 };
+
+/**
+ * Makes it possible to place some of the editor UI blocks, like the toolbar
+ * and the elements path, into any element in the page.
+ * The elements used to hold the UI blocks can be shared among several editor
+ * instances. In that case, only the blocks of the active editor instance will
+ * display.
+ * @name CKEDITOR.config.sharedSpaces
+ * @type Object
+ * @default undefined
+ * @example
+ * // Place the toolbar inside the element with ID "someElementId" and the
+ * // elements path into the element with ID "anotherId".
+ * config.sharedSpaces =
+ * {
+ *     top : 'someElementId',
+ *     bottom : 'anotherId'
+ * };
+ * @example
+ * // Place the toolbar inside the element with ID "someElementId". The
+ * // elements path will remain attached to the editor UI.
+ * config.sharedSpaces =
+ * {
+ *     top : 'someElementId'
+ * };
+ */
Index: /CKEditor/branches/features/adobeair/air_sandbox_frame.html
===================================================================
--- /CKEditor/branches/features/adobeair/air_sandbox_frame.html	(revision 5612)
+++ /CKEditor/branches/features/adobeair/air_sandbox_frame.html	(revision 5613)
@@ -1,11 +1,3 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!--
-Copyright (c) 2003-2009, 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></title>
-</head>
-<body ></body>
-</html>
+<script>
+	document.write( window.parent.CKEDITOR._.air_sandbox_frame_data || '' );
+</script>
Index: /CKEditor/branches/features/adobeair/ckeditor.asp
===================================================================
--- /CKEditor/branches/features/adobeair/ckeditor.asp	(revision 5613)
+++ /CKEditor/branches/features/adobeair/ckeditor.asp	(revision 5613)
@@ -0,0 +1,958 @@
+﻿<%
+ '
+ ' Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+ ' For licensing, see LICENSE.html or http://ckeditor.com/license
+
+' Shared variable for all instances ("static")
+dim CKEDITOR_initComplete
+dim CKEDITOR_returnedEvents
+
+ ''
+ ' \brief CKEditor class that can be used to create editor
+ ' instances in ASP pages on server side.
+ ' @see http://ckeditor.com
+ '
+ ' Sample usage:
+ ' @code
+ ' editor = new CKEditor
+ ' editor.editor "editor1", "<p>Initial value.</p>", empty, empty
+ ' @endcode
+
+Class CKEditor
+
+	''
+	' The version of %CKEditor.
+	private version
+
+	''
+	' A constant string unique for each release of %CKEditor.
+	private mTimeStamp
+
+	''
+	' URL to the %CKEditor installation directory (absolute or relative to document root).
+	' If not set, CKEditor will try to guess it's path.
+	'
+	' Example usage:
+	' @code
+	' editor.basePath = "/ckeditor/"
+	' @endcode
+	Public basePath
+
+	''
+	' A boolean variable indicating whether CKEditor has been initialized.
+	' Set it to true only if you have already included
+	' &lt;script&gt; tag loading ckeditor.js in your website.
+	Public initialized
+
+	''
+	' Boolean variable indicating whether created code should be printed out or returned by a function.
+	'
+	' Example 1: get the code creating %CKEditor instance and print it on a page with the "echo" function.
+	' @code
+	' editor = new CKEditor
+	' editor.returnOutput = true
+	' code = editor.editor("editor1", "<p>Initial value.</p>", empty, empty)
+	' response.write "<p>Editor 1:</p>"
+	' response.write code
+	' @endcode
+	Public returnOutput
+
+	''
+	' A Dictionary with textarea attributes.
+	'
+	' When %CKEditor is created with the editor() method, a HTML &lt;textarea&gt; element is created,
+	' it will be displayed to anyone with JavaScript disabled or with incompatible browser.
+	public textareaAttributes
+
+	''
+	' A string indicating the creation date of %CKEditor.
+	' Do not change it unless you want to force browsers to not use previously cached version of %CKEditor.
+	public timestamp
+
+	''
+	' A dictionary that holds the instance configuration.
+	private oInstanceConfig
+
+	''
+	' A dictionary that holds the configuration for all the instances.
+	private oAllInstancesConfig
+
+	''
+	' A dictionary that holds event listeners for the instance.
+	private oInstanceEvents
+
+	''
+	' A dictionary that holds event listeners for all the instances.
+	private oAllInstancesEvents
+
+	''
+	' A Dictionary that holds global event listeners (CKEDITOR object)
+	private oGlobalEvents
+
+
+	Private Sub Class_Initialize()
+		version = "%VERSION%"
+		timeStamp = "%TIMESTAMP%"
+		mTimeStamp = "%TIMESTAMP%"
+
+		Set oInstanceConfig = CreateObject("Scripting.Dictionary")
+		Set oAllInstancesConfig = CreateObject("Scripting.Dictionary")
+
+		Set oInstanceEvents = CreateObject("Scripting.Dictionary")
+		Set oAllInstancesEvents = CreateObject("Scripting.Dictionary")
+		Set oGlobalEvents = CreateObject("Scripting.Dictionary")
+
+		Set textareaAttributes = CreateObject("Scripting.Dictionary")
+		textareaAttributes.Add "rows", 8
+		textareaAttributes.Add "cols", 60
+	End Sub
+
+	''
+	 ' Creates a %CKEditor instance.
+	 ' In incompatible browsers %CKEditor will downgrade to plain HTML &lt;textarea&gt; element.
+	 '
+	 ' @param name (string) Name of the %CKEditor instance (this will be also the "name" attribute of textarea element).
+	 ' @param value (string) Initial value.
+	 '
+	 ' Example usage:
+	 ' @code
+	 ' set editor = New CKEditor
+	 ' editor.editor "field1", "<p>Initial value.</p>"
+	 ' @endcode
+	 '
+	 ' Advanced example:
+	 ' @code
+	 ' set editor = new CKEditor
+	 ' set config = CreateObject("Scripting.Dictionary")
+	 ' config.Add "toolbar", Array( _
+	 '	Array( "Source", "-", "Bold", "Italic", "Underline", "Strike" ), _
+	 '	Array( "Image", "Link", "Unlink", "Anchor" ) _
+	 ' )
+	 ' set events = CreateObject("Scripting.Dictionary")
+	 ' events.Add "instanceReady", "function (evt) { alert('Loaded second editor: ' + evt.editor.name );}"
+
+	 ' editor.editor "field1", "<p>Initial value.</p>", config, events
+	 ' @endcode
+	 '
+	public function editor(name, value)
+		dim attr, out, js, customConfig, extraConfig
+		dim attribute
+
+		attr = ""
+
+		for each attribute in textareaAttributes
+			attr = attr & " " &  attribute & "=""" & replace( textareaAttributes( attribute ), """", "&quot" ) & """"
+		next
+
+		out = "<textarea name=""" & name & """" & attr & ">" & Server.HtmlEncode(value) & "</textarea>" & vbcrlf
+
+		if not(initialized) then
+			out = out & init()
+		end if
+
+		set customConfig = configSettings()
+		js = returnGlobalEvents()
+
+		extraConfig = (new JSON)( empty, customConfig, false )
+		if extraConfig<>"" then extraConfig = ", " & extraConfig
+		js = js & "CKEDITOR.replace('" & name & "'" & extraConfig & ");"
+
+		out = out & script(js)
+
+		if not(returnOutput) then
+			response.write out
+			out = ""
+		end if
+
+		editor = out
+
+		oInstanceConfig.RemoveAll
+		oInstanceEvents.RemoveAll
+	end function
+
+	''
+	 ' Replaces a &lt;textarea&gt; with a %CKEditor instance.
+	 '
+	 ' @param id (string) The id or name of textarea element.
+	 '
+	 ' Example 1: adding %CKEditor to &lt;textarea name="article"&gt;&lt;/textarea&gt; element:
+	 ' @code
+	 ' set editor = New CKEditor
+	 ' editor.replace "article"
+	 ' @endcode
+	 '
+	public function replaceInstance(id)
+		dim out, js, customConfig, extraConfig
+
+		out = ""
+		if not(initialized) then
+			out = out & init()
+		end if
+
+		set customConfig = configSettings()
+		js = returnGlobalEvents()
+
+		extraConfig = (new JSON)( empty, customConfig, false )
+		if extraConfig<>"" then extraConfig = ", " & extraConfig
+		js = js & "CKEDITOR.replace('" & id & "'" & extraConfig & ");"
+
+		out = out & script(js)
+
+		if not(returnOutput) then
+			response.write out
+			out = ""
+		end if
+
+		replaceInstance = out
+
+		oInstanceConfig.RemoveAll
+		oInstanceEvents.RemoveAll
+	end function
+
+	''
+	 ' Replace all &lt;textarea&gt; elements available in the document with editor instances.
+	 '
+	 ' @param className (string) If set, replace all textareas with class className in the page.
+	 '
+	 ' Example 1: replace all &lt;textarea&gt; elements in the page.
+	 ' @code
+	 ' editor = new CKEditor
+	 ' editor.replaceAll empty
+	 ' @endcode
+	 '
+	 ' Example 2: replace all &lt;textarea class="myClassName"&gt; elements in the page.
+	 ' @code
+	 ' editor = new CKEditor
+	 ' editor.replaceAll 'myClassName'
+	 ' @endcode
+	 '
+	function replaceAll(className)
+		dim out, js, customConfig
+
+		out = ""
+		if not(initialized) then
+			out = out & init()
+		end if
+
+		set customConfig = configSettings()
+		js = returnGlobalEvents()
+
+		if (customConfig.Count=0) then
+			if (isEmpty(className)) then
+				js = js & "CKEDITOR.replaceAll();"
+			else
+				js = js & "CKEDITOR.replaceAll('" & className & "');"
+			end if
+		else
+			js = js & "CKEDITOR.replaceAll( function(textarea, config) {\n"
+			if not(isEmpty(className)) then
+				js = js & "	var classRegex = new RegExp('(?:^| )' + '" & className & "' + '(?:$| )');\n"
+				js = js & "	if (!classRegex.test(textarea.className))\n"
+				js = js & "		return false;\n"
+			end if
+			js = js & "	CKEDITOR.tools.extend(config, " & (new JSON)( empty, customConfig, false ) & ", true);"
+			js = js & "} );"
+		end if
+
+		out = out & script(js)
+
+		if not(returnOutput) then
+			response.write out
+			out = ""
+		end if
+
+		replaceAll = out
+
+		oInstanceConfig.RemoveAll
+		oInstanceEvents.RemoveAll
+	end function
+
+
+	''
+	' A Dictionary that holds the %CKEditor configuration for all instances
+	' For the list of available options, see http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html
+	'
+	' Example usage:
+	' @code
+	' editor.config("height") = 400
+	' // Use @@ at the beggining of a string to ouput it without surrounding quotes.
+	' editor.config("width") = "@@screen.width * 0.8"
+	' @endcode
+	Public Property Let Config( configKey, configValue )
+		oAllInstancesConfig.Add configKey, configValue
+	End Property
+
+	''
+	' Configuration options for the next instance
+	'
+	Public Property Let instanceConfig( configKey, configValue )
+		oInstanceConfig.Add configKey, configValue
+	End Property
+
+	''
+	 ' Adds event listener.
+	 ' Events are fired by %CKEditor in various situations.
+	 '
+	 ' @param eventName (string) Event name.
+	 ' @param javascriptCode (string) Javascript anonymous function or function name.
+	 '
+	 ' Example usage:
+	 ' @code
+	 ' editor.addEventHandler  "instanceReady", "function (ev) { " & _
+	 '    " alert('Loaded: ' + ev.editor.name); " & _
+	 ' "}"
+	 ' @endcode
+	 '
+	public sub addEventHandler(eventName, javascriptCode)
+		if not(oAllInstancesEvents.Exists( eventName ) ) then
+			oAllInstancesEvents.Add eventName, Array()
+		end if
+
+		dim listeners, size
+		listeners = oAllInstancesEvents( eventName )
+		size = ubound(listeners) + 1
+		redim preserve listeners(size)
+		listeners(size) = javascriptCode
+
+		oAllInstancesEvents( eventName ) = listeners
+'		'' Avoid duplicates. fixme...
+'		if (!in_array($javascriptCode, $this->_events[$event])) {
+'			$this->_events[$event][] = $javascriptCode;
+'		}
+	end sub
+
+	''
+	 ' Clear registered event handlers.
+	 ' Note: this function will have no effect on already created editor instances.
+	 '
+	 ' @param eventName (string) Event name, if set to 'empty' all event handlers will be removed.
+	 '
+	public sub clearEventHandlers( eventName )
+		if not(isEmpty( eventName )) then
+			oAllInstancesEvents.Remove eventName
+		else
+			oAllInstancesEvents.RemoveAll
+		end if
+	end sub
+
+
+	''
+	 ' Adds event listener only for the next instance.
+	 ' Events are fired by %CKEditor in various situations.
+	 '
+	 ' @param eventName (string) Event name.
+	 ' @param javascriptCode (string) Javascript anonymous function or function name.
+	 '
+	 ' Example usage:
+	 ' @code
+	 ' editor.addInstanceEventHandler  "instanceReady", "function (ev) { " & _
+	 '    " alert('Loaded: ' + ev.editor.name); " & _
+	 ' "}"
+	 ' @endcode
+	 '
+	public sub addInstanceEventHandler(eventName, javascriptCode)
+		if not(oInstanceEvents.Exists( eventName ) ) then
+			oInstanceEvents.Add eventName, Array()
+		end if
+
+		dim listeners, size
+		listeners = oInstanceEvents( eventName )
+		size = ubound(listeners) + 1
+		redim preserve listeners(size)
+		listeners(size) = javascriptCode
+
+		oInstanceEvents( eventName ) = listeners
+'		'' Avoid duplicates. fixme...
+'		if (!in_array($javascriptCode, $this->_events[$event])) {
+'			$this->_events[$event][] = $javascriptCode;
+'		}
+	end sub
+
+	''
+	 ' Clear registered event handlers.
+	 ' Note: this function will have no effect on already created editor instances.
+	 '
+	 ' @param eventName (string) Event name, if set to 'empty' all event handlers will be removed.
+	 '
+	public sub clearInstanceEventHandlers( eventName )
+		if not(isEmpty( eventName )) then
+			oInstanceEvents.Remove eventName
+		else
+			oInstanceEvents.RemoveAll
+		end if
+	end sub
+
+	''
+	 ' Adds global event listener.
+	 '
+	 ' @param event (string) Event name.
+	 ' @param javascriptCode (string) Javascript anonymous function or function name.
+	 '
+	 ' Example usage:
+	 ' @code
+	 ' editor.addGlobalEventHandler "dialogDefinition", "function (ev) { " & _
+	 '   "  alert('Loading dialog: ' + ev.data.name); " & _
+	 ' "}"
+	 ' @endcode
+	 '
+	public sub addGlobalEventHandler( eventName, javascriptCode)
+		if not(oGlobalEvents.Exists( eventName ) ) then
+			oGlobalEvents.Add eventName, Array()
+		end if
+
+		dim listeners, size
+		listeners = oGlobalEvents( eventName )
+		size = ubound(listeners) + 1
+		redim preserve listeners(size)
+		listeners(size) = javascriptCode
+
+		oGlobalEvents( eventName ) = listeners
+
+'		// Avoid duplicates.
+'		if (!in_array($javascriptCode, $this->_globalEvents[$event])) {
+'			$this->_globalEvents[$event][] = $javascriptCode;
+'		}
+	end sub
+
+	''
+	 ' Clear registered global event handlers.
+	 ' Note: this function will have no effect if the event handler has been already printed/returned.
+	 '
+	 ' @param eventName (string) Event name, if set to 'empty' all event handlers will be removed .
+	 '
+	public sub clearGlobalEventHandlers( eventName )
+		if not(isEmpty( eventName )) then
+			oGlobalEvents.Remove eventName
+		else
+			oGlobalEvents.RemoveAll
+		end if
+	end sub
+
+	''
+	 ' Prints javascript code.
+	 '
+	 ' @param string js
+	 '
+	private function script(js)
+		script = "<script type=""text/javascript"">" & _
+			"//<![CDATA[" & vbcrlf & _
+			js & vbcrlf & _
+			"//]]>" & _
+			"</script>" & vbcrlf
+	end function
+
+	''
+	 ' Returns the configuration array (global and instance specific settings are merged into one array).
+	 '
+	 ' @param instanceConfig (Dictionary) The specific configurations to apply to editor instance.
+	 ' @param instanceEvents (Dictionary) Event listeners for editor instance.
+	 '
+	private function configSettings()
+		dim mergedConfig, mergedEvents
+		set mergedConfig = cloneDictionary(oAllInstancesConfig)
+		set mergedEvents = cloneDictionary(oAllInstancesEvents)
+
+		if not(isEmpty(oInstanceConfig)) then
+			set mergedConfig = mergeDictionary(mergedConfig, oInstanceConfig)
+		end if
+
+		if not(isEmpty(oInstanceEvents)) then
+			for each eventName in oInstanceEvents
+				code = oInstanceEvents( eventName )
+
+				if not(mergedEvents.Exists( eventName)) then
+					mergedEvents.Add eventName, code
+				else
+
+					dim listeners, size
+					listeners = mergedEvents( eventName )
+					size = ubound(listeners)
+					if isArray( code ) then
+						addedCount = ubound(code)
+						redim preserve listeners( size + addedCount + 1 )
+						for i = 0 to addedCount
+							listeners(size + i + 1) = code (i)
+						next
+					else
+						size = size + 1
+						redim preserve listeners(size)
+						listeners(size) = code
+					end if
+
+					mergedEvents( eventName ) = listeners
+				end if
+			next
+
+		end if
+
+		dim i, eventName, handlers, configON, ub, code
+
+		if mergedEvents.Count>0 then
+			if mergedConfig.Exists( "on" ) then
+				set configON = mergedConfig.items( "on" )
+			else
+				set configON = CreateObject("Scripting.Dictionary")
+				mergedConfig.Add "on", configOn
+			end if
+
+			for each eventName in mergedEvents
+				handlers = mergedEvents( eventName )
+				code = ""
+
+				if isArray(handlers) then
+					uB = ubound(handlers)
+					if (uB = 0) then
+						code = handlers(0)
+					else
+						code = "function (ev) {"
+						for i=0 to uB
+							code = code & "(" & handlers(i) & ")(ev);"
+						next
+						code = code & "}"
+					end if
+				else
+					code = handlers
+				end if
+				' Using @@ at the beggining to signal JSON that we don't want this quoted.
+				configON.Add eventName, "@@" & code
+			next
+
+'			set mergedConfig.Item("on") = configOn
+		end if
+
+		set configSettings = mergedConfig
+	end function
+
+	 ''
+		' Returns a copy of a scripting.dictionary object
+		'
+	private function cloneDictionary( base )
+		dim newOne, tmpKey
+
+		Set newOne = CreateObject("Scripting.Dictionary")
+		for each tmpKey in base
+			newOne.Add tmpKey , base( tmpKey )
+		next
+
+		set cloneDictionary = newOne
+	end function
+
+	 ''
+		' Combines two scripting.dictionary objects
+		' The base object isn't modified, and extra gets all the properties in base
+		'
+	private function mergeDictionary(base, extra)
+		dim newOne, tmpKey
+
+		for each tmpKey in base
+			if not(extra.Exists( tmpKey )) then
+				extra.Add tmpKey, base( tmpKey )
+			end if
+		next
+
+		set mergeDictionary = extra
+	end function
+
+	''
+	 ' Return global event handlers.
+	 '
+	private function returnGlobalEvents()
+		dim out, eventName, handlers
+		dim handlersForEvent, handler, code, i
+		out = ""
+
+		if (isempty(CKEDITOR_returnedEvents)) then
+			set CKEDITOR_returnedEvents = CreateObject("Scripting.Dictionary")
+		end if
+
+		for each eventName in oGlobalEvents
+			handlers = oGlobalEvents( eventName )
+
+			if not(CKEDITOR_returnedEvents.Exists(eventName)) then
+				CKEDITOR_returnedEvents.Add eventName, CreateObject("Scripting.Dictionary")
+			end if
+
+				set handlersForEvent = CKEDITOR_returnedEvents.Item( eventName )
+
+				' handlersForEvent is another dictionary
+				' and handlers is an array
+
+				for i = 0 to ubound(handlers)
+					code = handlers( i )
+
+					' Return only new events
+					if not(handlersForEvent.Exists( code )) then
+						if (out <> "") then out = out & vbcrlf
+						out = out & "CKEDITOR.on('" &  eventName & "', " & code & ");"
+						handlersForEvent.Add code, code
+					end if
+				next
+		next
+
+		returnGlobalEvents = out
+	end function
+
+	''
+	 ' Initializes CKEditor (executed only once).
+	 '
+	private function init()
+		dim out, args, path, extraCode, file
+		out = ""
+
+		if (CKEDITOR_initComplete) then
+			init = ""
+			exit function
+		end if
+
+		if (initialized) then
+			CKEDITOR_initComplete = true
+			init = ""
+			exit function
+		end if
+
+		args = ""
+		path = ckeditorPath()
+
+		if (timestamp <> "") and (timestamp <> "%" & "TIMESTAMP%") then
+			args = "?t=" & timestamp
+		end if
+
+		' Skip relative paths...
+		if (instr(path, "..") <> 0) then
+			out = out & script("window.CKEDITOR_BASEPATH='" &  path  & "';")
+		end if
+
+		out = out & "<scr" & "ipt type=""text/javascript"" src=""" & path & ckeditorFileName() & args & """></scr" & "ipt>" & vbcrlf
+
+		extraCode = ""
+		if (timestamp <> mTimeStamp) then
+			extraCode = extraCode & "CKEDITOR.timestamp = '" & timestamp & "';"
+		end if
+		if (extraCode <> "") then
+			out = out & script(extraCode)
+		end if
+
+		CKEDITOR_initComplete = true
+		initialized = true
+
+		init = out
+	end function
+
+	private function ckeditorFileName()
+		ckeditorFileName = "ckeditor.js"
+		' CKReleaser %REMOVE_START%
+		ckeditorFileName = "ckeditor_source.js"
+		' CKReleaser %REMOVE_END%
+	end function
+
+	''
+	 ' Return path to ckeditor.js.
+	 '
+	private function ckeditorPath()
+		if (basePath <> "") then
+			ckeditorPath = basePath
+		else
+			' In classic ASP we can't get the location of this included script
+			ckeditorPath = "/ckeditor/"
+		end if
+
+		' Try to check if that folder contains the CKEditor files:
+		' If it's a full URL avoid checking it as it might point to an external server.
+		if (instr(ckeditorPath, "://") <> 0) then exit function
+
+		dim filename, oFSO, exists
+		filename = server.mapPath(basePath & ckeditorFileName())
+		set oFSO = Server.CreateObject("Scripting.FileSystemObject")
+		exists = oFSO.FileExists(filename)
+		set oFSO = nothing
+
+		if not(exists) then
+			response.clear
+			response.write "<h1>CKEditor path validation failed</h1>"
+			response.write "<p>The path &quot;" & ckeditorPath & "&quot; doesn't include the CKEditor main file (" & ckeditorFileName() & ")</p>"
+			response.write "<p>Please, verify that you have set it correctly and/or adjust the 'basePath' property</p>"
+			response.write "<p>Checked for physical file: &quot;" & filename & "&quot;</p>"
+			response.end
+		end if
+	end function
+
+End Class
+
+
+
+' URL: http://www.webdevbros.net/2007/04/26/generate-json-from-asp-datatypes/
+'**************************************************************************************************************
+'' @CLASSTITLE:		JSON
+'' @CREATOR:		Michal Gabrukiewicz (gabru at grafix.at), Michael Rebec
+'' @CONTRIBUTORS:	- Cliff Pruitt (opensource at crayoncowboy.com)
+''					- Sylvain Lafontaine
+''					- Jef Housein
+''					- Jeremy Brown
+'' @CREATEDON:		2007-04-26 12:46
+'' @CDESCRIPTION:	Comes up with functionality for JSON (http://json.org) to use within ASP.
+''					Correct escaping of characters, generating JSON Grammer out of ASP datatypes and structures
+''					Some examples (all use the <em>toJSON()</em> method but as it is the class' default method it can be left out):
+''					<code>
+''					<%
+''					'simple number
+''					output = (new JSON)("myNum", 2, false)
+''					'generates {"myNum": 2}
+''
+''					'array with different datatypes
+''					output = (new JSON)("anArray", array(2, "x", null), true)
+''					'generates "anArray": [2, "x", null]
+''					'(note: the last parameter was true, thus no surrounding brackets in the result)
+''					% >
+''					</code>
+'' @REQUIRES:		-
+'' @OPTIONEXPLICIT:	yes
+'' @VERSION:		1.5.1
+
+'**************************************************************************************************************
+class JSON
+
+	'private members
+	private output, innerCall
+
+	'**********************************************************************************************************
+	'* constructor
+	'**********************************************************************************************************
+	public sub class_initialize()
+		newGeneration()
+	end sub
+
+	'******************************************************************************************
+	'' @SDESCRIPTION:	STATIC! takes a given string and makes it JSON valid
+	'' @DESCRIPTION:	all characters which needs to be escaped are beeing replaced by their
+	''					unicode representation according to the
+	''					RFC4627#2.5 - http://www.ietf.org/rfc/rfc4627.txt?number=4627
+	'' @PARAM:			val [string]: value which should be escaped
+	'' @RETURN:			[string] JSON valid string
+	'******************************************************************************************
+	public function escape(val)
+		dim cDoubleQuote, cRevSolidus, cSolidus
+		cDoubleQuote = &h22
+		cRevSolidus = &h5C
+		cSolidus = &h2F
+		dim i, currentDigit
+		for i = 1 to (len(val))
+			currentDigit = mid(val, i, 1)
+			if ascw(currentDigit) > &h00 and ascw(currentDigit) < &h1F then
+				currentDigit = escapequence(currentDigit)
+			elseif ascw(currentDigit) >= &hC280 and ascw(currentDigit) <= &hC2BF then
+				currentDigit = "\u00" + right(padLeft(hex(ascw(currentDigit) - &hC200), 2, 0), 2)
+			elseif ascw(currentDigit) >= &hC380 and ascw(currentDigit) <= &hC3BF then
+				currentDigit = "\u00" + right(padLeft(hex(ascw(currentDigit) - &hC2C0), 2, 0), 2)
+			else
+				select case ascw(currentDigit)
+					case cDoubleQuote: currentDigit = escapequence(currentDigit)
+					case cRevSolidus: currentDigit = escapequence(currentDigit)
+					case cSolidus: currentDigit = escapequence(currentDigit)
+				end select
+			end if
+			escape = escape & currentDigit
+		next
+	end function
+
+	'******************************************************************************************************************
+	'' @SDESCRIPTION:	generates a representation of a name value pair in JSON grammer
+	'' @DESCRIPTION:	It generates a name value pair which is represented as <em>{"name": value}</em> in JSON.
+	''					the generation is fully recursive. Thus the value can also be a complex datatype (array in dictionary, etc.) e.g.
+	''					<code>
+	''					<%
+	''					set j = new JSON
+	''					j.toJSON "n", array(RS, dict, false), false
+	''					j.toJSON "n", array(array(), 2, true), false
+	''					% >
+	''					</code>
+	'' @PARAM:			name [string]: name of the value (accessible with javascript afterwards). leave empty to get just the value
+	'' @PARAM:			val [variant], [int], [float], [array], [object], [dictionary]: value which needs
+	''					to be generated. Conversation of the data types is as follows:<br>
+	''					- <strong>ASP datatype -> JavaScript datatype</strong>
+	''					- NOTHING, NULL -> null
+	''					- INT, DOUBLE -> number
+	''					- STRING -> string
+	''					- BOOLEAN -> bool
+	''					- ARRAY -> array
+	''					- DICTIONARY -> Represents it as name value pairs. Each key is accessible as property afterwards. json will look like <code>"name": {"key1": "some value", "key2": "other value"}</code>
+	''					- <em>multidimensional array</em> -> Generates a 1-dimensional array (flat) with all values of the multidimensional array
+	''					- <em>request</em> object -> every property and collection (cookies, form, querystring, etc) of the asp request object is exposed as an item of a dictionary. Property names are <strong>lowercase</strong>. e.g. <em>servervariables</em>.
+	''					- OBJECT -> name of the type (if unknown type) or all its properties (if class implements <em>reflect()</em> method)
+	''					Implement a <strong>reflect()</strong> function if you want your custom classes to be recognized. The function must return
+	''					a dictionary where the key holds the property name and the value its value. Example of a reflect function within a User class which has firstname and lastname properties
+	''					<code>
+	''					<%
+	''					function reflect()
+	''					.	set reflect = server.createObject("scripting.dictionary")
+	''					.	reflect.add "firstname", firstname
+	''					.	reflect.add "lastname", lastname
+	''					end function
+	''					% >
+	''					</code>
+	''					Example of how to generate a JSON representation of the asp request object and access the <em>HTTP_HOST</em> server variable in JavaScript:
+	''					<code>
+	''					<script>alert(<%= (new JSON)(empty, request, false) % >.servervariables.HTTP_HOST);</script>
+	''					</code>
+	'' @PARAM:			nested [bool]: indicates if the name value pair is already nested within another? if yes then the <em>{}</em> are left out.
+	'' @RETURN:			[string] returns a JSON representation of the given name value pair
+	'******************************************************************************************************************
+	public default function toJSON(name, val, nested)
+		if not nested and not isEmpty(name) then write("{")
+		if not isEmpty(name) then write("""" & escape(name) & """: ")
+		generateValue(val)
+		if not nested and not isEmpty(name) then write("}")
+		toJSON = output
+
+		if innerCall = 0 then newGeneration()
+	end function
+
+	'******************************************************************************************************************
+	'* generate
+	'******************************************************************************************************************
+	private function generateValue(val)
+		if isNull(val) then
+			write("null")
+		elseif isArray(val) then
+			generateArray(val)
+		elseif isObject(val) then
+			dim tName : tName = typename(val)
+			if val is nothing then
+				write("null")
+			elseif tName = "Dictionary" or tName = "IRequestDictionary" then
+				generateDictionary(val)
+			elseif tName = "IRequest" then
+				set req = server.createObject("scripting.dictionary")
+				req.add "clientcertificate", val.ClientCertificate
+				req.add "cookies", val.cookies
+				req.add "form", val.form
+				req.add "querystring", val.queryString
+				req.add "servervariables", val.serverVariables
+				req.add "totalbytes", val.totalBytes
+				generateDictionary(req)
+			elseif tName = "IStringList" then
+				if val.count = 1 then
+					toJSON empty, val(1), true
+				else
+					generateArray(val)
+				end if
+			else
+				generateObject(val)
+			end if
+		else
+			'bool
+			dim varTyp
+			varTyp = varType(val)
+			if varTyp = 11 then
+				if val then write("true") else write("false")
+			'int, long, byte
+			elseif varTyp = 2 or varTyp = 3 or varTyp = 17 or varTyp = 19 then
+				write(cLng(val))
+			'single, double, currency
+			elseif varTyp = 4 or varTyp = 5 or varTyp = 6 or varTyp = 14 then
+				write(replace(cDbl(val), ",", "."))
+			else
+				' Using @@ at the beggining to signal JSON that we don't want this quoted.
+				if left(val, 2) = "@@" then
+					write( mid( val, 3 ) )
+				else
+					write("""" & escape(val & "") & """")
+				end if
+			end if
+		end if
+		generateValue = output
+	end function
+
+	'******************************************************************************************************************
+	'* generateArray
+	'******************************************************************************************************************
+	private sub generateArray(val)
+		dim item, i
+		write("[")
+		i = 0
+		'the for each allows us to support also multi dimensional arrays
+		for each item in val
+			if i > 0 then write(",")
+			generateValue(item)
+			i = i + 1
+		next
+		write("]")
+	end sub
+
+	'******************************************************************************************************************
+	'* generateDictionary
+	'******************************************************************************************************************
+	private sub generateDictionary(val)
+		innerCall = innerCall + 1
+		if val.count = 0 then
+			toJSON empty, null, true
+			exit sub
+		end if
+		dim key, i
+		write("{")
+		i = 0
+		for each key in val
+			if i > 0 then write(",")
+			toJSON key, val(key), true
+			i = i + 1
+		next
+		write("}")
+		innerCall = innerCall - 1
+	end sub
+
+	'******************************************************************************************************************
+	'* generateObject
+	'******************************************************************************************************************
+	private sub generateObject(val)
+		dim props
+		on error resume next
+		set props = val.reflect()
+		if err = 0 then
+			on error goto 0
+			innerCall = innerCall + 1
+			toJSON empty, props, true
+			innerCall = innerCall - 1
+		else
+			on error goto 0
+			write("""" & escape(typename(val)) & """")
+		end if
+	end sub
+
+	'******************************************************************************************************************
+	'* newGeneration
+	'******************************************************************************************************************
+	private sub newGeneration()
+		output = empty
+		innerCall = 0
+	end sub
+
+	'******************************************************************************************
+	'* JsonEscapeSquence
+	'******************************************************************************************
+	private function escapequence(digit)
+		escapequence = "\u00" + right(padLeft(hex(ascw(digit)), 2, 0), 2)
+	end function
+
+	'******************************************************************************************
+	'* padLeft
+	'******************************************************************************************
+	private function padLeft(value, totalLength, paddingChar)
+		padLeft = right(clone(paddingChar, totalLength) & value, totalLength)
+	end function
+
+	'******************************************************************************************
+	'* clone
+	'******************************************************************************************
+	private function clone(byVal str, n)
+		dim i
+		for i = 1 to n : clone = clone & str : next
+	end function
+
+	'******************************************************************************************
+	'* write
+	'******************************************************************************************
+	private sub write(val)
+		output = output & val
+	end sub
+
+end class
+%>
Index: /CKEditor/branches/features/adobeair/ckeditor.pack
===================================================================
--- /CKEditor/branches/features/adobeair/ckeditor.pack	(revision 5612)
+++ /CKEditor/branches/features/adobeair/ckeditor.pack	(revision 5613)
@@ -1,3 +1,3 @@
-﻿/*
+/*
  * CKPackager - Sample Package file
  */
@@ -5,5 +5,5 @@
 header :
 	'/*'																			+ '\n' +
-	'Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.'	+ '\n' +
+	'Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.'	+ '\n' +
 	'For licensing, see LICENSE.html or http://ckeditor.com/license'				+ '\n' +
 	'*/'																			+ '\n' +
@@ -21,4 +21,5 @@
 		'CKEDITOR.ALT' : 4000,
 		'CKEDITOR.NODE_ELEMENT' : 1,
+		'CKEDITOR.NODE_DOCUMENT' : 9,
 		'CKEDITOR.NODE_TEXT' : 3,
 		'CKEDITOR.NODE_COMMENT' : 8,
@@ -46,5 +47,13 @@
 		'CKEDITOR.END' : 2,
 		'CKEDITOR.STARTEND' : 3,
+		'CKEDITOR.SHRINK_ELEMENT' : 1,
+		'CKEDITOR.SHRINK_TEXT' : 2,
 		'CKEDITOR.UI_BUTTON' : 1,
+		'CKEDITOR.DIALOG_RESIZE_NONE' : 0,
+		'CKEDITOR.DIALOG_RESIZE_WIDTH' : 1,
+		'CKEDITOR.DIALOG_RESIZE_HEIGHT' : 2,
+		'CKEDITOR.DIALOG_RESIZE_BOTH' : 3,
+		'CKEDITOR.VALIDATE_OR' : 1,
+		'CKEDITOR.VALIDATE_AND' : 2,
 		'CKEDITOR.STYLE_BLOCK' : 1,
 		'CKEDITOR.STYLE_INLINE' : 2,
@@ -56,10 +65,4 @@
 		'CKEDITOR.UI_RICHCOMBO' : 3,
 		'CKEDITOR.UI_MENUBUTTON' : 5,
-		'CKEDITOR.DIALOG_RESIZE_NONE' : 0,
-		'CKEDITOR.DIALOG_RESIZE_WIDTH' : 1,
-		'CKEDITOR.DIALOG_RESIZE_HEIGHT' : 2,
-		'CKEDITOR.DIALOG_RESIZE_BOTH' : 3,
-		'CKEDITOR.VALIDATE_OR' : 1,
-		'CKEDITOR.VALIDATE_AND' : 2,
 		'CKEDITOR.UI_PANEL' : 2
 	},
@@ -121,4 +124,5 @@
 					'_source/core/htmlparser/basicwriter.js',
 					'_source/core/ckeditor.js',
+					'_source/core/dom/comment.js',
 					'_source/core/dom/elementpath.js',
 					'_source/core/dom/text.js',
@@ -127,6 +131,8 @@
 					'_source/core/dom/range.js',
 					'_source/core/_bootstrap.js',
+					'_source/skins/kama/skin.js',
 //					'_source/lang/en.js',
 					'_source/plugins/about/plugin.js',
+					'_source/plugins/a11yhelp/plugin.js',
 					'_source/plugins/basicstyles/plugin.js',
 					'_source/plugins/blockquote/plugin.js',
@@ -134,5 +140,7 @@
 					'_source/plugins/clipboard/plugin.js',
 					'_source/plugins/colorbutton/plugin.js',
+					'_source/plugins/colordialog/plugin.js',
 					'_source/plugins/contextmenu/plugin.js',
+					'_source/plugins/div/plugin.js',
 					'_source/plugins/elementspath/plugin.js',
 					'_source/plugins/enterkey/plugin.js',
@@ -152,4 +160,5 @@
 					'_source/plugins/link/plugin.js',
 					'_source/plugins/list/plugin.js',
+					'_source/plugins/liststyle/plugin.js',
 					'_source/plugins/maximize/plugin.js',
 					'_source/plugins/newpage/plugin.js',
@@ -166,4 +175,5 @@
 					'_source/plugins/smiley/plugin.js',
 					'_source/plugins/showblocks/plugin.js',
+					'_source/plugins/showborders/plugin.js',
 					'_source/plugins/sourcearea/plugin.js',
 					'_source/plugins/stylescombo/plugin.js',
@@ -177,4 +187,5 @@
 					'_source/plugins/wysiwygarea/plugin.js',
 					'_source/plugins/wsc/plugin.js',
+					'_source/plugins/dialog/plugin.js',
 					'_source/plugins/styles/plugin.js',
 					'_source/plugins/domiterator/plugin.js',
@@ -182,4 +193,5 @@
 					'_source/plugins/floatpanel/plugin.js',
 					'_source/plugins/menu/plugin.js',
+					'_source/plugins/editingblock/plugin.js',
 					'_source/plugins/selection/plugin.js',
 					'_source/plugins/fakeobjects/plugin.js',
@@ -187,10 +199,7 @@
 					'_source/plugins/htmlwriter/plugin.js',
 					'_source/plugins/menubutton/plugin.js',
-					'_source/plugins/dialog/plugin.js',
-					'_source/plugins/editingblock/plugin.js',
+					'_source/plugins/dialogui/plugin.js',
 					'_source/plugins/panel/plugin.js',
 					'_source/plugins/listblock/plugin.js',
-					'_source/plugins/dialogui/plugin.js',
-					'_source/skins/kama/skin.js',
 					'_source/themes/default/theme.js'
 				]
Index: /CKEditor/branches/features/adobeair/ckeditor.php
===================================================================
--- /CKEditor/branches/features/adobeair/ckeditor.php	(revision 5613)
+++ /CKEditor/branches/features/adobeair/ckeditor.php	(revision 5613)
@@ -0,0 +1,29 @@
+<?php
+/*
+ * Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.html or http://ckeditor.com/license
+ */
+
+/*! \mainpage CKEditor - PHP server side intergation
+ * \section intro_sec CKEditor
+ * Visit <a href="http://ckeditor.com">CKEditor web site</a> to find more information about the editor.
+ * \section install_sec Installation
+ * \subsection step1 Include ckeditor.php in your PHP web site.
+ * @code
+ * <?php
+ * include("ckeditor/ckeditor.php");
+ * ?>
+ * @endcode
+ * \subsection step2 Create CKEditor class instance and use one of available methods to insert CKEditor.
+ * @code
+ * <?php
+ * $CKEditor = new CKEditor();
+ * echo $CKEditor->textarea("field1", "<p>Initial value.</p>");
+ * ?>
+ * @endcode
+ */
+
+if ( !function_exists('version_compare') || version_compare( phpversion(), '5', '<' ) )
+	include_once( 'ckeditor_php4.php' ) ;
+else
+	include_once( 'ckeditor_php5.php' ) ;
Index: /CKEditor/branches/features/adobeair/ckeditor_basic_source.js
===================================================================
--- /CKEditor/branches/features/adobeair/ckeditor_basic_source.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/ckeditor_basic_source.js	(revision 5613)
@@ -1,4 +1,4 @@
-/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/ckeditor_php4.php
===================================================================
--- /CKEditor/branches/features/adobeair/ckeditor_php4.php	(revision 5613)
+++ /CKEditor/branches/features/adobeair/ckeditor_php4.php	(revision 5613)
@@ -0,0 +1,598 @@
+<?php
+/*
+* Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+* For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * \brief CKEditor class that can be used to create editor
+ * instances in PHP pages on server side.
+ * @see http://ckeditor.com
+ *
+ * Sample usage:
+ * @code
+ * $CKEditor = new CKEditor();
+ * $CKEditor->editor("editor1", "<p>Initial value.</p>");
+ * @endcode
+ */
+class CKEditor
+{
+	/**
+	 * The version of %CKEditor.
+	 * \private
+	 */
+	var $version = '%VERSION%';
+	/**
+	 * A constant string unique for each release of %CKEditor.
+	 * \private
+	 */
+	var $_timestamp = '%TIMESTAMP%';
+
+	/**
+	 * URL to the %CKEditor installation directory (absolute or relative to document root).
+	 * If not set, CKEditor will try to guess it's path.
+	 *
+	 * Example usage:
+	 * @code
+	 * $CKEditor->basePath = '/ckeditor/';
+	 * @endcode
+	 */
+	var $basePath;
+	/**
+	 * An array that holds the global %CKEditor configuration.
+	 * For the list of available options, see http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html
+	 *
+	 * Example usage:
+	 * @code
+	 * $CKEditor->config['height'] = 400;
+	 * // Use @@ at the beggining of a string to ouput it without surrounding quotes.
+	 * $CKEditor->config['width'] = '@@screen.width * 0.8';
+	 * @endcode
+	 */
+	var $config = array();
+	/**
+	 * A boolean variable indicating whether CKEditor has been initialized.
+	 * Set it to true only if you have already included
+	 * &lt;script&gt; tag loading ckeditor.js in your website.
+	 */
+	var $initialized = false;
+	/**
+	 * Boolean variable indicating whether created code should be printed out or returned by a function.
+	 *
+	 * Example 1: get the code creating %CKEditor instance and print it on a page with the "echo" function.
+	 * @code
+	 * $CKEditor = new CKEditor();
+	 * $CKEditor->returnOutput = true;
+	 * $code = $CKEditor->editor("editor1", "<p>Initial value.</p>");
+	 * echo "<p>Editor 1:</p>";
+	 * echo $code;
+	 * @endcode
+	 */
+	var $returnOutput = false;
+	/**
+	 * An array with textarea attributes.
+	 *
+	 * When %CKEditor is created with the editor() method, a HTML &lt;textarea&gt; element is created,
+	 * it will be displayed to anyone with JavaScript disabled or with incompatible browser.
+	 */
+	var $textareaAttributes = array( "rows" => 8, "cols" => 60 );
+	/**
+	 * A string indicating the creation date of %CKEditor.
+	 * Do not change it unless you want to force browsers to not use previously cached version of %CKEditor.
+	 */
+	var $timestamp = "%TIMESTAMP%";
+	/**
+	 * An array that holds event listeners.
+	 * \private
+	 */
+	var $_events = array();
+	/**
+	 * An array that holds global event listeners.
+	 * \private
+	 */
+	var $_globalEvents = array();
+
+	/**
+	 * Main Constructor.
+	 *
+	 *  @param $basePath (string) URL to the %CKEditor installation directory (optional).
+	 */
+	function CKEditor($basePath = null) {
+		if (!empty($basePath)) {
+			$this->basePath = $basePath;
+		}
+	}
+
+	/**
+	 * Creates a %CKEditor instance.
+	 * In incompatible browsers %CKEditor will downgrade to plain HTML &lt;textarea&gt; element.
+	 *
+	 * @param $name (string) Name of the %CKEditor instance (this will be also the "name" attribute of textarea element).
+	 * @param $value (string) Initial value (optional).
+	 * @param $config (array) The specific configurations to apply to this editor instance (optional).
+	 * @param $events (array) Event listeners for this editor instance (optional).
+	 *
+	 * Example usage:
+	 * @code
+	 * $CKEditor = new CKEditor();
+	 * $CKEditor->editor("field1", "<p>Initial value.</p>");
+	 * @endcode
+	 *
+	 * Advanced example:
+	 * @code
+	 * $CKEditor = new CKEditor();
+	 * $config = array();
+	 * $config['toolbar'] = array(
+	 *     array( 'Source', '-', 'Bold', 'Italic', 'Underline', 'Strike' ),
+	 *     array( 'Image', 'Link', 'Unlink', 'Anchor' )
+	 * );
+	 * $events['instanceReady'] = 'function (ev) {
+	 *     alert("Loaded: " + ev.editor.name);
+	 * }';
+	 * $CKEditor->editor("field1", "<p>Initial value.</p>", $config, $events);
+	 * @endcode
+	 */
+	function editor($name, $value = "", $config = array(), $events = array())
+	{
+		$attr = "";
+		foreach ($this->textareaAttributes as $key => $val) {
+			$attr.= " " . $key . '="' . str_replace('"', '&quot;', $val) . '"';
+		}
+		$out = "<textarea name=\"" . $name . "\"" . $attr . ">" . htmlspecialchars($value) . "</textarea>\n";
+		if (!$this->initialized) {
+			$out .= $this->init();
+		}
+
+		$_config = $this->configSettings($config, $events);
+
+		$js = $this->returnGlobalEvents();
+		if (!empty($_config))
+			$js .= "CKEDITOR.replace('".$name."', ".$this->jsEncode($_config).");";
+		else
+			$js .= "CKEDITOR.replace('".$name."');";
+
+		$out .= $this->script($js);
+
+		if (!$this->returnOutput) {
+			print $out;
+			$out = "";
+		}
+
+		return $out;
+	}
+
+	/**
+	 * Replaces a &lt;textarea&gt; with a %CKEditor instance.
+	 *
+	 * @param $id (string) The id or name of textarea element.
+	 * @param $config (array) The specific configurations to apply to this editor instance (optional).
+	 * @param $events (array) Event listeners for this editor instance (optional).
+	 *
+	 * Example 1: adding %CKEditor to &lt;textarea name="article"&gt;&lt;/textarea&gt; element:
+	 * @code
+	 * $CKEditor = new CKEditor();
+	 * $CKEditor->replace("article");
+	 * @endcode
+	 */
+	function replace($id, $config = array(), $events = array())
+	{
+		$out = "";
+		if (!$this->initialized) {
+			$out .= $this->init();
+		}
+
+		$_config = $this->configSettings($config, $events);
+
+		$js = $this->returnGlobalEvents();
+		if (!empty($_config)) {
+			$js .= "CKEDITOR.replace('".$id."', ".$this->jsEncode($_config).");";
+		}
+		else {
+			$js .= "CKEDITOR.replace('".$id."');";
+		}
+		$out .= $this->script($js);
+
+		if (!$this->returnOutput) {
+			print $out;
+			$out = "";
+		}
+
+		return $out;
+	}
+
+	/**
+	 * Replace all &lt;textarea&gt; elements available in the document with editor instances.
+	 *
+	 * @param $className (string) If set, replace all textareas with class className in the page.
+	 *
+	 * Example 1: replace all &lt;textarea&gt; elements in the page.
+	 * @code
+	 * $CKEditor = new CKEditor();
+	 * $CKEditor->replaceAll();
+	 * @endcode
+	 *
+	 * Example 2: replace all &lt;textarea class="myClassName"&gt; elements in the page.
+	 * @code
+	 * $CKEditor = new CKEditor();
+	 * $CKEditor->replaceAll( 'myClassName' );
+	 * @endcode
+	 */
+	function replaceAll($className = null)
+	{
+		$out = "";
+		if (!$this->initialized) {
+			$out .= $this->init();
+		}
+
+		$_config = $this->configSettings();
+
+		$js = $this->returnGlobalEvents();
+		if (empty($_config)) {
+			if (empty($className)) {
+				$js .= "CKEDITOR.replaceAll();";
+			}
+			else {
+				$js .= "CKEDITOR.replaceAll('".$className."');";
+			}
+		}
+		else {
+			$classDetection = "";
+			$js .= "CKEDITOR.replaceAll( function(textarea, config) {\n";
+			if (!empty($className)) {
+				$js .= "	var classRegex = new RegExp('(?:^| )' + '". $className ."' + '(?:$| )');\n";
+				$js .= "	if (!classRegex.test(textarea.className))\n";
+				$js .= "		return false;\n";
+			}
+			$js .= "	CKEDITOR.tools.extend(config, ". $this->jsEncode($_config) .", true);";
+			$js .= "} );";
+
+		}
+
+		$out .= $this->script($js);
+
+		if (!$this->returnOutput) {
+			print $out;
+			$out = "";
+		}
+
+		return $out;
+	}
+
+	/**
+	 * Adds event listener.
+	 * Events are fired by %CKEditor in various situations.
+	 *
+	 * @param $event (string) Event name.
+	 * @param $javascriptCode (string) Javascript anonymous function or function name.
+	 *
+	 * Example usage:
+	 * @code
+	 * $CKEditor->addEventHandler('instanceReady', 'function (ev) {
+	 *     alert("Loaded: " + ev.editor.name);
+	 * }');
+	 * @endcode
+	 */
+	function addEventHandler($event, $javascriptCode)
+	{
+		if (!isset($this->_events[$event])) {
+			$this->_events[$event] = array();
+		}
+		// Avoid duplicates.
+		if (!in_array($javascriptCode, $this->_events[$event])) {
+			$this->_events[$event][] = $javascriptCode;
+		}
+	}
+
+	/**
+	 * Clear registered event handlers.
+	 * Note: this function will have no effect on already created editor instances.
+	 *
+	 * @param $event (string) Event name, if not set all event handlers will be removed (optional).
+	 */
+	function clearEventHandlers($event = null)
+	{
+		if (!empty($event)) {
+			$this->_events[$event] = array();
+		}
+		else {
+			$this->_events = array();
+		}
+	}
+
+	/**
+	 * Adds global event listener.
+	 *
+	 * @param $event (string) Event name.
+	 * @param $javascriptCode (string) Javascript anonymous function or function name.
+	 *
+	 * Example usage:
+	 * @code
+	 * $CKEditor->addGlobalEventHandler('dialogDefinition', 'function (ev) {
+	 *     alert("Loading dialog: " + ev.data.name);
+	 * }');
+	 * @endcode
+	 */
+	function addGlobalEventHandler($event, $javascriptCode)
+	{
+		if (!isset($this->_globalEvents[$event])) {
+			$this->_globalEvents[$event] = array();
+		}
+		// Avoid duplicates.
+		if (!in_array($javascriptCode, $this->_globalEvents[$event])) {
+			$this->_globalEvents[$event][] = $javascriptCode;
+		}
+	}
+
+	/**
+	 * Clear registered global event handlers.
+	 * Note: this function will have no effect if the event handler has been already printed/returned.
+	 *
+	 * @param $event (string) Event name, if not set all event handlers will be removed (optional).
+	 */
+	function clearGlobalEventHandlers($event = null)
+	{
+		if (!empty($event)) {
+			$this->_globalEvents[$event] = array();
+		}
+		else {
+			$this->_globalEvents = array();
+		}
+	}
+
+	/**
+	 * Prints javascript code.
+	 * \private
+	 *
+	 * @param string $js
+	 */
+	function script($js)
+	{
+		$out = "<script type=\"text/javascript\">";
+		$out .= "//<![CDATA[\n";
+		$out .= $js;
+		$out .= "\n//]]>";
+		$out .= "</script>\n";
+
+		return $out;
+	}
+
+	/**
+	 * Returns the configuration array (global and instance specific settings are merged into one array).
+	 * \private
+	 *
+	 * @param $config (array) The specific configurations to apply to editor instance.
+	 * @param $events (array) Event listeners for editor instance.
+	 */
+	function configSettings($config = array(), $events = array())
+	{
+		$_config = $this->config;
+		$_events = $this->_events;
+
+		if (is_array($config) && !empty($config)) {
+			$_config = array_merge($_config, $config);
+		}
+
+		if (is_array($events) && !empty($events)) {
+			foreach ($events as $eventName => $code) {
+				if (!isset($_events[$eventName])) {
+					$_events[$eventName] = array();
+				}
+				if (!in_array($code, $_events[$eventName])) {
+					$_events[$eventName][] = $code;
+				}
+			}
+		}
+
+		if (!empty($_events)) {
+			foreach($_events as $eventName => $handlers) {
+				if (empty($handlers)) {
+					continue;
+				}
+				else if (count($handlers) == 1) {
+					$_config['on'][$eventName] = '@@'.$handlers[0];
+				}
+				else {
+					$_config['on'][$eventName] = '@@function (ev){';
+					foreach ($handlers as $handler => $code) {
+						$_config['on'][$eventName] .= '('.$code.')(ev);';
+					}
+					$_config['on'][$eventName] .= '}';
+				}
+			}
+		}
+
+		return $_config;
+	}
+
+	/**
+	 * Return global event handlers.
+	 * \private
+	 */
+	function returnGlobalEvents()
+	{
+		static $returnedEvents;
+		$out = "";
+
+		if (!isset($returnedEvents)) {
+			$returnedEvents = array();
+		}
+
+		if (!empty($this->_globalEvents)) {
+			foreach ($this->_globalEvents as $eventName => $handlers) {
+				foreach ($handlers as $handler => $code) {
+					if (!isset($returnedEvents[$eventName])) {
+						$returnedEvents[$eventName] = array();
+					}
+					// Return only new events
+					if (!in_array($code, $returnedEvents[$eventName])) {
+						$out .= ($code ? "\n" : "") . "CKEDITOR.on('". $eventName ."', $code);";
+						$returnedEvents[$eventName][] = $code;
+					}
+				}
+			}
+		}
+
+		return $out;
+	}
+
+	/**
+	 * Initializes CKEditor (executed only once).
+	 * \private
+	 */
+	function init()
+	{
+		static $initComplete;
+		$out = "";
+
+		if (!empty($initComplete)) {
+			return "";
+		}
+
+		if ($this->initialized) {
+			$initComplete = true;
+			return "";
+		}
+
+		$args = "";
+		$ckeditorPath = $this->ckeditorPath();
+
+		if (!empty($this->timestamp) && $this->timestamp != "%"."TIMESTAMP%") {
+			$args = '?t=' . $this->timestamp;
+		}
+
+		// Skip relative paths...
+		if (strpos($ckeditorPath, '..') !== 0) {
+			$out .= $this->script("window.CKEDITOR_BASEPATH='". $ckeditorPath ."';");
+		}
+
+		$out .= "<script type=\"text/javascript\" src=\"" . $ckeditorPath . 'ckeditor.js' . $args . "\"></script>\n";
+
+		$extraCode = "";
+		// CKReleaser %REMOVE_START%
+		if ($this->version == '%VERSION%') {
+			$extraCode .= ($extraCode ? "\n" : "") . "if (typeof(CKEDITOR) == 'undefined') { alert('The CKEDITOR object was not found. Please make sure that the ckeditor.js file is available in your installation.'); }";
+		}
+		// %REMOVE_END%
+		if ($this->timestamp != $this->_timestamp) {
+			$extraCode .= ($extraCode ? "\n" : "") . "CKEDITOR.timestamp = '". $this->timestamp ."';";
+		}
+		if ($extraCode) {
+			$out .= $this->script($extraCode);
+		}
+
+		$initComplete = $this->initialized = true;
+
+		return $out;
+	}
+
+	/**
+	 * Return path to ckeditor.js.
+	 * \private
+	 */
+	function ckeditorPath()
+	{
+		if (!empty($this->basePath)) {
+			return $this->basePath;
+		}
+
+		/**
+		 * The absolute pathname of the currently executing script.
+		 * Note: If a script is executed with the CLI, as a relative path, such as file.php or ../file.php,
+		 * $_SERVER['SCRIPT_FILENAME'] will contain the relative path specified by the user.
+		 */
+		if (isset($_SERVER['SCRIPT_FILENAME'])) {
+			$realPath = dirname($_SERVER['SCRIPT_FILENAME']);
+		}
+		else {
+			/**
+			 * realpath — Returns canonicalized absolute pathname
+			 */
+			$realPath = realpath( './' ) ;
+		}
+
+		/**
+		 * The filename of the currently executing script, relative to the document root.
+		 * For instance, $_SERVER['PHP_SELF'] in a script at the address http://example.com/test.php/foo.bar
+		 * would be /test.php/foo.bar.
+		 */
+		$selfPath = dirname($_SERVER['PHP_SELF']);
+		$file = str_replace("\\", "/", __FILE__);
+
+		if (!$selfPath || !$realPath || !$file) {
+			return "/ckeditor/";
+		}
+
+		$documentRoot = substr($realPath, 0, strlen($realPath) - strlen($selfPath));
+		$fileUrl = substr($file, strlen($documentRoot));
+		$ckeditorUrl = str_replace("ckeditor_php5.php", "", $fileUrl);
+
+		return $ckeditorUrl;
+	}
+
+	/**
+	 * This little function provides a basic JSON support.
+	 * http://php.net/manual/en/function.json-encode.php
+	 * \private
+	 *
+	 * @param mixed $val
+	 * @return string
+	 */
+	function jsEncode($val)
+	{
+		if (is_null($val)) {
+			return 'null';
+		}
+		if ($val === false) {
+			return 'false';
+		}
+		if ($val === true) {
+			return 'true';
+		}
+		if (is_scalar($val))
+		{
+			if (is_float($val))
+			{
+				// Always use "." for floats.
+				$val = str_replace(",", ".", strval($val));
+			}
+
+			// Use @@ to not use quotes when outputting string value
+			if (strpos($val, '@@') === 0) {
+				return substr($val, 2);
+			}
+			else {
+				// All scalars are converted to strings to avoid indeterminism.
+				// PHP's "1" and 1 are equal for all PHP operators, but
+				// JS's "1" and 1 are not. So if we pass "1" or 1 from the PHP backend,
+				// we should get the same result in the JS frontend (string).
+				// Character replacements for JSON.
+				static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'),
+				array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
+
+				$val = str_replace($jsonReplaces[0], $jsonReplaces[1], $val);
+
+				return '"' . $val . '"';
+			}
+		}
+		$isList = true;
+		for ($i = 0, reset($val); $i < count($val); $i++, next($val))
+		{
+			if (key($val) !== $i)
+			{
+				$isList = false;
+				break;
+			}
+		}
+		$result = array();
+		if ($isList)
+		{
+			foreach ($val as $v) $result[] = $this->jsEncode($v);
+			return '[ ' . join(', ', $result) . ' ]';
+		}
+		else
+		{
+			foreach ($val as $k => $v) $result[] = $this->jsEncode($k).': '.$this->jsEncode($v);
+			return '{ ' . join(', ', $result) . ' }';
+		}
+	}
+}
Index: /CKEditor/branches/features/adobeair/ckeditor_php5.php
===================================================================
--- /CKEditor/branches/features/adobeair/ckeditor_php5.php	(revision 5613)
+++ /CKEditor/branches/features/adobeair/ckeditor_php5.php	(revision 5613)
@@ -0,0 +1,588 @@
+<?php
+/*
+* Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+* For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * \brief CKEditor class that can be used to create editor
+ * instances in PHP pages on server side.
+ * @see http://ckeditor.com
+ *
+ * Sample usage:
+ * @code
+ * $CKEditor = new CKEditor();
+ * $CKEditor->editor("editor1", "<p>Initial value.</p>");
+ * @endcode
+ */
+class CKEditor
+{
+	/**
+	 * The version of %CKEditor.
+	 */
+	const version = '%VERSION%';
+	/**
+	 * A constant string unique for each release of %CKEditor.
+	 */
+	const timestamp = '%TIMESTAMP%';
+
+	/**
+	 * URL to the %CKEditor installation directory (absolute or relative to document root).
+	 * If not set, CKEditor will try to guess it's path.
+	 *
+	 * Example usage:
+	 * @code
+	 * $CKEditor->basePath = '/ckeditor/';
+	 * @endcode
+	 */
+	public $basePath;
+	/**
+	 * An array that holds the global %CKEditor configuration.
+	 * For the list of available options, see http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html
+	 *
+	 * Example usage:
+	 * @code
+	 * $CKEditor->config['height'] = 400;
+	 * // Use @@ at the beggining of a string to ouput it without surrounding quotes.
+	 * $CKEditor->config['width'] = '@@screen.width * 0.8';
+	 * @endcode
+	 */
+	public $config = array();
+	/**
+	 * A boolean variable indicating whether CKEditor has been initialized.
+	 * Set it to true only if you have already included
+	 * &lt;script&gt; tag loading ckeditor.js in your website.
+	 */
+	public $initialized = false;
+	/**
+	 * Boolean variable indicating whether created code should be printed out or returned by a function.
+	 *
+	 * Example 1: get the code creating %CKEditor instance and print it on a page with the "echo" function.
+	 * @code
+	 * $CKEditor = new CKEditor();
+	 * $CKEditor->returnOutput = true;
+	 * $code = $CKEditor->editor("editor1", "<p>Initial value.</p>");
+	 * echo "<p>Editor 1:</p>";
+	 * echo $code;
+	 * @endcode
+	 */
+	public $returnOutput = false;
+	/**
+	 * An array with textarea attributes.
+	 *
+	 * When %CKEditor is created with the editor() method, a HTML &lt;textarea&gt; element is created,
+	 * it will be displayed to anyone with JavaScript disabled or with incompatible browser.
+	 */
+	public $textareaAttributes = array( "rows" => 8, "cols" => 60 );
+	/**
+	 * A string indicating the creation date of %CKEditor.
+	 * Do not change it unless you want to force browsers to not use previously cached version of %CKEditor.
+	 */
+	public $timestamp = "%TIMESTAMP%";
+	/**
+	 * An array that holds event listeners.
+	 */
+	private $events = array();
+	/**
+	 * An array that holds global event listeners.
+	 */
+	private $globalEvents = array();
+
+	/**
+	 * Main Constructor.
+	 *
+	 *  @param $basePath (string) URL to the %CKEditor installation directory (optional).
+	 */
+	function __construct($basePath = null) {
+		if (!empty($basePath)) {
+			$this->basePath = $basePath;
+		}
+	}
+
+	/**
+	 * Creates a %CKEditor instance.
+	 * In incompatible browsers %CKEditor will downgrade to plain HTML &lt;textarea&gt; element.
+	 *
+	 * @param $name (string) Name of the %CKEditor instance (this will be also the "name" attribute of textarea element).
+	 * @param $value (string) Initial value (optional).
+	 * @param $config (array) The specific configurations to apply to this editor instance (optional).
+	 * @param $events (array) Event listeners for this editor instance (optional).
+	 *
+	 * Example usage:
+	 * @code
+	 * $CKEditor = new CKEditor();
+	 * $CKEditor->editor("field1", "<p>Initial value.</p>");
+	 * @endcode
+	 *
+	 * Advanced example:
+	 * @code
+	 * $CKEditor = new CKEditor();
+	 * $config = array();
+	 * $config['toolbar'] = array(
+	 *     array( 'Source', '-', 'Bold', 'Italic', 'Underline', 'Strike' ),
+	 *     array( 'Image', 'Link', 'Unlink', 'Anchor' )
+	 * );
+	 * $events['instanceReady'] = 'function (ev) {
+	 *     alert("Loaded: " + ev.editor.name);
+	 * }';
+	 * $CKEditor->editor("field1", "<p>Initial value.</p>", $config, $events);
+	 * @endcode
+	 */
+	public function editor($name, $value = "", $config = array(), $events = array())
+	{
+		$attr = "";
+		foreach ($this->textareaAttributes as $key => $val) {
+			$attr.= " " . $key . '="' . str_replace('"', '&quot;', $val) . '"';
+		}
+		$out = "<textarea name=\"" . $name . "\"" . $attr . ">" . htmlspecialchars($value) . "</textarea>\n";
+		if (!$this->initialized) {
+			$out .= $this->init();
+		}
+
+		$_config = $this->configSettings($config, $events);
+
+		$js = $this->returnGlobalEvents();
+		if (!empty($_config))
+			$js .= "CKEDITOR.replace('".$name."', ".$this->jsEncode($_config).");";
+		else
+			$js .= "CKEDITOR.replace('".$name."');";
+
+		$out .= $this->script($js);
+
+		if (!$this->returnOutput) {
+			print $out;
+			$out = "";
+		}
+
+		return $out;
+	}
+
+	/**
+	 * Replaces a &lt;textarea&gt; with a %CKEditor instance.
+	 *
+	 * @param $id (string) The id or name of textarea element.
+	 * @param $config (array) The specific configurations to apply to this editor instance (optional).
+	 * @param $events (array) Event listeners for this editor instance (optional).
+	 *
+	 * Example 1: adding %CKEditor to &lt;textarea name="article"&gt;&lt;/textarea&gt; element:
+	 * @code
+	 * $CKEditor = new CKEditor();
+	 * $CKEditor->replace("article");
+	 * @endcode
+	 */
+	public function replace($id, $config = array(), $events = array())
+	{
+		$out = "";
+		if (!$this->initialized) {
+			$out .= $this->init();
+		}
+
+		$_config = $this->configSettings($config, $events);
+
+		$js = $this->returnGlobalEvents();
+		if (!empty($_config)) {
+			$js .= "CKEDITOR.replace('".$id."', ".$this->jsEncode($_config).");";
+		}
+		else {
+			$js .= "CKEDITOR.replace('".$id."');";
+		}
+		$out .= $this->script($js);
+
+		if (!$this->returnOutput) {
+			print $out;
+			$out = "";
+		}
+
+		return $out;
+	}
+
+	/**
+	 * Replace all &lt;textarea&gt; elements available in the document with editor instances.
+	 *
+	 * @param $className (string) If set, replace all textareas with class className in the page.
+	 *
+	 * Example 1: replace all &lt;textarea&gt; elements in the page.
+	 * @code
+	 * $CKEditor = new CKEditor();
+	 * $CKEditor->replaceAll();
+	 * @endcode
+	 *
+	 * Example 2: replace all &lt;textarea class="myClassName"&gt; elements in the page.
+	 * @code
+	 * $CKEditor = new CKEditor();
+	 * $CKEditor->replaceAll( 'myClassName' );
+	 * @endcode
+	 */
+	public function replaceAll($className = null)
+	{
+		$out = "";
+		if (!$this->initialized) {
+			$out .= $this->init();
+		}
+
+		$_config = $this->configSettings();
+
+		$js = $this->returnGlobalEvents();
+		if (empty($_config)) {
+			if (empty($className)) {
+				$js .= "CKEDITOR.replaceAll();";
+			}
+			else {
+				$js .= "CKEDITOR.replaceAll('".$className."');";
+			}
+		}
+		else {
+			$classDetection = "";
+			$js .= "CKEDITOR.replaceAll( function(textarea, config) {\n";
+			if (!empty($className)) {
+				$js .= "	var classRegex = new RegExp('(?:^| )' + '". $className ."' + '(?:$| )');\n";
+				$js .= "	if (!classRegex.test(textarea.className))\n";
+				$js .= "		return false;\n";
+			}
+			$js .= "	CKEDITOR.tools.extend(config, ". $this->jsEncode($_config) .", true);";
+			$js .= "} );";
+
+		}
+
+		$out .= $this->script($js);
+
+		if (!$this->returnOutput) {
+			print $out;
+			$out = "";
+		}
+
+		return $out;
+	}
+
+	/**
+	 * Adds event listener.
+	 * Events are fired by %CKEditor in various situations.
+	 *
+	 * @param $event (string) Event name.
+	 * @param $javascriptCode (string) Javascript anonymous function or function name.
+	 *
+	 * Example usage:
+	 * @code
+	 * $CKEditor->addEventHandler('instanceReady', 'function (ev) {
+	 *     alert("Loaded: " + ev.editor.name);
+	 * }');
+	 * @endcode
+	 */
+	public function addEventHandler($event, $javascriptCode)
+	{
+		if (!isset($this->events[$event])) {
+			$this->events[$event] = array();
+		}
+		// Avoid duplicates.
+		if (!in_array($javascriptCode, $this->events[$event])) {
+			$this->events[$event][] = $javascriptCode;
+		}
+	}
+
+	/**
+	 * Clear registered event handlers.
+	 * Note: this function will have no effect on already created editor instances.
+	 *
+	 * @param $event (string) Event name, if not set all event handlers will be removed (optional).
+	 */
+	public function clearEventHandlers($event = null)
+	{
+		if (!empty($event)) {
+			$this->events[$event] = array();
+		}
+		else {
+			$this->events = array();
+		}
+	}
+
+	/**
+	 * Adds global event listener.
+	 *
+	 * @param $event (string) Event name.
+	 * @param $javascriptCode (string) Javascript anonymous function or function name.
+	 *
+	 * Example usage:
+	 * @code
+	 * $CKEditor->addGlobalEventHandler('dialogDefinition', 'function (ev) {
+	 *     alert("Loading dialog: " + ev.data.name);
+	 * }');
+	 * @endcode
+	 */
+	public function addGlobalEventHandler($event, $javascriptCode)
+	{
+		if (!isset($this->globalEvents[$event])) {
+			$this->globalEvents[$event] = array();
+		}
+		// Avoid duplicates.
+		if (!in_array($javascriptCode, $this->globalEvents[$event])) {
+			$this->globalEvents[$event][] = $javascriptCode;
+		}
+	}
+
+	/**
+	 * Clear registered global event handlers.
+	 * Note: this function will have no effect if the event handler has been already printed/returned.
+	 *
+	 * @param $event (string) Event name, if not set all event handlers will be removed (optional).
+	 */
+	public function clearGlobalEventHandlers($event = null)
+	{
+		if (!empty($event)) {
+			$this->globalEvents[$event] = array();
+		}
+		else {
+			$this->globalEvents = array();
+		}
+	}
+
+	/**
+	 * Prints javascript code.
+	 *
+	 * @param string $js
+	 */
+	private function script($js)
+	{
+		$out = "<script type=\"text/javascript\">";
+		$out .= "//<![CDATA[\n";
+		$out .= $js;
+		$out .= "\n//]]>";
+		$out .= "</script>\n";
+
+		return $out;
+	}
+
+	/**
+	 * Returns the configuration array (global and instance specific settings are merged into one array).
+	 *
+	 * @param $config (array) The specific configurations to apply to editor instance.
+	 * @param $events (array) Event listeners for editor instance.
+	 */
+	private function configSettings($config = array(), $events = array())
+	{
+		$_config = $this->config;
+		$_events = $this->events;
+
+		if (is_array($config) && !empty($config)) {
+			$_config = array_merge($_config, $config);
+		}
+
+		if (is_array($events) && !empty($events)) {
+			foreach ($events as $eventName => $code) {
+				if (!isset($_events[$eventName])) {
+					$_events[$eventName] = array();
+				}
+				if (!in_array($code, $_events[$eventName])) {
+					$_events[$eventName][] = $code;
+				}
+			}
+		}
+
+		if (!empty($_events)) {
+			foreach($_events as $eventName => $handlers) {
+				if (empty($handlers)) {
+					continue;
+				}
+				else if (count($handlers) == 1) {
+					$_config['on'][$eventName] = '@@'.$handlers[0];
+				}
+				else {
+					$_config['on'][$eventName] = '@@function (ev){';
+					foreach ($handlers as $handler => $code) {
+						$_config['on'][$eventName] .= '('.$code.')(ev);';
+					}
+					$_config['on'][$eventName] .= '}';
+				}
+			}
+		}
+
+		return $_config;
+	}
+
+	/**
+	 * Return global event handlers.
+	 */
+	private function returnGlobalEvents()
+	{
+		static $returnedEvents;
+		$out = "";
+
+		if (!isset($returnedEvents)) {
+			$returnedEvents = array();
+		}
+
+		if (!empty($this->globalEvents)) {
+			foreach ($this->globalEvents as $eventName => $handlers) {
+				foreach ($handlers as $handler => $code) {
+					if (!isset($returnedEvents[$eventName])) {
+						$returnedEvents[$eventName] = array();
+					}
+					// Return only new events
+					if (!in_array($code, $returnedEvents[$eventName])) {
+						$out .= ($code ? "\n" : "") . "CKEDITOR.on('". $eventName ."', $code);";
+						$returnedEvents[$eventName][] = $code;
+					}
+				}
+			}
+		}
+
+		return $out;
+	}
+
+	/**
+	 * Initializes CKEditor (executed only once).
+	 */
+	private function init()
+	{
+		static $initComplete;
+		$out = "";
+
+		if (!empty($initComplete)) {
+			return "";
+		}
+
+		if ($this->initialized) {
+			$initComplete = true;
+			return "";
+		}
+
+		$args = "";
+		$ckeditorPath = $this->ckeditorPath();
+
+		if (!empty($this->timestamp) && $this->timestamp != "%"."TIMESTAMP%") {
+			$args = '?t=' . $this->timestamp;
+		}
+
+		// Skip relative paths...
+		if (strpos($ckeditorPath, '..') !== 0) {
+			$out .= $this->script("window.CKEDITOR_BASEPATH='". $ckeditorPath ."';");
+		}
+
+		$out .= "<script type=\"text/javascript\" src=\"" . $ckeditorPath . 'ckeditor.js' . $args . "\"></script>\n";
+
+		$extraCode = "";
+		// CKReleaser %REMOVE_START%
+		if (self::version == '%VERSION%') {
+			$extraCode .= ($extraCode ? "\n" : "") . "if (typeof(CKEDITOR) == 'undefined') { alert('The CKEDITOR object was not found. Please make sure that the ckeditor.js file is available in your installation.'); }";
+		}
+		// %REMOVE_END%
+		if ($this->timestamp != self::timestamp) {
+			$extraCode .= ($extraCode ? "\n" : "") . "CKEDITOR.timestamp = '". $this->timestamp ."';";
+		}
+		if ($extraCode) {
+			$out .= $this->script($extraCode);
+		}
+
+		$initComplete = $this->initialized = true;
+
+		return $out;
+	}
+
+	/**
+	 * Return path to ckeditor.js.
+	 */
+	private function ckeditorPath()
+	{
+		if (!empty($this->basePath)) {
+			return $this->basePath;
+		}
+
+		/**
+		 * The absolute pathname of the currently executing script.
+		 * Note: If a script is executed with the CLI, as a relative path, such as file.php or ../file.php,
+		 * $_SERVER['SCRIPT_FILENAME'] will contain the relative path specified by the user.
+		 */
+		if (isset($_SERVER['SCRIPT_FILENAME'])) {
+			$realPath = dirname($_SERVER['SCRIPT_FILENAME']);
+		}
+		else {
+			/**
+			 * realpath — Returns canonicalized absolute pathname
+			 */
+			$realPath = realpath( './' ) ;
+		}
+
+		/**
+		 * The filename of the currently executing script, relative to the document root.
+		 * For instance, $_SERVER['PHP_SELF'] in a script at the address http://example.com/test.php/foo.bar
+		 * would be /test.php/foo.bar.
+		 */
+		$selfPath = dirname($_SERVER['PHP_SELF']);
+		$file = str_replace("\\", "/", __FILE__);
+
+		if (!$selfPath || !$realPath || !$file) {
+			return "/ckeditor/";
+		}
+
+		$documentRoot = substr($realPath, 0, strlen($realPath) - strlen($selfPath));
+		$fileUrl = substr($file, strlen($documentRoot));
+		$ckeditorUrl = str_replace("ckeditor_php5.php", "", $fileUrl);
+
+		return $ckeditorUrl;
+	}
+
+	/**
+	 * This little function provides a basic JSON support.
+	 * http://php.net/manual/en/function.json-encode.php
+	 *
+	 * @param mixed $val
+	 * @return string
+	 */
+	private function jsEncode($val)
+	{
+		if (is_null($val)) {
+			return 'null';
+		}
+		if ($val === false) {
+			return 'false';
+		}
+		if ($val === true) {
+			return 'true';
+		}
+		if (is_scalar($val))
+		{
+			if (is_float($val))
+			{
+				// Always use "." for floats.
+				$val = str_replace(",", ".", strval($val));
+			}
+
+			// Use @@ to not use quotes when outputting string value
+			if (strpos($val, '@@') === 0) {
+				return substr($val, 2);
+			}
+			else {
+				// All scalars are converted to strings to avoid indeterminism.
+				// PHP's "1" and 1 are equal for all PHP operators, but
+				// JS's "1" and 1 are not. So if we pass "1" or 1 from the PHP backend,
+				// we should get the same result in the JS frontend (string).
+				// Character replacements for JSON.
+				static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'),
+				array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
+
+				$val = str_replace($jsonReplaces[0], $jsonReplaces[1], $val);
+
+				return '"' . $val . '"';
+			}
+		}
+		$isList = true;
+		for ($i = 0, reset($val); $i < count($val); $i++, next($val))
+		{
+			if (key($val) !== $i)
+			{
+				$isList = false;
+				break;
+			}
+		}
+		$result = array();
+		if ($isList)
+		{
+			foreach ($val as $v) $result[] = $this->jsEncode($v);
+			return '[ ' . join(', ', $result) . ' ]';
+		}
+		else
+		{
+			foreach ($val as $k => $v) $result[] = $this->jsEncode($k).': '.$this->jsEncode($v);
+			return '{ ' . join(', ', $result) . ' }';
+		}
+	}
+}
Index: /CKEditor/branches/features/adobeair/ckeditor_source.js
===================================================================
--- /CKEditor/branches/features/adobeair/ckeditor_source.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/ckeditor_source.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
Index: /CKEditor/branches/features/adobeair/config.js
===================================================================
--- /CKEditor/branches/features/adobeair/config.js	(revision 5612)
+++ /CKEditor/branches/features/adobeair/config.js	(revision 5613)
@@ -1,4 +1,4 @@
 ﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
@@ -9,3 +9,4 @@
 	// config.language = 'fr';
 	// config.uiColor = '#AADC6E';
+	config.scayt_autoStartup = false;
 };
Index: /CKEditor/branches/features/adobeair/contents.css
===================================================================
--- /CKEditor/branches/features/adobeair/contents.css	(revision 5612)
+++ /CKEditor/branches/features/adobeair/contents.css	(revision 5613)
@@ -1,4 +1,4 @@
-﻿/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
