Index: /CKEditor/branches/features/4210/3.1.x/CHANGES.html
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/CHANGES.html	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/CHANGES.html	(revision 4476)
@@ -40,18 +40,41 @@
 		New features:</p>
 	<ul>
+		<li></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 'Back Space' in source mode.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4573">#4573</a> : Fixed 'IgnoreEmptyPargraph' config doesn't work with config 'entites' 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 stay visible in a div with style 'visibility:hidden'.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4621">#4621</a> : Fixed clicking below table cause a empty table been generated.</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/4210">#4210</a> : Added CKEditor plugin for jQuery.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4194">#4194</a> : Added support for using multiple css style sheets within the editor.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4210">#4210</a> : Introducing the CKEditor plugin for jQuery (the jQuery adapter).</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>
@@ -67,7 +90,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 +130,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 +325,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>
Index: /CKEditor/branches/features/4210/3.1.x/_dev/jslint/lint.sh
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_dev/jslint/lint.sh	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_dev/jslint/lint.sh	(revision 4476)
@@ -1,2 +1,4 @@
+#!/usr/bin/env bash
+
 #
 # Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
@@ -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/4210/3.1.x/_dev/langtool/langtool.sh
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_dev/langtool/langtool.sh	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_dev/langtool/langtool.sh	(revision 4476)
@@ -1,3 +1,3 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
 # Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
@@ -6,3 +6,11 @@
 # 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/4210/3.1.x/_dev/packager/package.sh
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_dev/packager/package.sh	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_dev/packager/package.sh	(revision 4476)
@@ -1,6 +1,14 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
 # Copyright (c) 2003-2009, 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/4210/3.1.x/_dev/releaser/release.sh
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_dev/releaser/release.sh	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_dev/releaser/release.sh	(revision 4476)
@@ -1,6 +1,14 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
 # Copyright (c) 2003-2009, Frederico Caldeira 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 ckreleaser/ckreleaser.jar ckreleaser.release ../.. release "3.0 SVN" ckeditor_3.0_svn
+popd
Index: /CKEditor/branches/features/4210/3.1.x/_samples/api.html
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_samples/api.html	(revision 4476)
+++ /CKEditor/branches/features/4210/3.1.x/_samples/api.html	(revision 4476)
@@ -0,0 +1,126 @@
+<!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>API usage - CKEditor Sample</title>
+	<script type="text/javascript" src="sample.js"></script>
+	<script id="headscript" 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>
+	<div id="html">
+		<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 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[
+			// 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 type="button" value="Insert HTML" onclick="InsertHTML();" />
+			<input type="button" value="Set Editor Contents" onclick="SetContents();" />
+			<input type="button" value="Get Editor Contents (XHTML)" onclick="GetContents();" />
+			<br />
+			<textarea id="plainArea" cols="80" 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 type="button" value='Execute "bold" Command' onclick="ExecuteCommand('bold');" />
+			<input type="button" value='Execute "link" Command' onclick="ExecuteCommand('link');" />
+		<br />
+		<br />
+		<input type="button" value="checkDirty()" onclick="CheckDirty();" />
+		<input type="button" value="resetDirty()" onclick="ResetDirty();" />
+		</div>
+		</form>
+	</div>
+</body>
+</html>
Index: /CKEditor/branches/features/4210/3.1.x/_samples/divreplace.html
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_samples/divreplace.html	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_samples/divreplace.html	(revision 4476)
@@ -48,5 +48,5 @@
 	element = element.parentNode;
 
-	if ( element.nodeName.toLowerCase() == 'div' 
+	if ( element.nodeName.toLowerCase() == 'div'
 		 && ( element.className.indexOf( 'editable' ) != -1 ) )
 		replaceDiv( element );
Index: /CKEditor/branches/features/4210/3.1.x/_samples/index.html
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_samples/index.html	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_samples/index.html	(revision 4476)
@@ -34,4 +34,5 @@
 		<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>
Index: /CKEditor/branches/features/4210/3.1.x/_source/core/command.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/core/command.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/core/command.js	(revision 4476)
@@ -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/4210/3.1.x/_source/core/commanddefinition.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/core/commanddefinition.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/core/commanddefinition.js	(revision 4476)
@@ -71,2 +71,16 @@
  * });
  */
+
+/**
+ * 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.
+ * });
+ */
Index: /CKEditor/branches/features/4210/3.1.x/_source/core/config.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/core/config.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/core/config.js	(revision 4476)
@@ -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',
@@ -179,5 +180,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'
Index: /CKEditor/branches/features/4210/3.1.x/_source/core/dom/event.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/core/dom/event.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/core/dom/event.js	(revision 4476)
@@ -88,11 +88,16 @@
 
 		if ( stopPropagation )
-		{
-			if ( $.stopPropagation )
-				$.stopPropagation();
-			else
-				$.cancelBubble = true;
-		}
+			this.stopPropagation();
 	},
+
+	stopPropagation : function()
+	{
+		var $ = this.$;
+		if ( $.stopPropagation )
+			$.stopPropagation();
+		else
+			$.cancelBubble = true;
+	},
+
 	/**
 	 * Returns the DOM node where the event was targeted to.
Index: /CKEditor/branches/features/4210/3.1.x/_source/core/dom/range.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/core/dom/range.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/core/dom/range.js	(revision 4476)
@@ -1184,5 +1184,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 +1210,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 );
Index: /CKEditor/branches/features/4210/3.1.x/_source/core/dtd.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/core/dtd.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/core/dtd.js	(revision 4476)
@@ -86,4 +86,11 @@
 
 		/**
+	     * List of list root elements.
+	     * @type Object
+	     * @example
+	     */
+	    $list: { ul:1,ol:1,dl:1},
+
+		/**
 		 * Elements that accept text nodes, but are not possible to edit into
 		 * the browser.
@@ -91,5 +98,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},
 
 		/**
Index: /CKEditor/branches/features/4210/3.1.x/_source/core/editor.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/core/editor.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/core/editor.js	(revision 4476)
@@ -1,3 +1,3 @@
-﻿/*
+/*
 Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -114,5 +114,5 @@
 			skinName = skin[ 0 ],
 			skinPath = CKEDITOR.getUrl( skin[ 1 ] || (
-				'_source/' +	// %REMOVE_LINE%
+				'_source/' +	// @Packager.RemoveLine
 				'skins/' + skinName + '/' ) );
 
@@ -437,4 +437,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 )
 		{
@@ -461,4 +468,5 @@
 			this.fire( 'destroy' );
 			CKEDITOR.remove( this );
+			CKEDITOR.fire( 'instanceDestroyed', null, this );
 		},
 
@@ -568,9 +576,22 @@
 		 * 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.
+		 * @param {Function} callback Function to be called after the setData is completed.
 		 * @example
 		 * CKEDITOR.instances.editor1.<b>setData( '&lt;p&gt;This is the editor data.&lt;/p&gt;' )</b>;
-		 */
-		setData : function( data )
-		{
+		 * CKEDITOR.instances.editor1.setData( '&lt;p&gt;Some other editor data.&lt;/p&gt;', function()
+		 * {
+		 * 		CKEDITOR.instances.editor1.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 };
Index: /CKEditor/branches/features/4210/3.1.x/_source/core/htmlparser.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/core/htmlparser.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/core/htmlparser.js	(revision 4476)
@@ -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};
 
Index: /CKEditor/branches/features/4210/3.1.x/_source/core/htmlparser/element.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/core/htmlparser/element.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/core/htmlparser/element.js	(revision 4476)
@@ -36,5 +36,5 @@
 
 	var dtd			= CKEDITOR.dtd,
-		isBlockLike	= !!( dtd.$block[ name ] || dtd.$listItem[ name ] || dtd.$tableContent[ name ] ),
+		isBlockLike	= !!( dtd.$block[ name ] || dtd.$listItem[ name ] || dtd.$tableContent[ name ] || dtd.$nonEditable ),
 		isEmpty		= !!dtd.$empty[ name ];
 
Index: /CKEditor/branches/features/4210/3.1.x/_source/core/htmlparser/fragment.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/core/htmlparser/fragment.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/core/htmlparser/fragment.js	(revision 4476)
@@ -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;
 
 	/**
@@ -190,11 +191,25 @@
 					return;
 
-				var reApply = false;
-
+				var reApply = false,
+					addPoint;   // New position to start adding nodes.
+
+				// Fixing malformed nested lists(#3828).
+				if( tagName in listBlocks
+					&& currentName in listBlocks )
+				{
+					var children = currentNode.children,
+						lastChild = children[ children.length - 1 ];
+					// Move inner list into to previous list item if any.
+					if( lastChild && lastChild.name in listItems )
+						returnPoint = currentNode, addPoint = lastChild;
+					// Move inner list outside in the worst case.
+					else
+						addElement( currentNode, currentNode.parent );
+				}
 				// 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 +238,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 )
Index: /CKEditor/branches/features/4210/3.1.x/_source/core/lang.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/core/lang.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/core/lang.js	(revision 4476)
@@ -101,5 +101,5 @@
 			{
 				CKEDITOR.scriptLoader.load( CKEDITOR.getUrl(
-					'_source/' +	// %REMOVE_LINE%
+					'_source/' +	// @Packager.RemoveLine
 					'lang/' + languageCode + '.js' ),
 					function()
Index: /CKEditor/branches/features/4210/3.1.x/_source/core/plugins.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/core/plugins.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/core/plugins.js	(revision 4476)
@@ -16,5 +16,5 @@
  */
 CKEDITOR.plugins = new CKEDITOR.resourceManager(
-	'_source/' +	// %REMOVE_LINE%
+	'_source/' +	// @Packager.RemoveLine
 	'plugins/', 'plugin' );
 
Index: /CKEditor/branches/features/4210/3.1.x/_source/core/skins.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/core/skins.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/core/skins.js	(revision 4476)
@@ -136,5 +136,5 @@
 				|| ( paths[ skinName ] =
 						CKEDITOR.getUrl(
-							'_source/' +	// %REMOVE_LINE%
+							'_source/' +	// @Packager.RemoveLine
 							'skins/' + skinName + '/' ) );
 		},
Index: /CKEditor/branches/features/4210/3.1.x/_source/core/themes.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/core/themes.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/core/themes.js	(revision 4476)
@@ -16,4 +16,4 @@
  */
 CKEDITOR.themes = new CKEDITOR.resourceManager(
-	'_source/'+		// %REMOVE_LINE%
+	'_source/'+		// @Packager.RemoveLine
 	'themes/', 'theme' );
Index: /CKEditor/branches/features/4210/3.1.x/_source/core/tools.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/core/tools.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/core/tools.js	(revision 4476)
@@ -190,4 +190,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 +214,5 @@
 				: ( typeof test.styleFloat != 'undefined' ) ? 'styleFloat'
 				: 'float';
-			
+
 			return function( cssName )
 			{
@@ -265,4 +274,17 @@
 
 			return this.htmlEncode( text );
+		},
+
+		/**
+		 * 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, '\\$&' );
 		},
 
Index: /CKEditor/branches/features/4210/3.1.x/_source/lang/_translationstatus.txt
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/lang/_translationstatus.txt	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/lang/_translationstatus.txt	(revision 4476)
@@ -3,11 +3,11 @@
 
 af.js      Found: 312 Missing: 130
-ar.js      Found: 329 Missing: 113
+ar.js      Found: 442 Missing: 0
 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
+cs.js      Found: 442 Missing: 0
+da.js      Found: 435 Missing: 7
 de.js      Found: 435 Missing: 7
 el.js      Found: 311 Missing: 131
@@ -26,5 +26,5 @@
 gl.js      Found: 308 Missing: 134
 gu.js      Found: 326 Missing: 116
-he.js      Found: 332 Missing: 110
+he.js      Found: 442 Missing: 0
 hi.js      Found: 327 Missing: 115
 hr.js      Found: 435 Missing: 7
@@ -40,7 +40,7 @@
 ms.js      Found: 287 Missing: 155
 nb.js      Found: 325 Missing: 117
-nl.js      Found: 327 Missing: 115
+nl.js      Found: 435 Missing: 7
 no.js      Found: 325 Missing: 117
-pl.js      Found: 435 Missing: 7
+pl.js      Found: 442 Missing: 0
 pt-br.js   Found: 434 Missing: 8
 pt.js      Found: 307 Missing: 135
Index: /CKEditor/branches/features/4210/3.1.x/_source/lang/ar.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/lang/ar.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/lang/ar.js	(revision 4476)
@@ -32,12 +32,12 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle		: 'محرر النص المنسق, %1',
 
 	// Toolbar buttons without dialogs.
-	source			: 'شفرة المصدر',
+	source			: 'المصدر',
 	newPage			: 'صفحة جديدة',
 	save			: 'حفظ',
 	preview			: 'معاينة الصفحة',
-	cut				: 'قص',
+	cut			: 'قص',
 	copy			: 'نسخ',
 	paste			: 'لصق',
@@ -47,9 +47,9 @@
 	italic			: 'مائل',
 	selectAll		: 'تحديد الكل',
-	removeFormat	: 'إزالة التنسيقات',
+	removeFormat	        : 'إزالة التنسيقات',
 	strike			: 'يتوسطه خط',
 	subscript		: 'منخفض',
 	superscript		: 'مرتفع',
-	horizontalrule	: 'إدراج خط فاصل',
+	horizontalrule	        : 'خط فاصل',
 	pagebreak		: 'إدخال صفحة جديدة',
 	unlink			: 'إزالة رابط',
@@ -60,22 +60,22 @@
 	common :
 	{
-		browseServer	: 'تصفح الخادم',
-		url				: 'موقع الصورة',
+		browseServer	        : 'تصفح',
+		url			: 'الرابط',
 		protocol		: 'البروتوكول',
 		upload			: 'رفع',
-		uploadSubmit	: 'أرسلها للخادم',
+		uploadSubmit	        : 'أرسل',
 		image			: 'صورة',
 		flash			: 'فلاش',
 		form			: 'نموذج',
 		checkbox		: 'خانة إختيار',
-		radio		: 'زر خيار',
+		radio		        : 'زر اختيار',
 		textField		: 'مربع نص',
-		textarea		: 'ناحية نص',
+		textarea		: 'مساحة نصية',
 		hiddenField		: 'إدراج حقل خفي',
 		button			: 'زر ضغط',
-		select	: 'قائمة منسدلة',
+		select	                : 'اختار',
 		imageButton		: 'زر صورة',
 		notSet			: '<بدون تحديد>',
-		id				: 'الرقم',
+		id			: 'الرقم',
 		name			: 'الاسم',
 		langDir			: 'إتجاه النص',
@@ -83,18 +83,18 @@
 		langDirRtl		: 'اليمين لليسار (RTL)',
 		langCode		: 'رمز اللغة',
-		longDescr		: 'عنوان الوصف المفصّل',
+		longDescr		: 'الوصف التفصيلى',
 		cssClass		: 'فئات التنسيق',
-		advisoryTitle	: 'تلميح الشاشة',
+		advisoryTitle	        : 'عنوان التقرير',
 		cssStyle		: 'نمط',
-		ok				: 'موافق',
+		ok			: 'موافق',
 		cancel			: 'إلغاء الأمر',
 		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	: 'بعض الخيارات قد تغيرت. هل أنت متأكد من إغلاق مربع النص؟',
 
 		// 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>'
 	},
 
@@ -102,6 +102,6 @@
 	specialChar		:
 	{
-		toolbar		: 'إدراج  رموز..ِ',
-		title		: 'إدراج رمز'
+		toolbar		: 'إدراج  خاص.ِ',
+		title		: 'اختر الخواص'
 	},
 
@@ -109,9 +109,9 @@
 	link :
 	{
-		toolbar		: 'إدراج/تحرير رابط',
+		toolbar		: 'رابط',
 		menu		: 'تحرير رابط',
 		title		: 'إرتباط تشعبي',
 		info		: 'معلومات الرابط',
-		target		: 'الهدف',
+		target		: 'هدف الرابط',
 		upload		: 'رفع',
 		advanced	: 'متقدم',
@@ -119,5 +119,5 @@
 		toAnchor	: 'مكان في هذا المستند',
 		toEmail		: 'بريد إلكتروني',
-		target		: 'الهدف',
+		target		: 'هدف الرابط',
 		targetNotSet	: '<بدون تحديد>',
 		targetFrame	: '<إطار>',
@@ -125,11 +125,11 @@
 		targetNew	: 'إطار جديد (_blank)',
 		targetTop	: 'صفحة كاملة (_top)',
-		targetSelf	: 'نفس الإطار (_self)',
-		targetParent	: 'الإطار الأصل (_parent)',
-		targetFrameName	: 'اسم الإطار الهدف',
-		targetPopupName	: 'تسمية النافذة المنبثقة',
+		targetSelf	: 'الاطار الحالى (_self)',
+		targetParent	: 'الإطار الأصلي (_parent)',
+		targetFrameName	: 'اسم الإطار المستهدف',
+		targetPopupName	: 'اسم النافذة المنبثقة',
 		popupFeatures	: 'خصائص النافذة المنبثقة',
-		popupResizable	: 'Resizable', // MISSING
-		popupStatusBar	: 'شريط الحالة السفلي',
+		popupResizable	: 'قابلة التشكيل',
+		popupStatusBar	: 'شريط الحالة',
 		popupLocationBar	: 'شريط العنوان',
 		popupToolbar	: 'شريط الأدوات',
@@ -142,5 +142,5 @@
 		popupHeight		: 'الإرتفاع',
 		popupTop		: 'التمركز للأعلى',
-		id				: 'Id', // MISSING
+		id				: 'هوية',
 		langDir			: 'إتجاه النص',
 		langDirNotSet	: '<بدون تحديد>',
@@ -149,20 +149,20 @@
 		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 +170,6 @@
 	anchor :
 	{
-		toolbar		: 'إدراج/تحرير إشارة مرجعية',
-		menu		: 'خصائص الإشارة المرجعية',
+		toolbar		: 'إشارة مرجعية',
+		menu		: 'تحرير الإشارة المرجعية',
 		title		: 'خصائص الإشارة المرجعية',
 		name		: 'اسم الإشارة المرجعية',
@@ -183,12 +183,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 +197,12 @@
 	{
 		toolbar		: 'جدول',
-		title		: 'إدراج جدول',
-		menu		: 'إدراج جدول',
+		title		: 'خصائص الجدول',
+		menu		: 'خصائص الجدول',
 		deleteTable	: 'حذف الجدول',
 		rows		: 'صفوف',
 		columns		: 'أعمدة',
-		border		: 'سمك الحدود',
+		border		: 'الحدود',
 		align		: 'المحاذاة',
-		alignNotSet	: '<بدون تحديد>',
+		alignNotSet	: '<بدون محاذاة>',
 		alignLeft	: 'يسار',
 		alignCenter	: 'وسط',
@@ -216,16 +216,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 +234,5 @@
 			insertBefore	: 'إدراج خلية قبل',
 			insertAfter		: 'إدراج خلية بعد',
-			deleteCell		: 'حذف خلايا',
+			deleteCell		: 'حذف خلية',
 			merge			: 'دمج خلايا',
 			mergeRight		: 'دمج لليمين',
@@ -241,25 +241,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 +308,11 @@
 		action		: 'اسم الملف',
 		method		: 'الأسلوب',
-		encoding	: 'Encoding', // MISSING
+		encoding	: 'تشفير',
 		target		: 'الهدف',
 		targetNotSet	: '<بدون تحديد>',
-		targetNew	: 'إطار جديد (_blank)',
-		targetTop	: 'صفحة كاملة (_top)',
-		targetSelf	: 'نفس الإطار (_self)',
-		targetParent	: 'الإطار الأصل (_parent)'
+		targetNew	: 'نافذة جديدة (_blank)',
+		targetTop	: 'نافذة بالاعلى (_top)',
+		targetSelf	: 'نفس النافذة (_self)',
+		targetParent	: 'النافذة الأصل (_parent)'
 	},
 
@@ -320,6 +320,6 @@
 	select :
 	{
-		title		: 'خصائص القائمة المنسدلة',
-		selectInfo	: 'معلومات',
+		title		: 'خصائص اختيار الحقل',
+		selectInfo	: 'اختار معلومات',
 		opAvail		: 'الخيارات المتاحة',
 		value		: 'القيمة',
@@ -331,6 +331,6 @@
 		btnAdd		: 'إضافة',
 		btnModify	: 'تعديل',
-		btnUp		: 'تحريك لأعلى',
-		btnDown		: 'تحريك لأسفل',
+		btnUp		: 'أعلى',
+		btnDown		: 'أسفل',
 		btnSetValue : 'إجعلها محددة',
 		btnDelete	: 'إزالة'
@@ -340,5 +340,5 @@
 	textarea :
 	{
-		title		: 'خصائص ناحية النص',
+		title		: 'خصائص مساحة النص',
 		cols		: 'الأعمدة',
 		rows		: 'الصفوف'
@@ -351,6 +351,6 @@
 		name		: 'الاسم',
 		value		: 'القيمة',
-		charWidth	: 'العرض بالأحرف',
-		maxChars	: 'عدد الحروف الأقصى',
+		charWidth	: 'عرض السمات',
+		maxChars	: 'اقصى عدد للسمات',
 		type		: 'نوع المحتوى',
 		typeText	: 'نص',
@@ -361,5 +361,5 @@
 	hidden :
 	{
-		title	: 'خصائص الحقل الخفي',
+		title	: 'خصائص الحقل المخفي',
 		name	: 'الاسم',
 		value	: 'القيمة'
@@ -376,5 +376,5 @@
 		url		: 'موقع الصورة',
 		upload	: 'رفع',
-		alt		: 'الوصف',
+		alt		: 'عنوان الصورة',
 		width		: 'العرض',
 		height	: 'الإرتفاع',
@@ -397,7 +397,7 @@
 		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
+		button2Img	: 'هل تريد تحويل زر الصورة المختار إلى صورة بسيطة؟',
+		img2Button	: 'هل تريد تحويل الصورة المختارة إلى زر صورة؟',
+		urlMissing : 'عنوان مصدر الصورة مفقود'
 	},
 
@@ -405,19 +405,19 @@
 	flash :
 	{
-		properties		: 'خصائص فيلم الفلاش',
-		propertiesTab	: 'Properties', // MISSING
+		properties		: 'خصائص الفلاش',
+		propertiesTab	: 'الخصائص',
 		title		: 'خصائص فيلم الفلاش',
 		chkPlay		: 'تشغيل تلقائي',
 		chkLoop		: 'تكرار',
 		chkMenu		: 'تمكين قائمة فيلم الفلاش',
-		chkFull		: 'Allow Fullscreen', // MISSING
+		chkFull		: 'ملء الشاشة',
  		scale		: 'الحجم',
 		scaleAll		: 'إظهار الكل',
 		scaleNoBorder	: 'بلا حدود',
 		scaleFit		: 'ضبط تام',
-		access			: 'Script Access', // MISSING
-		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
+		access			: 'دخول النص البرمجي',
+		accessAlways	: 'دائماً',
+		accessSameDomain	: 'نفس النطاق',
+		accessNever	: 'مطلقاً',
 		align		: 'محاذاة',
 		alignLeft	: 'يسار',
@@ -430,16 +430,16 @@
 		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
+		quality		: 'جودة',
+		qualityBest		 : 'أفضل',
+		qualityHigh		 : 'عالية',
+		qualityAutoHigh	 : 'عالية تلقائياً',
+		qualityMedium	 : 'متوسطة',
+		qualityAutoLow	 : 'منخفضة تلقائياً',
+		qualityLow		 : 'منخفضة',
+		windowModeWindow	 : 'نافذة',
+		windowModeOpaque	 : 'غير شفاف',
+		windowModeTransparent	 : 'شفاف',
+		windowMode	: 'وضع النافذة',
+		flashvars	: 'متغيرات الفلاش',
 		bgcolor	: 'لون الخلفية',
 		width	: 'العرض',
@@ -448,8 +448,8 @@
 		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
+		validateWidth : 'العرض يجب أن يكون عدداً.',
+		validateHeight : 'الارتفاع يجب أن يكون عدداً.',
+		validateHSpace : 'HSpace يجب أن يكون عدداً.',
+		validateVSpace : 'VSpace يجب أن يكون عدداً.'
 	},
 
@@ -458,7 +458,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 +469,9 @@
 		btnUndo			: 'تراجع',
 		noSuggestions	: '- لا توجد إقتراحات -',
-		progress		: 'جاري التدقيق إملائياً',
-		noMispell		: 'تم إكمال التدقيق الإملائي: لم يتم العثور على أي أخطاء إملائية',
-		noChanges		: 'تم إكمال التدقيق الإملائي: لم يتم تغيير أي كلمة',
-		oneChange		: 'تم إكمال التدقيق الإملائي: تم تغيير كلمة واحدة فقط',
-		manyChanges		: 'تم إكمال التدقيق الإملائي: تم تغيير %1 كلماتكلمة',
+		progress		: 'جاري التدقيق الاملائى',
+		noMispell		: 'تم التدقيق الإملائي: لم يتم العثور على أي أخطاء إملائية',
+		noChanges		: 'تم التدقيق الإملائي: لم يتم تغيير أي كلمة',
+		oneChange		: 'تم التدقيق الإملائي: تم تغيير كلمة واحدة فقط',
+		manyChanges		: 'تم إكمال التدقيق الإملائي: تم تغيير %1 من كلمات',
 		ieSpellDownload	: 'المدقق الإملائي (الإنجليزي) غير مثبّت. هل تود تحميله الآن؟'
 	},
@@ -480,14 +480,14 @@
 	{
 		toolbar	: 'ابتسامات',
-		title	: 'إدراج إبتسامات '
+		title	: 'إدراج ابتسامات'
 	},
 
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
-	},
-
-	numberedlist : 'تعداد رقمي',
-	bulletedlist : 'تعداد نقطي',
+		eleTitle : 'عنصر 1%'
+	},
+
+	numberedlist : 'ادخال/حذف تعداد رقمي',
+	bulletedlist : 'ادخال/حذف تعداد نقطي',
 	indent : 'زيادة المسافة البادئة',
 	outdent : 'إنقاص المسافة البادئة',
@@ -508,6 +508,6 @@
 		cutError	: 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+X).',
 		copyError	: 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع النسخ التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+C).',
-		pasteMsg	: 'الصق داخل الصندوق بإستخدام زرّي (<STRONG>Ctrl+V</STRONG>) في لوحة المفاتيح، ثم اضغط زر  <STRONG>موافق</STRONG>.',
-		securityMsg	: 'نظراً لإعدادات الأمان الخاصة بمتصفحك، لن يتمكن هذا المحرر من الوصول لمحتوى حافظتك، لذا وجب عليك لصق المحتوى مرة أخرى في هذه النافذة.'
+		pasteMsg	: 'الصق داخل الصندوق بإستخدام زرائر (<STRONG>Ctrl+V</STRONG>) في لوحة المفاتيح، ثم اضغط زر  <STRONG>موافق</STRONG>.',
+		securityMsg	: 'نظراً لإعدادات الأمان الخاصة بمتصفحك، لن يتمكن هذا المحرر من الوصول لمحتوى حافظتك، لذلك يجب عليك لصق المحتوى مرة أخرى في هذه النافذة.'
 	},
 
@@ -516,5 +516,5 @@
 		toolbar : 'لصق من وورد',
 		title : 'لصق من وورد',
-		advice : 'الصق داخل الصندوق بإستخدام زرّي (<STRONG>Ctrl+V</STRONG>) في لوحة المفاتيح، ثم اضغط زر  <STRONG>موافق</STRONG>.',
+		advice : 'الصق داخل الصندوق بإستخدام مفاتيح (<STRONG>Ctrl+V</STRONG>) في لوحة المفاتيح، ثم اضغط مفتاح <STRONG>موافق</STRONG>.',
 		ignoreFontFace : 'تجاهل تعريفات أسماء الخطوط',
 		removeStyle : 'إزالة تعريفات الأنماط'
@@ -532,5 +532,5 @@
 		title : 'قوالب المحتوى',
 		insertOption: 'استبدال المحتوى',
-		selectPromptMsg: 'اختر القالب الذي تود وضعه في المحرر <br>(سيتم فقدان المحتوى الحالي):',
+		selectPromptMsg: 'اختر القالب الذي تود وضعه في المحرر',
 		emptyListMsg : '(لم يتم تعريف أي قالب)'
 	},
@@ -540,10 +540,10 @@
 	stylesCombo :
 	{
-		label : 'نمط',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		label : 'أنماط',
+		voiceLabel : 'أنماط',
+		panelVoiceLabel : 'اختر نمط',
+		panelTitle1 : 'أنماط الفقرة',
+		panelTitle2 : 'أنماط مضمنة',
+		panelTitle3 : 'أنماط الكائن'
 	},
 
@@ -551,11 +551,11 @@
 	{
 		label : 'تنسيق',
-		voiceLabel : 'Format', // MISSING
-		panelTitle : 'تنسيق',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
+		voiceLabel : 'تنسيق',
+		panelTitle : 'تنسيق الفقرة',
+		panelVoiceLabel : 'اختر تنسيق الفقرة',
 
 		tag_p : 'عادي',
 		tag_pre : 'منسّق',
-		tag_address : 'دوس',
+		tag_address : 'عنوان',
 		tag_h1 : 'العنوان 1',
 		tag_h2 : 'العنوان  2',
@@ -564,5 +564,5 @@
 		tag_h5 : 'العنوان  5',
 		tag_h6 : 'العنوان  6',
-		tag_div : 'Normal (DIV)' // MISSING
+		tag_div : 'عادي (DIV)'
 	},
 
@@ -570,7 +570,7 @@
 	{
 		label : 'خط',
-		voiceLabel : 'Font', // MISSING
-		panelTitle : 'خط',
-		panelVoiceLabel : 'Select a font' // MISSING
+		voiceLabel : 'حجم الخط',
+		panelTitle : 'حجم الخط',
+		panelVoiceLabel : 'اختر حجم الخط'
 	},
 
@@ -578,7 +578,7 @@
 	{
 		label : 'حجم الخط',
-		voiceLabel : 'Font Size', // MISSING
+		voiceLabel : 'حجم الخط',
 		panelTitle : 'حجم الخط',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		panelVoiceLabel : 'اختر حجم الخط'
 	},
 
@@ -593,93 +593,93 @@
 	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 : 'تدقيق إملائي أثناء الكتابة',
+		enable : 'تفعيل SCAYT',
+		disable : 'تعطيل SCAYT',
+		about : 'عن SCAYT',
+		toggle : 'تثبيت SCAYT',
+		options : 'خيارات',
+		langs : 'لغات',
+		moreSuggestions : 'المزيد من المقترحات',
+		ignore : 'تجاهل',
+		ignoreAll : 'تجاهل الكل',
+		addWord : 'إضافة كلمة',
+		emptyDic : 'اسم القاموس يجب ألا يكون فارغاً.',
+		optionsTab : 'خيارات',
+		languagesTab : 'لغات',
+		dictionariesTab : 'قواميس',
+		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 : 'عن rotidEKC',
+		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 : 'اختر لون',
+		highlight : 'إلقاء الضوء',
+		selected : 'مُختار',
+		clear : 'مسح'
 	}
 };
Index: /CKEditor/branches/features/4210/3.1.x/_source/lang/cs.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/lang/cs.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/lang/cs.js	(revision 4476)
@@ -32,5 +32,5 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle		: 'Editor formátovaného textu, %1',
 
 	// Toolbar buttons without dialogs.
@@ -91,10 +91,10 @@
 		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?',
 
 		// 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>'
 	},
 
@@ -130,5 +130,5 @@
 		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í',
@@ -142,5 +142,5 @@
 		popupHeight		: 'Výška',
 		popupTop		: 'Horní okraj',
-		id				: 'Id', // MISSING
+		id				: 'Id',
 		langDir			: 'Orientace jazyka',
 		langDirNotSet	: '<nenastaveno>',
@@ -188,7 +188,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í.'
 	},
 
@@ -213,19 +213,19 @@
 		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 +240,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,5 +308,5 @@
 		action		: 'Akce',
 		method		: 'Metoda',
-		encoding	: 'Encoding', // MISSING
+		encoding	: 'Kódování',
 		target		: 'Cíl',
 		targetNotSet	: '<nenastaveno>',
@@ -397,7 +397,7 @@
 		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
+		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.'
 	},
 
@@ -406,18 +406,18 @@
 	{
 		properties		: 'Vlastnosti Flashe',
-		propertiesTab	: 'Properties', // MISSING
+		propertiesTab	: 'Vlastnosti',
 		title		: 'Vlastnosti Flashe',
 		chkPlay		: 'Automatické spuštění',
 		chkLoop		: 'Opakování',
 		chkMenu		: 'Nabídka Flash',
-		chkFull		: 'Allow Fullscreen', // MISSING
+		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
+		access			: 'Přístup ke skriptu',
+		accessAlways	: 'Vždy',
+		accessSameDomain	: 'Ve stejné doméně',
+		accessNever	: 'Nikdy',
 		align		: 'Zarovnání',
 		alignLeft	: 'Vlevo',
@@ -430,16 +430,16 @@
 		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
+		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',
@@ -448,8 +448,8 @@
 		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
+		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 +458,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',
@@ -485,5 +485,5 @@
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
+		eleTitle : '%1 objekt'
 	},
 
@@ -541,9 +541,9 @@
 	{
 		label : 'Styl',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		voiceLabel : 'Styly',
+		panelVoiceLabel : 'Výběr stylu',
+		panelTitle1 : 'Blokové styly',
+		panelTitle2 : 'Řádkové styly',
+		panelTitle3 : 'Objektové styly'
 	},
 
@@ -551,7 +551,7 @@
 	{
 		label : 'Formát',
-		voiceLabel : 'Format', // MISSING
+		voiceLabel : 'Formátování',
 		panelTitle : 'Formát',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
+		panelVoiceLabel : 'Volba formátu odstavce',
 
 		tag_p : 'Normální',
@@ -570,7 +570,7 @@
 	{
 		label : 'Písmo',
-		voiceLabel : 'Font', // MISSING
+		voiceLabel : 'Písmo',
 		panelTitle : 'Písmo',
-		panelVoiceLabel : 'Select a font' // MISSING
+		panelVoiceLabel : 'Volba písma'
 	},
 
@@ -578,7 +578,7 @@
 	{
 		label : 'Velikost',
-		voiceLabel : 'Font Size', // MISSING
+		voiceLabel : 'Velikost písma',
 		panelTitle : 'Velikost',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		panelVoiceLabel : 'Volba velikosti písma'
 	},
 
@@ -637,49 +637,49 @@
 	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)',
+		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í',
+		languagesTab : 'Jazyky',
+		dictionariesTab : 'Slovníky',
+		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',
+		highlight : 'Zvýraznit',
+		selected : 'Vybráno',
+		clear : 'Vyčistit'
 	}
 };
Index: /CKEditor/branches/features/4210/3.1.x/_source/lang/da.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/lang/da.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/lang/da.js	(revision 4476)
@@ -32,5 +32,5 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle		: 'Editor, %1',
 
 	// Toolbar buttons without dialogs.
@@ -40,5 +40,5 @@
 	preview			: 'Vis eksempel',
 	cut				: 'Klip',
-	copy			: 'Kopier',
+	copy			: 'Kopiér',
 	paste			: 'Indsæt',
 	print			: 'Udskriv',
@@ -48,12 +48,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,5 +66,5 @@
 		uploadSubmit	: 'Upload',
 		image			: 'Indsæt billede',
-		flash			: 'Flash',
+		flash			: 'Indsæt Flash',
 		form			: 'Indsæt formular',
 		checkbox		: 'Indsæt afkrydsningsfelt',
@@ -84,17 +84,17 @@
 		langCode		: 'Sprogkode',
 		longDescr		: 'Udvidet beskrivelse',
-		cssClass		: 'Typografiark',
+		cssClass		: 'Typografiark (CSS)',
 		advisoryTitle	: 'Titel',
-		cssStyle		: 'Typografi',
+		cssStyle		: 'Typografi (CSS)',
 		ok				: 'OK',
-		cancel			: 'Annuller',
+		cancel			: 'Annullér',
 		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?',
 
 		// 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>'
 	},
 
@@ -109,6 +109,6 @@
 	link :
 	{
-		toolbar		: 'Indsæt/rediger hyperlink',
-		menu		: 'Rediger hyperlink',
+		toolbar		: 'Indsæt/redigér hyperlink',
+		menu		: 'Redigér hyperlink',
 		title		: 'Egenskaber for hyperlink',
 		info		: 'Generelt',
@@ -116,5 +116,5 @@
 		upload		: 'Upload',
 		advanced	: 'Avanceret',
-		type		: 'Hyperlink type',
+		type		: 'Type',
 		toAnchor	: 'Bogmærke på denne side',
 		toEmail		: 'E-mail',
@@ -125,10 +125,10 @@
 		targetNew	: 'Nyt vindue (_blank)',
 		targetTop	: 'Hele vinduet (_top)',
-		targetSelf	: 'Samme vindue (_self)',
-		targetParent	: 'Overordnet ramme (_parent)',
+		targetSelf	: 'Samme vindue/ramme (_self)',
+		targetParent	: 'Overordnet vindue/ramme (_parent)',
 		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',
@@ -136,5 +136,5 @@
 		popupMenuBar	: 'Menulinje',
 		popupFullScreen	: 'Fuld skærm (IE)',
-		popupScrollBars	: 'Scrollbars',
+		popupScrollBars	: 'Scrollbar',
 		popupDependent	: 'Koblet/dependent (Netscape)',
 		popupWidth		: 'Bredde',
@@ -142,5 +142,5 @@
 		popupHeight		: 'Højde',
 		popupTop		: 'Position fra toppen',
-		id				: 'Id', // MISSING
+		id				: 'Id',
 		langDir			: 'Tekstretning',
 		langDirNotSet	: '<intet valgt>',
@@ -159,10 +159,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 +170,9 @@
 	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'
 	},
 
@@ -185,10 +185,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 +196,5 @@
 	table :
 	{
-		toolbar		: 'Table',
+		toolbar		: 'Tabel',
 		title		: 'Egenskaber for tabel',
 		menu		: 'Egenskaber for tabel',
@@ -215,17 +215,17 @@
 		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,25 +240,25 @@
 			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
+			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 +307,12 @@
 		menu		: 'Egenskaber for formular',
 		action		: 'Handling',
-		method		: 'Metod',
-		encoding	: 'Encoding', // MISSING
+		method		: 'Metode',
+		encoding	: 'Kodning (encoding)',
 		target		: 'Mål',
 		targetNotSet	: '<intet valgt>',
 		targetNew	: 'Nyt vindue (_blank)',
 		targetTop	: 'Hele vinduet (_top)',
-		targetSelf	: 'Samme vindue (_self)',
-		targetParent	: 'Overordnet ramme (_parent)'
+		targetSelf	: 'Samme vindue/ramme (_self)',
+		targetParent	: 'Overordnet vindue/ramme (_parent)'
 	},
 
@@ -325,10 +325,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 +352,5 @@
 		value		: 'Værdi',
 		charWidth	: 'Bredde (tegn)',
-		maxChars	: 'Max antal tegn',
+		maxChars	: 'Max. antal tegn',
 		type		: 'Type',
 		typeText	: 'Tekst',
@@ -382,6 +382,6 @@
 		resetSize	: 'Nulstil størrelse',
 		border	: 'Ramme',
-		hSpace	: 'HMargen',
-		vSpace	: 'VMargen',
+		hSpace	: 'Vandret margen',
+		vSpace	: 'Lodret margen',
 		align		: 'Justering',
 		alignLeft	: 'Venstre',
@@ -397,6 +397,6 @@
 		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
+		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
 	},
@@ -406,18 +406,18 @@
 	{
 		properties		: 'Egenskaber for Flash',
-		propertiesTab	: 'Properties', // MISSING
+		propertiesTab	: 'Egenskaber',
 		title		: 'Egenskaber for Flash',
 		chkPlay		: 'Automatisk afspilning',
 		chkLoop		: 'Gentagelse',
 		chkMenu		: 'Vis Flash menu',
-		chkFull		: 'Allow Fullscreen', // MISSING
+		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
+		access			: 'Script adgang',
+		accessAlways	: 'Altid',
+		accessSameDomain	: 'Samme domæne',
+		accessNever	: 'Aldrig',
 		align		: 'Justering',
 		alignLeft	: 'Venstre',
@@ -430,26 +430,26 @@
 		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
+		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	: 'HMargen',
-		vSpace	: 'VMargen',
+		hSpace	: 'Vandret margen',
+		vSpace	: 'Lodret margen',
 		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
+		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 +458,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?'
 	},
 
@@ -485,5 +485,5 @@
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
+		eleTitle : '%1 element'
 	},
 
@@ -506,8 +506,8 @@
 	{
 		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+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+C).',
+		pasteMsg	: 'Indsæt i feltet herunder (<STRONG>Ctrl+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.'
 	},
 
@@ -516,7 +516,7 @@
 		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'
+		advice : 'Indsæt i feltet herunder (<STRONG>Ctrl+V</STRONG>) og klik på <STRONG>OK</STRONG>.',
+		ignoreFontFace : 'Ignorér skrifttypedefinitioner',
+		removeStyle : 'Ignorér typografi'
 	},
 
@@ -532,18 +532,18 @@
 		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
+		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
+		voiceLabel : 'Typografi',
+		panelVoiceLabel : 'Vælg typografi',
+		panelTitle1 : 'Block typografi',
+		panelTitle2 : 'Inline typografi',
+		panelTitle3 : 'Object typografi'
 	},
 
@@ -551,7 +551,7 @@
 	{
 		label : 'Formatering',
-		voiceLabel : 'Format', // MISSING
+		voiceLabel : 'Formatering',
 		panelTitle : 'Formatering',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
+		panelVoiceLabel : 'Vælg afsnitsformatering',
 
 		tag_p : 'Normal',
@@ -570,7 +570,7 @@
 	{
 		label : 'Skrifttype',
-		voiceLabel : 'Font', // MISSING
+		voiceLabel : 'Skrifttype',
 		panelTitle : 'Skrifttype',
-		panelVoiceLabel : 'Select a font' // MISSING
+		panelVoiceLabel : 'Vælg skrifttype'
 	},
 
@@ -578,7 +578,7 @@
 	{
 		label : 'Skriftstørrelse',
-		voiceLabel : 'Font Size', // MISSING
+		voiceLabel : 'Skriftstørrelse',
 		panelTitle : 'Skriftstørrelse',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		panelVoiceLabel : 'Vælg skriftstørrelse'
 	},
 
@@ -637,42 +637,42 @@
 	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',
+		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',
+		languagesTab : 'Sprog',
+		dictionariesTab : 'Ordbøger',
+		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 :
Index: /CKEditor/branches/features/4210/3.1.x/_source/lang/he.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/lang/he.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/lang/he.js	(revision 4476)
@@ -32,5 +32,5 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle		: 'עורך טקסט עשיר, %1',
 
 	// Toolbar buttons without dialogs.
@@ -91,10 +91,10 @@
 		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	: 'חלק מהאפשרויות שונו, האם לסגור את הדיאלוג. ?',
 
 		// 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>'
 	},
 
@@ -130,5 +130,5 @@
 		targetPopupName	: 'שם החלון הקופץ',
 		popupFeatures	: 'תכונות החלון הקופץ',
-		popupResizable	: 'Resizable', // MISSING
+		popupResizable	: 'שינוי גודל',
 		popupStatusBar	: 'סרגל חיווי',
 		popupLocationBar	: 'סרגל כתובת',
@@ -142,5 +142,5 @@
 		popupHeight		: 'גובה',
 		popupTop		: 'מיקום צד עליון',
-		id				: 'Id', // MISSING
+		id				: 'זיהוי (Id)',
 		langDir			: 'כיוון שפה',
 		langDirNotSet	: '<לא נקבע>',
@@ -188,7 +188,7 @@
 		matchCase			: 'התאמת סוג אותיות (Case)',
 		matchWord			: 'התאמה למילה המלאה',
-		matchCyclic			: 'Match cyclic', // MISSING
+		matchCyclic			: 'התאמה מחזורית',
 		replaceAll			: 'החלפה בכל העמוד',
-		replaceSuccessMsg	: '%1 occurrence(s) replaced.' // MISSING
+		replaceSuccessMsg	: '%1 טקסטים הוחלפו.'
 	},
 
@@ -221,11 +221,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	: 'ריווח תאים חייב להיות מספר.',
+		invalidCellPadding	: 'ריפוד תאים חייב להיות מספר.',
 
 		cell :
@@ -241,25 +241,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,5 +308,5 @@
 		action		: 'שלח אל',
 		method		: 'סוג שליחה',
-		encoding	: 'Encoding', // MISSING
+		encoding	: 'קידוד',
 		target		: 'מטרה',
 		targetNotSet	: '<לא נקבע>',
@@ -397,7 +397,7 @@
 		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
+		button2Img	: 'האם להפוך את תמונת כפתור לתמונה פשוטה?',
+		img2Button	: 'האם להפוך את התמונה לכפתור תמונה?',
+		urlMissing : 'כתובת התמונה חסרה.'
 	},
 
@@ -406,18 +406,18 @@
 	{
 		properties		: 'מאפייני פלאש',
-		propertiesTab	: 'Properties', // MISSING
+		propertiesTab	: 'מאפיינים',
 		title		: 'מאפיני פלאש',
 		chkPlay		: 'נגן אוטומטי',
 		chkLoop		: 'לולאה',
 		chkMenu		: 'אפשר תפריט פלאש',
-		chkFull		: 'Allow Fullscreen', // MISSING
+		chkFull		: 'אפשר חלון מלא',
  		scale		: 'גודל',
 		scaleAll		: 'הצג הכל',
 		scaleNoBorder	: 'ללא גבולות',
 		scaleFit		: 'התאמה מושלמת',
-		access			: 'Script Access', // MISSING
-		accessAlways	: 'Always', // MISSING
-		accessSameDomain	: 'Same domain', // MISSING
-		accessNever	: 'Never', // MISSING
+		access			: 'גישת סקריפט',
+		accessAlways	: 'תמיד',
+		accessSameDomain	: 'דומיין זהה',
+		accessNever	: 'אף פעם',
 		align		: 'יישור',
 		alignLeft	: 'לשמאל',
@@ -430,16 +430,16 @@
 		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
+		quality		: 'איכות',
+		qualityBest		 : 'מעולה',
+		qualityHigh		 : 'גבוהה',
+		qualityAutoHigh	 : 'אוטומטית גבוהה',
+		qualityMedium	 : 'ממוצעת',
+		qualityAutoLow	 : 'אוטומטית נמוך',
+		qualityLow		 : 'נמוך',
+		windowModeWindow	 : 'חלון',
+		windowModeOpaque	 : 'אטום',
+		windowModeTransparent	 : 'שקוף',
+		windowMode	: 'מצב חלון',
+		flashvars	: 'משתנים לפלאש',
 		bgcolor	: 'צבע רקע',
 		width	: 'רוחב',
@@ -448,8 +448,8 @@
 		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
+		validateWidth : 'רוחב חייב להיות מספר.',
+		validateHeight : 'גובהה חייב להיות מספר.',
+		validateHSpace : 'ריווח אופקי חייב להיות מספר.',
+		validateVSpace : 'ריווח אנחי חייב להיות מספר.'
 	},
 
@@ -458,7 +458,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		: 'שנה ל',
@@ -485,5 +485,5 @@
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
+		eleTitle : '%1 אלמנט'
 	},
 
@@ -541,9 +541,9 @@
 	{
 		label : 'סגנון',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		voiceLabel : 'סגנונות',
+		panelVoiceLabel : 'בחר סגנון',
+		panelTitle1 : 'סיגנונות בלוק',
+		panelTitle2 : 'סגנונות רצף',
+		panelTitle3 : 'סגנונות אובייקט'
 	},
 
@@ -551,7 +551,7 @@
 	{
 		label : 'עיצוב',
-		voiceLabel : 'Format', // MISSING
+		voiceLabel : 'עיצוב',
 		panelTitle : 'עיצוב',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
+		panelVoiceLabel : 'בחר פיסקת עיצוב',
 
 		tag_p : 'נורמלי',
@@ -564,5 +564,5 @@
 		tag_h5 : 'כותרת 5',
 		tag_h6 : 'כותרת 6',
-		tag_div : 'Normal (DIV)' // MISSING
+		tag_div : 'נורמלי (DIV)'
 	},
 
@@ -570,7 +570,7 @@
 	{
 		label : 'גופן',
-		voiceLabel : 'Font', // MISSING
+		voiceLabel : 'גופן',
 		panelTitle : 'גופן',
-		panelVoiceLabel : 'Select a font' // MISSING
+		panelVoiceLabel : 'בחר גופן'
 	},
 
@@ -578,7 +578,7 @@
 	{
 		label : 'גודל',
-		voiceLabel : 'Font Size', // MISSING
+		voiceLabel : 'גודל גופן',
 		panelTitle : 'גודל',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		panelVoiceLabel : 'בחר גודל גופן'
 	},
 
@@ -637,49 +637,49 @@
 	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 : 'בדיקת איות בזמן כתיבה',
+		enable : 'אפשר SCAYT',
+		disable : 'בטל SCAYT',
+		about : 'אודות SCAYT',
+		toggle : 'שינוי SCAYT',
+		options : 'אפשרויות',
+		langs : 'שפות',
+		moreSuggestions : 'עוד הצעות',
+		ignore : 'התעלם',
+		ignoreAll : 'התעלם מהכל',
+		addWord : 'הודף מילה',
+		emptyDic : 'אסור לשם המילון להיות ריק.',
+		optionsTab : 'אפשרויות',
+		languagesTab : 'שפות',
+		dictionariesTab : 'מילון',
+		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 : 'בחר צבע',
+		highlight : 'סמן',
+		selected : 'נבחר',
+		clear : 'נקה'
 	}
 };
Index: /CKEditor/branches/features/4210/3.1.x/_source/lang/nl.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/lang/nl.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/lang/nl.js	(revision 4476)
@@ -32,5 +32,5 @@
 	 * of reading non-English words. So be careful while translating it.
 	 */
-	editorTitle		: 'Rich text editor, %1', // MISSING
+	editorTitle		: 'Tekstverwerker, %1',
 
 	// Toolbar buttons without dialogs.
@@ -91,10 +91,10 @@
 		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?',
 
 		// 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>'
 	},
 
@@ -130,5 +130,5 @@
 		targetPopupName	: 'Naam popupvenster',
 		popupFeatures	: 'Instellingen popupvenster',
-		popupResizable	: 'Resizable', // MISSING
+		popupResizable	: 'Herschaalbaar',
 		popupStatusBar	: 'Statusbalk',
 		popupLocationBar	: 'Locatiemenu',
@@ -142,5 +142,5 @@
 		popupHeight		: 'Hoogte',
 		popupTop		: 'Positie boven',
-		id				: 'Id', // MISSING
+		id				: 'Id',
 		langDir			: 'Schrijfrichting',
 		langDirNotSet	: '<niet ingevuld>',
@@ -188,7 +188,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.'
 	},
 
@@ -213,19 +213,19 @@
 		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,25 +240,25 @@
 			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
+			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 : 'Choose' // MISSING
 		},
@@ -308,5 +308,5 @@
 		action		: 'Actie',
 		method		: 'Methode',
-		encoding	: 'Encoding', // MISSING
+		encoding	: 'Codering',
 		target		: 'Doel',
 		targetNotSet	: '<niet ingevuld>',
@@ -397,6 +397,6 @@
 		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
+		button2Img	: 'Wilt u de geselecteerde afbeeldingsknop vervangen door een eenvoudige afbeelding?',
+		img2Button	: 'Wilt u de geselecteerde afbeelding vervangen door een afbeeldingsknop?',
 		urlMissing : 'Image source URL is missing.' // MISSING
 	},
@@ -406,18 +406,18 @@
 	{
 		properties		: 'Eigenschappen Flash',
-		propertiesTab	: 'Properties', // MISSING
+		propertiesTab	: 'Eigenschappen',
 		title		: 'Eigenschappen Flash',
 		chkPlay		: 'Automatisch afspelen',
 		chkLoop		: 'Herhalen',
 		chkMenu		: 'Flashmenu\'s inschakelen',
-		chkFull		: 'Allow Fullscreen', // MISSING
+		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
+		access			: 'Script toegang',
+		accessAlways	: 'Altijd',
+		accessSameDomain	: 'Zelfde domeinnaam',
+		accessNever	: 'Nooit',
 		align		: 'Uitlijning',
 		alignLeft	: 'Links',
@@ -430,16 +430,16 @@
 		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
+		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',
@@ -448,8 +448,8 @@
 		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
+		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 +458,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',
@@ -485,5 +485,5 @@
 	elementsPath :
 	{
-		eleTitle : '%1 element' // MISSING
+		eleTitle : '%1 element'
 	},
 
@@ -541,9 +541,9 @@
 	{
 		label : 'Stijl',
-		voiceLabel : 'Styles', // MISSING
-		panelVoiceLabel : 'Select a style', // MISSING
-		panelTitle1 : 'Block Styles', // MISSING
-		panelTitle2 : 'Inline Styles', // MISSING
-		panelTitle3 : 'Object Styles' // MISSING
+		voiceLabel : 'Stijl',
+		panelVoiceLabel : 'Selecteer een stijl',
+		panelTitle1 : 'Blok stijlen',
+		panelTitle2 : 'In-line stijlen',
+		panelTitle3 : 'Object stijlen'
 	},
 
@@ -551,7 +551,7 @@
 	{
 		label : 'Opmaak',
-		voiceLabel : 'Format', // MISSING
+		voiceLabel : 'Opmaak',
 		panelTitle : 'Opmaak',
-		panelVoiceLabel : 'Select a paragraph format', // MISSING
+		panelVoiceLabel : 'Selecteer een alinea-opmaak',
 
 		tag_p : 'Normaal',
@@ -570,15 +570,15 @@
 	{
 		label : 'Lettertype',
-		voiceLabel : 'Font', // MISSING
+		voiceLabel : 'Lettertype',
 		panelTitle : 'Lettertype',
-		panelVoiceLabel : 'Select a font' // MISSING
+		panelVoiceLabel : 'Selecteer een lettertype'
 	},
 
 	fontSize :
 	{
-		label : 'Grootte',
-		voiceLabel : 'Font Size', // MISSING
-		panelTitle : 'Grootte',
-		panelVoiceLabel : 'Select a font size' // MISSING
+		label : 'Lettergrootte',
+		voiceLabel : 'Lettergrootte',
+		panelTitle : 'Lettergrootte',
+		panelVoiceLabel : 'Selecteer een lettergrootte'
 	},
 
@@ -637,42 +637,42 @@
 	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',
+		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',
+		languagesTab : 'Talen',
+		dictionariesTab : 'Woordenboeken',
+		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
+		title : 'Over CKEditor',
+		dlgTitle : 'Over CKEditor',
+		moreInfo : 'Voor licentie informatie, bezoek onze website:',
+		copy : 'Copyright &copy; $1. Alle rechten voorbehouden.'
+	},
+
+	maximize : 'Maximaliseren',
 	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 : 'Flash animatie',
+		div : 'Pagina einde',
+		unknown : 'Onbekend object'
+	},
+
+	resize : 'Sleep om te herschalen',
 
 	colordialog :
Index: /CKEditor/branches/features/4210/3.1.x/_source/lang/pl.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/lang/pl.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/lang/pl.js	(revision 4476)
@@ -92,6 +92,6 @@
 		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 ?',
+		confirmNewPage	: 'Wszystkie niezapisane zmiany zostaną utracone. Czy na pewno wczytać nową stronę?',
+		confirmCancel	: 'Pewne opcje zostały zmienione. Czy na pewno zamknąć okno dialogowe?',
 
 		// Put the voice-only part of the label in the span.
@@ -261,5 +261,5 @@
 			invalidRowSpan	: 'Scalenie wierszy musi być liczbą całkowitą.',
 			invalidColSpan	: 'Scalenie komórek musi być liczbą całkowitą.',
-			chooseColor : 'Choose' // MISSING
+			chooseColor : 'Wybierz'
 		},
 
@@ -399,5 +399,5 @@
 		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.'
 	},
 
@@ -408,5 +408,5 @@
 		propertiesTab	: 'Właściwości',
 		title		: 'Właściwości elementu Flash',
-		chkPlay		: 'Auto Odtwarzanie',
+		chkPlay		: 'Autoodtwarzanie',
 		chkLoop		: 'Pętla',
 		chkMenu		: 'Włącz menu',
@@ -441,5 +441,5 @@
 		windowModeTransparent	 : 'Przeźroczyste',
 		windowMode	: 'Tryb okna',
-		flashvars	: 'Zmienne dla Flash\'a',
+		flashvars	: 'Zmienne dla Flasha',
 		bgcolor	: 'Kolor tła',
 		width	: 'Szerokość',
@@ -469,5 +469,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',
@@ -529,5 +529,5 @@
 	templates :
 	{
-		button : 'Sablony',
+		button : 'Szablony',
 		title : 'Szablony zawartości',
 		insertOption: 'Zastąp aktualną zawartość',
@@ -541,5 +541,5 @@
 	{
 		label : 'Styl',
-		voiceLabel : 'Style',
+		voiceLabel : 'Styl',
 		panelVoiceLabel : 'Wybierz styl',
 		panelTitle1 : 'Style blokowe',
@@ -572,5 +572,5 @@
 		voiceLabel : 'Czcionka',
 		panelTitle : 'Czcionka',
-		panelVoiceLabel : 'Select a font'
+		panelVoiceLabel : 'Wybierz czcionkę'
 	},
 
@@ -580,5 +580,5 @@
 		voiceLabel : 'Rozmiar czcionki',
 		panelTitle : 'Rozmiar',
-		panelVoiceLabel : 'Select a font size'
+		panelVoiceLabel : 'Wybierz rozmiar czcionki'
 	},
 
@@ -637,9 +637,9 @@
 	scayt :
 	{
-		title : 'Sprawdź pisowanie podczas pisania (SCAYT)',
+		title : 'Sprawdź pisownię podczas pisania (SCAYT)',
 		enable : 'Włącz SCAYT',
 		disable : 'Wyłącz SCAYT',
 		about : 'Na temat SCAYT',
-		toggle : 'Toggle SCAYT',
+		toggle : 'Przełącz SCAYT',
 		options : 'Opcje',
 		langs : 'Języki',
@@ -664,5 +664,5 @@
 
 	maximize : 'Maksymalizuj',
-	minimize : 'Minimize', // MISSING
+	minimize : 'Minimalizuj',
 
 	fakeobjects :
@@ -678,8 +678,8 @@
 	colordialog :
 	{
-		title : 'Select color', // MISSING
-		highlight : 'Highlight', // MISSING
-		selected : 'Selected', // MISSING
-		clear : 'Clear' // MISSING
+		title : 'Wybierz kolor',
+		highlight : 'Zaznacz',
+		selected : 'Wybrany',
+		clear : 'Wyczyść'
 	}
 };
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/dialog/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/dialog/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/dialog/plugin.js	(revision 4476)
@@ -1440,4 +1440,7 @@
 			margins = skinData[ editor.skinName ].margins || [ 0, 0, 0, 0 ];
 
+		if ( typeof magnetDistance == 'undefined' )
+			magnetDistance = 20;
+
 		function mouseMoveHandler( evt )
 		{
@@ -1663,5 +1666,5 @@
 					'; z-index: ', editor.config.baseFloatZIndex,
 					'; top: 0px; left: 0px; ',
-					'background-color: ', editor.config.dialog_backgroundCoverColor,
+					'background-color: ', editor.config.dialog_backgroundCoverColor || 'white',
 					'" id="cke_dialog_background_cover">'
 				];
@@ -1755,5 +1758,8 @@
 			scrollFunc();
 		}
-		element.setOpacity( editor.config.dialog_backgroundCoverOpacity );
+
+		var opacity = editor.config.dialog_backgroundCoverOpacity;
+		element.setOpacity( typeof opacity != 'undefined' ? opacity : 0.5 );
+
 		element.appendTo( CKEDITOR.document.getBody() );
 	};
@@ -1855,5 +1861,5 @@
 	{
 		if ( e.data.getKeystroke() in preventKeyBubblingKeys )
-			e.data.preventDefault( true );
+			e.data.stopPropagation();
 	};
 
@@ -2736,14 +2742,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
@@ -2751,9 +2758,9 @@
  * config.dialog_backgroundCoverOpacity = 0.7;
  */
-CKEDITOR.config.dialog_backgroundCoverOpacity = 0.5;
 
 /**
  * The distance of magnetic borders used in moving and resizing dialogs,
  * measured in pixels.
+ * @name CKEDITOR.config.dialog_magnetDistance
  * @type Number
  * @default 20
@@ -2761,3 +2768,2 @@
  * config.dialog_magnetDistance = 30;
  */
-CKEDITOR.config.dialog_magnetDistance = 20;
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/flash/dialogs/flash.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/flash/dialogs/flash.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/flash/dialogs/flash.js	(revision 4476)
@@ -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'} ],
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/floatpanel/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/floatpanel/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/floatpanel/plugin.js	(revision 4476)
@@ -55,8 +55,4 @@
 
 			this.element = element;
-
-			// Register panels to editor for easy destroying ( #4241 ).
-			editor.panels ? editor.panels.push( element ) : editor.panels = [ element ];
-
 
 			this._ =
@@ -330,3 +326,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/4210/3.1.x/_source/plugins/font/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/font/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/font/plugin.js	(revision 4476)
@@ -37,5 +37,5 @@
 				panel :
 				{
-					css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
+					css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ].concat( config.contentsCss ),
 					voiceLabel : lang.panelVoiceLabel
 				},
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/format/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/format/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/format/plugin.js	(revision 4476)
@@ -34,5 +34,5 @@
 				panel :
 				{
-					css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
+					css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ].concat( config.contentsCss ),
 					voiceLabel : lang.panelVoiceLabel
 				},
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/forms/dialogs/select.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/forms/dialogs/select.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/forms/dialogs/select.js	(revision 4476)
@@ -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/4210/3.1.x/_source/plugins/forms/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/forms/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/forms/plugin.js	(revision 4476)
@@ -121,5 +121,5 @@
 			editor.contextMenu.addListener( function( element )
 				{
-					if ( element && element.hasAscendant( 'form' ) )
+					if ( element && element.hasAscendant( 'form', true ) )
 						return { form : CKEDITOR.TRISTATE_OFF };
 				});
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/htmldataprocessor/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/htmldataprocessor/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/htmldataprocessor/plugin.js	(revision 4476)
@@ -12,4 +12,15 @@
 	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 +30,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 +42,6 @@
 	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';
 	}
 
@@ -193,5 +200,5 @@
 	}
 
-	var protectAttributeRegex = /<(?:a|area|img|input).*?\s((?:href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+)))/gi;
+	var protectAttributeRegex = /<(?:a|area|img|input)[\s\S]*?\s((?:href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+)))/gi;
 
 	function protectAttributes( html )
@@ -202,6 +209,6 @@
 	var protectStyleTagsRegex = /<(style)(?=[ >])[^>]*>[^<]*<\/\1>/gi;
 	var encodedTagsRegex = /<cke:encoded>([^<]*)<\/cke:encoded>/gi;
-	var protectElementNamesRegex = /(<\/?)((?:object|embed|param).*?>)/gi;
-	var protectSelfClosingRegex = /<cke:param(.*?)\/>/gi;
+	var protectElementNamesRegex = /(<\/?)((?:object|embed|param)[\s\S]*?>)/gi;
+	var protectSelfClosingRegex = /<cke:(param|embed)([\s\S]*?)\/?>/gi;
 
 	function protectStyleTagsMatch( match )
@@ -220,5 +227,5 @@
 	function protectSelfClosingElements( html )
 	{
-		return html.replace( protectSelfClosingRegex, '<cke:param$1></cke:param>' );
+		return html.replace( protectSelfClosingRegex, '<cke:$1$2></cke:$1>' );
 	}
 
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/image/dialogs/image.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/image/dialogs/image.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/image/dialogs/image.js	(revision 4476)
@@ -243,5 +243,5 @@
 				}
 
-				if ( element && element.getName() == 'img' && !element.getAttribute( '_cke_protected_html' ) )
+				if ( element && element.getName() == 'img' && !element.getAttribute( '_cke_realelement' ) )
 					this.imageEditMode = 'img';
 				else if ( element && element.getName() == 'input' && element.getAttribute( 'type' ) && element.getAttribute( 'type' ) == 'image' )
@@ -448,4 +448,6 @@
 														{
 															field.setValue( url );		// And call this.onChange()
+															// Manually set the initial value.(#4191)
+															field.setInitValue();
 															field.focus();
 														}, 0 );
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/link/dialogs/link.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/link/dialogs/link.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/link/dialogs/link.js	(revision 4476)
@@ -38,5 +38,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' )
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/maximize/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/maximize/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/maximize/plugin.js	(revision 4476)
@@ -112,5 +112,5 @@
 				{
 					modes : { wysiwyg : 1, source : 1 },
-
+					editorFocus : false,
 					exec : function()
 					{
@@ -121,5 +121,6 @@
 						if ( editor.mode == 'wysiwyg' )
 						{
-							savedSelection = editor.getSelection().getRanges();
+							var selection = editor.getSelection();
+							savedSelection = selection && selection.getRanges();
 							savedScroll = mainWindow.getScrollPosition();
 						}
@@ -236,9 +237,11 @@
 						if ( editor.mode == 'wysiwyg' )
 						{
-							editor.getSelection().selectRanges( savedSelection );
-
-							var element = editor.getSelection().getStartElement();
-							if ( element )
-								element.scrollIntoView( true );
+							if ( savedSelection )
+							{
+								editor.getSelection().selectRanges(savedSelection);
+								var element = editor.getSelection().getStartElement();
+								element && element.scrollIntoView( true );
+							}
+
 							else
 								mainWindow.$.scrollTo( savedScroll.x, savedScroll.y );
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/menu/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/menu/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/menu/plugin.js	(revision 4476)
@@ -233,5 +233,5 @@
 				else
 					panel.showBlock( this.id, offsetParent, corner, offsetX, offsetY );
-				
+
 				editor.fire( 'menuShow', [ panel ] );
 			},
@@ -331,5 +331,5 @@
 					'>' +
 						'<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>' +
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/newpage/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/newpage/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/newpage/plugin.js	(revision 4476)
@@ -20,29 +20,13 @@
 				{
 					var command = this;
-					function afterCommand()
+					editor.setData( editor.config.newpage_html, function()
 					{
-						// Defer to happen after 'selectionChange'.
-						setTimeout( function()
+						editor.fire( 'afterCommandExec',
 						{
-							editor.fire( 'afterCommandExec',
-							{
-								name: command.name,
-								command: command
-							} );
-						}, 500 );
-					}
-					if ( editor.mode == 'wysiwyg')
-						editor.on( 'contentDom', function( evt ){
-
-							evt.removeListener();
-	                        afterCommand();
+							name: command.name,
+							command: command
 						} );
-
-					editor.setData( editor.config.newpage_html );
+					} );
 					editor.focus();
-
-					if( editor.mode == 'source' )
-						afterCommand();
-
 				},
 				async : true
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/panel/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/panel/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/panel/plugin.js	(revision 4476)
@@ -231,4 +231,9 @@
 
 		return block;
+	},
+
+	destroy : function()
+	{
+		this.element && this.element.remove();
 	}
 };
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/preview/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/preview/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/preview/plugin.js	(revision 4476)
@@ -38,5 +38,7 @@
 					baseTag +
 					'<title>' + editor.lang.preview + '</title>' +
-					'<link href="' + editor.config.contentsCss + '" type="text/css" rel="stylesheet" _cktemp="true"/>' +
+					'<link type="text/css" rel="stylesheet" href="' +
+					[].concat( editor.config.contentsCss ).join( '"><link type="text/css" rel="stylesheet" href="' ) +
+					'">' +
 					'</head>' + bodyHtml +
 					editor.getData() +
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/removeformat/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/removeformat/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/removeformat/plugin.js	(revision 4476)
@@ -93,5 +93,5 @@
 
 						// 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' ) ) )
 						{
 							// Remove elements nodes that match with this style rules.
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/scayt/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/scayt/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/scayt/plugin.js	(revision 4476)
@@ -251,4 +251,5 @@
 	{
 		preserveState : true,
+		editorFocus : false,
 
 		exec: function( editor )
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/selection/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/selection/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/selection/plugin.js	(revision 4476)
@@ -334,5 +334,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
 	};
@@ -679,5 +679,5 @@
 						node = sel.anchorNode;
 
-						if ( node.nodeType != 1 )
+						if ( node && node.nodeType != 1 )
 							node = node.parentNode;
 					}
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/showblocks/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/showblocks/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/showblocks/plugin.js	(revision 4476)
@@ -90,4 +90,5 @@
 	{
 		preserveState : true,
+		editorFocus : false,
 
 		exec : function ( editor )
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/smiley/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/smiley/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/smiley/plugin.js	(revision 4476)
@@ -31,5 +31,5 @@
  */
 CKEDITOR.config.smiley_path = CKEDITOR.basePath +
-	'_source/' +		// %REMOVE_LINE%
+	'_source/' +		// @Packager.RemoveLine
 	'plugins/smiley/images/';
 
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/sourcearea/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/sourcearea/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/sourcearea/plugin.js	(revision 4476)
@@ -81,7 +81,5 @@
 								textarea.on( 'mousedown', function( evt )
 									{
-										evt = evt.data.$;
-										if ( evt.stopPropagation )
-											evt.stopPropagation();
+										evt.data.stopPropagation();
 									} );
 							}
@@ -124,4 +122,5 @@
 						{
 							textarea.setValue( data );
+							editor.fire( 'dataReady' );
 						},
 
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/styles/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/styles/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/styles/plugin.js	(revision 4476)
@@ -268,5 +268,5 @@
 
 		for ( var style in stylesDef )
-			stylesText += style + ':' + stylesDef[ style ] + ';';
+			stylesText += ( style + ':' + stylesDef[ style ] ).replace( semicolonFixRegex, ';' );
 
 		// Browsers make some changes to the style when applying them. So, here
@@ -1201,4 +1201,5 @@
 		return styleText.replace( /\s*([;:])\s*/, '$1' )
 							 .replace( /([^\s;])$/, '$1;')
+							 .replace( /,\s+/g, ',' ) // Trimming spaces after comma (e.g. font-family name)(#4107).
 							 .toLowerCase();
 	}
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/stylescombo/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/stylescombo/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/stylescombo/plugin.js	(revision 4476)
@@ -27,5 +27,5 @@
 					panel :
 					{
-						css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
+						css : [ CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ].concat( config.contentsCss ),
 						voiceLabel : lang.panelVoiceLabel
 					},
@@ -34,6 +34,9 @@
 					{
 						var combo = this,
-							stylesSet = config.stylesCombo_stylesSet.split( ':', 2 ),
-							stylesSetPath = stylesSet[ 1 ] || CKEDITOR.getUrl( pluginPath + 'styles/' + stylesSet[ 0 ] + '.js' ) ;
+							stylesSet = config.stylesCombo_stylesSet.split( ':' );
+
+						var stylesSetPath = stylesSet[ 1 ] ?
+								stylesSet.slice( 1 ).join( ':' ) :		// #4481
+								CKEDITOR.getUrl( pluginPath + 'styles/' + stylesSet[ 0 ] + '.js' ) ;
 
 						stylesSet = stylesSet[ 0 ];
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/table/dialogs/table.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/table/dialogs/table.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/table/dialogs/table.js	(revision 4476)
@@ -98,5 +98,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 +116,5 @@
 							{
 								th.renameNode( 'th' );
-								if ( !i )
-									th.setAttribute( 'scope', 'col' );
+								th.setAttribute( 'scope', 'col' );
 							}
 						}
@@ -154,5 +153,5 @@
 							newCell = new CKEDITOR.dom.element( table.$.rows[ row ].cells[ 0 ] );
 							newCell.renameNode( 'th' );
-							newCell.setAttribute( 'scope', 'col' );
+							newCell.setAttribute( 'scope', 'row' );
 						}
 					}
@@ -167,5 +166,5 @@
 							{
 								newCell = new CKEDITOR.dom.element( row.$.cells[0] );
-								newCell.renameNode( 'td');
+								newCell.renameNode( 'td' );
 								newCell.removeAttribute( 'scope' );
 							}
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/tabletools/dialogs/tableCell.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/tabletools/dialogs/tableCell.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/tabletools/dialogs/tableCell.js	(revision 4476)
@@ -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 {
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/templates/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/templates/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/templates/plugin.js	(revision 4476)
@@ -86,5 +86,5 @@
 	[
 		CKEDITOR.getUrl(
-			'_source/' + // %REMOVE_LINE%
+			'_source/' + // @Packager.RemoveLine
 			'plugins/templates/templates/default.js' )
 	];
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/templates/templates/default.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/templates/templates/default.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/templates/templates/default.js	(revision 4476)
@@ -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="float: right" cellspacing="0" cellpadding="0" style="width:150px" border="1">' +
 							'<caption style="border:solid 1px black">' +
 								'<strong>Table title</strong>' +
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/uicolor/dialogs/uicolor.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/uicolor/dialogs/uicolor.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/uicolor/dialogs/uicolor.js	(revision 4476)
@@ -38,5 +38,5 @@
 		{
 			var url = CKEDITOR.getUrl(
-					'_source/' + // %REMOVE_LINE%
+					'_source/' + // @Packager.RemoveLine
 					'plugins/uicolor/yui/'
 				);
Index: /CKEditor/branches/features/4210/3.1.x/_source/plugins/uicolor/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/uicolor/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/uicolor/plugin.js	(revision 4476)
@@ -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/4210/3.1.x/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/plugins/wysiwygarea/plugin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/plugins/wysiwygarea/plugin.js	(revision 4476)
@@ -16,5 +16,5 @@
 	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*$/gi;
 
 	function onInsertHtml( evt )
@@ -82,12 +82,22 @@
 				// 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();
+						// If we're in an empty block which indicate a new paragraph,
+						// simply replace it with the inserting block.(#3664)
+						if ( range.checkStartOfBlock()
+							 && range.checkEndOfBlock() )
+						{
+							range.setStartBefore( current );
+							range.collapse( true );
+							current.remove();
+						}
+						else
+							range.splitBlock();
 					}
 				}
@@ -121,4 +131,11 @@
 			}, 0, this );
 		}
+	}
+
+	// DOM modification here should not bother dirty flag.(#4385)
+	function restoreDirty( editor )
+	{
+		if( !editor.checkDirty() )
+			setTimeout( function(){ editor.resetDirty(); } );
 	}
 
@@ -144,4 +161,5 @@
 			 && !path.block )
 		{
+			restoreDirty( editor );
 			var bms = selection.createBookmarks(),
 				fixedBlock = range.fixBlock( true,
@@ -194,4 +212,5 @@
 		if ( lastNode && lastNode.getName && ( lastNode.getName() in nonExitableElementNames ) )
 		{
+			restoreDirty( editor );
 			var paddingBlock = editor.document.createElement(
 					( CKEDITOR.env.ie && enterMode != CKEDITOR.ENTER_BR ) ?
@@ -354,9 +373,5 @@
 						}
 						else
-							// Avoid opening design mode in a frame window thread,
-							// which will cause host page scrolling.(#4397)
-							setTimeout( function(){
-								domDocument.$.designMode = 'on';
-							}, 0 );
+							domDocument.designMode = 'on';
 
 						// IE, Opera and Safari may not support it and throw
@@ -368,24 +383,4 @@
 						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();
-						}
-
 						// Gecko/Webkit need some help when selecting control type elements. (#3448)
 						if ( !( CKEDITOR.env.ie || CKEDITOR.env.opera) )
@@ -427,4 +422,30 @@
 						focusTarget.on( 'focus', function()
 							{
+								// Gecko need a key event to 'wake up' the editing
+								// ability when document is empty.(#3864)
+								if ( CKEDITOR.env.gecko )
+								{
+									var first = body;
+									while( first.firstChild )
+										first = first.firstChild;
+
+									if( !first.nextSibling
+										&& ( 'BR' == first.tagName )
+										&& first.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();
+									}
+								}
+
 								editor.focusManager.focus();
 							});
@@ -434,4 +455,27 @@
 							keystrokeHandler.attach( domDocument );
 
+						// Cancel default action for backspace in IE on control types. (#4047)
+						if ( CKEDITOR.env.ie )
+						{
+							editor.on( 'key', function( event )
+							{
+								if( editor.mode != 'wysiwyg' )
+									return;
+
+								// Backspace.
+								var control = event.data.keyCode == 8
+											  && editor.getSelection().getSelectedElement();
+								if ( control )
+								{
+									// Make undo snapshot.
+									editor.fire( 'saveSnapshot' );
+									// Remove manually.
+									control.remove();
+									editor.fire( 'saveSnapshot' );
+									event.cancel();
+								}
+							} );
+						}
+
 						// Adds the document body as a context menu target.
 						if ( editor.contextMenu )
@@ -456,4 +500,8 @@
 									isPendingFocus = false;
 								}
+								setTimeout( function()
+								{
+									editor.fire( 'dataReady' );
+								}, 0 );
 
 								/*
@@ -516,5 +564,7 @@
 									'<html dir="' + editor.config.contentsLangDirection + '">' +
 									'<head>' +
-										'<link href="' + editor.config.contentsCss + '" type="text/css" rel="stylesheet" _fcktemp="true"/>' +
+										'<link type="text/css" rel="stylesheet" href="' +
+										[].concat( editor.config.contentsCss ).join( '"><link type="text/css" rel="stylesheet" href="' ) +
+										'">' +
 										'<style type="text/css" _fcktemp="true">' +
 											editor._.styles.join( '\n' ) +
Index: /CKEditor/branches/features/4210/3.1.x/_source/skins/kama/editor.css
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/skins/kama/editor.css	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/skins/kama/editor.css	(revision 4476)
@@ -18,4 +18,4 @@
 html.cke_skin_kama_container
 {
-	visibility: visible;
+	visibility: inherit;
 }
Index: /CKEditor/branches/features/4210/3.1.x/_source/skins/kama/skin.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/skins/kama/skin.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/skins/kama/skin.js	(revision 4476)
@@ -86,5 +86,5 @@
 			{
 				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( '{' );
 			}
@@ -95,8 +95,8 @@
 				node.setAttribute( "id", "cke_ui_color" );
 				node.setAttribute( "type", "text/css" );
-				
+
 				return node;
 			}
-			
+
 			function updateStylesheets( styleNodes, styleContent, replace )
 			{
@@ -146,6 +146,7 @@
 				setUiColor : function( color )
 				{
-					var uiStyle = addStylesheet( CKEDITOR.document ),
-						cssId = '#cke_' + editor.name.replace('.', '\\.');
+					var cssContent,
+						uiStyle = addStylesheet( CKEDITOR.document ),
+						cssId = '#cke_' + 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 =
Index: /CKEditor/branches/features/4210/3.1.x/_source/skins/office2003/editor.css
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/skins/office2003/editor.css	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/skins/office2003/editor.css	(revision 4476)
@@ -18,4 +18,4 @@
 html.cke_skin_office2003_container
 {
-	visibility: visible;
+	visibility: inherit;
 }
Index: /CKEditor/branches/features/4210/3.1.x/_source/skins/v2/editor.css
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/skins/v2/editor.css	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/skins/v2/editor.css	(revision 4476)
@@ -18,4 +18,4 @@
 html.cke_skin_v2_container
 {
-	visibility: visible;
+	visibility: inherit;
 }
Index: /CKEditor/branches/features/4210/3.1.x/_source/themes/default/theme.js
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/_source/themes/default/theme.js	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/_source/themes/default/theme.js	(revision 4476)
@@ -156,6 +156,5 @@
 		destroy : function( editor )
 		{
-			var container = editor.container,
-				panels = editor.panels;
+			var container = editor.container;
 
 			/*
@@ -184,7 +183,4 @@
 				container.remove();
 
-			for( var i = 0 ; panels && i < panels.length ; i++ )
-					panels[ i ].remove();
-
 			if ( editor.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
 			{
Index: /CKEditor/branches/features/4210/3.1.x/ckeditor.pack
===================================================================
--- /CKEditor/branches/features/4210/3.1.x/ckeditor.pack	(revision 4475)
+++ /CKEditor/branches/features/4210/3.1.x/ckeditor.pack	(revision 4476)
@@ -134,4 +134,5 @@
 					'_source/plugins/clipboard/plugin.js',
 					'_source/plugins/colorbutton/plugin.js',
+					'_source/plugins/colordialog/plugin.js',
 					'_source/plugins/contextmenu/plugin.js',
 					'_source/plugins/elementspath/plugin.js',
