Index: CKEditor/trunk/CHANGES.html
===================================================================
--- CKEditor/trunk/CHANGES.html	(revision 6232)
+++ CKEditor/trunk/CHANGES.html	(revision 6241)
@@ -36,10 +36,36 @@
 	</h1>
 	<h3>
-			CKEditor 3.4.3 (SVN)</h3>
+			CKEditor 3.5</h3>
 	<p>
 			New features:</p>
 	<ul>
-		<li></li>
-	</ul>
+		<li><a href="http://dev.ckeditor.com/ticket/4090">#4090</a> : Full Adobe AIR support.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/5084">#5084</a> : Dialog windows are now resizable with a grip located in the footer.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/5755">#5755</a> : Introduced the <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.dialog_buttonsOrder">dialog_buttonsOrder</a> setting, making it possible to control the buttons order.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/4648">#4648</a> : Added the new iFrame plugin.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6010">#6010</a> : The Automatic option of the font/background color panel now represents the real color.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/5654">#5654</a> : New "placeholder" plugin.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6334">#6334</a> : CKEditor now uses <a href="http://www.w3.org/TR/2010/WD-html5-20101019/elements.html#embedding-custom-non-visible-data-with-the-data-attributes">HTML5's data-* attributes</a> for its internal attributes.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6103">#6103</a> : It's now possible to control the styling of inline read-only elements with the <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.disableReadonlyStyling">disableReadonlyStyling</a> setting. It's also possible to avoid inline-styling any element by setting its "data-cke-nostyle" attribute to "1".</li>
+		<li><a href="http://dev.ckeditor.com/ticket/5404">#5404</a> : <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.fillEmptyBlocks">fillEmptyBlocks</a> configuration option of v2 is now available.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/5367">#5367</a> : New <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#insertText">CKEDITOR.editor#insertText</a> method (check api.html sample page for usages) is now provided to insert plain text into editor.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/5367">#5915</a> : New <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.removeDialogTabs">removeDialogTabs</a> configuration option to hide certain dialog tabs.</li>
+	</ul>
+	<p>
+			Fixed issues:</p>
+	<ul>
+		<li><a href="http://dev.ckeditor.com/ticket/4821">#4821</a> : Icons in the toolbar were distorted with IE and zoom != 100%.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/5587">#5587</a> : Visual improvements in dialogs, reinforce field label on separate line.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/4652">#4652</a> : Now it's able to disable editor context menu by simply removing the "contextmenu" plugin.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/5599">#5599</a> : Labels of "specialchar" dialog are now translated.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6419">#6419</a> : [IE] List creation by merging problem.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6502">#6502</a> : Removed IE6 image preloading, which was used to defect the duplicate request of background images.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6822">#6822</a> : Added labels to fake objects.</li>
+		<li>Updated the following language files:<ul>
+			<li>Hebrew</li>
+		</ul></li>
+	</ul>
+	<h3>
+			CKEditor 3.4.3</h3>
 	<p>
 			Fixed issues:</p>
Index: CKEditor/trunk/_dev/releaser/release.bat
===================================================================
--- CKEditor/trunk/_dev/releaser/release.bat	(revision 6232)
+++ CKEditor/trunk/_dev/releaser/release.bat	(revision 6241)
@@ -11,3 +11,3 @@
 :: rmdir /S /Q release
 
-java -jar ckreleaser/ckreleaser.jar ckreleaser.release ../.. release "3.4.3 (SVN)" ckeditor_3.4.3_svn --run-before-release=langtool.bat
+java -jar ckreleaser/ckreleaser.jar ckreleaser.release ../.. release "3.5" ckeditor_3.5 --run-before-release=langtool.bat
Index: CKEditor/trunk/_dev/releaser/release.sh
===================================================================
--- CKEditor/trunk/_dev/releaser/release.sh	(revision 6232)
+++ CKEditor/trunk/_dev/releaser/release.sh	(revision 6241)
@@ -13,4 +13,4 @@
 
 pushd $DIR
-java -jar ckreleaser/ckreleaser.jar ckreleaser.release ../.. release "3.4.3 (SVN)" ckeditor_3.4.3_svn --run-before-release=$LANGTOOL
+java -jar ckreleaser/ckreleaser.jar ckreleaser.release ../.. release "3.5" ckeditor_3.5 --run-before-release=$LANGTOOL
 popd
Index: CKEditor/trunk/_samples/adobeair/application.xml
===================================================================
--- CKEditor/trunk/_samples/adobeair/application.xml	(revision 6241)
+++ CKEditor/trunk/_samples/adobeair/application.xml	(revision 6241)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<application xmlns="http://ns.adobe.com/air/application/1.0">
+	<id>com.ckeditor.air.sample</id>
+	<name>CKEditor - Adobe AIR Sample Application</name>
+	<version>1.0</version>
+	<filename>CKEditor AIR Samples</filename>
+	<description>This is a sample AIR application of CKEditor.</description>
+	<copyright>Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.</copyright>
+	<initialWindow>
+		<content>_samples/adobeair/sample.html</content>
+		<title>CKEditor - Adobe AIR Sample</title>
+		<systemChrome>standard</systemChrome>
+		<transparent>false</transparent>
+		<visible>true</visible>
+		<minimizable>true</minimizable>
+		<maximizable>true</maximizable>
+		<resizable>true</resizable>
+		<x>100</x>
+		<y>80</y>
+		<width>950</width>
+		<height>700</height>
+		<minSize>900 600</minSize>
+	</initialWindow>
+	<installFolder>CKEditor/Sample AIR Application</installFolder>
+	<programMenuFolder>CKEditor/Sample AIR Application</programMenuFolder>
+	<customUpdateUI>false</customUpdateUI>
+	<allowBrowserInvocation>false</allowBrowserInvocation>
+</application>
Index: CKEditor/trunk/_samples/adobeair/run.bat
===================================================================
--- CKEditor/trunk/_samples/adobeair/run.bat	(revision 6241)
+++ CKEditor/trunk/_samples/adobeair/run.bat	(revision 6241)
@@ -0,0 +1,9 @@
+@ECHO OFF
+::
+:: Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+:: For licensing, see LICENSE.html or http://ckeditor.com/license
+::
+:: Use this file to quickly run the sample in a Windows environment.
+::
+
+adl application.xml ../../
Index: CKEditor/trunk/_samples/adobeair/run.sh
===================================================================
--- CKEditor/trunk/_samples/adobeair/run.sh	(revision 6241)
+++ CKEditor/trunk/_samples/adobeair/run.sh	(revision 6241)
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+# Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+# For licensing, see LICENSE.html or http://ckeditor.com/license
+
+# Use this file to quickly run the sample under Linux.
+
+adl application.xml ../../
Index: CKEditor/trunk/_samples/adobeair/sample.html
===================================================================
--- CKEditor/trunk/_samples/adobeair/sample.html	(revision 6241)
+++ CKEditor/trunk/_samples/adobeair/sample.html	(revision 6241)
@@ -0,0 +1,49 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Replace Textarea by Code - CKEditor Sample</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type" />
+	<!-- CKReleaser %REMOVE_LINE%
+	<script type="text/javascript" src="../../ckeditor.js"></script>
+	CKReleaser %REMOVE_START% -->
+	<script type="text/javascript" src="../../ckeditor_source.js"></script>
+	<!-- CKReleaser %REMOVE_END% -->
+	<link href="../sample.css" rel="stylesheet" type="text/css" />
+	<style type="text/css">
+		body { margin: 10px ; }
+	</style></head>
+<body>
+	<h1>
+		CKEditor - Adobe AIR Sample
+	</h1>
+	<p>
+		This is a sample HTML/JavaScript Adobe AIR application with CKEditor with default features.
+	</p>
+	<p>
+		<textarea cols="80" id="editor1" name="editor1" rows="10">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://ckeditor.com/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
+		<script type="text/javascript">
+		//<![CDATA[
+
+			// Replace the <textarea id="editor"> with an CKEditor
+			// instance, using default configurations.
+			CKEDITOR.replace( 'editor1' );
+
+		//]]>
+		</script>
+	</p>
+	<div id="footer" style="position:absolute;bottom:0;left:0;right:0;width:100%;padding-bottom:10px;">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="#" onclick="window.runtime.flash.net.navigateToURL(new window.runtime.flash.net.URLRequest('http://ckeditor.com/'));return false;">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="#" onclick="window.runtime.flash.net.navigateToURL(new window.runtime.flash.net.URLRequest('http://cksource.com/'));return false;">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: CKEditor/trunk/_samples/api.html
===================================================================
--- CKEditor/trunk/_samples/api.html	(revision 6232)
+++ CKEditor/trunk/_samples/api.html	(revision 6241)
@@ -33,5 +33,5 @@
 	// Get the editor instance that we want to interact with.
 	var oEditor = CKEDITOR.instances.editor1;
-	var value = document.getElementById( 'plainArea' ).value;
+	var value = document.getElementById( 'htmlArea' ).value;
 
 	// Check the active editing mode.
@@ -45,9 +45,25 @@
 }
 
+function InsertText()
+{
+	// Get the editor instance that we want to interact with.
+	var oEditor = CKEDITOR.instances.editor1;
+	var value = document.getElementById( 'txtArea' ).value;
+
+	// Check the active editing mode.
+	if ( oEditor.mode == 'wysiwyg' )
+	{
+		// Insert as plain text.
+		oEditor.insertText( 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;
+	var value = document.getElementById( 'htmlArea' ).value;
 
 	// Set the editor contents (replace the actual one).
@@ -132,6 +148,12 @@
 			<input onclick="GetContents();" type="button" value="Get Editor Contents (XHTML)" />
 			<br />
-			<textarea cols="80" id="plainArea" rows="3">&lt;h2&gt;Test&lt;/h2&gt;&lt;p&gt;This is some &lt;a href="/Test1.html"&gt;sample&lt;/a&gt; HTML&lt;/p&gt;</textarea>
+			<textarea cols="80" id="htmlArea" rows="3">&lt;h2&gt;Test&lt;/h2&gt;&lt;p&gt;This is some &lt;a href="/Test1.html"&gt;sample&lt;/a&gt; HTML&lt;/p&gt;</textarea>
 			<br />
+			<br />
+			<input onclick="InsertText();" type="button" value="Insert Text" />
+			<br />
+			<textarea cols="80" id="txtArea" rows="3">   First line with some leading whitespaces.
+
+Second line of text preceding by two line-breaks.</textarea>
 			<br />
 			<input onclick="ExecuteCommand('bold');" type="button" value="Execute &quot;bold&quot; Command" />
Index: CKEditor/trunk/_samples/index.html
===================================================================
--- CKEditor/trunk/_samples/index.html	(revision 6232)
+++ CKEditor/trunk/_samples/index.html	(revision 6241)
@@ -44,4 +44,5 @@
 		<li><a href="output_for_flash.html">Output for Flash</a></li>
 		<li><a href="autogrow.html">AutoGrow plugin</a></li>
+		<li><a href="placeholder.html">Placeholder plugin</a></li>
 	</ul>
 	<div id="footer">
Index: CKEditor/trunk/_samples/placeholder.html
===================================================================
--- CKEditor/trunk/_samples/placeholder.html	(revision 6241)
+++ CKEditor/trunk/_samples/placeholder.html	(revision 6241)
@@ -0,0 +1,66 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Placeholder Plugin - CKEditor Sample</title>
+	<meta content="text/html; charset=utf-8" http-equiv="content-type" />
+	<!-- CKReleaser %REMOVE_LINE%
+	<script type="text/javascript" src="../ckeditor.js"></script>
+	CKReleaser %REMOVE_START% -->
+	<script type="text/javascript" src="../ckeditor_source.js"></script>
+	<!-- CKReleaser %REMOVE_END% -->
+	<script src="sample.js" type="text/javascript"></script>
+	<link href="sample.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+	<h1>
+		CKEditor Sample
+	</h1>
+	<!-- This <div> holds alert messages to be display in the sample page. -->
+	<div id="alerts">
+		<noscript>
+			<p>
+				<strong>CKEditor requires JavaScript to run</strong>. In a browser with no JavaScript
+				support, like yours, you should still see the contents (HTML data) and you should
+				be able to edit it normally, without a rich editor interface.
+			</p>
+		</noscript>
+	</div>
+	<form action="sample_posteddata.php" method="post">
+		<p>
+			In this sample the Placeholder plugin is available.<br />
+			It replaces text in the format of <code>[[text]]</code> to uneditable sections, and lets the user edit them and create new ones using a dialog.</p>
+		<p>
+			<label for="editor1">
+				With default configuration:</label><br />
+			<textarea cols="80" id="editor1" name="editor1" rows="10">&lt;p&gt;This is a [[sample placeholder]]. You are using &lt;a href="http://ckeditor.com/"&gt;CKEditor&lt;/a&gt;. &lt;/p&gt;</textarea>
+			<script type="text/javascript">
+			//<![CDATA[
+
+				CKEDITOR.replace( 'editor1', {
+					extraPlugins : 'placeholder',
+					toolbar : [ [ 'Source', 'CreatePlaceholder' ] ]
+				});
+
+			//]]>
+			</script>
+		</p>
+		<p>
+			<input type="submit" value="Submit" />
+		</p>
+	</form>
+	<div id="footer">
+		<hr />
+		<p>
+			CKEditor - The text editor for Internet - <a href="http://ckeditor.com/">http://ckeditor.com</a>
+		</p>
+		<p id="copy">
+			Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico
+			Knabben. All rights reserved.
+		</p>
+	</div>
+</body>
+</html>
Index: CKEditor/trunk/_source/core/ckeditor_base.js
===================================================================
--- CKEditor/trunk/_source/core/ckeditor_base.js	(revision 6232)
+++ CKEditor/trunk/_source/core/ckeditor_base.js	(revision 6241)
@@ -13,5 +13,5 @@
 // ckeditor_source.js and ckeditor_basic_source.js files.
 
-// if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'%VERSION%',rev:'%REV%',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf('://')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf('://')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();
+// if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'%VERSION%',rev:'%REV%',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf(':/')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf(':/')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();
 
 // #### Raw code
@@ -127,5 +127,5 @@
 				// In IE (only) the script.src string is the raw valued entered in the
 				// HTML. Other browsers return the full resolved URL instead.
-				if ( path.indexOf('://') == -1 )
+				if ( path.indexOf(':/') == -1 )
 				{
 					// Absolute path.
@@ -169,5 +169,5 @@
 			{
 				// If this is not a full or absolute path.
-				if ( resource.indexOf('://') == -1 && resource.indexOf( '/' ) !== 0 )
+				if ( resource.indexOf(':/') == -1 && resource.indexOf( '/' ) !== 0 )
 					resource = this.basePath + resource;
 
Index: CKEditor/trunk/_source/core/config.js
===================================================================
--- CKEditor/trunk/_source/core/config.js	(revision 6232)
+++ CKEditor/trunk/_source/core/config.js	(revision 6241)
@@ -293,4 +293,5 @@
 		'horizontalrule,' +
 		'htmldataprocessor,' +
+		'iframe,' +
 		'image,' +
 		'indent,' +
Index: CKEditor/trunk/_source/core/dom/document.js
===================================================================
--- CKEditor/trunk/_source/core/dom/document.js	(revision 6232)
+++ CKEditor/trunk/_source/core/dom/document.js	(revision 6241)
@@ -166,4 +166,7 @@
 		{
 			var head = this.$.getElementsByTagName( 'head' )[0];
+			if ( !head )
+				head = this.getDocumentElement().append( new CKEDITOR.dom.element( 'head' ), true );
+			else
 			head = new CKEDITOR.dom.element( head );
 
@@ -221,4 +224,28 @@
 					return win;
 				})();
+		},
+
+		/**
+		 * Defines the document contents through document.write. Note that the
+		 * previous document contents will be lost (cleaned).
+		 * @since 3.5
+		 * @param {String} html The HTML defining the document contents.
+		 * @example
+		 * document.write(
+		 *     '&lt;html&gt;' +
+		 *         '&lt;head&gt;&lt;title&gt;Sample Doc&lt;/title&gt;&lt;/head&gt;' +
+		 *         '&lt;body&gt;Document contents created by code&lt;/body&gt;' +
+		 *      '&lt;/html&gt;' );
+		 */
+		write : function( html )
+		{
+			// Don't leave any history log in IE. (#5657)
+			this.$.open( 'text/html', 'replace' );
+
+			// Support for custom document.domain in IE.
+			CKEDITOR.env.isCustomDomain() &&  ( this.$.domain = document.domain );
+
+			this.$.write( html );
+			this.$.close();
 		}
 	});
Index: CKEditor/trunk/_source/core/dom/domobject.js
===================================================================
--- CKEditor/trunk/_source/core/dom/domobject.js	(revision 6232)
+++ CKEditor/trunk/_source/core/dom/domobject.js	(revision 6241)
@@ -168,4 +168,7 @@
 	 * Sets a data slot value for this object. These values are shared by all
 	 * instances pointing to that same DOM object.
+	 * <strong>Note:</strong> The created data slot is only guarantied to be available on this unique dom node,
+	 * thus any wish to continue access it from other element clones (either created by clone node or from innerHtml)
+	 * will fail, for such usage, please use {@link CKEDITOR.dom.element::setAttribute} instead.
 	 * @name CKEDITOR.dom.domObject.prototype.setCustomData
 	 * @function
@@ -201,5 +204,5 @@
 	domObjectProto.getCustomData = function( key )
 	{
-		var expandoNumber = this.$._cke_expando,
+		var expandoNumber = this.$[ 'data-cke-expando' ],
 			dataSlot = expandoNumber && customData[ expandoNumber ];
 
@@ -212,5 +215,5 @@
 	domObjectProto.removeCustomData = function( key )
 	{
-		var expandoNumber = this.$._cke_expando,
+		var expandoNumber = this.$[ 'data-cke-expando' ],
 			dataSlot = expandoNumber && customData[ expandoNumber ],
 			retval = dataSlot && dataSlot[ key ];
@@ -234,5 +237,5 @@
 		this.removeAllListeners();
 
-		var expandoNumber = this.$._cke_expando;
+		var expandoNumber = this.$[ 'data-cke-expando' ];
 		expandoNumber && delete customData[ expandoNumber ];
 	};
@@ -247,5 +250,5 @@
 	domObjectProto.getUniqueId = function()
 	{
-		return this.$._cke_expando || ( this.$._cke_expando = CKEDITOR.tools.getNextNumber() );
+		return this.$[ 'data-cke-expando' ] || ( this.$[ 'data-cke-expando' ] = CKEDITOR.tools.getNextNumber() );
 	};
 
Index: CKEditor/trunk/_source/core/dom/element.js
===================================================================
--- CKEditor/trunk/_source/core/dom/element.js	(revision 6232)
+++ CKEditor/trunk/_source/core/dom/element.js	(revision 6241)
@@ -308,10 +308,14 @@
 		/**
 		 * Moves the selection focus to this element.
+		 * @param  {Boolean} defer Whether to asynchronously defer the
+		 * 		execution by 100 ms.
 		 * @example
 		 * var element = CKEDITOR.document.getById( 'myTextarea' );
 		 * <b>element.focus()</b>;
 		 */
-		focus : function()
-		{
+		focus : ( function()
+		{
+			function exec()
+			{
 			// IE throws error if the element is not visible.
 			try
@@ -321,5 +325,14 @@
 			catch (e)
 			{}
-		},
+			}
+
+			return function( defer )
+			{
+				if ( defer )
+					CKEDITOR.tools.setTimeout( exec, 100, this );
+				else
+					exec.call( this );
+			};
+		})(),
 
 		/**
@@ -726,5 +739,8 @@
 				var attribute = thisAttribs[ i ];
 
-				if ( ( !CKEDITOR.env.ie || ( attribute.specified && attribute.nodeName != '_cke_expando' ) ) && attribute.nodeValue != otherElement.getAttribute( attribute.nodeName ) )
+				if ( attribute.nodeName == '_moz_dirty' )
+					continue;
+
+				if ( ( !CKEDITOR.env.ie || ( attribute.specified && attribute.nodeName != 'data-cke-expando' ) ) && attribute.nodeValue != otherElement.getAttribute( attribute.nodeName ) )
 					return false;
 			}
@@ -737,5 +753,5 @@
 				{
 					attribute = otherAttribs[ i ];
-					if ( attribute.specified && attribute.nodeName != '_cke_expando'
+					if ( attribute.specified && attribute.nodeName != 'data-cke-expando'
 							&& attribute.nodeValue != this.getAttribute( attribute.nodeName ) )
 						return false;
@@ -787,5 +803,5 @@
 				var child = children.getItem( i );
 
-				if ( child.type == CKEDITOR.NODE_ELEMENT && child.getAttribute( '_cke_bookmark' ) )
+				if ( child.type == CKEDITOR.NODE_ELEMENT && child.data( 'cke-bookmark' ) )
 					continue;
 
@@ -832,5 +848,5 @@
 
 							// Attributes to be ignored.
-							case '_cke_expando' :
+							case 'data-cke-expando' :
 								continue;
 
@@ -852,5 +868,5 @@
 
 					// The _moz_dirty attribute might get into the element after pasting (#5455)
-					var execludeAttrs = { _cke_expando : 1, _moz_dirty : 1 };
+					var execludeAttrs = { 'data-cke-expando' : 1, _moz_dirty : 1 };
 
 					return attrsNum > 0 &&
@@ -915,5 +931,5 @@
 					var pendingNodes = [];
 
-					while ( sibling.getAttribute( '_cke_bookmark' )
+					while ( sibling.data( 'cke-bookmark' )
 						|| sibling.isEmptyInlineRemoveable() )
 					{
@@ -1481,5 +1497,5 @@
 			// Replace the node.
 			this.getParent() && this.$.parentNode.replaceChild( newNode.$, this.$ );
-			newNode.$._cke_expando = this.$._cke_expando;
+			newNode.$[ 'data-cke-expando' ] = this.$[ 'data-cke-expando' ];
 			this.$ = newNode.$;
 		},
@@ -1523,34 +1539,4 @@
 
 		/**
-		 *  Update the element's size with box model awareness.
-		 * @name CKEDITOR.dom.element.setSize
-		 * @param {String} type [width|height]
-		 * @param {Number} size The length unit in px.
-		 * @param isBorderBox Apply the {@param width} and {@param height} based on border box model.
-		 */
-		setSize : ( function()
-		{
-			var sides = {
-				width : [ "border-left-width", "border-right-width","padding-left", "padding-right" ],
-				height : [ "border-top-width", "border-bottom-width", "padding-top",  "padding-bottom" ]
-			};
-
-			return function( type, size, isBorderBox )
-				{
-					if ( typeof size == 'number' )
-					{
-						if ( isBorderBox && !( CKEDITOR.env.ie && CKEDITOR.env.quirks ) )
-						{
-							var	adjustment = 0;
-							for ( var i = 0, len = sides[ type ].length; i < len; i++ )
-								adjustment += parseInt( this.getComputedStyle( sides [ type ][ i ] ) || 0, 10 ) || 0;
-							size -= adjustment;
-						}
-						this.setStyle( type, size + 'px' );
-					}
-				};
-		})(),
-
-		/**
 		 * Gets element's direction. Supports both CSS 'direction' prop and 'dir' attr.
 		 */
@@ -1558,4 +1544,72 @@
 		{
 			return useComputed ? this.getComputedStyle( 'direction' ) : this.getStyle( 'direction' ) || this.getAttribute( 'dir' );
+		},
+
+		/**
+		 * Gets, sets and removes custom data to be stored as HTML5 data-* attributes.
+		 * @name CKEDITOR.dom.element.data
+		 * @param {String} name The name of the attribute, execluding the 'data-' part.
+		 * @param {String} [value] The value to set. If set to false, the attribute will be removed.
+		 */
+		data : function ( name, value )
+		{
+			name = 'data-' + name;
+			if ( value === undefined )
+				return this.getAttribute( name );
+			else if ( value === false )
+				this.removeAttribute( name );
+			else
+				this.setAttribute( name, value );
 		}
 	});
+
+( function()
+{
+	var sides = {
+		width : [ "border-left-width", "border-right-width","padding-left", "padding-right" ],
+		height : [ "border-top-width", "border-bottom-width", "padding-top",  "padding-bottom" ]
+	};
+
+	function marginAndPaddingSize( type )
+	{
+		var adjustment = 0;
+		for ( var i = 0, len = sides[ type ].length; i < len; i++ )
+			adjustment += parseInt( this.getComputedStyle( sides [ type ][ i ] ) || 0, 10 ) || 0;
+		return adjustment;
+	}
+
+	/**
+	 * Update the element's size with box model awareness.
+	 * @name CKEDITOR.dom.element.setSize
+	 * @param {String} type [width|height]
+	 * @param {Number} size The length unit in px.
+	 * @param isBorderBox Apply the {@param width} and {@param height} based on border box model.
+	 */
+	CKEDITOR.dom.element.prototype.setSize = function( type, size, isBorderBox )
+		{
+			if ( typeof size == 'number' )
+			{
+				if ( isBorderBox && !( CKEDITOR.env.ie && CKEDITOR.env.quirks ) )
+					size -= marginAndPaddingSize.call( this, type );
+
+				this.setStyle( type, size + 'px' );
+			}
+		};
+
+	/**
+	 * Get the element's size, possibly with box model awareness.
+	 * @name CKEDITOR.dom.element.getSize
+	 * @param {String} type [width|height]
+	 * @param {Boolean} contentSize Get the {@param width} or {@param height} based on border box model.
+	 */
+	CKEDITOR.dom.element.prototype.getSize = function( type, contentSize )
+		{
+			var size = Math.max( this.$[ 'offset' + CKEDITOR.tools.capitalize( type )  ],
+				this.$[ 'client' + CKEDITOR.tools.capitalize( type )  ] ) || 0;
+
+			if ( contentSize )
+				size -= marginAndPaddingSize.call( this, type );
+
+			return size;
+		};
+})();
Index: CKEditor/trunk/_source/core/dom/node.js
===================================================================
--- CKEditor/trunk/_source/core/dom/node.js	(revision 6232)
+++ CKEditor/trunk/_source/core/dom/node.js	(revision 6241)
@@ -108,22 +108,23 @@
 			var $clone = this.$.cloneNode( includeChildren );
 
-			if ( !cloneId )
-			{
-				var removeIds = function( node )
-				{
-					if ( node.nodeType != CKEDITOR.NODE_ELEMENT )
-						return;
-
-					node.removeAttribute( 'id', false ) ;
-					node.removeAttribute( '_cke_expando', false ) ;
-
+			var removeIds = function( node )
+			{
+				if ( node.nodeType != CKEDITOR.NODE_ELEMENT )
+					return;
+
+				if ( !cloneId )
+					node.removeAttribute( 'id', false );
+				node.removeAttribute( 'data-cke-expando', false );
+
+				if ( includeChildren )
+				{
 					var childs = node.childNodes;
-					for ( var i=0 ; i < childs.length ; i++ )
+					for ( var i=0; i < childs.length; i++ )
 						removeIds( childs[ i ] );
-				};
-
-				// The "id" attribute should never be cloned to avoid duplication.
-				removeIds( $clone );
-			}
+				}
+			};
+
+			// The "id" attribute should never be cloned to avoid duplication.
+			removeIds( $clone );
 
 			return new CKEDITOR.dom.node( $clone );
@@ -244,11 +245,5 @@
 		getDocument : function()
 		{
-			var document = new CKEDITOR.dom.document( this.$.ownerDocument || this.$.parentNode.ownerDocument );
-
-			return (
-			this.getDocument = function()
-				{
-					return document;
-				})();
+			return new CKEDITOR.dom.document( this.$.ownerDocument || this.$.parentNode.ownerDocument );
 		},
 
Index: CKEditor/trunk/_source/core/dom/range.js
===================================================================
--- CKEditor/trunk/_source/core/dom/range.js	(revision 6232)
+++ CKEditor/trunk/_source/core/dom/range.js	(revision 6241)
@@ -281,5 +281,5 @@
 				if ( CKEDITOR.tools.trim( node.getText() ).length )
 					return false;
-				}
+			}
 			else if ( node.type == CKEDITOR.NODE_ELEMENT )
 			{
@@ -309,5 +309,5 @@
 			    && node.getName() in CKEDITOR.dtd.$removeEmpty
 			    || !CKEDITOR.tools.trim( node.getText() )
-			    || node.getParent().hasAttribute( '_cke_bookmark' );
+			    || !!node.getParent().data( 'cke-bookmark' );
 	}
 
@@ -414,5 +414,5 @@
 
 			startNode = this.document.createElement( 'span' );
-			startNode.setAttribute( '_cke_bookmark', 1 );
+			startNode.data( 'cke-bookmark', 1 );
 			startNode.setStyle( 'display', 'none' );
 
@@ -724,8 +724,8 @@
 
 			if ( startNode.is && startNode.is( 'span' )
-				&& startNode.hasAttribute( '_cke_bookmark' ) )
+				&& startNode.data( 'cke-bookmark' ) )
 				this.setStartAt( startNode, CKEDITOR.POSITION_BEFORE_START );
 			if ( endNode && endNode.is && endNode.is( 'span' )
-				&& endNode.hasAttribute( '_cke_bookmark' ) )
+				&& endNode.data( 'cke-bookmark' ) )
 				this.setEndAt( endNode,  CKEDITOR.POSITION_AFTER_END );
 		},
@@ -933,5 +933,5 @@
 								// We need to check for the bookmark attribute because IE insists on
 								// rendering the display:none nodes we use for bookmarks. (#3363)
-								if ( sibling.$.offsetWidth > 0 && !sibling.getAttribute( '_cke_bookmark' ) )
+								if ( sibling.$.offsetWidth > 0 && !sibling.data( 'cke-bookmark' ) )
 								{
 									// We'll accept it only if we need
@@ -1092,5 +1092,5 @@
 								// We need to check for the bookmark attribute because IE insists on
 								// rendering the display:none nodes we use for bookmarks. (#3363)
-								if ( sibling.$.offsetWidth > 0 && !sibling.getAttribute( '_cke_bookmark' ) )
+								if ( sibling.$.offsetWidth > 0 && !sibling.data( 'cke-bookmark' ) )
 								{
 									// We'll accept it only if we need
Index: CKEditor/trunk/_source/core/dom/rangelist.js
===================================================================
--- CKEditor/trunk/_source/core/dom/rangelist.js	(revision 6232)
+++ CKEditor/trunk/_source/core/dom/rangelist.js	(revision 6241)
@@ -114,5 +114,4 @@
 							range.moveToBookmark( bookmarks.shift() );
 
-							var next;
 							// Merge ranges finally after moving to bookmarks.
 							while( mergeCount-- )
Index: CKEditor/trunk/_source/core/dom/walker.js
===================================================================
--- CKEditor/trunk/_source/core/dom/walker.js	(revision 6232)
+++ CKEditor/trunk/_source/core/dom/walker.js	(revision 6241)
@@ -374,5 +374,5 @@
 			return ( node && node.getName
 					&& node.getName() == 'span'
-					&& node.hasAttribute( '_cke_bookmark' ) );
+					&& node.data( 'cke-bookmark' ) );
 		}
 
Index: CKEditor/trunk/_source/core/editor.js
===================================================================
--- CKEditor/trunk/_source/core/editor.js	(revision 6232)
+++ CKEditor/trunk/_source/core/editor.js	(revision 6241)
@@ -228,4 +228,7 @@
 		}
 
+		// Load the Adobe AIR plugin conditionally.
+		CKEDITOR.env.air && ( plugins += ',adobeair' );
+
 		// Load all plugins defined in the "plugins" setting.
 		CKEDITOR.plugins.load( plugins.split( ',' ), function( plugins )
@@ -757,4 +760,20 @@
 
 		/**
+		 * Insert text content into the currently selected position in the
+		 * editor, in WYSIWYG mode, styles of the selected element will be applied to the inserted text,
+		 * spaces around the text will be leaving untouched.
+		 * <strong>Note:</strong> two subsequent line-breaks will introduce one paragraph, which element depends on {@link CKEDITOR.config.enterMode};
+		 * A single line-break will be instead translated into one &lt;br /&gt;.
+		 * @since 3.5
+		 * @param {String} text Text to be inserted into the editor.
+		 * @example
+		 * CKEDITOR.instances.editor1.<b>insertText( ' line1 \n\n line2' )</b>;
+		 */
+		insertText : function( text )
+		{
+			this.fire( 'insertText', text );
+		},
+
+		/**
 		 * Inserts an element into the currently selected position in the
 		 * editor.
Index: CKEditor/trunk/_source/core/env.js
===================================================================
--- CKEditor/trunk/_source/core/env.js	(revision 6232)
+++ CKEditor/trunk/_source/core/env.js	(revision 6241)
@@ -242,5 +242,4 @@
 				env.gecko ? 'gecko' :
 				env.opera ? 'opera' :
-				env.air ? 'air' :
 				env.webkit ? 'webkit' :
 				'unknown' );
@@ -263,4 +262,7 @@
 			env.cssClass += ' cke_browser_gecko18';
 
+		if ( env.air )
+			env.cssClass += ' cke_browser_air';
+
 		return env;
 	})();
Index: CKEditor/trunk/_source/core/htmlparser/element.js
===================================================================
--- CKEditor/trunk/_source/core/htmlparser/element.js	(revision 6232)
+++ CKEditor/trunk/_source/core/htmlparser/element.js	(revision 6241)
@@ -35,5 +35,5 @@
 	this.children = [];
 
-	var tagName = attributes._cke_real_element_type || name;
+	var tagName = attributes[ 'data-cke-real-element-type' ] || name;
 
 	var dtd			= CKEDITOR.dtd,
Index: CKEditor/trunk/_source/core/htmlparser/fragment.js
===================================================================
--- CKEditor/trunk/_source/core/htmlparser/fragment.js	(revision 6232)
+++ CKEditor/trunk/_source/core/htmlparser/fragment.js	(revision 6241)
@@ -126,5 +126,5 @@
 				if ( element.attributes
 					 && ( realElementName =
-						  element.attributes[ '_cke_real_element_type' ] ) )
+						  element.attributes[ 'data-cke-real-element-type' ] ) )
 					elementName = realElementName;
 				else
Index: CKEditor/trunk/_source/core/imagecacher.js
===================================================================
--- CKEditor/trunk/_source/core/imagecacher.js	(revision 6232)
+++ 	(revision )
@@ -1,80 +1,0 @@
-﻿/*
-Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-
-(function()
-{
-	var loaded = {};
-
-	var loadImage = function( image, callback )
-	{
-		var doCallback = function()
-			{
-				img.removeAllListeners();
-				loaded[ image ] = 1;
-				callback();
-			};
-
-		var img = new CKEDITOR.dom.element( 'img' );
-		img.on( 'load', doCallback );
-		img.on( 'error', doCallback );
-		img.setAttribute( 'src', image );
-	};
-
-	/**
-	 * @namespace Load images into the browser cache.
-	 */
- 	CKEDITOR.imageCacher =
-	{
-		/**
-		 * Loads one or more images.
-		 * @param {Array} images The URLs of the images to be loaded.
-		 * @param {Function} [callback] A function to be called once all images
-		 *		are loaded.
-		 * @return {CKEDITOR.event} An event object which fires the 'loaded'
-		 *		event when all images are completely loaded. Additionally, the
-		 *		"finished" property is set after the "loaded" event call.
-		 * @example
-		 * var loader = CKEDITOR.imageCacher.load( [ '/image1.png', 'image2.png' ] );
-		 * if ( !loader.finished )
-		 * {
-		 *     loader.on( 'load', function()
-		 *         {
-		 *             alert( 'All images are loaded' );
-		 *         });
-		 * }
-		 */
-		load : function( images, callback )
-		{
-			var pendingCount = images.length;
-
-			var event = new CKEDITOR.event;
-			event.on( 'loaded', function()
-				{
-					event.finished = 1;
-				});
-
-			if ( callback )
-				event.on( 'loaded', callback );
-
-			var checkPending = function()
-				{
-					if ( --pendingCount === 0 )
-						event.fire( 'loaded' );
-				};
-
-			for ( var i = 0 ; i < images.length ; i++ )
-			{
-				var image = images[ i ];
-
-				if ( loaded[ image ] )
-					checkPending();
-				else
-					loadImage( image, checkPending );
-			}
-
-			return event;
-		}
-	};
-})();
Index: CKEditor/trunk/_source/core/loader.js
===================================================================
--- CKEditor/trunk/_source/core/loader.js	(revision 6232)
+++ CKEditor/trunk/_source/core/loader.js	(revision 6241)
@@ -60,10 +60,9 @@
 			'core/htmlparser/filter'	: [ 'core/htmlparser' ],
 			'core/htmlparser/basicwriter': [ 'core/htmlparser' ],
-			'core/imagecacher'		: [ 'core/dom/element', 'core/event' ],
 			'core/lang'				: [],
 			'core/plugins'			: [ 'core/resourcemanager' ],
 			'core/resourcemanager'	: [ 'core/scriptloader', 'core/tools' ],
 			'core/scriptloader'		: [ 'core/dom/element', 'core/env' ],
-			'core/skins'			: [ 'core/imagecacher', 'core/scriptloader' ],
+			'core/skins'			: [ 'core/scriptloader' ],
 			'core/themes'			: [ 'core/resourcemanager' ],
 			'core/tools'			: [ 'core/env' ],
Index: CKEditor/trunk/_source/core/skins.js
===================================================================
--- CKEditor/trunk/_source/core/skins.js	(revision 6232)
+++ CKEditor/trunk/_source/core/skins.js	(revision 6241)
@@ -18,5 +18,4 @@
 	// Holds the list of loaded skins.
 	var loaded = {},
-		preloaded = {},
 		paths = {};
 
@@ -53,31 +52,4 @@
 							return 'url(' + baseUrl + opener +  path + closer + ')';
 					} );
-		}
-
-		// Check if we need to preload images from it.
-		var preload = skinDefinition.preload;
-		if ( preload && preload.length > 0 )
-		{
-			if ( !preloaded[ skinName ] )
-			{
-				// Prepare image URLs
-				appendSkinPath( preload );
-
-				// Get preloader event dispatcher object.
-				preloaded[ skinName ] = CKEDITOR.imageCacher.load( preload );
-			}
-
-			if ( !preloaded[ skinName ].finished )
-			{
-				// Bind listener for this editor instance.
-				preloaded[ skinName ].on( 'loaded', function()
-					{
-						loadPart( editor, skinName, part, callback );
-					}
-				);
-
-				// Execution will be continued from event listener.
-				return;
-			}
 		}
 
Index: CKEditor/trunk/_source/core/tools.js
===================================================================
--- CKEditor/trunk/_source/core/tools.js	(revision 6232)
+++ CKEditor/trunk/_source/core/tools.js	(revision 6241)
@@ -639,5 +639,5 @@
 			return functions.push( function()
 				{
-					fn.apply( scope || this, arguments );
+					return fn.apply( scope || this, arguments );
 				}) - 1;
 		},
Index: CKEditor/trunk/_source/core/ui.js
===================================================================
--- CKEditor/trunk/_source/core/ui.js	(revision 6232)
+++ CKEditor/trunk/_source/core/ui.js	(revision 6241)
@@ -92,4 +92,6 @@
 };
 
+CKEDITOR.event.implementOn( CKEDITOR.ui );
+
 /**
  * (Virtual Class) Do not call this constructor. This class is not really part
Index: CKEditor/trunk/_source/lang/_translationstatus.txt
===================================================================
--- CKEditor/trunk/_source/lang/_translationstatus.txt	(revision 6232)
+++ CKEditor/trunk/_source/lang/_translationstatus.txt	(revision 6241)
@@ -2,59 +2,59 @@
 For licensing, see LICENSE.html or http://ckeditor.com/license
 
-af.js      Found: 287 Missing: 244
-ar.js      Found: 451 Missing: 80
-bg.js      Found: 280 Missing: 251
-bn.js      Found: 281 Missing: 250
-bs.js      Found: 187 Missing: 344
-ca.js      Found: 490 Missing: 41
-cs.js      Found: 411 Missing: 120
-cy.js      Found: 452 Missing: 79
-da.js      Found: 404 Missing: 127
-de.js      Found: 528 Missing: 3
-el.js      Found: 286 Missing: 245
-en-au.js   Found: 369 Missing: 162
-en-ca.js   Found: 369 Missing: 162
-en-gb.js   Found: 370 Missing: 161
-eo.js      Found: 259 Missing: 272
-es.js      Found: 531 Missing: 0
-et.js      Found: 301 Missing: 230
-eu.js      Found: 403 Missing: 128
-fa.js      Found: 302 Missing: 229
-fi.js      Found: 531 Missing: 0
-fo.js      Found: 420 Missing: 111
-fr-ca.js   Found: 301 Missing: 230
-fr.js      Found: 403 Missing: 128
-gl.js      Found: 283 Missing: 248
-gu.js      Found: 300 Missing: 231
-he.js      Found: 531 Missing: 0
-hi.js      Found: 302 Missing: 229
-hr.js      Found: 404 Missing: 127
-hu.js      Found: 530 Missing: 1
-is.js      Found: 307 Missing: 224
-it.js      Found: 404 Missing: 127
-ja.js      Found: 489 Missing: 42
-km.js      Found: 275 Missing: 256
-ko.js      Found: 293 Missing: 238
-lt.js      Found: 306 Missing: 225
-lv.js      Found: 283 Missing: 248
-mn.js      Found: 300 Missing: 231
-ms.js      Found: 265 Missing: 266
-nb.js      Found: 470 Missing: 61
-nl.js      Found: 531 Missing: 0
-no.js      Found: 470 Missing: 61
-pl.js      Found: 411 Missing: 120
-pt-br.js   Found: 524 Missing: 7
-pt.js      Found: 282 Missing: 249
-ro.js      Found: 301 Missing: 230
-ru.js      Found: 467 Missing: 64
-sk.js      Found: 302 Missing: 229
-sl.js      Found: 410 Missing: 121
-sr-latn.js Found: 276 Missing: 255
-sr.js      Found: 275 Missing: 256
-sv.js      Found: 299 Missing: 232
-th.js      Found: 287 Missing: 244
-tr.js      Found: 524 Missing: 7
-uk.js      Found: 531 Missing: 0
-vi.js      Found: 481 Missing: 50
-zh-cn.js   Found: 531 Missing: 0
-zh.js      Found: 404 Missing: 127
+af.js      Found: 275 Missing: 246
+ar.js      Found: 435 Missing: 86
+bg.js      Found: 268 Missing: 253
+bn.js      Found: 269 Missing: 252
+bs.js      Found: 175 Missing: 346
+ca.js      Found: 469 Missing: 52
+cs.js      Found: 395 Missing: 126
+cy.js      Found: 435 Missing: 86
+da.js      Found: 388 Missing: 133
+de.js      Found: 510 Missing: 11
+el.js      Found: 274 Missing: 247
+en-au.js   Found: 345 Missing: 176
+en-ca.js   Found: 345 Missing: 176
+en-gb.js   Found: 346 Missing: 175
+eo.js      Found: 247 Missing: 274
+es.js      Found: 513 Missing: 8
+et.js      Found: 289 Missing: 232
+eu.js      Found: 387 Missing: 134
+fa.js      Found: 290 Missing: 231
+fi.js      Found: 513 Missing: 8
+fo.js      Found: 402 Missing: 119
+fr-ca.js   Found: 289 Missing: 232
+fr.js      Found: 387 Missing: 134
+gl.js      Found: 271 Missing: 250
+gu.js      Found: 288 Missing: 233
+he.js      Found: 521 Missing: 0
+hi.js      Found: 290 Missing: 231
+hr.js      Found: 388 Missing: 133
+hu.js      Found: 512 Missing: 9
+is.js      Found: 295 Missing: 226
+it.js      Found: 388 Missing: 133
+ja.js      Found: 471 Missing: 50
+km.js      Found: 263 Missing: 258
+ko.js      Found: 281 Missing: 240
+lt.js      Found: 294 Missing: 227
+lv.js      Found: 271 Missing: 250
+mn.js      Found: 288 Missing: 233
+ms.js      Found: 253 Missing: 268
+nb.js      Found: 452 Missing: 69
+nl.js      Found: 513 Missing: 8
+no.js      Found: 452 Missing: 69
+pl.js      Found: 395 Missing: 126
+pt-br.js   Found: 506 Missing: 15
+pt.js      Found: 270 Missing: 251
+ro.js      Found: 289 Missing: 232
+ru.js      Found: 451 Missing: 70
+sk.js      Found: 290 Missing: 231
+sl.js      Found: 394 Missing: 127
+sr-latn.js Found: 264 Missing: 257
+sr.js      Found: 263 Missing: 258
+sv.js      Found: 287 Missing: 234
+th.js      Found: 275 Missing: 246
+tr.js      Found: 506 Missing: 15
+uk.js      Found: 513 Missing: 8
+vi.js      Found: 463 Missing: 58
+zh-cn.js   Found: 518 Missing: 3
+zh.js      Found: 388 Missing: 133
Index: CKEditor/trunk/_source/lang/af.js
===================================================================
--- CKEditor/trunk/_source/lang/af.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/af.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Horisontale lyn byvoeg',
 	pagebreak		: 'Bladsy breek byvoeg',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Skakel verweider',
 	undo			: 'Ont-skep',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Weidte',
+		height			: 'Hoogde',
+		align			: 'Paradeer',
+		alignLeft		: 'Links',
+		alignRight		: 'Regs',
+		alignCenter		: 'Middel',
+		alignTop		: 'Bo',
+		alignMiddle		: 'Middel',
+		alignBottom		: 'Onder',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Gleibalkstuk',
 		popupDependent	: 'Afhanklik (Netscape)',
-		popupWidth		: 'Weite',
 		popupLeft		: 'Links Posisie',
-		popupHeight		: 'Hoogde',
 		popupTop		: 'Bo Posisie',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Kolome',
 		border		: 'Kant groote',
-		align		: 'Parideering',
-		alignLeft	: 'Links',
-		alignCenter	: 'Middel',
-		alignRight	: 'Regs',
-		width		: 'Weite',
 		widthPx		: 'pixels',
 		widthPc		: 'percent',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Hoogde',
 		cellSpace	: 'Cell spasieering',
 		cellPad		: 'Cell buffer',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Uplaai',
 		alt			: 'Alternatiewe beskrywing',
-		width		: 'Weidte',
-		height		: 'Hoogde',
 		lockRatio	: 'Behou preporsie',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'HSpasie',
 		vSpace		: 'VSpasie',
-		align		: 'Paradeer',
-		alignLeft	: 'Links',
-		alignRight	: 'Regs',
 		alertUrl	: 'Voeg asseblief Beeld URL in.',
 		linkTab		: 'Skakel',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Paradeer',
-		alignLeft		: 'Links',
 		alignAbsBottom	: 'Abs Onder',
 		alignAbsMiddle	: 'Abs Middel',
 		alignBaseline	: 'Baseline',
-		alignBottom		: 'Onder',
-		alignMiddle		: 'Middel',
-		alignRight		: 'Regs',
 		alignTextTop	: 'Text Bo',
-		alignTop		: 'Bo',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Agtergrond kleur',
-		width			: 'Weidte',
-		height			: 'Hoogde',
 		hSpace			: 'HSpasie',
 		vSpace			: 'VSpasie',
 		validateSrc		: 'Voeg asseblief die URL in',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/ar.js
===================================================================
--- CKEditor/trunk/_source/lang/ar.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/ar.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'خط فاصل',
 	pagebreak		: 'إدخال صفحة جديدة',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'إزالة رابط',
 	undo			: 'تراجع',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'العرض',
+		height			: 'الإرتفاع',
+		align			: 'محاذاة',
+		alignLeft		: 'يسار',
+		alignRight		: 'يمين',
+		alignCenter		: 'وسط',
+		alignTop		: 'أعلى',
+		alignMiddle		: 'وسط',
+		alignBottom		: 'أسفل',
+		invalidHeight	: 'الارتفاع يجب أن يكون عدداً.',
+		invalidWidth	: 'العرض يجب أن يكون عدداً.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'أشرطة التمرير',
 		popupDependent	: 'تابع (Netscape)',
-		popupWidth		: 'العرض',
 		popupLeft		: 'التمركز لليسار',
-		popupHeight		: 'الإرتفاع',
 		popupTop		: 'التمركز للأعلى',
 		id				: 'هوية',
@@ -244,13 +254,7 @@
 		columns		: 'أعمدة',
 		border		: 'الحدود',
-		align		: 'المحاذاة',
-		alignLeft	: 'يسار',
-		alignCenter	: 'وسط',
-		alignRight	: 'يمين',
-		width		: 'العرض',
 		widthPx		: 'بكسل',
 		widthPc		: 'بالمئة',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'الإرتفاع',
 		cellSpace	: 'تباعد الخلايا',
 		cellPad		: 'المسافة البادئة',
@@ -288,7 +292,4 @@
 			hAlign			: 'محاذاة أفقية',
 			vAlign			: 'محاذاة رأسية',
-			alignTop		: 'أعلى',
-			alignMiddle		: 'وسط',
-			alignBottom		: 'أسفل',
 			alignBaseline	: 'خط القاعدة',
 			bgColor			: 'لون الخلفية',
@@ -411,6 +412,4 @@
 		upload		: 'رفع',
 		alt			: 'عنوان الصورة',
-		width		: 'العرض',
-		height		: 'الإرتفاع',
 		lockRatio	: 'تناسق الحجم',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'تباعد أفقي',
 		vSpace		: 'تباعد عمودي',
-		align		: 'محاذاة',
-		alignLeft	: 'يسار',
-		alignRight	: 'يمين',
 		alertUrl	: 'فضلاً أكتب الموقع الذي توجد عليه هذه الصورة.',
 		linkTab		: 'الرابط',
@@ -427,6 +423,4 @@
 		img2Button	: 'هل تريد تحويل الصورة المختارة إلى زر صورة؟',
 		urlMissing	: 'عنوان مصدر الصورة مفقود',
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'نفس النطاق',
 		accessNever		: 'مطلقاً',
-		align			: 'محاذاة',
-		alignLeft		: 'يسار',
 		alignAbsBottom	: 'أسفل النص',
 		alignAbsMiddle	: 'وسط السطر',
 		alignBaseline	: 'على السطر',
-		alignBottom		: 'أسفل',
-		alignMiddle		: 'وسط',
-		alignRight		: 'يمين',
 		alignTextTop	: 'أعلى النص',
-		alignTop		: 'أعلى',
 		quality			: 'جودة',
 		qualityBest		: 'أفضل',
@@ -475,11 +463,7 @@
 		flashvars		: 'متغيرات الفلاش',
 		bgcolor			: 'لون الخلفية',
-		width			: 'العرض',
-		height			: 'الإرتفاع',
 		hSpace			: 'تباعد أفقي',
 		vSpace			: 'تباعد عمودي',
 		validateSrc		: 'فضلاً أدخل عنوان الموقع الذي يشير إليه الرابط',
-		validateWidth	: 'العرض يجب أن يكون عدداً.',
-		validateHeight	: 'الارتفاع يجب أن يكون عدداً.',
 		validateHSpace	: 'HSpace يجب أن يكون عدداً.',
 		validateVSpace	: 'VSpace يجب أن يكون عدداً.'
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'إرساء',
-		flash	: 'رسم متحرك بالفلاش',
-		div		: 'فاصل صفحة',
-		unknown	: 'كائن غير معروف'
+		anchor		: 'إرساء',
+		flash		: 'رسم متحرك بالفلاش',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'كائن غير معروف'
 	},
 
Index: CKEditor/trunk/_source/lang/bg.js
===================================================================
--- CKEditor/trunk/_source/lang/bg.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/bg.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Вмъкни хоризонтална линия',
 	pagebreak		: 'Вмъкни нов ред',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Изтрий връзка',
 	undo			: 'Отмени',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Ширина',
+		height			: 'Височина',
+		align			: 'Подравняване',
+		alignLeft		: 'Ляво',
+		alignRight		: 'Дясно',
+		alignCenter		: 'Център',
+		alignTop		: 'Отгоре',
+		alignMiddle		: 'По средата',
+		alignBottom		: 'Долу',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Плъзгач',
 		popupDependent	: 'Зависим (Netscape)',
-		popupWidth		: 'Ширина',
 		popupLeft		: 'Координати - X',
-		popupHeight		: 'Височина',
 		popupTop		: 'Координати - Y',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Колони',
 		border		: 'Размер на рамката',
-		align		: 'Подравняване',
-		alignLeft	: 'Ляво',
-		alignCenter	: 'Център',
-		alignRight	: 'Дясно',
-		width		: 'Ширина',
 		widthPx		: 'пиксели',
 		widthPc		: 'проценти',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Височина',
 		cellSpace	: 'Разстояние между клетките',
 		cellPad		: 'Отстъп на съдържанието в клетките',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Качи',
 		alt			: 'Алтернативен текст',
-		width		: 'Ширина',
-		height		: 'Височина',
 		lockRatio	: 'Запази пропорцията',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'Хоризонтален отстъп',
 		vSpace		: 'Вертикален отстъп',
-		align		: 'Подравняване',
-		alignLeft	: 'Ляво',
-		alignRight	: 'Дясно',
 		alertUrl	: 'Моля, въведете пълния път до изображението',
 		linkTab		: 'Връзка',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Подравняване',
-		alignLeft		: 'Ляво',
 		alignAbsBottom	: 'Най-долу',
 		alignAbsMiddle	: 'Точно по средата',
 		alignBaseline	: 'По базовата линия',
-		alignBottom		: 'Долу',
-		alignMiddle		: 'По средата',
-		alignRight		: 'Дясно',
 		alignTextTop	: 'Върху текста',
-		alignTop		: 'Отгоре',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Цвят на фона',
-		width			: 'Ширина',
-		height			: 'Височина',
 		hSpace			: 'Хоризонтален отстъп',
 		vSpace			: 'Вертикален отстъп',
 		validateSrc		: 'Моля, напишете пълния път (URL)',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/bn.js
===================================================================
--- CKEditor/trunk/_source/lang/bn.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/bn.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'রেখা যুক্ত কর',
 	pagebreak		: 'পেজ ব্রেক',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'লিংক সরাও',
 	undo			: 'আনডু',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'প্রস্থ',
+		height			: 'দৈর্ঘ্য',
+		align			: 'এলাইন',
+		alignLeft		: 'বামে',
+		alignRight		: 'ডানে',
+		alignCenter		: 'মাঝখানে',
+		alignTop		: 'উপর',
+		alignMiddle		: 'মধ্য',
+		alignBottom		: 'নীচে',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'স্ক্রল বার',
 		popupDependent	: 'ডিপেন্ডেন্ট (Netscape)',
-		popupWidth		: 'প্রস্থ',
 		popupLeft		: 'বামের পজিশন',
-		popupHeight		: 'দৈর্ঘ্য',
 		popupTop		: 'ডানের পজিশন',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'কলাম',
 		border		: 'বর্ডার সাইজ',
-		align		: 'এলাইনমেন্ট',
-		alignLeft	: 'বামে',
-		alignCenter	: 'মাঝখানে',
-		alignRight	: 'ডানে',
-		width		: 'প্রস্থ',
 		widthPx		: 'পিক্সেল',
 		widthPc		: 'শতকরা',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'দৈর্ঘ্য',
 		cellSpace	: 'সেল স্পেস',
 		cellPad		: 'সেল প্যাডিং',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'আপলোড',
 		alt			: 'বিকল্প টেক্সট',
-		width		: 'প্রস্থ',
-		height		: 'দৈর্ঘ্য',
 		lockRatio	: 'অনুপাত লক কর',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'হরাইজন্টাল স্পেস',
 		vSpace		: 'ভার্টিকেল স্পেস',
-		align		: 'এলাইন',
-		alignLeft	: 'বামে',
-		alignRight	: 'ডানে',
 		alertUrl	: 'অনুগ্রহক করে ছবির URL টাইপ করুন',
 		linkTab		: 'লিংক',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'এলাইন',
-		alignLeft		: 'বামে',
 		alignAbsBottom	: 'Abs নীচে',
 		alignAbsMiddle	: 'Abs উপর',
 		alignBaseline	: 'মূল রেখা',
-		alignBottom		: 'নীচে',
-		alignMiddle		: 'মধ্য',
-		alignRight		: 'ডানে',
 		alignTextTop	: 'টেক্সট উপর',
-		alignTop		: 'উপর',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'বেকগ্রাউন্ড রং',
-		width			: 'প্রস্থ',
-		height			: 'দৈর্ঘ্য',
 		hSpace			: 'হরাইজন্টাল স্পেস',
 		vSpace			: 'ভার্টিকেল স্পেস',
 		validateSrc		: 'অনুগ্রহ করে URL লিংক টাইপ করুন',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/bs.js
===================================================================
--- CKEditor/trunk/_source/lang/bs.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/bs.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Ubaci horizontalnu liniju',
 	pagebreak		: 'Insert Page Break for Printing', // MISSING
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Izbriši link',
 	undo			: 'Vrati',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Širina',
+		height			: 'Visina',
+		align			: 'Poravnanje',
+		alignLeft		: 'Lijevo',
+		alignRight		: 'Desno',
+		alignCenter		: 'Centar',
+		alignTop		: 'Vrh',
+		alignMiddle		: 'Sredina',
+		alignBottom		: 'Dno',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Scroll traka',
 		popupDependent	: 'Ovisno (Netscape)',
-		popupWidth		: 'Širina',
 		popupLeft		: 'Lijeva pozicija',
-		popupHeight		: 'Visina',
 		popupTop		: 'Gornja pozicija',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Kolona',
 		border		: 'Okvir',
-		align		: 'Poravnanje',
-		alignLeft	: 'Lijevo',
-		alignCenter	: 'Centar',
-		alignRight	: 'Desno',
-		width		: 'Širina',
 		widthPx		: 'piksela',
 		widthPc		: 'posto',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Visina',
 		cellSpace	: 'Razmak æelija',
 		cellPad		: 'Uvod æelija',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Šalji',
 		alt			: 'Tekst na slici',
-		width		: 'Širina',
-		height		: 'Visina',
 		lockRatio	: 'Zakljuèaj odnos',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'HSpace',
 		vSpace		: 'VSpace',
-		align		: 'Poravnanje',
-		alignLeft	: 'Lijevo',
-		alignRight	: 'Desno',
 		alertUrl	: 'Molimo ukucajte URL od slike.',
 		linkTab		: 'Link', // MISSING
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Poravnanje',
-		alignLeft		: 'Lijevo',
 		alignAbsBottom	: 'Abs dole',
 		alignAbsMiddle	: 'Abs sredina',
 		alignBaseline	: 'Bazno',
-		alignBottom		: 'Dno',
-		alignMiddle		: 'Sredina',
-		alignRight		: 'Desno',
 		alignTextTop	: 'Vrh teksta',
-		alignTop		: 'Vrh',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Boja pozadine',
-		width			: 'Širina',
-		height			: 'Visina',
 		hSpace			: 'HSpace',
 		vSpace			: 'VSpace',
 		validateSrc		: 'Molimo ukucajte URL link',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/ca.js
===================================================================
--- CKEditor/trunk/_source/lang/ca.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/ca.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Insereix línia horitzontal',
 	pagebreak		: 'Insereix salt de pàgina',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Elimina l\'enllaç',
 	undo			: 'Desfés',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Amplada',
+		height			: 'Alçada',
+		align			: 'Alineació',
+		alignLeft		: 'Ajusta a l\'esquerra',
+		alignRight		: 'Ajusta a la dreta',
+		alignCenter		: 'Centre',
+		alignTop		: 'Top', // MISSING
+		alignMiddle		: 'Middle', // MISSING
+		alignBottom		: 'Bottom', // MISSING
+		invalidHeight	: 'L\'alçada ha de ser un nombre.',
+		invalidWidth	: 'L\'amplada ha de ser un nombre.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Barres d\'scroll',
 		popupDependent	: 'Depenent (Netscape)',
-		popupWidth		: 'Amplada',
 		popupLeft		: 'Posició esquerra',
-		popupHeight		: 'Alçada',
 		popupTop		: 'Posició dalt',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Columnes',
 		border		: 'Mida vora',
-		align		: 'Alineació',
-		alignLeft	: 'Esquerra',
-		alignCenter	: 'Centre',
-		alignRight	: 'Dreta',
-		width		: 'Amplada',
 		widthPx		: 'píxels',
 		widthPc		: 'percentatge',
 		widthUnit	: 'unitat d\'amplada',
-		height		: 'Alçada',
 		cellSpace	: 'Espaiat de cel·les',
 		cellPad		: 'Encoixinament de cel·les',
@@ -288,7 +292,4 @@
 			hAlign			: 'Aliniació Horizontal',
 			vAlign			: 'Aliniació Vertical',
-			alignTop		: 'A dalt',
-			alignMiddle		: 'Al mig',
-			alignBottom		: 'A baix',
 			alignBaseline	: 'A la línia base',
 			bgColor			: 'Color de fons',
@@ -411,6 +412,4 @@
 		upload		: 'Puja',
 		alt			: 'Text alternatiu',
-		width		: 'Amplada',
-		height		: 'Alçada',
 		lockRatio	: 'Bloqueja les proporcions',
 		unlockRatio	: 'Desbloqueja el ràtio',
@@ -419,7 +418,4 @@
 		hSpace		: 'Espaiat horit.',
 		vSpace		: 'Espaiat vert.',
-		align		: 'Alineació',
-		alignLeft	: 'Ajusta a l\'esquerra',
-		alignRight	: 'Ajusta a la dreta',
 		alertUrl	: 'Si us plau, escriviu la URL de la imatge',
 		linkTab		: 'Enllaç',
@@ -427,6 +423,4 @@
 		img2Button	: 'Voleu transformar la imatge seleccionada en un botó d\'imatge?',
 		urlMissing	: 'Falta la URL de la imatge.',
-		validateWidth	: 'L\'amplada ha de ser un nombre enter.',
-		validateHeight	: 'L\'alçada ha de ser un nombre enter.',
 		validateBorder	: 'La vora ha de ser un nombre enter.',
 		validateHSpace	: 'HSpace ha de ser un nombre enter.',
@@ -452,14 +446,8 @@
 		accessSameDomain: 'El mateix domini',
 		accessNever		: 'Mai',
-		align			: 'Alineació',
-		alignLeft		: 'Ajusta a l\'esquerra',
 		alignAbsBottom	: 'Abs Bottom',
 		alignAbsMiddle	: 'Abs Middle',
 		alignBaseline	: 'Baseline',
-		alignBottom		: 'Bottom',
-		alignMiddle		: 'Middle',
-		alignRight		: 'Ajusta a la dreta',
 		alignTextTop	: 'Text Top',
-		alignTop		: 'Top',
 		quality			: 'Qualitat',
 		qualityBest		: 'La millor',
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables de Flash',
 		bgcolor			: 'Color de Fons',
-		width			: 'Amplada',
-		height			: 'Alçada',
 		hSpace			: 'Espaiat horit.',
 		vSpace			: 'Espaiat vert.',
 		validateSrc		: 'Si us plau, escrigui l\'enllaç URL',
-		validateWidth	: 'L\'amplada ha de ser un nombre.',
-		validateHeight	: 'L\'alçada ha de ser un nombre.',
 		validateHSpace	: 'L\'espaiat horitzonatal ha de ser un nombre.',
 		validateVSpace	: 'L\'espaiat vertical ha de ser un nombre.'
@@ -615,4 +599,13 @@
 		remove				: 'Elimina Div'
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Àncora',
-		flash	: 'Animació Flash',
-		div		: 'Salt de pàgina',
-		unknown	: 'Objecte desconegut'
+		anchor		: 'Àncora',
+		flash		: 'Animació Flash',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Objecte desconegut'
 	},
 
Index: CKEditor/trunk/_source/lang/cs.js
===================================================================
--- CKEditor/trunk/_source/lang/cs.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/cs.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Vložit vodorovnou linku',
 	pagebreak		: 'Vložit konec stránky',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Odstranit odkaz',
 	undo			: 'Zpět',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Šířka',
+		height			: 'Výška',
+		align			: 'Zarovnání',
+		alignLeft		: 'Vlevo',
+		alignRight		: 'Vpravo',
+		alignCenter		: 'Na střed',
+		alignTop		: 'Nahoru',
+		alignMiddle		: 'Na střed',
+		alignBottom		: 'Dolů',
+		invalidHeight	: 'Zadaná výška musí být číslo.',
+		invalidWidth	: 'Zadaná šířka musí být číslo.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Posuvníky',
 		popupDependent	: 'Závislost (Netscape)',
-		popupWidth		: 'Šířka',
 		popupLeft		: 'Levý okraj',
-		popupHeight		: 'Výška',
 		popupTop		: 'Horní okraj',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Sloupce',
 		border		: 'Ohraničení',
-		align		: 'Zarovnání',
-		alignLeft	: 'Vlevo',
-		alignCenter	: 'Na střed',
-		alignRight	: 'Vpravo',
-		width		: 'Šířka',
 		widthPx		: 'bodů',
 		widthPc		: 'procent',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Výška',
 		cellSpace	: 'Vzdálenost buněk',
 		cellPad		: 'Odsazení obsahu v buňce',
@@ -288,7 +292,4 @@
 			hAlign			: 'Vodorovné zarovnání',
 			vAlign			: 'Svislé zarovnání',
-			alignTop		: 'Nahoru',
-			alignMiddle		: 'Doprostřed',
-			alignBottom		: 'Dolů',
 			alignBaseline	: 'Na účaří',
 			bgColor			: 'Barva pozadí',
@@ -411,6 +412,4 @@
 		upload		: 'Odeslat',
 		alt			: 'Alternativní text',
-		width		: 'Šířka',
-		height		: 'Výška',
 		lockRatio	: 'Zámek',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'H-mezera',
 		vSpace		: 'V-mezera',
-		align		: 'Zarovnání',
-		alignLeft	: 'Vlevo',
-		alignRight	: 'Vpravo',
 		alertUrl	: 'Zadejte prosím URL obrázku',
 		linkTab		: 'Odkaz',
@@ -427,6 +423,4 @@
 		img2Button	: 'Skutečně chcete převést zvolený obrázek na obrázkové tlačítko?',
 		urlMissing	: 'Zadané URL zdroje obrázku nebylo nalezeno.',
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Ve stejné doméně',
 		accessNever		: 'Nikdy',
-		align			: 'Zarovnání',
-		alignLeft		: 'Vlevo',
 		alignAbsBottom	: 'Zcela dolů',
 		alignAbsMiddle	: 'Doprostřed',
 		alignBaseline	: 'Na účaří',
-		alignBottom		: 'Dolů',
-		alignMiddle		: 'Na střed',
-		alignRight		: 'Vpravo',
 		alignTextTop	: 'Na horní okraj textu',
-		alignTop		: 'Nahoru',
 		quality			: 'Kvalita',
 		qualityBest		: 'Nejlepší',
@@ -475,11 +463,7 @@
 		flashvars		: 'Proměnné pro Flash',
 		bgcolor			: 'Barva pozadí',
-		width			: 'Šířka',
-		height			: 'Výška',
 		hSpace			: 'H-mezera',
 		vSpace			: 'V-mezera',
 		validateSrc		: 'Zadejte prosím URL odkazu',
-		validateWidth	: 'Zadaná šířka musí být číslo.',
-		validateHeight	: 'Zadaná výška musí být číslo.',
 		validateHSpace	: 'Zadaná H-mezera musí být číslo.',
 		validateVSpace	: 'Zadaná V-mezera musí být číslo.'
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Záložka',
-		flash	: 'Flash animace',
-		div		: 'Zalomení stránky',
-		unknown	: 'Neznámý objekt'
+		anchor		: 'Záložka',
+		flash		: 'Flash animace',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Neznámý objekt'
 	},
 
Index: CKEditor/trunk/_source/lang/cy.js
===================================================================
--- CKEditor/trunk/_source/lang/cy.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/cy.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Mewnosod Llinell Lorweddol',
 	pagebreak		: 'Mewnosod Toriad Tudalen i Argraffu',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Datgysylltu',
 	undo			: 'Dadwneud',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Lled',
+		height			: 'Uchder',
+		align			: 'Alinio',
+		alignLeft		: 'Chwith',
+		alignRight		: 'Dde',
+		alignCenter		: 'Canol',
+		alignTop		: 'Top', // MISSING
+		alignMiddle		: 'Canol',
+		alignBottom		: 'Gwaelod',
+		invalidHeight	: 'Rhaid i\'r Uchder fod yn rhif.',
+		invalidWidth	: 'Rhaid i\'r Lled fod yn rhif.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Barrau Sgrolio',
 		popupDependent	: 'Dibynnol (Netscape)',
-		popupWidth		: 'Lled',
 		popupLeft		: 'Safle Chwith',
-		popupHeight		: 'Uchder',
 		popupTop		: 'Safle Top',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Colofnau',
 		border		: 'Maint yr Ymyl',
-		align		: 'Aliniad',
-		alignLeft	: 'Chwith',
-		alignCenter	: 'Canol',
-		alignRight	: 'Dde',
-		width		: 'Lled',
 		widthPx		: 'picsel',
 		widthPc		: 'y cant',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Uchder',
 		cellSpace	: 'Bylchu\'r gell',
 		cellPad		: 'Padio\'r gell',
@@ -288,7 +292,4 @@
 			hAlign			: 'Aliniad Llorweddol',
 			vAlign			: 'Aliniad Fertigol',
-			alignTop		: 'Top',
-			alignMiddle		: 'Canol',
-			alignBottom		: 'Gwaelod',
 			alignBaseline	: 'Baslinell',
 			bgColor			: 'Lliw Cefndir',
@@ -411,6 +412,4 @@
 		upload		: 'lanlwytho',
 		alt			: 'Testun Amgen',
-		width		: 'Lled',
-		height		: 'Uchder',
 		lockRatio	: 'Cloi Cymhareb',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'BwlchLl',
 		vSpace		: 'BwlchF',
-		align		: 'Alinio',
-		alignLeft	: 'Chwith',
-		alignRight	: 'Dde',
 		alertUrl	: 'Rhowch URL y ddelwedd',
 		linkTab		: 'Dolen',
@@ -427,6 +423,4 @@
 		img2Button	: 'Ydych am drawsffurfio\'r ddelwedd hon ar fotwm delwedd?',
 		urlMissing	: 'URL tarddle\'r ddelwedd ar goll.',
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'R\'un parth',
 		accessNever		: 'Byth',
-		align			: 'Alinio',
-		alignLeft		: 'Chwith',
 		alignAbsBottom	: 'Gwaelod Abs',
 		alignAbsMiddle	: 'Canol Abs',
 		alignBaseline	: 'Baslinell',
-		alignBottom		: 'Gwaelod',
-		alignMiddle		: 'Canol',
-		alignRight		: 'Dde',
 		alignTextTop	: 'Testun Top',
-		alignTop		: 'Top',
 		quality			: 'Ansawdd',
 		qualityBest		: 'Gorau',
@@ -475,11 +463,7 @@
 		flashvars		: 'Newidynnau ar gyfer Flash',
 		bgcolor			: 'Lliw cefndir',
-		width			: 'Lled',
-		height			: 'Uchder',
 		hSpace			: 'BwlchLl',
 		vSpace			: 'BwlchF',
 		validateSrc		: 'Ni all yr URL fod yn wag.',
-		validateWidth	: 'Rhaid i\'r Lled fod yn rhif.',
-		validateHeight	: 'Rhaid i\'r Uchder fod yn rhif.',
 		validateHSpace	: 'Rhaid i\'r BwlchLl fod yn rhif.',
 		validateVSpace	: 'Rhaid i\'r BwlchF fod yn rhif.'
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Angor',
-		flash	: 'Animeiddiant Flash',
-		div		: 'Toriad Tudalen',
-		unknown	: 'Gwrthrych Anhysbys'
+		anchor		: 'Angor',
+		flash		: 'Animeiddiant Flash',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Gwrthrych Anhysbys'
 	},
 
Index: CKEditor/trunk/_source/lang/da.js
===================================================================
--- CKEditor/trunk/_source/lang/da.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/da.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Indsæt vandret streg',
 	pagebreak		: 'Indsæt sideskift',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Fjern hyperlink',
 	undo			: 'Fortryd',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Bredde',
+		height			: 'Højde',
+		align			: 'Justering',
+		alignLeft		: 'Venstre',
+		alignRight		: 'Højre',
+		alignCenter		: 'Centreret',
+		alignTop		: 'Øverst',
+		alignMiddle		: 'Centreret',
+		alignBottom		: 'Nederst',
+		invalidHeight	: 'Højde skal være et tal.',
+		invalidWidth	: 'Bredde skal være et tal.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Scrollbar',
 		popupDependent	: 'Koblet/dependent (Netscape)',
-		popupWidth		: 'Bredde',
 		popupLeft		: 'Position fra venstre',
-		popupHeight		: 'Højde',
 		popupTop		: 'Position fra toppen',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Kolonner',
 		border		: 'Rammebredde',
-		align		: 'Justering',
-		alignLeft	: 'Venstrestillet',
-		alignCenter	: 'Centreret',
-		alignRight	: 'Højrestillet',
-		width		: 'Bredde',
 		widthPx		: 'pixels',
 		widthPc		: 'procent',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Højde',
 		cellSpace	: 'Celleafstand',
 		cellPad		: 'Cellemargen',
@@ -288,7 +292,4 @@
 			hAlign			: 'Vandret justering',
 			vAlign			: 'Lodret justering',
-			alignTop		: 'Top',
-			alignMiddle		: 'Midt',
-			alignBottom		: 'Bund',
 			alignBaseline	: 'Grundlinje',
 			bgColor			: 'Baggrundsfarve',
@@ -411,6 +412,4 @@
 		upload		: 'Upload',
 		alt			: 'Alternativ tekst',
-		width		: 'Bredde',
-		height		: 'Højde',
 		lockRatio	: 'Lås størrelsesforhold',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'Vandret margen',
 		vSpace		: 'Lodret margen',
-		align		: 'Justering',
-		alignLeft	: 'Venstre',
-		alignRight	: 'Højre',
 		alertUrl	: 'Indtast stien til billedet',
 		linkTab		: 'Hyperlink',
@@ -427,6 +423,4 @@
 		img2Button	: 'Vil du lave billedet om til en billedknap?',
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Samme domæne',
 		accessNever		: 'Aldrig',
-		align			: 'Justering',
-		alignLeft		: 'Venstre',
 		alignAbsBottom	: 'Absolut nederst',
 		alignAbsMiddle	: 'Absolut centreret',
 		alignBaseline	: 'Grundlinje',
-		alignBottom		: 'Nederst',
-		alignMiddle		: 'Centreret',
-		alignRight		: 'Højre',
 		alignTextTop	: 'Toppen af teksten',
-		alignTop		: 'Øverst',
 		quality			: 'Kvalitet',
 		qualityBest		: 'Bedste',
@@ -475,11 +463,7 @@
 		flashvars		: 'Variabler for Flash',
 		bgcolor			: 'Baggrundsfarve',
-		width			: 'Bredde',
-		height			: 'Højde',
 		hSpace			: 'Vandret margen',
 		vSpace			: 'Lodret margen',
 		validateSrc		: 'Indtast hyperlink URL!',
-		validateWidth	: 'Bredde skal være et tal.',
-		validateHeight	: 'Højde skal være et tal.',
 		validateHSpace	: 'Vandret margen skal være et tal.',
 		validateVSpace	: 'Lodret margen skal være et tal.'
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anker',
-		flash	: 'Flashanimation',
-		div		: 'Sideskift',
-		unknown	: 'Ukendt objekt'
+		anchor		: 'Anker',
+		flash		: 'Flashanimation',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Ukendt objekt'
 	},
 
Index: CKEditor/trunk/_source/lang/de.js
===================================================================
--- CKEditor/trunk/_source/lang/de.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/de.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Horizontale Linie einfügen',
 	pagebreak		: 'Seitenumbruch einfügen',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Link entfernen',
 	undo			: 'Rückgängig',
@@ -110,4 +111,15 @@
 		styles			: 'Style',
 		cssClasses		: 'Stylesheet Klasse',
+		width			: 'Breite',
+		height			: 'Höhe',
+		align			: 'Ausrichtung',
+		alignLeft		: 'Links',
+		alignRight		: 'Rechts',
+		alignCenter		: 'Zentriert',
+		alignTop		: 'Oben',
+		alignMiddle		: 'Mitte',
+		alignBottom		: 'Unten',
+		invalidHeight	: 'Höhe muss eine Zahl sein.',
+		invalidWidth	: 'Breite muss eine Zahl sein.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Rollbalken',
 		popupDependent	: 'Abhängig (Netscape)',
-		popupWidth		: 'Breite',
 		popupLeft		: 'Linke Position',
-		popupHeight		: 'Höhe',
 		popupTop		: 'Obere Position',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Spalte',
 		border		: 'Rahmen',
-		align		: 'Ausrichtung',
-		alignLeft	: 'Links',
-		alignCenter	: 'Zentriert',
-		alignRight	: 'Rechts',
-		width		: 'Breite',
 		widthPx		: 'Pixel',
 		widthPc		: '%',
 		widthUnit	: 'Breite Einheit',
-		height		: 'Höhe',
 		cellSpace	: 'Zellenabstand außen',
 		cellPad		: 'Zellenabstand innen',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontale Ausrichtung',
 			vAlign			: 'Vertikale Ausrichtung',
-			alignTop		: 'Oben',
-			alignMiddle		: 'Mitte',
-			alignBottom		: 'Unten',
 			alignBaseline	: 'Grundlinie',
 			bgColor			: 'Hintergrundfarbe',
@@ -411,6 +412,4 @@
 		upload		: 'Hochladen',
 		alt			: 'Alternativer Text',
-		width		: 'Breite',
-		height		: 'Höhe',
 		lockRatio	: 'Größenverhältnis beibehalten',
 		unlockRatio	: 'Ratio Freischalten',
@@ -419,7 +418,4 @@
 		hSpace		: 'Horizontal-Abstand',
 		vSpace		: 'Vertikal-Abstand',
-		align		: 'Ausrichtung',
-		alignLeft	: 'Links',
-		alignRight	: 'Rechts',
 		alertUrl	: 'Bitte geben Sie die Bild-URL an',
 		linkTab		: 'Link',
@@ -427,6 +423,4 @@
 		img2Button	: 'Möchten Sie das gewählten Bild in einen Bild-Button umwandeln?',
 		urlMissing	: 'Imagequelle URL fehlt.',
-		validateWidth	: 'Breite muß eine ganze Zahl sein.',
-		validateHeight	: 'Höhe muß eine ganze Zahl sein.',
 		validateBorder	: 'Rahmen muß eine ganze Zahl sein.',
 		validateHSpace	: 'Horizontal-Abstand muß eine ganze Zahl sein.',
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Gleiche Domain',
 		accessNever		: 'Nie',
-		align			: 'Ausrichtung',
-		alignLeft		: 'Links',
 		alignAbsBottom	: 'Abs Unten',
 		alignAbsMiddle	: 'Abs Mitte',
 		alignBaseline	: 'Baseline',
-		alignBottom		: 'Unten',
-		alignMiddle		: 'Mitte',
-		alignRight		: 'Rechts',
 		alignTextTop	: 'Text Oben',
-		alignTop		: 'Oben',
 		quality			: 'Qualität',
 		qualityBest		: 'Beste',
@@ -475,11 +463,7 @@
 		flashvars		: 'Variablen für Flash',
 		bgcolor			: 'Hintergrundfarbe',
-		width			: 'Breite',
-		height			: 'Höhe',
 		hSpace			: 'Horizontal-Abstand',
 		vSpace			: 'Vertikal-Abstand',
 		validateSrc		: 'Bitte geben Sie die Link-URL an',
-		validateWidth	: 'Breite muss eine Zahl sein.',
-		validateHeight	: 'Höhe muss eine Zahl sein.',
 		validateHSpace	: 'HSpace muss eine Zahl sein.',
 		validateVSpace	: 'VSpace muss eine Zahl sein.'
@@ -615,4 +599,13 @@
 		remove				: 'Div Entfernen'
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anker',
-		flash	: 'Flash Animation',
-		div		: 'Seitenumbruch',
-		unknown	: 'Unbekanntes Objekt'
+		anchor		: 'Anker',
+		flash		: 'Flash Animation',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unbekanntes Objekt'
 	},
 
Index: CKEditor/trunk/_source/lang/el.js
===================================================================
--- CKEditor/trunk/_source/lang/el.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/el.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Εισαγωγή Οριζόντιας Γραμμής',
 	pagebreak		: 'Εισαγωγή τέλους σελίδας',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Αφαίρεση Συνδέσμου (Link)',
 	undo			: 'Αναίρεση',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Πλάτος',
+		height			: 'Ύψος',
+		align			: 'Ευθυγράμμιση (Align)',
+		alignLeft		: 'Αριστερά',
+		alignRight		: 'Δεξιά (Right)',
+		alignCenter		: 'Κέντρο',
+		alignTop		: 'Πάνω (Top)',
+		alignMiddle		: 'Μέση (Middle)',
+		alignBottom		: 'Κάτω (Bottom)',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Μπάρες Κύλισης',
 		popupDependent	: 'Dependent (Netscape)',
-		popupWidth		: 'Πλάτος',
 		popupLeft		: 'Τοποθεσία Αριστερής Άκρης',
-		popupHeight		: 'Ύψος',
 		popupTop		: 'Τοποθεσία Πάνω Άκρης',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Κολώνες',
 		border		: 'Μέγεθος Περιθωρίου',
-		align		: 'Στοίχιση',
-		alignLeft	: 'Αριστερά',
-		alignCenter	: 'Κέντρο',
-		alignRight	: 'Δεξιά',
-		width		: 'Πλάτος',
 		widthPx		: 'pixels',
 		widthPc		: '%',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Ύψος',
 		cellSpace	: 'Απόσταση κελιών',
 		cellPad		: 'Γέμισμα κελιών',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Αποστολή',
 		alt			: 'Εναλλακτικό Κείμενο (ALT)',
-		width		: 'Πλάτος',
-		height		: 'Ύψος',
 		lockRatio	: 'Κλείδωμα Αναλογίας',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'Οριζόντιος Χώρος (HSpace)',
 		vSpace		: 'Κάθετος Χώρος (VSpace)',
-		align		: 'Ευθυγράμμιση (Align)',
-		alignLeft	: 'Αριστερά',
-		alignRight	: 'Δεξιά (Right)',
 		alertUrl	: 'Εισάγετε την τοποθεσία (URL) της εικόνας',
 		linkTab		: 'Σύνδεσμος',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Ευθυγράμμιση (Align)',
-		alignLeft		: 'Αριστερά',
 		alignAbsBottom	: 'Απόλυτα Κάτω (Abs Bottom)',
 		alignAbsMiddle	: 'Απόλυτα στη Μέση (Abs Middle)',
 		alignBaseline	: 'Γραμμή Βάσης (Baseline)',
-		alignBottom		: 'Κάτω (Bottom)',
-		alignMiddle		: 'Μέση (Middle)',
-		alignRight		: 'Δεξιά (Right)',
 		alignTextTop	: 'Κορυφή Κειμένου (Text Top)',
-		alignTop		: 'Πάνω (Top)',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Χρώμα Υποβάθρου',
-		width			: 'Πλάτος',
-		height			: 'Ύψος',
 		hSpace			: 'Οριζόντιος Χώρος (HSpace)',
 		vSpace			: 'Κάθετος Χώρος (VSpace)',
 		validateSrc		: 'Εισάγετε την τοποθεσία (URL) του υπερσυνδέσμου (Link)',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/en-au.js
===================================================================
--- CKEditor/trunk/_source/lang/en-au.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/en-au.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Insert Horizontal Line',
 	pagebreak		: 'Insert Page Break for Printing',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Unlink',
 	undo			: 'Undo',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Width', // MISSING
+		height			: 'Height', // MISSING
+		align			: 'Align',
+		alignLeft		: 'Left', // MISSING
+		alignRight		: 'Right', // MISSING
+		alignCenter		: 'Centre',
+		alignTop		: 'Top', // MISSING
+		alignMiddle		: 'Middle', // MISSING
+		alignBottom		: 'Bottom', // MISSING
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Scroll Bars',
 		popupDependent	: 'Dependent (Netscape)',
-		popupWidth		: 'Width',
 		popupLeft		: 'Left Position',
-		popupHeight		: 'Height',
 		popupTop		: 'Top Position',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Columns',
 		border		: 'Border size',
-		align		: 'Alignment',
-		alignLeft	: 'Left',
-		alignCenter	: 'Centre',
-		alignRight	: 'Right',
-		width		: 'Width',
 		widthPx		: 'pixels',
 		widthPc		: 'percent',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Height',
 		cellSpace	: 'Cell spacing',
 		cellPad		: 'Cell padding',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment',
 			vAlign			: 'Vertical Alignment',
-			alignTop		: 'Top',
-			alignMiddle		: 'Middle',
-			alignBottom		: 'Bottom',
 			alignBaseline	: 'Baseline',
 			bgColor			: 'Background Color',
@@ -411,6 +412,4 @@
 		upload		: 'Upload',
 		alt			: 'Alternative Text',
-		width		: 'Width',
-		height		: 'Height',
 		lockRatio	: 'Lock Ratio',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'HSpace',
 		vSpace		: 'VSpace',
-		align		: 'Align',
-		alignLeft	: 'Left',
-		alignRight	: 'Right',
 		alertUrl	: 'Please type the image URL',
 		linkTab		: 'Link',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?',
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain',
 		accessNever		: 'Never',
-		align			: 'Align',
-		alignLeft		: 'Left',
 		alignAbsBottom	: 'Abs Bottom',
 		alignAbsMiddle	: 'Abs Middle',
 		alignBaseline	: 'Baseline',
-		alignBottom		: 'Bottom',
-		alignMiddle		: 'Middle',
-		alignRight		: 'Right',
 		alignTextTop	: 'Text Top',
-		alignTop		: 'Top',
 		quality			: 'Quality',
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash',
 		bgcolor			: 'Background colour',
-		width			: 'Width',
-		height			: 'Height',
 		hSpace			: 'HSpace',
 		vSpace			: 'VSpace',
 		validateSrc		: 'URL must not be empty.',
-		validateWidth	: 'Width must be a number.',
-		validateHeight	: 'Height must be a number.',
 		validateHSpace	: 'HSpace must be a number.',
 		validateVSpace	: 'VSpace must be a number.'
@@ -529,8 +513,8 @@
 	justify :
 	{
-		left	: 'Left Justify',
-		center	: 'Centre Justify',
-		right	: 'Right Justify',
-		block	: 'Block Justify'
+		left	: 'Align Left',
+		center	: 'Centre',
+		right	: 'Align Right',
+		block	: 'Justify'
 	},
 
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/en-ca.js
===================================================================
--- CKEditor/trunk/_source/lang/en-ca.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/en-ca.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Insert Horizontal Line',
 	pagebreak		: 'Insert Page Break for Printing',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Unlink',
 	undo			: 'Undo',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Width', // MISSING
+		height			: 'Height', // MISSING
+		align			: 'Align',
+		alignLeft		: 'Left', // MISSING
+		alignRight		: 'Right', // MISSING
+		alignCenter		: 'Centre',
+		alignTop		: 'Top', // MISSING
+		alignMiddle		: 'Middle', // MISSING
+		alignBottom		: 'Bottom', // MISSING
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Scroll Bars',
 		popupDependent	: 'Dependent (Netscape)',
-		popupWidth		: 'Width',
 		popupLeft		: 'Left Position',
-		popupHeight		: 'Height',
 		popupTop		: 'Top Position',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Columns',
 		border		: 'Border size',
-		align		: 'Alignment',
-		alignLeft	: 'Left',
-		alignCenter	: 'Centre',
-		alignRight	: 'Right',
-		width		: 'Width',
 		widthPx		: 'pixels',
 		widthPc		: 'percent',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Height',
 		cellSpace	: 'Cell spacing',
 		cellPad		: 'Cell padding',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment',
 			vAlign			: 'Vertical Alignment',
-			alignTop		: 'Top',
-			alignMiddle		: 'Middle',
-			alignBottom		: 'Bottom',
 			alignBaseline	: 'Baseline',
 			bgColor			: 'Background Color',
@@ -411,6 +412,4 @@
 		upload		: 'Upload',
 		alt			: 'Alternative Text',
-		width		: 'Width',
-		height		: 'Height',
 		lockRatio	: 'Lock Ratio',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'HSpace',
 		vSpace		: 'VSpace',
-		align		: 'Align',
-		alignLeft	: 'Left',
-		alignRight	: 'Right',
 		alertUrl	: 'Please type the image URL',
 		linkTab		: 'Link',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?',
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain',
 		accessNever		: 'Never',
-		align			: 'Align',
-		alignLeft		: 'Left',
 		alignAbsBottom	: 'Abs Bottom',
 		alignAbsMiddle	: 'Abs Middle',
 		alignBaseline	: 'Baseline',
-		alignBottom		: 'Bottom',
-		alignMiddle		: 'Middle',
-		alignRight		: 'Right',
 		alignTextTop	: 'Text Top',
-		alignTop		: 'Top',
 		quality			: 'Quality',
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash',
 		bgcolor			: 'Background colour',
-		width			: 'Width',
-		height			: 'Height',
 		hSpace			: 'HSpace',
 		vSpace			: 'VSpace',
 		validateSrc		: 'URL must not be empty.',
-		validateWidth	: 'Width must be a number.',
-		validateHeight	: 'Height must be a number.',
 		validateHSpace	: 'HSpace must be a number.',
 		validateVSpace	: 'VSpace must be a number.'
@@ -529,8 +513,8 @@
 	justify :
 	{
-		left	: 'Left Justify',
-		center	: 'Centre Justify',
-		right	: 'Right Justify',
-		block	: 'Block Justify'
+		left	: 'Align Left',
+		center	: 'Centre',
+		right	: 'Align Right',
+		block	: 'Justify'
 	},
 
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/en-gb.js
===================================================================
--- CKEditor/trunk/_source/lang/en-gb.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/en-gb.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Insert Horizontal Line',
 	pagebreak		: 'Insert Page Break for Printing',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Unlink',
 	undo			: 'Undo',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Width', // MISSING
+		height			: 'Height', // MISSING
+		align			: 'Align',
+		alignLeft		: 'Left', // MISSING
+		alignRight		: 'Right', // MISSING
+		alignCenter		: 'Centre',
+		alignTop		: 'Top', // MISSING
+		alignMiddle		: 'Middle', // MISSING
+		alignBottom		: 'Bottom', // MISSING
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Scroll Bars',
 		popupDependent	: 'Dependent (Netscape)',
-		popupWidth		: 'Width',
 		popupLeft		: 'Left Position',
-		popupHeight		: 'Height',
 		popupTop		: 'Top Position',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Columns',
 		border		: 'Border size',
-		align		: 'Alignment',
-		alignLeft	: 'Left',
-		alignCenter	: 'Centre',
-		alignRight	: 'Right',
-		width		: 'Width',
 		widthPx		: 'pixels',
 		widthPc		: 'percent',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Height',
 		cellSpace	: 'Cell spacing',
 		cellPad		: 'Cell padding',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment',
 			vAlign			: 'Vertical Alignment',
-			alignTop		: 'Top',
-			alignMiddle		: 'Middle',
-			alignBottom		: 'Bottom',
 			alignBaseline	: 'Baseline',
 			bgColor			: 'Background Color',
@@ -411,6 +412,4 @@
 		upload		: 'Upload',
 		alt			: 'Alternative Text',
-		width		: 'Width',
-		height		: 'Height',
 		lockRatio	: 'Lock Ratio',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'HSpace',
 		vSpace		: 'VSpace',
-		align		: 'Align',
-		alignLeft	: 'Left',
-		alignRight	: 'Right',
 		alertUrl	: 'Please type the image URL',
 		linkTab		: 'Link',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?',
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain',
 		accessNever		: 'Never',
-		align			: 'Align',
-		alignLeft		: 'Left',
 		alignAbsBottom	: 'Abs Bottom',
 		alignAbsMiddle	: 'Abs Middle',
 		alignBaseline	: 'Baseline',
-		alignBottom		: 'Bottom',
-		alignMiddle		: 'Middle',
-		alignRight		: 'Right',
 		alignTextTop	: 'Text Top',
-		alignTop		: 'Top',
 		quality			: 'Quality',
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash',
 		bgcolor			: 'Background colour',
-		width			: 'Width',
-		height			: 'Height',
 		hSpace			: 'HSpace',
 		vSpace			: 'VSpace',
 		validateSrc		: 'URL must not be empty.',
-		validateWidth	: 'Width must be a number.',
-		validateHeight	: 'Height must be a number.',
 		validateHSpace	: 'HSpace must be a number.',
 		validateVSpace	: 'VSpace must be a number.'
@@ -529,8 +513,8 @@
 	justify :
 	{
-		left	: 'Left Justify',
-		center	: 'Centre Justify',
-		right	: 'Right Justify',
-		block	: 'Block Justify'
+		left	: 'Align Left',
+		center	: 'Centre',
+		right	: 'Align Right',
+		block	: 'Justify'
 	},
 
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/en.js
===================================================================
--- CKEditor/trunk/_source/lang/en.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/en.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Insert Horizontal Line',
 	pagebreak		: 'Insert Page Break for Printing',
+	pagebreakAlt		: 'Page Break',
 	unlink			: 'Unlink',
 	undo			: 'Undo',
@@ -110,4 +111,15 @@
 		styles			: 'Style',
 		cssClasses		: 'Stylesheet Classes',
+		width			: 'Width',
+		height			: 'Height',
+		align			: 'Alignment',
+		alignLeft		: 'Left',
+		alignRight		: 'Right',
+		alignCenter		: 'Center',
+		alignTop		: 'Top',
+		alignMiddle		: 'Middle',
+		alignBottom		: 'Bottom',
+		invalidHeight	: 'Height must be a number.',
+		invalidWidth	: 'Width must be a number.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Scroll Bars',
 		popupDependent	: 'Dependent (Netscape)',
-		popupWidth		: 'Width',
 		popupLeft		: 'Left Position',
-		popupHeight		: 'Height',
 		popupTop		: 'Top Position',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Columns',
 		border		: 'Border size',
-		align		: 'Alignment',
-		alignLeft	: 'Left',
-		alignCenter	: 'Center',
-		alignRight	: 'Right',
-		width		: 'Width',
 		widthPx		: 'pixels',
 		widthPc		: 'percent',
 		widthUnit	: 'width unit',
-		height		: 'Height',
 		cellSpace	: 'Cell spacing',
 		cellPad		: 'Cell padding',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment',
 			vAlign			: 'Vertical Alignment',
-			alignTop		: 'Top',
-			alignMiddle		: 'Middle',
-			alignBottom		: 'Bottom',
 			alignBaseline	: 'Baseline',
 			bgColor			: 'Background Color',
@@ -411,6 +412,4 @@
 		upload		: 'Upload',
 		alt			: 'Alternative Text',
-		width		: 'Width',
-		height		: 'Height',
 		lockRatio	: 'Lock Ratio',
 		unlockRatio	: 'Unlock Ratio',
@@ -419,7 +418,4 @@
 		hSpace		: 'HSpace',
 		vSpace		: 'VSpace',
-		align		: 'Align',
-		alignLeft	: 'Left',
-		alignRight	: 'Right',
 		alertUrl	: 'Please type the image URL',
 		linkTab		: 'Link',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?',
 		urlMissing	: 'Image source URL is missing.',
-		validateWidth	: 'Width must be a whole number.',
-		validateHeight	: 'Height must be a whole number.',
 		validateBorder	: 'Border must be a whole number.',
 		validateHSpace	: 'HSpace must be a whole number.',
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain',
 		accessNever		: 'Never',
-		align			: 'Align',
-		alignLeft		: 'Left',
 		alignAbsBottom	: 'Abs Bottom',
 		alignAbsMiddle	: 'Abs Middle',
 		alignBaseline	: 'Baseline',
-		alignBottom		: 'Bottom',
-		alignMiddle		: 'Middle',
-		alignRight		: 'Right',
 		alignTextTop	: 'Text Top',
-		alignTop		: 'Top',
 		quality			: 'Quality',
 		qualityBest		: 'Best',
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash',
 		bgcolor			: 'Background color',
-		width			: 'Width',
-		height			: 'Height',
 		hSpace			: 'HSpace',
 		vSpace			: 'VSpace',
 		validateSrc		: 'URL must not be empty.',
-		validateWidth	: 'Width must be a number.',
-		validateHeight	: 'Height must be a number.',
 		validateHSpace	: 'HSpace must be a number.',
 		validateVSpace	: 'VSpace must be a number.'
@@ -529,8 +513,8 @@
 	justify :
 	{
-		left	: 'Left Justify',
-		center	: 'Center Justify',
-		right	: 'Right Justify',
-		block	: 'Block Justify'
+		left	: 'Align Left',
+		center	: 'Center',
+		right	: 'Align Right',
+		block	: 'Justify'
 	},
 
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div'
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties',
+		toolbar		: 'iFrame',
+		noUrl		: 'Please type the iFrame URL',
+		scrolling	: 'Enable scrollbars',
+		border		: 'Show frame border'
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor',
-		flash	: 'Flash Animation',
-		div		: 'Page Break',
-		unknown	: 'Unknown Object'
+		anchor		: 'Anchor',
+		flash		: 'Flash Animation',
+		iframe		: 'iFrame',
+		hiddenfield	: 'Hidden Field',
+		unknown		: 'Unknown Object'
 	},
 
Index: CKEditor/trunk/_source/lang/eo.js
===================================================================
--- CKEditor/trunk/_source/lang/eo.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/eo.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Enmeti Horizonta Linio',
 	pagebreak		: 'Insert Page Break for Printing', // MISSING
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Forigi Ligilon',
 	undo			: 'Malfari',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Larĝo',
+		height			: 'Alto',
+		align			: 'Ĝisrandigo',
+		alignLeft		: 'Maldekstre',
+		alignRight		: 'Dekstre',
+		alignCenter		: 'Centre',
+		alignTop		: 'Supre',
+		alignMiddle		: 'Centre',
+		alignBottom		: 'Malsupre',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Rulumlisteloj',
 		popupDependent	: 'Dependa (Netscape)',
-		popupWidth		: 'Larĝo',
 		popupLeft		: 'Pozicio de Maldekstro',
-		popupHeight		: 'Alto',
 		popupTop		: 'Pozicio de Supro',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Kolumnoj',
 		border		: 'Bordero',
-		align		: 'Ĝisrandigo',
-		alignLeft	: 'Maldekstre',
-		alignCenter	: 'Centre',
-		alignRight	: 'Dekstre',
-		width		: 'Larĝo',
 		widthPx		: 'Bitbilderoj',
 		widthPc		: 'elcentoj',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Alto',
 		cellSpace	: 'Interspacigo de Ĉeloj',
 		cellPad		: 'Ĉirkaŭenhava Plenigado',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Alŝuti',
 		alt			: 'Anstataŭiga Teksto',
-		width		: 'Larĝo',
-		height		: 'Alto',
 		lockRatio	: 'Konservi Proporcion',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'HSpaco',
 		vSpace		: 'VSpaco',
-		align		: 'Ĝisrandigo',
-		alignLeft	: 'Maldekstre',
-		alignRight	: 'Dekstre',
 		alertUrl	: 'Bonvolu tajpi la URL de la bildo',
 		linkTab		: 'Link', // MISSING
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Ĝisrandigo',
-		alignLeft		: 'Maldekstre',
 		alignAbsBottom	: 'Abs Malsupre',
 		alignAbsMiddle	: 'Abs Centre',
 		alignBaseline	: 'Je Malsupro de Teksto',
-		alignBottom		: 'Malsupre',
-		alignMiddle		: 'Centre',
-		alignRight		: 'Dekstre',
 		alignTextTop	: 'Je Supro de Teksto',
-		alignTop		: 'Supre',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Fona Koloro',
-		width			: 'Larĝo',
-		height			: 'Alto',
 		hSpace			: 'HSpaco',
 		vSpace			: 'VSpaco',
 		validateSrc		: 'Bonvolu entajpi la URL-on',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/es.js
===================================================================
--- CKEditor/trunk/_source/lang/es.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/es.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Insertar Línea Horizontal',
 	pagebreak		: 'Insertar Salto de Página',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Eliminar Vínculo',
 	undo			: 'Deshacer',
@@ -110,4 +111,15 @@
 		styles			: 'Estilos',
 		cssClasses		: 'Clase de la hoja de estilos',
+		width			: 'Anchura',
+		height			: 'Altura',
+		align			: 'Alineación',
+		alignLeft		: 'Izquierda',
+		alignRight		: 'Derecha',
+		alignCenter		: 'Centrado',
+		alignTop		: 'Tope',
+		alignMiddle		: 'Centro',
+		alignBottom		: 'Pie',
+		invalidHeight	: 'Altura debe ser un número.',
+		invalidWidth	: 'Anchura debe ser un número.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Barras de desplazamiento',
 		popupDependent	: 'Dependiente (Netscape)',
-		popupWidth		: 'Anchura',
 		popupLeft		: 'Posición Izquierda',
-		popupHeight		: 'Altura',
 		popupTop		: 'Posición Derecha',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Columnas',
 		border		: 'Tamaño de Borde',
-		align		: 'Alineación',
-		alignLeft	: 'Izquierda',
-		alignCenter	: 'Centrado',
-		alignRight	: 'Derecha',
-		width		: 'Anchura',
 		widthPx		: 'pixeles',
 		widthPc		: 'porcentaje',
 		widthUnit	: 'unidad de la anchura',
-		height		: 'Altura',
 		cellSpace	: 'Esp. e/celdas',
 		cellPad		: 'Esp. interior',
@@ -288,7 +292,4 @@
 			hAlign			: 'Alineación Horizontal',
 			vAlign			: 'Alineación Vertical',
-			alignTop		: 'Arriba',
-			alignMiddle		: 'Medio',
-			alignBottom		: 'Abajo',
 			alignBaseline	: 'Linea de base',
 			bgColor			: 'Color de fondo',
@@ -411,6 +412,4 @@
 		upload		: 'Cargar',
 		alt			: 'Texto Alternativo',
-		width		: 'Anchura',
-		height		: 'Altura',
 		lockRatio	: 'Proporcional',
 		unlockRatio	: 'Desbloquear el proporcional',
@@ -419,7 +418,4 @@
 		hSpace		: 'Esp.Horiz',
 		vSpace		: 'Esp.Vert',
-		align		: 'Alineación',
-		alignLeft	: 'Izquierda',
-		alignRight	: 'Derecha',
 		alertUrl	: 'Por favor escriba la URL de la imagen',
 		linkTab		: 'Vínculo',
@@ -427,6 +423,4 @@
 		img2Button	: '¿Desea convertir la imagen en un botón de imagen?',
 		urlMissing	: 'Debe indicar la URL de la imagen.',
-		validateWidth	: 'La anchura debe ser un número.',
-		validateHeight	: 'La altura debe ser un número.',
 		validateBorder	: 'El borde debe ser un número.',
 		validateHSpace	: 'El espaciado horizontal debe ser un número.',
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Mismo dominio',
 		accessNever		: 'Nunca',
-		align			: 'Alineación',
-		alignLeft		: 'Izquierda',
 		alignAbsBottom	: 'Abs inferior',
 		alignAbsMiddle	: 'Abs centro',
 		alignBaseline	: 'Línea de base',
-		alignBottom		: 'Pie',
-		alignMiddle		: 'Centro',
-		alignRight		: 'Derecha',
 		alignTextTop	: 'Tope del texto',
-		alignTop		: 'Tope',
 		quality			: 'Calidad',
 		qualityBest		: 'La mejor',
@@ -475,11 +463,7 @@
 		flashvars		: 'Opciones',
 		bgcolor			: 'Color de Fondo',
-		width			: 'Anchura',
-		height			: 'Altura',
 		hSpace			: 'Esp.Horiz',
 		vSpace			: 'Esp.Vert',
 		validateSrc		: 'Por favor escriba el vínculo URL',
-		validateWidth	: 'Anchura debe ser un número.',
-		validateHeight	: 'Altura debe ser un número.',
 		validateHSpace	: 'Esp.Horiz debe ser un número.',
 		validateVSpace	: 'Esp.Vert debe ser un número.'
@@ -615,4 +599,13 @@
 		remove				: 'Quitar Div'
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Ancla',
-		flash	: 'Animación flash',
-		div		: 'Salto de página',
-		unknown	: 'Objeto desconocido'
+		anchor		: 'Ancla',
+		flash		: 'Animación flash',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Objeto desconocido'
 	},
 
Index: CKEditor/trunk/_source/lang/et.js
===================================================================
--- CKEditor/trunk/_source/lang/et.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/et.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Sisesta horisontaaljoon',
 	pagebreak		: 'Sisesta lehevahetuskoht',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Eemalda link',
 	undo			: 'Võta tagasi',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Laius',
+		height			: 'Kõrgus',
+		align			: 'Joondus',
+		alignLeft		: 'Vasak',
+		alignRight		: 'Paremale',
+		alignCenter		: 'Kesk',
+		alignTop		: 'Üles',
+		alignMiddle		: 'Keskele',
+		alignBottom		: 'Alla',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Kerimisribad',
 		popupDependent	: 'Sõltuv (Netscape)',
-		popupWidth		: 'Laius',
 		popupLeft		: 'Vasak asukoht',
-		popupHeight		: 'Kõrgus',
 		popupTop		: 'Ülemine asukoht',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Veerud',
 		border		: 'Joone suurus',
-		align		: 'Joondus',
-		alignLeft	: 'Vasak',
-		alignCenter	: 'Kesk',
-		alignRight	: 'Parem',
-		width		: 'Laius',
 		widthPx		: 'pikslit',
 		widthPc		: 'protsenti',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Kõrgus',
 		cellSpace	: 'Lahtri vahe',
 		cellPad		: 'Lahtri täidis',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Lae üles',
 		alt			: 'Alternatiivne tekst',
-		width		: 'Laius',
-		height		: 'Kõrgus',
 		lockRatio	: 'Lukusta kuvasuhe',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'H. vaheruum',
 		vSpace		: 'V. vaheruum',
-		align		: 'Joondus',
-		alignLeft	: 'Vasak',
-		alignRight	: 'Paremale',
 		alertUrl	: 'Palun kirjuta pildi URL',
 		linkTab		: 'Link',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Joondus',
-		alignLeft		: 'Vasak',
 		alignAbsBottom	: 'Abs alla',
 		alignAbsMiddle	: 'Abs keskele',
 		alignBaseline	: 'Baasjoonele',
-		alignBottom		: 'Alla',
-		alignMiddle		: 'Keskele',
-		alignRight		: 'Paremale',
 		alignTextTop	: 'Tekstit üles',
-		alignTop		: 'Üles',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Tausta värv',
-		width			: 'Laius',
-		height			: 'Kõrgus',
 		hSpace			: 'H. vaheruum',
 		vSpace			: 'V. vaheruum',
 		validateSrc		: 'Palun kirjuta lingi URL',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/eu.js
===================================================================
--- CKEditor/trunk/_source/lang/eu.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/eu.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Txertatu Marra Horizontala',
 	pagebreak		: 'Txertatu Orrialde-jauzia',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Kendu Esteka',
 	undo			: 'Desegin',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Zabalera',
+		height			: 'Altuera',
+		align			: 'Lerrokatu',
+		alignLeft		: 'Ezkerrera',
+		alignRight		: 'Eskuman',
+		alignCenter		: 'Erdian',
+		alignTop		: 'Goian',
+		alignMiddle		: 'Erdian',
+		alignBottom		: 'Behean',
+		invalidHeight	: 'Altuera zenbaki bat izan behar da.',
+		invalidWidth	: 'Zabalera zenbaki bat izan behar da.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Korritze Barrak',
 		popupDependent	: 'Menpekoa (Netscape)',
-		popupWidth		: 'Zabalera',
 		popupLeft		: 'Ezkerreko  Posizioa',
-		popupHeight		: 'Altuera',
 		popupTop		: 'Goiko Posizioa',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Zutabeak',
 		border		: 'Ertzaren Zabalera',
-		align		: 'Lerrokatu',
-		alignLeft	: 'Ezkerrean',
-		alignCenter	: 'Erdian',
-		alignRight	: 'Eskuman',
-		width		: 'Zabalera',
 		widthPx		: 'pixel',
 		widthPc		: 'ehuneko',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Altuera',
 		cellSpace	: 'Gelaxka arteko tartea',
 		cellPad		: 'Gelaxken betegarria',
@@ -288,7 +292,4 @@
 			hAlign			: 'Lerrokatze Horizontala',
 			vAlign			: 'Lerrokatze Bertikala',
-			alignTop		: 'Goian',
-			alignMiddle		: 'Erdian',
-			alignBottom		: 'Behean',
 			alignBaseline	: 'Oinarri-lerroan',
 			bgColor			: 'Fondoaren Kolorea',
@@ -411,6 +412,4 @@
 		upload		: 'Gora Kargatu',
 		alt			: 'Ordezko Testua',
-		width		: 'Zabalera',
-		height		: 'Altuera',
 		lockRatio	: 'Erlazioa Blokeatu',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'HSpace',
 		vSpace		: 'VSpace',
-		align		: 'Lerrokatu',
-		alignLeft	: 'Ezkerrera',
-		alignRight	: 'Eskuman',
 		alertUrl	: 'Mesedez Irudiaren URLa idatzi',
 		linkTab		: 'Esteka',
@@ -427,6 +423,4 @@
 		img2Button	: 'Aukeratutako irudia, irudi botoi batean eraldatu nahi duzu?',
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Domeinu berdinekoak',
 		accessNever		: 'Inoiz ere ez',
-		align			: 'Lerrokatu',
-		alignLeft		: 'Ezkerrera',
 		alignAbsBottom	: 'Abs Behean',
 		alignAbsMiddle	: 'Abs Erdian',
 		alignBaseline	: 'Oinan',
-		alignBottom		: 'Behean',
-		alignMiddle		: 'Erdian',
-		alignRight		: 'Eskuman',
 		alignTextTop	: 'Testua Goian',
-		alignTop		: 'Goian',
 		quality			: 'Kalitatea',
 		qualityBest		: 'Hoberena',
@@ -475,11 +463,7 @@
 		flashvars		: 'Flash Aldagaiak',
 		bgcolor			: 'Atzeko kolorea',
-		width			: 'Zabalera',
-		height			: 'Altuera',
 		hSpace			: 'HSpace',
 		vSpace			: 'VSpace',
 		validateSrc		: 'Mesedez URL esteka idatzi',
-		validateWidth	: 'Zabalera zenbaki bat izan behar da.',
-		validateHeight	: 'Altuera zenbaki bat izan behar da.',
 		validateHSpace	: 'HSpace zenbaki bat izan behar da.',
 		validateVSpace	: 'VSpace zenbaki bat izan behar da.'
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Aingura',
-		flash	: 'Flash Animazioa',
-		div		: 'Orrialde Saltoa',
-		unknown	: 'Objektu ezezaguna'
+		anchor		: 'Aingura',
+		flash		: 'Flash Animazioa',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Objektu ezezaguna'
 	},
 
Index: CKEditor/trunk/_source/lang/fa.js
===================================================================
--- CKEditor/trunk/_source/lang/fa.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/fa.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'گنجاندن خط ِافقی',
 	pagebreak		: 'گنجاندن شکستگی ِپایان ِبرگه',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'برداشتن پیوند',
 	undo			: 'واچیدن',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'پهنا',
+		height			: 'درازا',
+		align			: 'چینش',
+		alignLeft		: 'چپ',
+		alignRight		: 'راست',
+		alignCenter		: 'وسط',
+		alignTop		: 'بالا',
+		alignMiddle		: 'وسط',
+		alignBottom		: 'پائین',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'میلههای پیمایش',
 		popupDependent	: 'وابسته (Netscape)',
-		popupWidth		: 'پهنا',
 		popupLeft		: 'موقعیت ِچپ',
-		popupHeight		: 'درازا',
 		popupTop		: 'موقعیت ِبالا',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'ستونها',
 		border		: 'اندازهٴ لبه',
-		align		: 'چینش',
-		alignLeft	: 'چپ',
-		alignCenter	: 'وسط',
-		alignRight	: 'راست',
-		width		: 'پهنا',
 		widthPx		: 'پیکسل',
 		widthPc		: 'درصد',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'درازا',
 		cellSpace	: 'فاصلهٴ میان سلولها',
 		cellPad		: 'فاصلهٴ پرشده در سلول',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'انتقال به سرور',
 		alt			: 'متن جایگزین',
-		width		: 'پهنا',
-		height		: 'درازا',
 		lockRatio	: 'قفلکردن ِنسبت',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'فاصلهٴ افقی',
 		vSpace		: 'فاصلهٴ عمودی',
-		align		: 'چینش',
-		alignLeft	: 'چپ',
-		alignRight	: 'راست',
 		alertUrl	: 'لطفا URL تصویر را بنویسید',
 		linkTab		: 'پیوند',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'چینش',
-		alignLeft		: 'چپ',
 		alignAbsBottom	: 'پائین مطلق',
 		alignAbsMiddle	: 'وسط مطلق',
 		alignBaseline	: 'خطپایه',
-		alignBottom		: 'پائین',
-		alignMiddle		: 'وسط',
-		alignRight		: 'راست',
 		alignTextTop	: 'متن بالا',
-		alignTop		: 'بالا',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'رنگ پسزمینه',
-		width			: 'پهنا',
-		height			: 'درازا',
 		hSpace			: 'فاصلهٴ افقی',
 		vSpace			: 'فاصلهٴ عمودی',
 		validateSrc		: 'لطفا URL پیوند را بنویسید',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/fi.js
===================================================================
--- CKEditor/trunk/_source/lang/fi.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/fi.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Lisää murtoviiva',
 	pagebreak		: 'Lisää sivun vaihto',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Poista linkki',
 	undo			: 'Kumoa',
@@ -110,4 +111,15 @@
 		styles			: 'Tyyli',
 		cssClasses		: 'Tyylitiedoston luokat',
+		width			: 'Leveys',
+		height			: 'Korkeus',
+		align			: 'Kohdistus',
+		alignLeft		: 'Vasemmalle',
+		alignRight		: 'Oikealle',
+		alignCenter		: 'Keskelle',
+		alignTop		: 'Ylös',
+		alignMiddle		: 'Keskelle',
+		alignBottom		: 'Alas',
+		invalidHeight	: 'Korkeuden täytyy olla numero.',
+		invalidWidth	: 'Leveyden täytyy olla numero.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Vierityspalkit',
 		popupDependent	: 'Riippuva (Netscape)',
-		popupWidth		: 'Leveys',
 		popupLeft		: 'Vasemmalta (px)',
-		popupHeight		: 'Korkeus',
 		popupTop		: 'Ylhäältä (px)',
 		id				: 'Tunniste',
@@ -244,13 +254,7 @@
 		columns		: 'Sarakkeet',
 		border		: 'Rajan paksuus',
-		align		: 'Kohdistus',
-		alignLeft	: 'Vasemmalle',
-		alignCenter	: 'Keskelle',
-		alignRight	: 'Oikealle',
-		width		: 'Leveys',
 		widthPx		: 'pikseliä',
 		widthPc		: 'prosenttia',
 		widthUnit	: 'leveysyksikkö',
-		height		: 'Korkeus',
 		cellSpace	: 'Solujen väli',
 		cellPad		: 'Solujen sisennys',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horisontaali kohdistus',
 			vAlign			: 'Vertikaali kohdistus',
-			alignTop		: 'Ylös',
-			alignMiddle		: 'Keskelle',
-			alignBottom		: 'Alas',
 			alignBaseline	: 'Alas (teksti)',
 			bgColor			: 'Taustan väri',
@@ -411,6 +412,4 @@
 		upload		: 'Lisää kuva',
 		alt			: 'Vaihtoehtoinen teksti',
-		width		: 'Leveys',
-		height		: 'Korkeus',
 		lockRatio	: 'Lukitse suhteet',
 		unlockRatio	: 'Vapauta suhteet',
@@ -419,7 +418,4 @@
 		hSpace		: 'Vaakatila',
 		vSpace		: 'Pystytila',
-		align		: 'Kohdistus',
-		alignLeft	: 'Vasemmalle',
-		alignRight	: 'Oikealle',
 		alertUrl	: 'Kirjoita kuvan osoite (URL)',
 		linkTab		: 'Linkki',
@@ -427,6 +423,4 @@
 		img2Button	: 'Haluatko muuntaa valitun kuvan kuvanäppäimeksi?',
 		urlMissing	: 'Kuvan lähdeosoite puuttuu.',
-		validateWidth	: 'Leveyden täytyy olla kokonaisluku.',
-		validateHeight	: 'Korkeuden täytyy olla kokonaisluku.',
 		validateBorder	: 'Kehyksen täytyy olla kokonaisluku.',
 		validateHSpace	: 'HSpace-määrityksen täytyy olla kokonaisluku.',
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Sama verkkotunnus',
 		accessNever		: 'Ei koskaan',
-		align			: 'Kohdistus',
-		alignLeft		: 'Vasemmalle',
 		alignAbsBottom	: 'Aivan alas',
 		alignAbsMiddle	: 'Aivan keskelle',
 		alignBaseline	: 'Alas (teksti)',
-		alignBottom		: 'Alas',
-		alignMiddle		: 'Keskelle',
-		alignRight		: 'Oikealle',
 		alignTextTop	: 'Ylös (teksti)',
-		alignTop		: 'Ylös',
 		quality			: 'Laatu',
 		qualityBest		: 'Paras',
@@ -475,11 +463,7 @@
 		flashvars		: 'Muuttujat Flash:lle',
 		bgcolor			: 'Taustaväri',
-		width			: 'Leveys',
-		height			: 'Korkeus',
 		hSpace			: 'Vaakatila',
 		vSpace			: 'Pystytila',
 		validateSrc		: 'Linkille on kirjoitettava URL',
-		validateWidth	: 'Leveyden täytyy olla numero.',
-		validateHeight	: 'Korkeuden täytyy olla numero.',
 		validateHSpace	: 'Vaakatilan täytyy olla numero.',
 		validateVSpace	: 'Pystytilan täytyy olla numero.'
@@ -615,4 +599,13 @@
 		remove				: 'Poista Div'
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Ankkuri',
-		flash	: 'Flash animaatio',
-		div		: 'Sivun vaihto',
-		unknown	: 'Tuntematon objekti'
+		anchor		: 'Ankkuri',
+		flash		: 'Flash animaatio',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Tuntematon objekti'
 	},
 
Index: CKEditor/trunk/_source/lang/fo.js
===================================================================
--- CKEditor/trunk/_source/lang/fo.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/fo.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Ger vatnrætta linju',
 	pagebreak		: 'Ger síðuskift',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Strika tilknýti',
 	undo			: 'Angra',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Breidd',
+		height			: 'Hædd',
+		align			: 'Justering',
+		alignLeft		: 'Vinstra',
+		alignRight		: 'Høgra',
+		alignCenter		: 'Miðsett',
+		alignTop		: 'Ovast',
+		alignMiddle		: 'Miðja',
+		alignBottom		: 'Botnur',
+		invalidHeight	: 'Hædd má vera eitt tal.',
+		invalidWidth	: 'Breidd má vera eitt tal.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Rullibjálki',
 		popupDependent	: 'Bundið (Netscape)',
-		popupWidth		: 'Breidd',
 		popupLeft		: 'Frástøða frá vinstru',
-		popupHeight		: 'Hædd',
 		popupTop		: 'Frástøða frá íerva',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Kolonnur',
 		border		: 'Bordabreidd',
-		align		: 'Justering',
-		alignLeft	: 'Vinstrasett',
-		alignCenter	: 'Miðsett',
-		alignRight	: 'Høgrasett',
-		width		: 'Breidd',
 		widthPx		: 'pixels',
 		widthPc		: 'prosent',
 		widthUnit	: 'breiddar unit',
-		height		: 'Hædd',
 		cellSpace	: 'Fjarstøða millum meskar',
 		cellPad		: 'Meskubreddi',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horisontal plasering',
 			vAlign			: 'Loddrøtt plasering',
-			alignTop		: 'Top',
-			alignMiddle		: 'Miðja',
-			alignBottom		: 'Botnur',
 			alignBaseline	: 'Basislinja',
 			bgColor			: 'Bakgrundslitur',
@@ -411,6 +412,4 @@
 		upload		: 'Send',
 		alt			: 'Alternativur tekstur',
-		width		: 'Breidd',
-		height		: 'Hædd',
 		lockRatio	: 'Læs lutfallið',
 		unlockRatio	: 'Lutfallið ikki læst',
@@ -419,7 +418,4 @@
 		hSpace		: 'Høgri breddi',
 		vSpace		: 'Vinstri breddi',
-		align		: 'Justering',
-		alignLeft	: 'Vinstra',
-		alignRight	: 'Høgra',
 		alertUrl	: 'Rita slóðina til myndina',
 		linkTab		: 'Tilknýti',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'URL til mynd manglar.',
-		validateWidth	: 'Breidd má vera eitt heiltal.',
-		validateHeight	: 'Hædd má vera eitt heiltal.',
 		validateBorder	: 'Bordi má vera eitt heiltal.',
 		validateHSpace	: 'HSpace má vera eitt heiltal.',
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Sama navnaøki',
 		accessNever		: 'Ongantíð',
-		align			: 'Justering',
-		alignLeft		: 'Vinstra',
 		alignAbsBottom	: 'Abs botnur',
 		alignAbsMiddle	: 'Abs miðja',
 		alignBaseline	: 'Basislinja',
-		alignBottom		: 'Botnur',
-		alignMiddle		: 'Miðja',
-		alignRight		: 'Høgra',
 		alignTextTop	: 'Tekst toppur',
-		alignTop		: 'Ovast',
 		quality			: 'Góðska',
 		qualityBest		: 'Besta',
@@ -475,11 +463,7 @@
 		flashvars		: 'Variablar fyri Flash',
 		bgcolor			: 'Bakgrundslitur',
-		width			: 'Breidd',
-		height			: 'Hædd',
 		hSpace			: 'Høgri breddi',
 		vSpace			: 'Vinstri breddi',
 		validateSrc		: 'Vinarliga skriva tilknýti (URL)',
-		validateWidth	: 'Breidd má vera eitt tal.',
-		validateHeight	: 'Hædd má vera eitt tal.',
 		validateHSpace	: 'HSpace má vera eitt tal.',
 		validateVSpace	: 'VSpace má vera eitt tal.'
@@ -615,4 +599,13 @@
 		remove				: 'Strika Div'
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Síðuskift',
-		unknown	: 'Ókent Object'
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Ókent Object'
 	},
 
Index: CKEditor/trunk/_source/lang/fr-ca.js
===================================================================
--- CKEditor/trunk/_source/lang/fr-ca.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/fr-ca.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Insérer un séparateur',
 	pagebreak		: 'Insérer un saut de page',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Supprimer le lien',
 	undo			: 'Annuler',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Largeur',
+		height			: 'Hauteur',
+		align			: 'Alignement',
+		alignLeft		: 'Gauche',
+		alignRight		: 'Droite',
+		alignCenter		: 'Centré',
+		alignTop		: 'Haut',
+		alignMiddle		: 'Milieu',
+		alignBottom		: 'Bas',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Barres de défilement',
 		popupDependent	: 'Dépendante (Netscape)',
-		popupWidth		: 'Largeur',
 		popupLeft		: 'Position à partir de la gauche',
-		popupHeight		: 'Hauteur',
 		popupTop		: 'Position à partir du haut',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Colonnes',
 		border		: 'Taille de la bordure',
-		align		: 'Alignement',
-		alignLeft	: 'Gauche',
-		alignCenter	: 'Centré',
-		alignRight	: 'Droite',
-		width		: 'Largeur',
 		widthPx		: 'pixels',
 		widthPc		: 'pourcentage',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Hauteur',
 		cellSpace	: 'Espacement',
 		cellPad		: 'Contour',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Télécharger',
 		alt			: 'Texte de remplacement',
-		width		: 'Largeur',
-		height		: 'Hauteur',
 		lockRatio	: 'Garder les proportions',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'Espacement horizontal',
 		vSpace		: 'Espacement vertical',
-		align		: 'Alignement',
-		alignLeft	: 'Gauche',
-		alignRight	: 'Droite',
 		alertUrl	: 'Veuillez saisir l\'URL de l\'image',
 		linkTab		: 'Lien',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Alignement',
-		alignLeft		: 'Gauche',
 		alignAbsBottom	: 'Abs Bas',
 		alignAbsMiddle	: 'Abs Milieu',
 		alignBaseline	: 'Bas du texte',
-		alignBottom		: 'Bas',
-		alignMiddle		: 'Milieu',
-		alignRight		: 'Droite',
 		alignTextTop	: 'Haut du texte',
-		alignTop		: 'Haut',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Couleur de fond',
-		width			: 'Largeur',
-		height			: 'Hauteur',
 		hSpace			: 'Espacement horizontal',
 		vSpace			: 'Espacement vertical',
 		validateSrc		: 'Veuillez saisir l\'URL',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/fr.js
===================================================================
--- CKEditor/trunk/_source/lang/fr.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/fr.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Ligne horizontale',
 	pagebreak		: 'Saut de page',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Supprimer le lien',
 	undo			: 'Annuler',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Largeur',
+		height			: 'Hauteur',
+		align			: 'Alignement',
+		alignLeft		: 'Gauche',
+		alignRight		: 'Droite',
+		alignCenter		: 'Centré',
+		alignTop		: 'Haut',
+		alignMiddle		: 'Milieu',
+		alignBottom		: 'Bas',
+		invalidHeight	: 'La hauteur doit être un nombre.',
+		invalidWidth	: 'La largeur doit être un nombre.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Barres de défilement',
 		popupDependent	: 'Dépendante (Netscape)',
-		popupWidth		: 'Largeur',
 		popupLeft		: 'Position gauche',
-		popupHeight		: 'Hauteur',
 		popupTop		: 'Position haute',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Colonnes',
 		border		: 'Taille de la bordure',
-		align		: 'Alignement du contenu',
-		alignLeft	: 'Gauche',
-		alignCenter	: 'Centré',
-		alignRight	: 'Droite',
-		width		: 'Largeur',
 		widthPx		: 'pixels',
 		widthPc		: '% pourcents',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Hauteur',
 		cellSpace	: 'Espacement des cellules',
 		cellPad		: 'Marge interne des cellules',
@@ -288,7 +292,4 @@
 			hAlign			: 'Alignement Horizontal',
 			vAlign			: 'Alignement Vertical',
-			alignTop		: 'Haut',
-			alignMiddle		: 'Milieu',
-			alignBottom		: 'Bas',
 			alignBaseline	: 'Bas du texte',
 			bgColor			: 'Couleur d\'arrière-plan',
@@ -411,6 +412,4 @@
 		upload		: 'Envoyer',
 		alt			: 'Texte de remplacement',
-		width		: 'Largeur',
-		height		: 'Hauteur',
 		lockRatio	: 'Garder les proportions',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'Espacement horizontal',
 		vSpace		: 'Espacement vertical',
-		align		: 'Alignement',
-		alignLeft	: 'Gauche',
-		alignRight	: 'Droite',
 		alertUrl	: 'Veuillez entrer l\'adresse de l\'image',
 		linkTab		: 'Lien',
@@ -427,6 +423,4 @@
 		img2Button	: 'Voulez-vous transformer l\'image en bouton image?',
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Même domaine',
 		accessNever		: 'Jamais',
-		align			: 'Alignement',
-		alignLeft		: 'Gauche',
 		alignAbsBottom	: 'Bas absolu',
 		alignAbsMiddle	: 'Milieu absolu',
 		alignBaseline	: 'Bas du texte',
-		alignBottom		: 'Bas',
-		alignMiddle		: 'Milieu',
-		alignRight		: 'Droite',
 		alignTextTop	: 'Haut du texte',
-		alignTop		: 'Haut',
 		quality			: 'Qualité',
 		qualityBest		: 'Meilleure',
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables du Flash',
 		bgcolor			: 'Couleur d\'arrière-plan',
-		width			: 'Largeur',
-		height			: 'Hauteur',
 		hSpace			: 'Espacement horizontal',
 		vSpace			: 'Espacement vertical',
 		validateSrc		: 'L\'adresse ne doit pas être vide.',
-		validateWidth	: 'La largeur doit être un nombre.',
-		validateHeight	: 'La hauteur doit être un nombre.',
 		validateHSpace	: 'L\'espacement horizontal doit être un nombre.',
 		validateVSpace	: 'L\'espacement vertical doit être un nombre.'
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Ancre',
-		flash	: 'Animation Flash',
-		div		: 'Saut de Page',
-		unknown	: 'Objet Inconnu'
+		anchor		: 'Ancre',
+		flash		: 'Animation Flash',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Objet Inconnu'
 	},
 
Index: CKEditor/trunk/_source/lang/gl.js
===================================================================
--- CKEditor/trunk/_source/lang/gl.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/gl.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Inserir Liña Horizontal',
 	pagebreak		: 'Inserir Salto de Páxina',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Eliminar Ligazón',
 	undo			: 'Desfacer',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Largura',
+		height			: 'Altura',
+		align			: 'Aliñamento',
+		alignLeft		: 'Esquerda',
+		alignRight		: 'Dereita',
+		alignCenter		: 'Centro',
+		alignTop		: 'Tope',
+		alignMiddle		: 'Centro',
+		alignBottom		: 'Pé',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Barras de Desplazamento',
 		popupDependent	: 'Dependente (Netscape)',
-		popupWidth		: 'Largura',
 		popupLeft		: 'Posición Esquerda',
-		popupHeight		: 'Altura',
 		popupTop		: 'Posición dende Arriba',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Columnas',
 		border		: 'Tamaño do Borde',
-		align		: 'Aliñamento',
-		alignLeft	: 'Esquerda',
-		alignCenter	: 'Centro',
-		alignRight	: 'Ereita',
-		width		: 'Largura',
 		widthPx		: 'pixels',
 		widthPc		: 'percent',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Altura',
 		cellSpace	: 'Marxe entre Celas',
 		cellPad		: 'Marxe interior',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Carregar',
 		alt			: 'Texto Alternativo',
-		width		: 'Largura',
-		height		: 'Altura',
 		lockRatio	: 'Proporcional',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'Esp. Horiz.',
 		vSpace		: 'Esp. Vert.',
-		align		: 'Aliñamento',
-		alignLeft	: 'Esquerda',
-		alignRight	: 'Dereita',
 		alertUrl	: 'Por favor, escriba a URL da imaxe',
 		linkTab		: 'Ligazón',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Aliñamento',
-		alignLeft		: 'Esquerda',
 		alignAbsBottom	: 'Abs Inferior',
 		alignAbsMiddle	: 'Abs Centro',
 		alignBaseline	: 'Liña Base',
-		alignBottom		: 'Pé',
-		alignMiddle		: 'Centro',
-		alignRight		: 'Dereita',
 		alignTextTop	: 'Tope do Texto',
-		alignTop		: 'Tope',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Cor do Fondo',
-		width			: 'Largura',
-		height			: 'Altura',
 		hSpace			: 'Esp. Horiz.',
 		vSpace			: 'Esp. Vert.',
 		validateSrc		: 'Por favor, escriba a ligazón URL',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/gu.js
===================================================================
--- CKEditor/trunk/_source/lang/gu.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/gu.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'સમસ્તરીય રેખા ઇન્સર્ટ/દાખલ કરવી',
 	pagebreak		: 'ઇન્સર્ટ પેજબ્રેક/પાનાને અલગ કરવું/દાખલ કરવું',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'લિંક કાઢવી',
 	undo			: 'રદ કરવું; પહેલાં હતી એવી સ્થિતિ પાછી લાવવી',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'પહોળાઈ',
+		height			: 'ઊંચાઈ',
+		align			: 'લાઇનદોરીમાં ગોઠવવું',
+		alignLeft		: 'ડાબી બાજુ ગોઠવવું',
+		alignRight		: 'જમણી',
+		alignCenter		: 'મધ્ય સેન્ટર',
+		alignTop		: 'ઉપર',
+		alignMiddle		: 'વચ્ચે',
+		alignBottom		: 'નીચે',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'સ્ક્રોલ બાર',
 		popupDependent	: 'ડિપેન્ડન્ટ (Netscape)',
-		popupWidth		: 'પહોળાઈ',
 		popupLeft		: 'ડાબી બાજુ',
-		popupHeight		: 'ઊંચાઈ',
 		popupTop		: 'જમણી બાજુ',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'કૉલમ/ઊભી કટાર',
 		border		: 'કોઠાની બાજુ(બોર્ડર) સાઇઝ',
-		align		: 'અલાઇનમન્ટ/ગોઠવાયેલું ',
-		alignLeft	: 'ડાબી બાજુ',
-		alignCenter	: 'મધ્ય સેન્ટર',
-		alignRight	: 'જમણી બાજુ',
-		width		: 'પહોળાઈ',
 		widthPx		: 'પિકસલ',
 		widthPc		: 'પ્રતિશત',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'ઊંચાઈ',
 		cellSpace	: 'સેલ અંતર',
 		cellPad		: 'સેલ પૅડિંગ',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'અપલોડ',
 		alt			: 'ઑલ્ટર્નટ ટેક્સ્ટ',
-		width		: 'પહોળાઈ',
-		height		: 'ઊંચાઈ',
 		lockRatio	: 'લૉક ગુણોત્તર',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'સમસ્તરીય જગ્યા',
 		vSpace		: 'લંબરૂપ જગ્યા',
-		align		: 'લાઇનદોરીમાં ગોઠવવું',
-		alignLeft	: 'ડાબી બાજુ ગોઠવવું',
-		alignRight	: 'જમણી',
 		alertUrl	: 'ચિત્રની URL ટાઇપ કરો',
 		linkTab		: 'લિંક',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'લાઇનદોરીમાં ગોઠવવું',
-		alignLeft		: 'ડાબી બાજુ ગોઠવવું',
 		alignAbsBottom	: 'Abs નીચે',
 		alignAbsMiddle	: 'Abs ઉપર',
 		alignBaseline	: 'આધાર લીટી',
-		alignBottom		: 'નીચે',
-		alignMiddle		: 'વચ્ચે',
-		alignRight		: 'જમણી',
 		alignTextTop	: 'ટેક્સ્ટ ઉપર',
-		alignTop		: 'ઉપર',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'બૅકગ્રાઉન્ડ રંગ,',
-		width			: 'પહોળાઈ',
-		height			: 'ઊંચાઈ',
 		hSpace			: 'સમસ્તરીય જગ્યા',
 		vSpace			: 'લંબરૂપ જગ્યા',
 		validateSrc		: 'લિંક  URL ટાઇપ કરો',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/he.js
===================================================================
--- CKEditor/trunk/_source/lang/he.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/he.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'הוספת קו אופקי',
 	pagebreak		: 'הוספת שבירת דף',
+	pagebreakAlt		: 'שבירת דף',
 	unlink			: 'הסרת הקישור',
 	undo			: 'ביטול צעד אחרון',
@@ -110,4 +111,15 @@
 		styles			: 'סגנון',
 		cssClasses		: 'מחלקות גליונות סגנון',
+		width			: 'רוחב',
+		height			: 'גובה',
+		align			: 'יישור',
+		alignLeft		: 'לשמאל',
+		alignRight		: 'לימין',
+		alignCenter		: 'מרכז',
+		alignTop		: 'למעלה',
+		alignMiddle		: 'לאמצע',
+		alignBottom		: 'לתחתית',
+		invalidHeight	: 'הגובה חייב להיות מספר.',
+		invalidWidth	: 'הרוחב חייב להיות מספר.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'ניתן לגלילה',
 		popupDependent	: 'תלוי (Netscape)',
-		popupWidth		: 'רוחב',
 		popupLeft		: 'מיקום צד שמאל',
-		popupHeight		: 'גובה',
 		popupTop		: 'מיקום צד עליון',
 		id				: 'זיהוי (ID)',
@@ -244,13 +254,7 @@
 		columns		: 'עמודות',
 		border		: 'גודל מסגרת',
-		align		: 'יישור',
-		alignLeft	: 'שמאל',
-		alignCenter	: 'מרכז',
-		alignRight	: 'ימין',
-		width		: 'רוחב',
 		widthPx		: 'פיקסלים',
 		widthPc		: 'אחוז',
 		widthUnit	: 'יחידת רוחב',
-		height		: 'גובה',
 		cellSpace	: 'מרווח תא',
 		cellPad		: 'ריפוד תא',
@@ -288,7 +292,4 @@
 			hAlign			: 'יישור אופקי',
 			vAlign			: 'יישור אנכי',
-			alignTop		: 'למעלה',
-			alignMiddle		: 'מרכז',
-			alignBottom		: 'למטה',
 			alignBaseline	: 'שורת בסיס',
 			bgColor			: 'צבע רקע',
@@ -411,6 +412,4 @@
 		upload		: 'העלאה',
 		alt			: 'טקסט חלופי',
-		width		: 'רוחב',
-		height		: 'גובה',
 		lockRatio	: 'נעילת היחס',
 		unlockRatio	: 'ביטול נעילת היחס',
@@ -419,7 +418,4 @@
 		hSpace		: 'מרווח אופקי',
 		vSpace		: 'מרווח אנכי',
-		align		: 'יישור',
-		alignLeft	: 'לשמאל',
-		alignRight	: 'לימין',
 		alertUrl	: 'יש להקליד את כתובת התמונה',
 		linkTab		: 'קישור',
@@ -427,6 +423,4 @@
 		img2Button	: 'האם להפוך את התמונה לכפתור תמונה?',
 		urlMissing	: 'כתובת התמונה חסרה.',
-		validateWidth	: 'שדה הרוחב חייב להיות מספר שלם.',
-		validateHeight	: 'שדה הגובה חייב להיות מספר שלם.',
 		validateBorder	: 'שדה המסגרת חייב להיות מספר שלם.',
 		validateHSpace	: 'שדה המרווח האופקי חייב להיות מספר שלם.',
@@ -452,14 +446,8 @@
 		accessSameDomain: 'דומיין זהה',
 		accessNever		: 'אף פעם',
-		align			: 'יישור',
-		alignLeft		: 'לשמאל',
 		alignAbsBottom	: 'לתחתית האבסולוטית',
 		alignAbsMiddle	: 'מרכוז אבסולוטי',
 		alignBaseline	: 'לקו התחתית',
-		alignBottom		: 'לתחתית',
-		alignMiddle		: 'לאמצע',
-		alignRight		: 'לימין',
 		alignTextTop	: 'לראש הטקסט',
-		alignTop		: 'למעלה',
 		quality			: 'איכות',
 		qualityBest		: 'מעולה',
@@ -475,11 +463,7 @@
 		flashvars		: 'משתנים לפלאש',
 		bgcolor			: 'צבע רקע',
-		width			: 'רוחב',
-		height			: 'גובה',
 		hSpace			: 'מרווח אופקי',
 		vSpace			: 'מרווח אנכי',
 		validateSrc		: 'יש להקליד את כתובת סרטון הפלאש (URL)',
-		validateWidth	: 'הרוחב חייב להיות מספר.',
-		validateHeight	: 'הגובה חייב להיות מספר.',
 		validateHSpace	: 'המרווח האופקי חייב להיות מספר.',
 		validateVSpace	: 'המרווח האנכי חייב להיות מספר.'
@@ -615,4 +599,13 @@
 		remove				: 'הסרת מיכל (Div)'
   	},
+
+	iframe :
+	{
+		title		: 'מאפייני חלון פנימי (iFrame)',
+		toolbar		: 'חלון פנימי (iFrame)',
+		noUrl		: 'יש להכניס כתובת לחלון.',
+		scrolling	: 'אפשר פסי גלילה',
+		border		: 'הראה מסגרת לחלון'
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'עוגן',
-		flash	: 'סרטון פלאש',
-		div		: 'שבירת דף',
-		unknown	: 'אובייקט לא ידוע'
+		anchor		: 'עוגן',
+		flash		: 'סרטון פלאש',
+		iframe		: 'חלון פנימי (iFrame)',
+		hiddenfield	: 'שדה חבוי',
+		unknown		: 'אובייקט לא ידוע'
 	},
 
Index: CKEditor/trunk/_source/lang/hi.js
===================================================================
--- CKEditor/trunk/_source/lang/hi.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/hi.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'हॉरिज़ॉन्टल रेखा इन्सर्ट करें',
 	pagebreak		: 'पेज ब्रेक इन्सर्ट् करें',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'लिंक हटायें',
 	undo			: 'अन्डू',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'चौड़ाई',
+		height			: 'ऊँचाई',
+		align			: 'ऍलाइन',
+		alignLeft		: 'दायें',
+		alignRight		: 'दायें',
+		alignCenter		: 'बीच में',
+		alignTop		: 'ऊपर',
+		alignMiddle		: 'मध्य',
+		alignBottom		: 'नीचे',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'स्क्रॉल बार',
 		popupDependent	: 'डिपेन्डॅन्ट (Netscape)',
-		popupWidth		: 'चौड़ाई',
 		popupLeft		: 'बायीं तरफ',
-		popupHeight		: 'ऊँचाई',
 		popupTop		: 'दायीं तरफ',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'कालम',
 		border		: 'बॉर्डर साइज़',
-		align		: 'ऍलाइन्मॅन्ट',
-		alignLeft	: 'दायें',
-		alignCenter	: 'बीच में',
-		alignRight	: 'बायें',
-		width		: 'चौड़ाई',
 		widthPx		: 'पिक्सैल',
 		widthPc		: 'प्रतिशत',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'ऊँचाई',
 		cellSpace	: 'सैल अंतर',
 		cellPad		: 'सैल पैडिंग',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'अपलोड',
 		alt			: 'वैकल्पिक टेक्स्ट',
-		width		: 'चौड़ाई',
-		height		: 'ऊँचाई',
 		lockRatio	: 'लॉक अनुपात',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'हॉरिज़ॉन्टल स्पेस',
 		vSpace		: 'वर्टिकल स्पेस',
-		align		: 'ऍलाइन',
-		alignLeft	: 'दायें',
-		alignRight	: 'दायें',
 		alertUrl	: 'तस्वीर का URL टाइप करें ',
 		linkTab		: 'लिंक',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'ऍलाइन',
-		alignLeft		: 'दायें',
 		alignAbsBottom	: 'Abs नीचे',
 		alignAbsMiddle	: 'Abs ऊपर',
 		alignBaseline	: 'मूल रेखा',
-		alignBottom		: 'नीचे',
-		alignMiddle		: 'मध्य',
-		alignRight		: 'दायें',
 		alignTextTop	: 'टेक्स्ट ऊपर',
-		alignTop		: 'ऊपर',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'बैक्ग्राउन्ड रंग',
-		width			: 'चौड़ाई',
-		height			: 'ऊँचाई',
 		hSpace			: 'हॉरिज़ॉन्टल स्पेस',
 		vSpace			: 'वर्टिकल स्पेस',
 		validateSrc		: 'लिंक URL टाइप करें',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/hr.js
===================================================================
--- CKEditor/trunk/_source/lang/hr.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/hr.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Ubaci vodoravnu liniju',
 	pagebreak		: 'Ubaci prijelom stranice',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Ukloni link',
 	undo			: 'Poništi',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Širina',
+		height			: 'Visina',
+		align			: 'Poravnaj',
+		alignLeft		: 'Lijevo',
+		alignRight		: 'Desno',
+		alignCenter		: 'Središnje',
+		alignTop		: 'Vrh',
+		alignMiddle		: 'Sredina',
+		alignBottom		: 'Dolje',
+		invalidHeight	: 'Visina mora biti broj.',
+		invalidWidth	: 'Širina mora biti broj.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Scroll traka',
 		popupDependent	: 'Ovisno (Netscape)',
-		popupWidth		: 'Širina',
 		popupLeft		: 'Lijeva pozicija',
-		popupHeight		: 'Visina',
 		popupTop		: 'Gornja pozicija',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Kolona',
 		border		: 'Veličina okvira',
-		align		: 'Poravnanje',
-		alignLeft	: 'Lijevo',
-		alignCenter	: 'Središnje',
-		alignRight	: 'Desno',
-		width		: 'Širina',
 		widthPx		: 'piksela',
 		widthPc		: 'postotaka',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Visina',
 		cellSpace	: 'Prostornost ćelija',
 		cellPad		: 'Razmak ćelija',
@@ -288,7 +292,4 @@
 			hAlign			: 'Vodoravno poravnanje',
 			vAlign			: 'Okomito poravnanje',
-			alignTop		: 'Vrh',
-			alignMiddle		: 'Sredina',
-			alignBottom		: 'Dolje',
 			alignBaseline	: 'Osnovna linija',
 			bgColor			: 'Boja pozadine',
@@ -411,6 +412,4 @@
 		upload		: 'Pošalji',
 		alt			: 'Alternativni tekst',
-		width		: 'Širina',
-		height		: 'Visina',
 		lockRatio	: 'Zaključaj odnos',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'HSpace',
 		vSpace		: 'VSpace',
-		align		: 'Poravnaj',
-		alignLeft	: 'Lijevo',
-		alignRight	: 'Desno',
 		alertUrl	: 'Unesite URL slike',
 		linkTab		: 'Link',
@@ -427,6 +423,4 @@
 		img2Button	: 'Želite li promijeniti odabranu sliku u gumb?',
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Ista domena',
 		accessNever		: 'Nikad',
-		align			: 'Poravnaj',
-		alignLeft		: 'Lijevo',
 		alignAbsBottom	: 'Abs dolje',
 		alignAbsMiddle	: 'Abs sredina',
 		alignBaseline	: 'Bazno',
-		alignBottom		: 'Dolje',
-		alignMiddle		: 'Sredina',
-		alignRight		: 'Desno',
 		alignTextTop	: 'Vrh teksta',
-		alignTop		: 'Vrh',
 		quality			: 'Kvaliteta',
 		qualityBest		: 'Best',
@@ -475,11 +463,7 @@
 		flashvars		: 'Varijable za Flash',
 		bgcolor			: 'Boja pozadine',
-		width			: 'Širina',
-		height			: 'Visina',
 		hSpace			: 'HSpace',
 		vSpace			: 'VSpace',
 		validateSrc		: 'Molimo upišite URL link',
-		validateWidth	: 'Širina mora biti broj.',
-		validateHeight	: 'Visina mora biti broj.',
 		validateHSpace	: 'HSpace mora biti broj.',
 		validateVSpace	: 'VSpace mora biti broj.'
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Sidro',
-		flash	: 'Flash animacija',
-		div		: 'Prijelom stranice',
-		unknown	: 'Nepoznati objekt'
+		anchor		: 'Sidro',
+		flash		: 'Flash animacija',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Nepoznati objekt'
 	},
 
Index: CKEditor/trunk/_source/lang/hu.js
===================================================================
--- CKEditor/trunk/_source/lang/hu.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/hu.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Elválasztóvonal beillesztése',
 	pagebreak		: 'Oldaltörés beillesztése',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Hivatkozás törlése',
 	undo			: 'Visszavonás',
@@ -110,4 +111,15 @@
 		styles			: 'Stílus',
 		cssClasses		: 'Stíluslap osztály',
+		width			: 'Szélesség',
+		height			: 'Magasság',
+		align			: 'Igazítás',
+		alignLeft		: 'Bal',
+		alignRight		: 'Jobbra',
+		alignCenter		: 'Középre',
+		alignTop		: 'Tetejére',
+		alignMiddle		: 'Középre',
+		alignBottom		: 'Aljára',
+		invalidHeight	: 'A magasság mezőbe csak számokat írhat.',
+		invalidWidth	: 'A szélesség mezőbe csak számokat írhat.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Gördítősáv',
 		popupDependent	: 'Szülőhöz kapcsolt (csak Netscape)',
-		popupWidth		: 'Szélesség',
 		popupLeft		: 'Bal pozíció',
-		popupHeight		: 'Magasság',
 		popupTop		: 'Felső pozíció',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Oszlopok',
 		border		: 'Szegélyméret',
-		align		: 'Igazítás',
-		alignLeft	: 'Balra',
-		alignCenter	: 'Középre',
-		alignRight	: 'Jobbra',
-		width		: 'Szélesség',
 		widthPx		: 'képpont',
 		widthPc		: 'százalék',
 		widthUnit	: 'Szélesség egység',
-		height		: 'Magasság',
 		cellSpace	: 'Cella térköz',
 		cellPad		: 'Cella belső margó',
@@ -288,7 +292,4 @@
 			hAlign			: 'Vízszintes igazítás',
 			vAlign			: 'Függőleges igazítás',
-			alignTop		: 'Fel',
-			alignMiddle		: 'Középre',
-			alignBottom		: 'Le',
 			alignBaseline	: 'Alapvonalra',
 			bgColor			: 'Háttér színe',
@@ -411,6 +412,4 @@
 		upload		: 'Feltöltés',
 		alt			: 'Buborék szöveg',
-		width		: 'Szélesség',
-		height		: 'Magasság',
 		lockRatio	: 'Arány megtartása',
 		unlockRatio	: 'Arány figyelmen kívül hagyása',
@@ -419,7 +418,4 @@
 		hSpace		: 'Vízsz. táv',
 		vSpace		: 'Függ. táv',
-		align		: 'Igazítás',
-		alignLeft	: 'Bal',
-		alignRight	: 'Jobbra',
 		alertUrl	: 'Töltse ki a kép webcímét',
 		linkTab		: 'Hivatkozás',
@@ -427,6 +423,4 @@
 		img2Button	: 'A kiválasztott képből képgombot szeretne csinálni?',
 		urlMissing	: 'Hiányzik a kép URL-je',
-		validateWidth	: 'A szélességnek egész számot kell beírni!',
-		validateHeight	: 'A magasságnak egész számot kell beírni!',
 		validateBorder	: 'A keret méretének egész számot kell beírni!',
 		validateHSpace	: 'Vízszintes távolságnak egész számot kell beírni!',
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Azonos domainről',
 		accessNever		: 'Soha',
-		align			: 'Igazítás',
-		alignLeft		: 'Bal',
 		alignAbsBottom	: 'Legaljára',
 		alignAbsMiddle	: 'Közepére',
 		alignBaseline	: 'Alapvonalhoz',
-		alignBottom		: 'Aljára',
-		alignMiddle		: 'Középre',
-		alignRight		: 'Jobbra',
 		alignTextTop	: 'Szöveg tetejére',
-		alignTop		: 'Tetejére',
 		quality			: 'Minőség',
 		qualityBest		: 'Legjobb',
@@ -475,11 +463,7 @@
 		flashvars		: 'Flash változók',
 		bgcolor			: 'Háttérszín',
-		width			: 'Szélesség',
-		height			: 'Magasság',
 		hSpace			: 'Vízsz. táv',
 		vSpace			: 'Függ. táv',
 		validateSrc		: 'Adja meg a hivatkozás webcímét',
-		validateWidth	: 'A szélesség mezőbe csak számokat írhat.',
-		validateHeight	: 'A magasság mezőbe csak számokat írhat.',
 		validateHSpace	: 'A vízszintes távolsűág mezőbe csak számokat írhat.',
 		validateVSpace	: 'A függőleges távolsűág mezőbe csak számokat írhat.'
@@ -615,4 +599,13 @@
 		remove				: 'DIV eltávolítása'
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Horgony',
-		flash	: 'Flash animáció',
-		div		: 'Oldaltörés',
-		unknown	: 'Ismeretlen objektum'
+		anchor		: 'Horgony',
+		flash		: 'Flash animáció',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Ismeretlen objektum'
 	},
 
Index: CKEditor/trunk/_source/lang/is.js
===================================================================
--- CKEditor/trunk/_source/lang/is.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/is.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Lóðrétt lína',
 	pagebreak		: 'Setja inn síðuskil',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Fjarlægja stiklu',
 	undo			: 'Afturkalla',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Breidd',
+		height			: 'Hæð',
+		align			: 'Jöfnun',
+		alignLeft		: 'Vinstri',
+		alignRight		: 'Hægri',
+		alignCenter		: 'Miðjað',
+		alignTop		: 'Efst',
+		alignMiddle		: 'Miðjuð',
+		alignBottom		: 'Neðst',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Skrunstikur',
 		popupDependent	: 'Háð venslum (Netscape)',
-		popupWidth		: 'Breidd',
 		popupLeft		: 'Fjarlægð frá vinstri',
-		popupHeight		: 'Hæð',
 		popupTop		: 'Fjarlægð frá efri brún',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Dálkar',
 		border		: 'Breidd ramma',
-		align		: 'Jöfnun',
-		alignLeft	: 'Vinstrijafnað',
-		alignCenter	: 'Miðjað',
-		alignRight	: 'Hægrijafnað',
-		width		: 'Breidd',
 		widthPx		: 'myndeindir',
 		widthPc		: 'prósent',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Hæð',
 		cellSpace	: 'Bil milli reita',
 		cellPad		: 'Reitaspássía',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Hlaða upp',
 		alt			: 'Baklægur texti',
-		width		: 'Breidd',
-		height		: 'Hæð',
 		lockRatio	: 'Festa stærðarhlutfall',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'Vinstri bil',
 		vSpace		: 'Hægri bil',
-		align		: 'Jöfnun',
-		alignLeft	: 'Vinstri',
-		alignRight	: 'Hægri',
 		alertUrl	: 'Sláðu inn slóðina að myndinni',
 		linkTab		: 'Stikla',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Jöfnun',
-		alignLeft		: 'Vinstri',
 		alignAbsBottom	: 'Abs neðst',
 		alignAbsMiddle	: 'Abs miðjuð',
 		alignBaseline	: 'Grunnlína',
-		alignBottom		: 'Neðst',
-		alignMiddle		: 'Miðjuð',
-		alignRight		: 'Hægri',
 		alignTextTop	: 'Efri brún texta',
-		alignTop		: 'Efst',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Bakgrunnslitur',
-		width			: 'Breidd',
-		height			: 'Hæð',
 		hSpace			: 'Vinstri bil',
 		vSpace			: 'Hægri bil',
 		validateSrc		: 'Sláðu inn veffang stiklunnar!',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/it.js
===================================================================
--- CKEditor/trunk/_source/lang/it.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/it.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Inserisci riga orizzontale',
 	pagebreak		: 'Inserisci interruzione di pagina',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Elimina collegamento',
 	undo			: 'Annulla',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Larghezza',
+		height			: 'Altezza',
+		align			: 'Allineamento',
+		alignLeft		: 'Sinistra',
+		alignRight		: 'Destra',
+		alignCenter		: 'Centrato',
+		alignTop		: 'In Alto',
+		alignMiddle		: 'Centrato',
+		alignBottom		: 'In Basso',
+		invalidHeight	: 'L\'altezza dev\'essere un numero',
+		invalidWidth	: 'La Larghezza dev\'essere un numero',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Barre di scorrimento',
 		popupDependent	: 'Dipendente (Netscape)',
-		popupWidth		: 'Larghezza',
 		popupLeft		: 'Posizione da sinistra',
-		popupHeight		: 'Altezza',
 		popupTop		: 'Posizione dall\'alto',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Colonne',
 		border		: 'Dimensione bordo',
-		align		: 'Allineamento',
-		alignLeft	: 'Sinistra',
-		alignCenter	: 'Centrato',
-		alignRight	: 'Destra',
-		width		: 'Larghezza',
 		widthPx		: 'pixel',
 		widthPc		: 'percento',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Altezza',
 		cellSpace	: 'Spaziatura celle',
 		cellPad		: 'Padding celle',
@@ -288,7 +292,4 @@
 			hAlign			: 'Allineamento orizzontale',
 			vAlign			: 'Allineamento verticale',
-			alignTop		: 'In Alto',
-			alignMiddle		: 'Al Centro',
-			alignBottom		: 'In Basso',
 			alignBaseline	: 'Linea Base',
 			bgColor			: 'Colore di Sfondo',
@@ -411,6 +412,4 @@
 		upload		: 'Carica',
 		alt			: 'Testo alternativo',
-		width		: 'Larghezza',
-		height		: 'Altezza',
 		lockRatio	: 'Blocca rapporto',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'HSpace',
 		vSpace		: 'VSpace',
-		align		: 'Allineamento',
-		alignLeft	: 'Sinistra',
-		alignRight	: 'Destra',
 		alertUrl	: 'Devi inserire l\'URL per l\'immagine',
 		linkTab		: 'Collegamento',
@@ -427,6 +423,4 @@
 		img2Button	: 'Vuoi trasferomare l\'immagine selezionata in un bottone immagine?',
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Solo stesso dominio',
 		accessNever		: 'Mai',
-		align			: 'Allineamento',
-		alignLeft		: 'Sinistra',
 		alignAbsBottom	: 'In basso assoluto',
 		alignAbsMiddle	: 'Centrato assoluto',
 		alignBaseline	: 'Linea base',
-		alignBottom		: 'In Basso',
-		alignMiddle		: 'Centrato',
-		alignRight		: 'Destra',
 		alignTextTop	: 'In alto al testo',
-		alignTop		: 'In Alto',
 		quality			: 'Qualità',
 		qualityBest		: 'Massima',
@@ -475,11 +463,7 @@
 		flashvars		: 'Variabili per Flash',
 		bgcolor			: 'Colore sfondo',
-		width			: 'Larghezza',
-		height			: 'Altezza',
 		hSpace			: 'HSpace',
 		vSpace			: 'VSpace',
 		validateSrc		: 'Devi inserire l\'URL del collegamento',
-		validateWidth	: 'La Larghezza dev\'essere un numero',
-		validateHeight	: 'L\'altezza dev\'essere un numero',
 		validateHSpace	: 'L\'HSpace dev\'essere un numero.',
 		validateVSpace	: 'Il VSpace dev\'essere un numero.'
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Ancora',
-		flash	: 'Animazione Flash',
-		div		: 'Interruzione di Pagina',
-		unknown	: 'Oggetto sconosciuto'
+		anchor		: 'Ancora',
+		flash		: 'Animazione Flash',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Oggetto sconosciuto'
 	},
 
Index: CKEditor/trunk/_source/lang/ja.js
===================================================================
--- CKEditor/trunk/_source/lang/ja.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/ja.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: '横罫線',
 	pagebreak		: '改ページ挿入',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'リンク削除',
 	undo			: '元に戻す',
@@ -110,4 +111,15 @@
 		styles			: 'スタイル',
 		cssClasses		: 'スタイルシートクラス',
+		width			: '幅',
+		height			: '高さ',
+		align			: '行揃え',
+		alignLeft		: '左',
+		alignRight		: '右',
+		alignCenter		: '中央',
+		alignTop		: '上',
+		alignMiddle		: '中央',
+		alignBottom		: '下',
+		invalidHeight	: '高さは数値で入力してください。',
+		invalidWidth	: '幅は数値で入力してください。',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'スクロールバー',
 		popupDependent	: '開いたウィンドウに連動して閉じる (Netscape)',
-		popupWidth		: '幅',
 		popupLeft		: '左端からの座標で指定',
-		popupHeight		: '高さ',
 		popupTop		: '上端からの座標で指定',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: '列',
 		border		: 'ボーダーサイズ',
-		align		: 'テーブルの整列',
-		alignLeft	: '左',
-		alignCenter	: '中央',
-		alignRight	: '右',
-		width		: '幅',
 		widthPx		: 'ピクセル',
 		widthPc		: 'パーセント',
 		widthUnit	: 'ユニット',
-		height		: '高さ',
 		cellSpace	: 'セル内余白',
 		cellPad		: 'セル内間隔',
@@ -288,7 +292,4 @@
 			hAlign			: 'セル横の整列',
 			vAlign			: 'セル縦の整列',
-			alignTop		: '上',
-			alignMiddle		: '中央',
-			alignBottom		: '下',
 			alignBaseline	: 'ベースライン',
 			bgColor			: '背景色',
@@ -411,6 +412,4 @@
 		upload		: 'アップロード',
 		alt			: '代替テキスト',
-		width		: '幅',
-		height		: '高さ',
 		lockRatio	: 'ロック比率',
 		unlockRatio	: 'アンロック比率',
@@ -419,7 +418,4 @@
 		hSpace		: '横間隔',
 		vSpace		: '縦間隔',
-		align		: '行揃え',
-		alignLeft	: '左',
-		alignRight	: '右',
 		alertUrl	: 'イメージのURLを入力してください。',
 		linkTab		: 'リンク',
@@ -427,6 +423,4 @@
 		img2Button	: '選択した画像をボタンに置き換えますか？',
 		urlMissing	: 'イメージのURLを入力してください。',
-		validateWidth	: '幅は数値で入力してください。',
-		validateHeight	: '高さは数値で入力してください。',
 		validateBorder	: 'ボーダーは数値で入力してください。',
 		validateHSpace	: '横間隔は数値で入力してください。',
@@ -452,14 +446,8 @@
 		accessSameDomain: '同一ドメインのみに通信可能(Same domain)',
 		accessNever		: 'すべての場合に通信不可能(Never)',
-		align			: '行揃え',
-		alignLeft		: '左',
 		alignAbsBottom	: '下部(絶対的)',
 		alignAbsMiddle	: '中央(絶対的)',
 		alignBaseline	: 'ベースライン',
-		alignBottom		: '下',
-		alignMiddle		: '中央',
-		alignRight		: '右',
 		alignTextTop	: 'テキスト上部',
-		alignTop		: '上',
 		quality			: '画質',
 		qualityBest		: '品質優先',
@@ -475,11 +463,7 @@
 		flashvars		: 'フラッシュに渡す変数(FlashVars)',
 		bgcolor			: '背景色',
-		width			: '幅',
-		height			: '高さ',
 		hSpace			: '横間隔',
 		vSpace			: '縦間隔',
 		validateSrc		: 'リンクURLを入力してください。',
-		validateWidth	: '幅は数値で入力してください。',
-		validateHeight	: '高さは数値で入力してください。',
 		validateHSpace	: '横間隔は数値で入力してください。',
 		validateVSpace	: '縦間隔は数値で入力してください。'
@@ -615,4 +599,13 @@
 		remove				: 'Divコンテナ 削除'
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'アンカー',
-		flash	: 'Flash Animation',
-		div		: 'Page Break',
-		unknown	: 'Unknown Object'
+		anchor		: 'アンカー',
+		flash		: 'Flash Animation',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object'
 	},
 
Index: CKEditor/trunk/_source/lang/km.js
===================================================================
--- CKEditor/trunk/_source/lang/km.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/km.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'បន្ថែមបន្ទាត់ផ្តេក',
 	pagebreak		: 'បន្ថែម ការផ្តាច់ទំព័រ',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'លប់ឈ្នាប់',
 	undo			: 'សារឡើងវិញ',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'ទទឹង',
+		height			: 'កំពស់',
+		align			: 'កំណត់ទីតាំង',
+		alignLeft		: 'ខាងឆ្វង',
+		alignRight		: 'ខាងស្តាំ',
+		alignCenter		: 'កណ្តាល',
+		alignTop		: 'ខាងលើ',
+		alignMiddle		: 'កណ្តាល',
+		alignBottom		: 'ខាងក្រោម',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'របា ទាញ',
 		popupDependent	: 'អាស្រ័យលើ (Netscape)',
-		popupWidth		: 'ទទឹង',
 		popupLeft		: 'ទីតាំងខាងឆ្វេង',
-		popupHeight		: 'កំពស់',
 		popupTop		: 'ទីតាំងខាងលើ',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'ជួរឈរ',
 		border		: 'ទំហំស៊ុម',
-		align		: 'ការកំណត់ទីតាំង',
-		alignLeft	: 'ខាងឆ្វេង',
-		alignCenter	: 'កណ្តាល',
-		alignRight	: 'ខាងស្តាំ',
-		width		: 'ទទឹង',
 		widthPx		: 'ភីកសែល',
 		widthPc		: 'ភាគរយ',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'កំពស់',
 		cellSpace	: 'គំលាតសែល',
 		cellPad		: 'គែមសែល',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'ទាញយក',
 		alt			: 'អត្ថបទជំនួស',
-		width		: 'ទទឹង',
-		height		: 'កំពស់',
 		lockRatio	: 'អត្រាឡុក',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'គំលាតទទឹង',
 		vSpace		: 'គំលាតបណ្តោយ',
-		align		: 'កំណត់ទីតាំង',
-		alignLeft	: 'ខាងឆ្វង',
-		alignRight	: 'ខាងស្តាំ',
 		alertUrl	: 'សូមសរសេរងាស័យដ្ឋានរបស់រូបភាព',
 		linkTab		: 'ឈ្នាប់',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'កំណត់ទីតាំង',
-		alignLeft		: 'ខាងឆ្វង',
 		alignAbsBottom	: 'Abs Bottom', // MISSING
 		alignAbsMiddle	: 'Abs Middle', // MISSING
 		alignBaseline	: 'បន្ទាត់ជាមូលដ្ឋាន',
-		alignBottom		: 'ខាងក្រោម',
-		alignMiddle		: 'កណ្តាល',
-		alignRight		: 'ខាងស្តាំ',
 		alignTextTop	: 'លើអត្ថបទ',
-		alignTop		: 'ខាងលើ',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'ពណ៌ផ្ទៃខាងក្រោយ',
-		width			: 'ទទឹង',
-		height			: 'កំពស់',
 		hSpace			: 'គំលាតទទឹង',
 		vSpace			: 'គំលាតបណ្តោយ',
 		validateSrc		: 'សូមសរសេរ អាស័យដ្ឋាន URL',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/ko.js
===================================================================
--- CKEditor/trunk/_source/lang/ko.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/ko.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: '수평선 삽입',
 	pagebreak		: 'Insert Page Break for Printing', // MISSING
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: '링크 삭제',
 	undo			: '취소',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: '너비',
+		height			: '높이',
+		align			: '정렬',
+		alignLeft		: '왼쪽',
+		alignRight		: '오른쪽',
+		alignCenter		: '가운데',
+		alignTop		: '위',
+		alignMiddle		: '중간',
+		alignBottom		: '아래',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: '스크롤바',
 		popupDependent	: 'Dependent (Netscape)',
-		popupWidth		: '너비',
 		popupLeft		: '왼쪽 위치',
-		popupHeight		: '높이',
 		popupTop		: '윗쪽 위치',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: '세로줄',
 		border		: '테두리 크기',
-		align		: '정렬',
-		alignLeft	: '왼쪽',
-		alignCenter	: '가운데',
-		alignRight	: '오른쪽',
-		width		: '너비',
 		widthPx		: '픽셀',
 		widthPc		: '퍼센트',
 		widthUnit	: 'width unit', // MISSING
-		height		: '높이',
 		cellSpace	: '셀 간격',
 		cellPad		: '셀 여백',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: '업로드',
 		alt			: '이미지 설명',
-		width		: '너비',
-		height		: '높이',
 		lockRatio	: '비율 유지',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: '수평여백',
 		vSpace		: '수직여백',
-		align		: '정렬',
-		alignLeft	: '왼쪽',
-		alignRight	: '오른쪽',
 		alertUrl	: '이미지 URL을 입력하십시요',
 		linkTab		: '링크',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: '정렬',
-		alignLeft		: '왼쪽',
 		alignAbsBottom	: '줄아래(Abs Bottom)',
 		alignAbsMiddle	: '줄중간(Abs Middle)',
 		alignBaseline	: '기준선',
-		alignBottom		: '아래',
-		alignMiddle		: '중간',
-		alignRight		: '오른쪽',
 		alignTextTop	: '글자상단',
-		alignTop		: '위',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: '배경 색상',
-		width			: '너비',
-		height			: '높이',
 		hSpace			: '수평여백',
 		vSpace			: '수직여백',
 		validateSrc		: '링크 URL을 입력하십시요.',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/lt.js
===================================================================
--- CKEditor/trunk/_source/lang/lt.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/lt.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Įterpti horizontalią liniją',
 	pagebreak		: 'Įterpti puslapių skirtuką',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Panaikinti nuorodą',
 	undo			: 'Atšaukti',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Plotis',
+		height			: 'Aukštis',
+		align			: 'Lygiuoti',
+		alignLeft		: 'Kairę',
+		alignRight		: 'Dešinę',
+		alignCenter		: 'Centrą',
+		alignTop		: 'Viršūnę',
+		alignMiddle		: 'Vidurį',
+		alignBottom		: 'Apačią',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Slinkties juostos',
 		popupDependent	: 'Priklausomas (Netscape)',
-		popupWidth		: 'Plotis',
 		popupLeft		: 'Kairė pozicija',
-		popupHeight		: 'Aukštis',
 		popupTop		: 'Viršutinė pozicija',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Stulpeliai',
 		border		: 'Rėmelio dydis',
-		align		: 'Lygiuoti',
-		alignLeft	: 'Kairę',
-		alignCenter	: 'Centrą',
-		alignRight	: 'Dešinę',
-		width		: 'Plotis',
 		widthPx		: 'taškais',
 		widthPc		: 'procentais',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Aukštis',
 		cellSpace	: 'Tarpas tarp langelių',
 		cellPad		: 'Trapas nuo langelio rėmo iki teksto',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Nusiųsti',
 		alt			: 'Alternatyvus Tekstas',
-		width		: 'Plotis',
-		height		: 'Aukštis',
 		lockRatio	: 'Išlaikyti proporciją',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'Hor.Erdvė',
 		vSpace		: 'Vert.Erdvė',
-		align		: 'Lygiuoti',
-		alignLeft	: 'Kairę',
-		alignRight	: 'Dešinę',
 		alertUrl	: 'Prašome įvesti vaizdo URL',
 		linkTab		: 'Nuoroda',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Lygiuoti',
-		alignLeft		: 'Kairę',
 		alignAbsBottom	: 'Absoliučią apačią',
 		alignAbsMiddle	: 'Absoliutų vidurį',
 		alignBaseline	: 'Apatinę liniją',
-		alignBottom		: 'Apačią',
-		alignMiddle		: 'Vidurį',
-		alignRight		: 'Dešinę',
 		alignTextTop	: 'Teksto viršūnę',
-		alignTop		: 'Viršūnę',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Fono spalva',
-		width			: 'Plotis',
-		height			: 'Aukštis',
 		hSpace			: 'Hor.Erdvė',
 		vSpace			: 'Vert.Erdvė',
 		validateSrc		: 'Prašome įvesti nuorodos URL',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/lv.js
===================================================================
--- CKEditor/trunk/_source/lang/lv.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/lv.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Ievietot horizontālu Atdalītājsvītru',
 	pagebreak		: 'Ievietot lapas pārtraukumu',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Noņemt hipersaiti',
 	undo			: 'Atcelt',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Platums',
+		height			: 'Augstums',
+		align			: 'Nolīdzināt',
+		alignLeft		: 'Pa kreisi',
+		alignRight		: 'Pa labi',
+		alignCenter		: 'Centrēti',
+		alignTop		: 'Augšā',
+		alignMiddle		: 'Vertikāli centrēts',
+		alignBottom		: 'Apakšā',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Ritjoslas',
 		popupDependent	: 'Atkarīgs (Netscape)',
-		popupWidth		: 'Platums',
 		popupLeft		: 'Kreisā koordināte',
-		popupHeight		: 'Augstums',
 		popupTop		: 'Augšējā koordināte',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Kolonnas',
 		border		: 'Rāmja izmērs',
-		align		: 'Novietojums',
-		alignLeft	: 'Pa kreisi',
-		alignCenter	: 'Centrēti',
-		alignRight	: 'Pa labi',
-		width		: 'Platums',
 		widthPx		: 'pikseļos',
 		widthPc		: 'procentuāli',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Augstums',
 		cellSpace	: 'Rūtiņu atstatums',
 		cellPad		: 'Rūtiņu nobīde',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Augšupielādēt',
 		alt			: 'Alternatīvais teksts',
-		width		: 'Platums',
-		height		: 'Augstums',
 		lockRatio	: 'Nemainīga Augstuma/Platuma attiecība',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'Horizontālā telpa',
 		vSpace		: 'Vertikālā telpa',
-		align		: 'Nolīdzināt',
-		alignLeft	: 'Pa kreisi',
-		alignRight	: 'Pa labi',
 		alertUrl	: 'Lūdzu norādīt attēla hipersaiti',
 		linkTab		: 'Hipersaite',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Nolīdzināt',
-		alignLeft		: 'Pa kreisi',
 		alignAbsBottom	: 'Absolūti apakšā',
 		alignAbsMiddle	: 'Absolūti vertikāli centrēts',
 		alignBaseline	: 'Pamatrindā',
-		alignBottom		: 'Apakšā',
-		alignMiddle		: 'Vertikāli centrēts',
-		alignRight		: 'Pa labi',
 		alignTextTop	: 'Teksta augšā',
-		alignTop		: 'Augšā',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Fona krāsa',
-		width			: 'Platums',
-		height			: 'Augstums',
 		hSpace			: 'Horizontālā telpa',
 		vSpace			: 'Vertikālā telpa',
 		validateSrc		: 'Lūdzu norādi hipersaiti',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/mn.js
===================================================================
--- CKEditor/trunk/_source/lang/mn.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/mn.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Хөндлөн зураас оруулах',
 	pagebreak		: 'Хуудас тусгаарлагч оруулах',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Линк авч хаях',
 	undo			: 'Хүчингүй болгох',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Өргөн',
+		height			: 'Өндөр',
+		align			: 'Эгнээ',
+		alignLeft		: 'Зүүн',
+		alignRight		: 'Баруун',
+		alignCenter		: 'Төвд',
+		alignTop		: 'Дээд талд',
+		alignMiddle		: 'Дунд талд',
+		alignBottom		: 'Доод талд',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Скрол хэсэгүүд',
 		popupDependent	: 'Хамаатай (Netscape)',
-		popupWidth		: 'Өргөн',
 		popupLeft		: 'Зүүн байрлал',
-		popupHeight		: 'Өндөр',
 		popupTop		: 'Дээд байрлал',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Багана',
 		border		: 'Хүрээний хэмжээ',
-		align		: 'Эгнээ',
-		alignLeft	: 'Зүүн талд',
-		alignCenter	: 'Төвд',
-		alignRight	: 'Баруун талд',
-		width		: 'Өргөн',
 		widthPx		: 'цэг',
 		widthPc		: 'хувь',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Өндөр',
 		cellSpace	: 'Нүх хоорондын зай (spacing)',
 		cellPad		: 'Нүх доторлох(padding)',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Хуулах',
 		alt			: 'Тайлбар текст',
-		width		: 'Өргөн',
-		height		: 'Өндөр',
 		lockRatio	: 'Радио түгжих',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'Хөндлөн зай',
 		vSpace		: 'Босоо зай',
-		align		: 'Эгнээ',
-		alignLeft	: 'Зүүн',
-		alignRight	: 'Баруун',
 		alertUrl	: 'Зурагны URL-ын төрлийн сонгоно уу',
 		linkTab		: 'Линк',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Эгнээ',
-		alignLeft		: 'Зүүн',
 		alignAbsBottom	: 'Abs доод талд',
 		alignAbsMiddle	: 'Abs Дунд талд',
 		alignBaseline	: 'Baseline',
-		alignBottom		: 'Доод талд',
-		alignMiddle		: 'Дунд талд',
-		alignRight		: 'Баруун',
 		alignTextTop	: 'Текст дээр',
-		alignTop		: 'Дээд талд',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Фонны өнгө',
-		width			: 'Өргөн',
-		height			: 'Өндөр',
 		hSpace			: 'Хөндлөн зай',
 		vSpace			: 'Босоо зай',
 		validateSrc		: 'Линк URL-ээ төрөлжүүлнэ үү',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/ms.js
===================================================================
--- CKEditor/trunk/_source/lang/ms.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/ms.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Masukkan Garisan Membujur',
 	pagebreak		: 'Insert Page Break for Printing', // MISSING
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Buang Sambungan',
 	undo			: 'Batalkan',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Lebar',
+		height			: 'Tinggi',
+		align			: 'Jajaran',
+		alignLeft		: 'Kiri',
+		alignRight		: 'Kanan',
+		alignCenter		: 'Tengah',
+		alignTop		: 'Atas',
+		alignMiddle		: 'Pertengahan',
+		alignBottom		: 'Bawah',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Bar-bar skrol',
 		popupDependent	: 'Bergantungan (Netscape)',
-		popupWidth		: 'Lebar',
 		popupLeft		: 'Posisi Kiri',
-		popupHeight		: 'Tinggi',
 		popupTop		: 'Posisi Atas',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Jaluran',
 		border		: 'Saiz Border',
-		align		: 'Penjajaran',
-		alignLeft	: 'Kiri',
-		alignCenter	: 'Tengah',
-		alignRight	: 'Kanan',
-		width		: 'Lebar',
 		widthPx		: 'piksel-piksel',
 		widthPc		: 'peratus',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Tinggi',
 		cellSpace	: 'Ruangan Antara Sel',
 		cellPad		: 'Tambahan Ruang Sel',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Muat Naik',
 		alt			: 'Text Alternatif',
-		width		: 'Lebar',
-		height		: 'Tinggi',
 		lockRatio	: 'Tetapkan Nisbah',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'Ruang Melintang',
 		vSpace		: 'Ruang Menegak',
-		align		: 'Jajaran',
-		alignLeft	: 'Kiri',
-		alignRight	: 'Kanan',
 		alertUrl	: 'Sila taip URL untuk fail gambar',
 		linkTab		: 'Sambungan',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Jajaran',
-		alignLeft		: 'Kiri',
 		alignAbsBottom	: 'Bawah Mutlak',
 		alignAbsMiddle	: 'Pertengahan Mutlak',
 		alignBaseline	: 'Garis Dasar',
-		alignBottom		: 'Bawah',
-		alignMiddle		: 'Pertengahan',
-		alignRight		: 'Kanan',
 		alignTextTop	: 'Atas Text',
-		alignTop		: 'Atas',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Warna Latarbelakang',
-		width			: 'Lebar',
-		height			: 'Tinggi',
 		hSpace			: 'Ruang Melintang',
 		vSpace			: 'Ruang Menegak',
 		validateSrc		: 'Sila taip sambungan URL',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/nb.js
===================================================================
--- CKEditor/trunk/_source/lang/nb.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/nb.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Sett inn horisontal linje',
 	pagebreak		: 'Sett inn sideskift',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Fjern lenke',
 	undo			: 'Angre',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Bredde',
+		height			: 'Høyde',
+		align			: 'Juster',
+		alignLeft		: 'Venstre',
+		alignRight		: 'Høyre',
+		alignCenter		: 'Midtjuster',
+		alignTop		: 'Topp',
+		alignMiddle		: 'Midten',
+		alignBottom		: 'Bunn',
+		invalidHeight	: 'Høyde må være ett nummer',
+		invalidWidth	: 'Bredde må være ett nummer.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Scrollbar',
 		popupDependent	: 'Avhenging (Netscape)',
-		popupWidth		: 'Bredde',
 		popupLeft		: 'Venstre posisjon',
-		popupHeight		: 'Høyde',
 		popupTop		: 'Topp-posisjon',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Kolonner',
 		border		: 'Rammestørrelse',
-		align		: 'Justering',
-		alignLeft	: 'Venstre',
-		alignCenter	: 'Midtjuster',
-		alignRight	: 'Høyre',
-		width		: 'Bredde',
 		widthPx		: 'piksler',
 		widthPc		: 'prosent',
 		widthUnit	: 'Bredde-enhet',
-		height		: 'Høyde',
 		cellSpace	: 'Cellemarg',
 		cellPad		: 'Cellepolstring',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horisontal justering',
 			vAlign			: 'Vertikal justering',
-			alignTop		: 'Topp',
-			alignMiddle		: 'Midten',
-			alignBottom		: 'Bunnen',
 			alignBaseline	: 'Grunnlinje',
 			bgColor			: 'Bakgrunnsfarge',
@@ -411,6 +412,4 @@
 		upload		: 'Last opp',
 		alt			: 'Alternativ tekst',
-		width		: 'Bredde',
-		height		: 'Høyde',
 		lockRatio	: 'Lås forhold',
 		unlockRatio	: 'Ikke lås forhold',
@@ -419,7 +418,4 @@
 		hSpace		: 'HMarg',
 		vSpace		: 'VMarg',
-		align		: 'Juster',
-		alignLeft	: 'Venstre',
-		alignRight	: 'Høyre',
 		alertUrl	: 'Vennligst skriv bilde-urlen',
 		linkTab		: 'Lenke',
@@ -427,6 +423,4 @@
 		img2Button	: 'Vil du endre det valgte bildet til en bildeknapp?',
 		urlMissing	: 'Bildets adresse mangler.',
-		validateWidth	: 'Bredde må være ett nummer.',
-		validateHeight	: 'Høyde må være ett nummer.',
 		validateBorder	: 'Ramme må være ett nummer.',
 		validateHSpace	: 'HSpace må være ett nummer.',
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Samme domene',
 		accessNever		: 'Aldri',
-		align			: 'Juster',
-		alignLeft		: 'Venstre',
 		alignAbsBottom	: 'Abs bunn',
 		alignAbsMiddle	: 'Abs midten',
 		alignBaseline	: 'Bunnlinje',
-		alignBottom		: 'Bunn',
-		alignMiddle		: 'Midten',
-		alignRight		: 'Høyre',
 		alignTextTop	: 'Tekst topp',
-		alignTop		: 'Topp',
 		quality			: 'Kvalitet',
 		qualityBest		: 'Best',
@@ -475,11 +463,7 @@
 		flashvars		: 'Variabler for flash',
 		bgcolor			: 'Bakgrunnsfarge',
-		width			: 'Bredde',
-		height			: 'Høyde',
 		hSpace			: 'HMarg',
 		vSpace			: 'VMarg',
 		validateSrc		: 'Vennligst skriv inn lenkens url',
-		validateWidth	: 'Bredde må være ett nummer.',
-		validateHeight	: 'Høyde må være ett nummer',
 		validateHSpace	: 'HSpace må være ett nummer.',
 		validateVSpace	: 'VSpace må være ett nummer.'
@@ -615,4 +599,13 @@
 		remove				: 'Fjern Div'
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anker',
-		flash	: 'Flash Animasjon',
-		div		: 'Sideskift',
-		unknown	: 'Ukjent objekt'
+		anchor		: 'Anker',
+		flash		: 'Flash Animasjon',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Ukjent objekt'
 	},
 
Index: CKEditor/trunk/_source/lang/nl.js
===================================================================
--- CKEditor/trunk/_source/lang/nl.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/nl.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Horizontale lijn invoegen',
 	pagebreak		: 'Pagina-einde invoegen',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Link verwijderen',
 	undo			: 'Ongedaan maken',
@@ -110,4 +111,15 @@
 		styles			: 'Stijlen',
 		cssClasses		: 'Stylesheet klassen',
+		width			: 'Breedte',
+		height			: 'Hoogte',
+		align			: 'Uitlijning',
+		alignLeft		: 'Links',
+		alignRight		: 'Rechts',
+		alignCenter		: 'Centreren',
+		alignTop		: 'Boven',
+		alignMiddle		: 'Midden',
+		alignBottom		: 'Beneden',
+		invalidHeight	: 'De hoogte moet een getal zijn.',
+		invalidWidth	: 'De breedte moet een getal zijn.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Schuifbalken',
 		popupDependent	: 'Afhankelijk (Netscape)',
-		popupWidth		: 'Breedte',
 		popupLeft		: 'Positie links',
-		popupHeight		: 'Hoogte',
 		popupTop		: 'Positie boven',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Kolommen',
 		border		: 'Breedte rand',
-		align		: 'Uitlijning',
-		alignLeft	: 'Links',
-		alignCenter	: 'Centreren',
-		alignRight	: 'Rechts',
-		width		: 'Breedte',
 		widthPx		: 'pixels',
 		widthPc		: 'procent',
 		widthUnit	: 'eenheid breedte',
-		height		: 'Hoogte',
 		cellSpace	: 'Afstand tussen cellen',
 		cellPad		: 'Ruimte in de cel',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontale uitlijning',
 			vAlign			: 'Verticale uitlijning',
-			alignTop		: 'Boven',
-			alignMiddle		: 'Midden',
-			alignBottom		: 'Onder',
 			alignBaseline	: 'Basislijn',
 			bgColor			: 'Achtergrondkleur',
@@ -411,6 +412,4 @@
 		upload		: 'Upload',
 		alt			: 'Alternatieve tekst',
-		width		: 'Breedte',
-		height		: 'Hoogte',
 		lockRatio	: 'Afmetingen vergrendelen',
 		unlockRatio	: 'Afmetingen ontgrendelen',
@@ -419,7 +418,4 @@
 		hSpace		: 'HSpace',
 		vSpace		: 'VSpace',
-		align		: 'Uitlijning',
-		alignLeft	: 'Links',
-		alignRight	: 'Rechts',
 		alertUrl	: 'Geef de URL van de afbeelding',
 		linkTab		: 'Link',
@@ -427,6 +423,4 @@
 		img2Button	: 'Wilt u de geselecteerde afbeelding vervangen door een afbeeldingsknop?',
 		urlMissing	: 'De URL naar de afbeelding ontbreekt.',
-		validateWidth	: 'Breedte moet een heel nummer zijn.',
-		validateHeight	: 'Hoogte moet een heel nummer zijn.',
 		validateBorder	: 'Rand moet een heel nummer zijn.',
 		validateHSpace	: 'HSpace moet een heel nummer zijn.',
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Zelfde domeinnaam',
 		accessNever		: 'Nooit',
-		align			: 'Uitlijning',
-		alignLeft		: 'Links',
 		alignAbsBottom	: 'Absoluut-onder',
 		alignAbsMiddle	: 'Absoluut-midden',
 		alignBaseline	: 'Basislijn',
-		alignBottom		: 'Beneden',
-		alignMiddle		: 'Midden',
-		alignRight		: 'Rechts',
 		alignTextTop	: 'Boven tekst',
-		alignTop		: 'Boven',
 		quality			: 'Kwaliteit',
 		qualityBest		: 'Beste',
@@ -475,11 +463,7 @@
 		flashvars		: 'Variabelen voor Flash',
 		bgcolor			: 'Achtergrondkleur',
-		width			: 'Breedte',
-		height			: 'Hoogte',
 		hSpace			: 'HSpace',
 		vSpace			: 'VSpace',
 		validateSrc		: 'Geef de link van de URL',
-		validateWidth	: 'De breedte moet een getal zijn.',
-		validateHeight	: 'De hoogte moet een getal zijn.',
 		validateHSpace	: 'De HSpace moet een getal zijn.',
 		validateVSpace	: 'De VSpace moet een getal zijn.'
@@ -615,4 +599,13 @@
 		remove				: 'Div verwijderen'
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anker',
-		flash	: 'Flash animatie',
-		div		: 'Pagina einde',
-		unknown	: 'Onbekend object'
+		anchor		: 'Anker',
+		flash		: 'Flash animatie',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Onbekend object'
 	},
 
Index: CKEditor/trunk/_source/lang/no.js
===================================================================
--- CKEditor/trunk/_source/lang/no.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/no.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Sett inn horisontal linje',
 	pagebreak		: 'Sett inn sideskift',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Fjern lenke',
 	undo			: 'Angre',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Bredde',
+		height			: 'Høyde',
+		align			: 'Juster',
+		alignLeft		: 'Venstre',
+		alignRight		: 'Høyre',
+		alignCenter		: 'Midtjuster',
+		alignTop		: 'Topp',
+		alignMiddle		: 'Midten',
+		alignBottom		: 'Bunn',
+		invalidHeight	: 'Høyde må være ett nummer',
+		invalidWidth	: 'Bredde må være ett nummer.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Scrollbar',
 		popupDependent	: 'Avhenging (Netscape)',
-		popupWidth		: 'Bredde',
 		popupLeft		: 'Venstre posisjon',
-		popupHeight		: 'Høyde',
 		popupTop		: 'Topp-posisjon',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Kolonner',
 		border		: 'Rammestørrelse',
-		align		: 'Justering',
-		alignLeft	: 'Venstre',
-		alignCenter	: 'Midtjuster',
-		alignRight	: 'Høyre',
-		width		: 'Bredde',
 		widthPx		: 'piksler',
 		widthPc		: 'prosent',
 		widthUnit	: 'Bredde-enhet',
-		height		: 'Høyde',
 		cellSpace	: 'Cellemarg',
 		cellPad		: 'Cellepolstring',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horisontal justering',
 			vAlign			: 'Vertikal justering',
-			alignTop		: 'Topp',
-			alignMiddle		: 'Midten',
-			alignBottom		: 'Bunnen',
 			alignBaseline	: 'Grunnlinje',
 			bgColor			: 'Bakgrunnsfarge',
@@ -411,6 +412,4 @@
 		upload		: 'Last opp',
 		alt			: 'Alternativ tekst',
-		width		: 'Bredde',
-		height		: 'Høyde',
 		lockRatio	: 'Lås forhold',
 		unlockRatio	: 'Ikke lås forhold',
@@ -419,7 +418,4 @@
 		hSpace		: 'HMarg',
 		vSpace		: 'VMarg',
-		align		: 'Juster',
-		alignLeft	: 'Venstre',
-		alignRight	: 'Høyre',
 		alertUrl	: 'Vennligst skriv bilde-urlen',
 		linkTab		: 'Lenke',
@@ -427,6 +423,4 @@
 		img2Button	: 'Vil du endre det valgte bildet til en bildeknapp?',
 		urlMissing	: 'Bildets adresse mangler.',
-		validateWidth	: 'Bredde må være ett nummer.',
-		validateHeight	: 'Høyde må være ett nummer.',
 		validateBorder	: 'Ramme må være ett nummer.',
 		validateHSpace	: 'HSpace må være ett nummer.',
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Samme domene',
 		accessNever		: 'Aldri',
-		align			: 'Juster',
-		alignLeft		: 'Venstre',
 		alignAbsBottom	: 'Abs bunn',
 		alignAbsMiddle	: 'Abs midten',
 		alignBaseline	: 'Bunnlinje',
-		alignBottom		: 'Bunn',
-		alignMiddle		: 'Midten',
-		alignRight		: 'Høyre',
 		alignTextTop	: 'Tekst topp',
-		alignTop		: 'Topp',
 		quality			: 'Kvalitet',
 		qualityBest		: 'Best',
@@ -475,11 +463,7 @@
 		flashvars		: 'Variabler for flash',
 		bgcolor			: 'Bakgrunnsfarge',
-		width			: 'Bredde',
-		height			: 'Høyde',
 		hSpace			: 'HMarg',
 		vSpace			: 'VMarg',
 		validateSrc		: 'Vennligst skriv inn lenkens url',
-		validateWidth	: 'Bredde må være ett nummer.',
-		validateHeight	: 'Høyde må være ett nummer',
 		validateHSpace	: 'HSpace må være ett nummer.',
 		validateVSpace	: 'VSpace må være ett nummer.'
@@ -615,4 +599,13 @@
 		remove				: 'Fjern Div'
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anker',
-		flash	: 'Flash Animasjon',
-		div		: 'Sideskift',
-		unknown	: 'Ukjent objekt'
+		anchor		: 'Anker',
+		flash		: 'Flash Animasjon',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Ukjent objekt'
 	},
 
Index: CKEditor/trunk/_source/lang/pl.js
===================================================================
--- CKEditor/trunk/_source/lang/pl.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/pl.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Wstaw poziomą linię',
 	pagebreak		: 'Wstaw odstęp',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Usuń hiperłącze',
 	undo			: 'Cofnij',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Szerokość',
+		height			: 'Wysokość',
+		align			: 'Wyrównaj',
+		alignLeft		: 'Do lewej',
+		alignRight		: 'Do prawej',
+		alignCenter		: 'Do środka',
+		alignTop		: 'Do góry',
+		alignMiddle		: 'Do środka',
+		alignBottom		: 'Do dołu',
+		invalidHeight	: 'Wysokość musi być liczbą.',
+		invalidWidth	: 'Szerokość musi być liczbą.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Paski przewijania',
 		popupDependent	: 'Okno zależne (Netscape)',
-		popupWidth		: 'Szerokość',
 		popupLeft		: 'Pozycja w poziomie',
-		popupHeight		: 'Wysokość',
 		popupTop		: 'Pozycja w pionie',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Liczba kolumn',
 		border		: 'Grubość ramki',
-		align		: 'Wyrównanie',
-		alignLeft	: 'Do lewej',
-		alignCenter	: 'Do środka',
-		alignRight	: 'Do prawej',
-		width		: 'Szerokość',
 		widthPx		: 'piksele',
 		widthPc		: '%',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Wysokość',
 		cellSpace	: 'Odstęp pomiędzy komórkami',
 		cellPad		: 'Margines wewnętrzny komórek',
@@ -288,7 +292,4 @@
 			hAlign			: 'Wyrównanie poziome',
 			vAlign			: 'Wyrównanie pionowe',
-			alignTop		: 'Góra',
-			alignMiddle		: 'Środek',
-			alignBottom		: 'Dół',
 			alignBaseline	: 'Linia bazowa',
 			bgColor			: 'Kolor tła',
@@ -411,6 +412,4 @@
 		upload		: 'Wyślij',
 		alt			: 'Tekst zastępczy',
-		width		: 'Szerokość',
-		height		: 'Wysokość',
 		lockRatio	: 'Zablokuj proporcje',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'Odstęp poziomy',
 		vSpace		: 'Odstęp pionowy',
-		align		: 'Wyrównaj',
-		alignLeft	: 'Do lewej',
-		alignRight	: 'Do prawej',
 		alertUrl	: 'Podaj adres obrazka.',
 		linkTab		: 'Hiperłącze',
@@ -427,6 +423,4 @@
 		img2Button	: 'Czy chcesz przekonwertować zaznaczony obrazek do przycisku graficznego?',
 		urlMissing	: 'Podaj adres URL obrazka.',
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Ta sama domena',
 		accessNever		: 'Nigdy',
-		align			: 'Wyrównaj',
-		alignLeft		: 'Do lewej',
 		alignAbsBottom	: 'Do dołu',
 		alignAbsMiddle	: 'Do środka w pionie',
 		alignBaseline	: 'Do linii bazowej',
-		alignBottom		: 'Do dołu',
-		alignMiddle		: 'Do środka',
-		alignRight		: 'Do prawej',
 		alignTextTop	: 'Do góry tekstu',
-		alignTop		: 'Do góry',
 		quality			: 'Jakość',
 		qualityBest		: 'Najlepsza',
@@ -475,11 +463,7 @@
 		flashvars		: 'Zmienne dla Flasha',
 		bgcolor			: 'Kolor tła',
-		width			: 'Szerokość',
-		height			: 'Wysokość',
 		hSpace			: 'Odstęp poziomy',
 		vSpace			: 'Odstęp pionowy',
 		validateSrc		: 'Podaj adres URL',
-		validateWidth	: 'Szerokość musi być liczbą.',
-		validateHeight	: 'Wysokość musi być liczbą.',
 		validateHSpace	: 'Odstęp poziomy musi być liczbą.',
 		validateVSpace	: 'Odstęp pionowy musi być liczbą.'
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Kotwica',
-		flash	: 'Animacja Flash',
-		div		: 'Separator stron',
-		unknown	: 'Nieznany obiekt'
+		anchor		: 'Kotwica',
+		flash		: 'Animacja Flash',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Nieznany obiekt'
 	},
 
Index: CKEditor/trunk/_source/lang/pt-br.js
===================================================================
--- CKEditor/trunk/_source/lang/pt-br.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/pt-br.js	(revision 6241)
@@ -56,4 +56,5 @@
 	horizontalrule	: 'Inserir Linha Horizontal',
 	pagebreak		: 'Inserir Quebra de Página',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Remover Link',
 	undo			: 'Desfazer',
@@ -109,4 +110,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Largura',
+		height			: 'Altura',
+		align			: 'Alinhamento',
+		alignLeft		: 'Esquerda',
+		alignRight		: 'Direita',
+		alignCenter		: 'Centralizado',
+		alignTop		: 'Superior',
+		alignMiddle		: 'Centralizado',
+		alignBottom		: 'Inferior',
+		invalidHeight	: 'A altura tem que ser um número',
+		invalidWidth	: 'A largura tem que ser um número.',
 
 		// Put the voice-only part of the label in the span.
@@ -155,7 +167,5 @@
 		popupScrollBars	: 'Barras de Rolagem',
 		popupDependent	: 'Dependente (Netscape)',
-		popupWidth		: 'Largura',
 		popupLeft		: 'Esquerda',
-		popupHeight		: 'Altura',
 		popupTop		: 'Topo',
 		id				: 'Id',
@@ -243,13 +253,7 @@
 		columns		: 'Colunas',
 		border		: 'Borda',
-		align		: 'Alinhamento',
-		alignLeft	: 'Esquerda',
-		alignCenter	: 'Centralizado',
-		alignRight	: 'Direita',
-		width		: 'Largura',
 		widthPx		: 'pixels',
 		widthPc		: '%',
 		widthUnit	: 'unidade largura',
-		height		: 'Altura',
 		cellSpace	: 'Espaçamento',
 		cellPad		: 'Margem interna',
@@ -287,7 +291,4 @@
 			hAlign			: 'Alinhamento horizontal',
 			vAlign			: 'Alinhamento vertical',
-			alignTop		: 'Alinhar no topo',
-			alignMiddle		: 'Centralizado verticalmente',
-			alignBottom		: 'Alinhar na base',
 			alignBaseline	: 'Patamar de alinhamento',
 			bgColor			: 'Cor de fundo',
@@ -410,6 +411,4 @@
 		upload		: 'Enviar',
 		alt			: 'Texto Alternativo',
-		width		: 'Largura',
-		height		: 'Altura',
 		lockRatio	: 'Travar Proporções',
 		unlockRatio	: 'Destravar Proporções',
@@ -418,7 +417,4 @@
 		hSpace		: 'HSpace',
 		vSpace		: 'VSpace',
-		align		: 'Alinhamento',
-		alignLeft	: 'Esquerda',
-		alignRight	: 'Direita',
 		alertUrl	: 'Por favor, digite a URL da imagem.',
 		linkTab		: 'Link',
@@ -426,6 +422,4 @@
 		img2Button	: 'Deseja transformar a imagem em um botão de imagem?',
 		urlMissing	: 'URL da imagem está faltando.',
-		validateWidth	: 'A largura deve ser um número inteiro.',
-		validateHeight	: 'A altura deve ser um número inteiro.',
 		validateBorder	: 'A borda deve ser um número inteiro.',
 		validateHSpace	: 'O HSpace deve ser um número inteiro.',
@@ -451,14 +445,8 @@
 		accessSameDomain: 'Acessar Mesmo Domínio',
 		accessNever		: 'Nunca',
-		align			: 'Alinhamento',
-		alignLeft		: 'Esquerda',
 		alignAbsBottom	: 'Inferior Absoluto',
 		alignAbsMiddle	: 'Centralizado Absoluto',
 		alignBaseline	: 'Baseline',
-		alignBottom		: 'Inferior',
-		alignMiddle		: 'Centralizado',
-		alignRight		: 'Direita',
 		alignTextTop	: 'Superior Absoluto',
-		alignTop		: 'Superior',
 		quality			: 'Qualidade',
 		qualityBest		: 'Qualidade Melhor',
@@ -474,11 +462,7 @@
 		flashvars		: 'Variáveis do Flash',
 		bgcolor			: 'Cor do Plano de Fundo',
-		width			: 'Largura',
-		height			: 'Altura',
 		hSpace			: 'HSpace',
 		vSpace			: 'VSpace',
 		validateSrc		: 'Por favor, digite o endereço do link',
-		validateWidth	: 'A largura tem que ser um número.',
-		validateHeight	: 'A altura tem que ser um número',
 		validateHSpace	: 'O HSpace tem que ser um número',
 		validateVSpace	: 'O VSpace tem que ser um número.'
@@ -614,4 +598,13 @@
 		remove				: 'Remover Div'
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -730,8 +723,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Âncora',
-		flash	: 'Animação em Flash',
-		div		: 'Quebra de página',
-		unknown	: 'Objeto desconhecido'
+		anchor		: 'Âncora',
+		flash		: 'Animação em Flash',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Objeto desconhecido'
 	},
 
Index: CKEditor/trunk/_source/lang/pt.js
===================================================================
--- CKEditor/trunk/_source/lang/pt.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/pt.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Inserir Linha Horizontal',
 	pagebreak		: 'Inserir Quebra de Página',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Eliminar Hiperligação',
 	undo			: 'Anular',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Largura',
+		height			: 'Altura',
+		align			: 'Alinhamento',
+		alignLeft		: 'Esquerda',
+		alignRight		: 'Direita',
+		alignCenter		: 'Centrado',
+		alignTop		: 'Topo',
+		alignMiddle		: 'Centro',
+		alignBottom		: 'Fundo',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Barras de deslocamento',
 		popupDependent	: 'Dependente (Netscape)',
-		popupWidth		: 'Largura',
 		popupLeft		: 'Posição Esquerda',
-		popupHeight		: 'Altura',
 		popupTop		: 'Posição Direita',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Colunas',
 		border		: 'Tamanho do Limite',
-		align		: 'Alinhamento',
-		alignLeft	: 'Esquerda',
-		alignCenter	: 'Centrado',
-		alignRight	: 'Direita',
-		width		: 'Largura',
 		widthPx		: 'pixeis',
 		widthPc		: 'percentagem',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Altura',
 		cellSpace	: 'Esp. e/células',
 		cellPad		: 'Esp. interior',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Carregar',
 		alt			: 'Texto Alternativo',
-		width		: 'Largura',
-		height		: 'Altura',
 		lockRatio	: 'Proporcional',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'Esp.Horiz',
 		vSpace		: 'Esp.Vert',
-		align		: 'Alinhamento',
-		alignLeft	: 'Esquerda',
-		alignRight	: 'Direita',
 		alertUrl	: 'Por favor introduza o URL da imagem',
 		linkTab		: 'Hiperligação',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Alinhamento',
-		alignLeft		: 'Esquerda',
 		alignAbsBottom	: 'Abs inferior',
 		alignAbsMiddle	: 'Abs centro',
 		alignBaseline	: 'Linha de base',
-		alignBottom		: 'Fundo',
-		alignMiddle		: 'Centro',
-		alignRight		: 'Direita',
 		alignTextTop	: 'Topo do texto',
-		alignTop		: 'Topo',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Cor de Fundo',
-		width			: 'Largura',
-		height			: 'Altura',
 		hSpace			: 'Esp.Horiz',
 		vSpace			: 'Esp.Vert',
 		validateSrc		: 'Por favor introduza a hiperligação URL',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/ro.js
===================================================================
--- CKEditor/trunk/_source/lang/ro.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/ro.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Inserează linie orizontă',
 	pagebreak		: 'Inserează separator de pagină (Page Break)',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Înlătură link (legătură web)',
 	undo			: 'Starea anterioară (undo)',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Lăţime',
+		height			: 'Înălţime',
+		align			: 'Aliniere',
+		alignLeft		: 'Stânga',
+		alignRight		: 'Dreapta',
+		alignCenter		: 'Centru',
+		alignTop		: 'Sus',
+		alignMiddle		: 'Mijloc',
+		alignBottom		: 'Jos',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Scroll Bars',
 		popupDependent	: 'Dependent (Netscape)',
-		popupWidth		: 'Lăţime',
 		popupLeft		: 'Poziţia la stânga',
-		popupHeight		: 'Înălţime',
 		popupTop		: 'Poziţia la dreapta',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Coloane',
 		border		: 'Mărimea marginii',
-		align		: 'Aliniament',
-		alignLeft	: 'Stânga',
-		alignCenter	: 'Centru',
-		alignRight	: 'Dreapta',
-		width		: 'Lăţime',
 		widthPx		: 'pixeli',
 		widthPc		: 'procente',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Înălţime',
 		cellSpace	: 'Spaţiu între celule',
 		cellPad		: 'Spaţiu în cadrul celulei',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Încarcă',
 		alt			: 'Text alternativ',
-		width		: 'Lăţime',
-		height		: 'Înălţime',
 		lockRatio	: 'Păstrează proporţiile',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'HSpace',
 		vSpace		: 'VSpace',
-		align		: 'Aliniere',
-		alignLeft	: 'Stânga',
-		alignRight	: 'Dreapta',
 		alertUrl	: 'Vă rugăm să scrieţi URL-ul imaginii',
 		linkTab		: 'Link (Legătură web)',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Aliniere',
-		alignLeft		: 'Stânga',
 		alignAbsBottom	: 'Jos absolut (Abs Bottom)',
 		alignAbsMiddle	: 'Mijloc absolut (Abs Middle)',
 		alignBaseline	: 'Linia de jos (Baseline)',
-		alignBottom		: 'Jos',
-		alignMiddle		: 'Mijloc',
-		alignRight		: 'Dreapta',
 		alignTextTop	: 'Text sus',
-		alignTop		: 'Sus',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Coloarea fundalului',
-		width			: 'Lăţime',
-		height			: 'Înălţime',
 		hSpace			: 'HSpace',
 		vSpace			: 'VSpace',
 		validateSrc		: 'Vă rugăm să scrieţi URL-ul',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/ru.js
===================================================================
--- CKEditor/trunk/_source/lang/ru.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/ru.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Вставить горизонтальную линию',
 	pagebreak		: 'Вставить разрыв страницы',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Убрать ссылку',
 	undo			: 'Отменить',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Ширина',
+		height			: 'Высота',
+		align			: 'Выравнивание',
+		alignLeft		: 'По левому краю',
+		alignRight		: 'По правому краю',
+		alignCenter		: 'По центру',
+		alignTop		: 'По верху',
+		alignMiddle		: 'Посередине',
+		alignBottom		: 'Понизу',
+		invalidHeight	: 'Высота задается числом.',
+		invalidWidth	: 'Ширина задается числом.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Полосы прокрутки',
 		popupDependent	: 'Зависимый (Netscape)',
-		popupWidth		: 'Ширина',
 		popupLeft		: 'Позиция слева',
-		popupHeight		: 'Высота',
 		popupTop		: 'Позиция сверху',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Колонки',
 		border		: 'Размер бордюра',
-		align		: 'Выравнивание',
-		alignLeft	: 'Слева',
-		alignCenter	: 'По центру',
-		alignRight	: 'Справа',
-		width		: 'Ширина',
 		widthPx		: 'пикселей',
 		widthPc		: 'процентов',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Высота',
 		cellSpace	: 'Промежуток (spacing)',
 		cellPad		: 'Отступ (padding)',
@@ -288,7 +292,4 @@
 			hAlign			: 'Выравнивание по горизонтали',
 			vAlign			: 'Выравнивание по вертикали',
-			alignTop		: 'По верху',
-			alignMiddle		: 'Посередине',
-			alignBottom		: 'По низу',
 			alignBaseline	: 'По базовой линии',
 			bgColor			: 'Цвет фона',
@@ -411,6 +412,4 @@
 		upload		: 'Закачать',
 		alt			: 'Альтернативный текст',
-		width		: 'Ширина',
-		height		: 'Высота',
 		lockRatio	: 'Сохранять пропорции',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'Горизонтальный отступ',
 		vSpace		: 'Вертикальный отступ',
-		align		: 'Выравнивание',
-		alignLeft	: 'По левому краю',
-		alignRight	: 'По правому краю',
 		alertUrl	: 'Пожалуйста, введите URL изображения',
 		linkTab		: 'Ссылка',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?',
 		urlMissing	: 'Отсутствует URL картинки.',
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Тот же домен',
 		accessNever		: 'Никогда',
-		align			: 'Выравнивание',
-		alignLeft		: 'По левому краю',
 		alignAbsBottom	: 'Абс понизу',
 		alignAbsMiddle	: 'Абс посередине',
 		alignBaseline	: 'По базовой линии',
-		alignBottom		: 'Понизу',
-		alignMiddle		: 'Посередине',
-		alignRight		: 'По правому краю',
 		alignTextTop	: 'Текст наверху',
-		alignTop		: 'По верху',
 		quality			: 'Качество',
 		qualityBest		: 'Лучшее',
@@ -475,11 +463,7 @@
 		flashvars		: 'Переменные для Flash',
 		bgcolor			: 'Цвет фона',
-		width			: 'Ширина',
-		height			: 'Высота',
 		hSpace			: 'Горизонтальный отступ',
 		vSpace			: 'Вертикальный отступ',
 		validateSrc		: 'Пожалуйста, введите URL ссылки',
-		validateWidth	: 'Ширина задается числом.',
-		validateHeight	: 'Высота задается числом.',
 		validateHSpace	: 'Горизонтальный отступ задается числом.',
 		validateVSpace	: 'Вертикальный отступ задается числом.'
@@ -615,4 +599,13 @@
 		remove				: 'Убрать Div'
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Якорь',
-		flash	: 'Flash-анимация',
-		div		: 'Разрыв страницы',
-		unknown	: 'Неизвестный объект'
+		anchor		: 'Якорь',
+		flash		: 'Flash-анимация',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Неизвестный объект'
 	},
 
Index: CKEditor/trunk/_source/lang/sk.js
===================================================================
--- CKEditor/trunk/_source/lang/sk.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/sk.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Vložiť vodorovnú čiaru',
 	pagebreak		: 'Vložiť oddeľovač stránky',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Odstrániť odkaz',
 	undo			: 'Späť',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Šírka',
+		height			: 'Výška',
+		align			: 'Zarovnanie',
+		alignLeft		: 'Vľavo',
+		alignRight		: 'Vpravo',
+		alignCenter		: 'Na stred',
+		alignTop		: 'Nahor',
+		alignMiddle		: 'Na stred',
+		alignBottom		: 'Dole',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Posuvníky',
 		popupDependent	: 'Závislosť (Netscape)',
-		popupWidth		: 'Šírka',
 		popupLeft		: 'Ľavý okraj',
-		popupHeight		: 'Výška',
 		popupTop		: 'Horný okraj',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Stĺpce',
 		border		: 'Ohraničenie',
-		align		: 'Zarovnanie',
-		alignLeft	: 'Vľavo',
-		alignCenter	: 'Na stred',
-		alignRight	: 'Vpravo',
-		width		: 'Šírka',
 		widthPx		: 'pixelov',
 		widthPc		: 'percent',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Výška',
 		cellSpace	: 'Vzdialenosť buniek',
 		cellPad		: 'Odsadenie obsahu',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Odoslať',
 		alt			: 'Alternatívny text',
-		width		: 'Šírka',
-		height		: 'Výška',
 		lockRatio	: 'Zámok',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'H-medzera',
 		vSpace		: 'V-medzera',
-		align		: 'Zarovnanie',
-		alignLeft	: 'Vľavo',
-		alignRight	: 'Vpravo',
 		alertUrl	: 'Zadajte prosím URL obrázku',
 		linkTab		: 'Odkaz',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Zarovnanie',
-		alignLeft		: 'Vľavo',
 		alignAbsBottom	: 'Úplne dole',
 		alignAbsMiddle	: 'Do stredu',
 		alignBaseline	: 'Na základňu',
-		alignBottom		: 'Dole',
-		alignMiddle		: 'Na stred',
-		alignRight		: 'Vpravo',
 		alignTextTop	: 'Na horný okraj textu',
-		alignTop		: 'Nahor',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Farba pozadia',
-		width			: 'Šírka',
-		height			: 'Výška',
 		hSpace			: 'H-medzera',
 		vSpace			: 'V-medzera',
 		validateSrc		: 'Zadajte prosím URL odkazu',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/sl.js
===================================================================
--- CKEditor/trunk/_source/lang/sl.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/sl.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Vstavi vodoravno črto',
 	pagebreak		: 'Vstavi prelom strani',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Odstrani povezavo',
 	undo			: 'Razveljavi',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Širina',
+		height			: 'Višina',
+		align			: 'Poravnava',
+		alignLeft		: 'Levo',
+		alignRight		: 'Desno',
+		alignCenter		: 'Sredinsko',
+		alignTop		: 'Na vrh',
+		alignMiddle		: 'V sredino',
+		alignBottom		: 'Na dno',
+		invalidHeight	: 'Višina mora biti število.',
+		invalidWidth	: 'Širina mora biti število.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Drsniki',
 		popupDependent	: 'Podokno (Netscape)',
-		popupWidth		: 'Širina',
 		popupLeft		: 'Lega levo',
-		popupHeight		: 'Višina',
 		popupTop		: 'Lega na vrhu',
 		id				: 'Id',
@@ -244,13 +254,7 @@
 		columns		: 'Stolpci',
 		border		: 'Velikost obrobe',
-		align		: 'Poravnava',
-		alignLeft	: 'Levo',
-		alignCenter	: 'Sredinsko',
-		alignRight	: 'Desno',
-		width		: 'Širina',
 		widthPx		: 'pik',
 		widthPc		: 'procentov',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Višina',
 		cellSpace	: 'Razmik med celicami',
 		cellPad		: 'Polnilo med celicami',
@@ -288,7 +292,4 @@
 			hAlign			: 'Vodoravna poravnava',
 			vAlign			: 'Navpična poravnava',
-			alignTop		: 'Vrh',
-			alignMiddle		: 'Sredina',
-			alignBottom		: 'Dno',
 			alignBaseline	: 'Osnovnica',
 			bgColor			: 'Barva ozadja',
@@ -411,6 +412,4 @@
 		upload		: 'Pošlji',
 		alt			: 'Nadomestno besedilo',
-		width		: 'Širina',
-		height		: 'Višina',
 		lockRatio	: 'Zakleni razmerje',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'Vodoravni razmik',
 		vSpace		: 'Navpični razmik',
-		align		: 'Poravnava',
-		alignLeft	: 'Levo',
-		alignRight	: 'Desno',
 		alertUrl	: 'Vnesite URL slike',
 		linkTab		: 'Povezava',
@@ -427,6 +423,4 @@
 		img2Button	: 'Želiš pretvoriti izbrano sliko v gumb s sliko?',
 		urlMissing	: 'Manjka vir (URL) slike.',
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Samo ista domena',
 		accessNever		: 'Nikoli',
-		align			: 'Poravnava',
-		alignLeft		: 'Levo',
 		alignAbsBottom	: 'Popolnoma na dno',
 		alignAbsMiddle	: 'Popolnoma v sredino',
 		alignBaseline	: 'Na osnovno črto',
-		alignBottom		: 'Na dno',
-		alignMiddle		: 'V sredino',
-		alignRight		: 'Desno',
 		alignTextTop	: 'Besedilo na vrh',
-		alignTop		: 'Na vrh',
 		quality			: 'Kakovost',
 		qualityBest		: 'Najvišja',
@@ -475,11 +463,7 @@
 		flashvars		: 'Spremenljivke za Flash',
 		bgcolor			: 'Barva ozadja',
-		width			: 'Širina',
-		height			: 'Višina',
 		hSpace			: 'Vodoravni razmik',
 		vSpace			: 'Navpični razmik',
 		validateSrc		: 'Vnesite URL povezave',
-		validateWidth	: 'Širina mora biti število.',
-		validateHeight	: 'Višina mora biti število.',
 		validateHSpace	: 'Vodoravni razmik mora biti število.',
 		validateVSpace	: 'Navpični razmik mora biti število.'
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Sidro',
-		flash	: 'Flash animacija',
-		div		: 'Prelom strani',
-		unknown	: 'Neznan objekt'
+		anchor		: 'Sidro',
+		flash		: 'Flash animacija',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Neznan objekt'
 	},
 
Index: CKEditor/trunk/_source/lang/sr-latn.js
===================================================================
--- CKEditor/trunk/_source/lang/sr-latn.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/sr-latn.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Unesi horizontalnu liniju',
 	pagebreak		: 'Insert Page Break for Printing', // MISSING
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Ukloni link',
 	undo			: 'Poni�ti akciju',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Širina',
+		height			: 'Visina',
+		align			: 'Ravnanje',
+		alignLeft		: 'Levo',
+		alignRight		: 'Desno',
+		alignCenter		: 'Sredina',
+		alignTop		: 'Vrh',
+		alignMiddle		: 'Sredina',
+		alignBottom		: 'Dole',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Scroll bar',
 		popupDependent	: 'Zavisno (Netscape)',
-		popupWidth		: 'Širina',
 		popupLeft		: 'Od leve ivice ekrana (px)',
-		popupHeight		: 'Visina',
 		popupTop		: 'Od vrha ekrana (px)',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Kolona',
 		border		: 'Veličina okvira',
-		align		: 'Ravnanje',
-		alignLeft	: 'Levo',
-		alignCenter	: 'Sredina',
-		alignRight	: 'Desno',
-		width		: 'Širina',
 		widthPx		: 'piksela',
 		widthPc		: 'procenata',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Visina',
 		cellSpace	: 'Ćelijski prostor',
 		cellPad		: 'Razmak ćelija',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Pošalji',
 		alt			: 'Alternativni tekst',
-		width		: 'Širina',
-		height		: 'Visina',
 		lockRatio	: 'Zaključaj odnos',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'HSpace',
 		vSpace		: 'VSpace',
-		align		: 'Ravnanje',
-		alignLeft	: 'Levo',
-		alignRight	: 'Desno',
 		alertUrl	: 'Unesite URL slike',
 		linkTab		: 'Link',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Ravnanje',
-		alignLeft		: 'Levo',
 		alignAbsBottom	: 'Abs dole',
 		alignAbsMiddle	: 'Abs sredina',
 		alignBaseline	: 'Bazno',
-		alignBottom		: 'Dole',
-		alignMiddle		: 'Sredina',
-		alignRight		: 'Desno',
 		alignTextTop	: 'Vrh teksta',
-		alignTop		: 'Vrh',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Boja pozadine',
-		width			: 'Širina',
-		height			: 'Visina',
 		hSpace			: 'HSpace',
 		vSpace			: 'VSpace',
 		validateSrc		: 'Unesite URL linka',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/sr.js
===================================================================
--- CKEditor/trunk/_source/lang/sr.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/sr.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Унеси хоризонталну линију',
 	pagebreak		: 'Insert Page Break for Printing', // MISSING
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Уклони линк',
 	undo			: 'Поништи акцију',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Ширина',
+		height			: 'Висина',
+		align			: 'Равнање',
+		alignLeft		: 'Лево',
+		alignRight		: 'Десно',
+		alignCenter		: 'Средина',
+		alignTop		: 'Врх',
+		alignMiddle		: 'Средина',
+		alignBottom		: 'Доле',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Скрол бар',
 		popupDependent	: 'Зависно (Netscape)',
-		popupWidth		: 'Ширина',
 		popupLeft		: 'Од леве ивице екрана (пиксела)',
-		popupHeight		: 'Висина',
 		popupTop		: 'Од врха екрана (пиксела)',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Kолона',
 		border		: 'Величина оквира',
-		align		: 'Равнање',
-		alignLeft	: 'Лево',
-		alignCenter	: 'Средина',
-		alignRight	: 'Десно',
-		width		: 'Ширина',
 		widthPx		: 'пиксела',
 		widthPc		: 'процената',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Висина',
 		cellSpace	: 'Ћелијски простор',
 		cellPad		: 'Размак ћелија',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Пошаљи',
 		alt			: 'Алтернативни текст',
-		width		: 'Ширина',
-		height		: 'Висина',
 		lockRatio	: 'Закључај однос',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'HSpace',
 		vSpace		: 'VSpace',
-		align		: 'Равнање',
-		alignLeft	: 'Лево',
-		alignRight	: 'Десно',
 		alertUrl	: 'Унесите УРЛ слике',
 		linkTab		: 'Линк',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Равнање',
-		alignLeft		: 'Лево',
 		alignAbsBottom	: 'Abs доле',
 		alignAbsMiddle	: 'Abs средина',
 		alignBaseline	: 'Базно',
-		alignBottom		: 'Доле',
-		alignMiddle		: 'Средина',
-		alignRight		: 'Десно',
 		alignTextTop	: 'Врх текста',
-		alignTop		: 'Врх',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Боја позадине',
-		width			: 'Ширина',
-		height			: 'Висина',
 		hSpace			: 'HSpace',
 		vSpace			: 'VSpace',
 		validateSrc		: 'Унесите УРЛ линка',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/sv.js
===================================================================
--- CKEditor/trunk/_source/lang/sv.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/sv.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Infoga horisontal linje',
 	pagebreak		: 'Infoga sidbrytning',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Radera länk',
 	undo			: 'Ångra',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Bredd',
+		height			: 'Höjd',
+		align			: 'Justering',
+		alignLeft		: 'Vänster',
+		alignRight		: 'Höger',
+		alignCenter		: 'Centrerad',
+		alignTop		: 'Överkant',
+		alignMiddle		: 'Mitten',
+		alignBottom		: 'Nederkant',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Scrolllista',
 		popupDependent	: 'Beroende (endest Netscape)',
-		popupWidth		: 'Bredd',
 		popupLeft		: 'Position från vänster',
-		popupHeight		: 'Höjd',
 		popupTop		: 'Position från sidans topp',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'Kolumner',
 		border		: 'Kantstorlek',
-		align		: 'Justering',
-		alignLeft	: 'Vänster',
-		alignCenter	: 'Centrerad',
-		alignRight	: 'Höger',
-		width		: 'Bredd',
 		widthPx		: 'pixlar',
 		widthPc		: 'procent',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'Höjd',
 		cellSpace	: 'Cellavstånd',
 		cellPad		: 'Cellutfyllnad',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'Ladda upp',
 		alt			: 'Alternativ text',
-		width		: 'Bredd',
-		height		: 'Höjd',
 		lockRatio	: 'Lås höjd/bredd förhållanden',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'Horis. marginal',
 		vSpace		: 'Vert. marginal',
-		align		: 'Justering',
-		alignLeft	: 'Vänster',
-		alignRight	: 'Höger',
 		alertUrl	: 'Var god och ange bildens URL',
 		linkTab		: 'Länk',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'Justering',
-		alignLeft		: 'Vänster',
 		alignAbsBottom	: 'Absolut nederkant',
 		alignAbsMiddle	: 'Absolut centrering',
 		alignBaseline	: 'Baslinje',
-		alignBottom		: 'Nederkant',
-		alignMiddle		: 'Mitten',
-		alignRight		: 'Höger',
 		alignTextTop	: 'Text överkant',
-		alignTop		: 'Överkant',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'Bakgrundsfärg',
-		width			: 'Bredd',
-		height			: 'Höjd',
 		hSpace			: 'Horis. marginal',
 		vSpace			: 'Vert. marginal',
 		validateSrc		: 'Var god ange länkens URL',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/th.js
===================================================================
--- CKEditor/trunk/_source/lang/th.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/th.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'แทรกเส้นคั่นบรรทัด',
 	pagebreak		: 'แทรกตัวแบ่งหน้า Page Break',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'ลบ ลิงค์',
 	undo			: 'ยกเลิกคำสั่ง',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'ความกว้าง',
+		height			: 'ความสูง',
+		align			: 'การจัดวาง',
+		alignLeft		: 'ชิดซ้าย',
+		alignRight		: 'ชิดขวา',
+		alignCenter		: 'กึ่งกลาง',
+		alignTop		: 'บนสุด',
+		alignMiddle		: 'กึ่งกลางแนวตั้ง',
+		alignBottom		: 'ชิดด้านล่าง',
+		invalidHeight	: 'Height must be a number.', // MISSING
+		invalidWidth	: 'Width must be a number.', // MISSING
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'แสดงแถบเลื่อน',
 		popupDependent	: 'แสดงเต็มหน้าจอ (Netscape)',
-		popupWidth		: 'กว้าง',
 		popupLeft		: 'พิกัดซ้าย (Left Position)',
-		popupHeight		: 'สูง',
 		popupTop		: 'พิกัดบน (Top Position)',
 		id				: 'Id', // MISSING
@@ -244,13 +254,7 @@
 		columns		: 'สดมน์',
 		border		: 'ขนาดเส้นขอบ',
-		align		: 'การจัดตำแหน่ง',
-		alignLeft	: 'ชิดซ้าย',
-		alignCenter	: 'กึ่งกลาง',
-		alignRight	: 'ชิดขวา',
-		width		: 'กว้าง',
 		widthPx		: 'จุดสี',
 		widthPc		: 'เปอร์เซ็น',
 		widthUnit	: 'width unit', // MISSING
-		height		: 'สูง',
 		cellSpace	: 'ระยะแนวนอนน',
 		cellPad		: 'ระยะแนวตั้ง',
@@ -288,7 +292,4 @@
 			hAlign			: 'Horizontal Alignment', // MISSING
 			vAlign			: 'Vertical Alignment', // MISSING
-			alignTop		: 'Top', // MISSING
-			alignMiddle		: 'Middle', // MISSING
-			alignBottom		: 'Bottom', // MISSING
 			alignBaseline	: 'Baseline', // MISSING
 			bgColor			: 'Background Color', // MISSING
@@ -411,6 +412,4 @@
 		upload		: 'อัพโหลดไฟล์',
 		alt			: 'คำประกอบรูปภาพ',
-		width		: 'ความกว้าง',
-		height		: 'ความสูง',
 		lockRatio	: 'กำหนดอัตราส่วน กว้าง-สูง แบบคงที่',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: 'ระยะแนวนอน',
 		vSpace		: 'ระยะแนวตั้ง',
-		align		: 'การจัดวาง',
-		alignLeft	: 'ชิดซ้าย',
-		alignRight	: 'ชิดขวา',
 		alertUrl	: 'กรุณาระบุที่อยู่อ้างอิงออนไลน์ของไฟล์รูปภาพ (URL)',
 		linkTab		: 'ลิ้งค์',
@@ -427,6 +423,4 @@
 		img2Button	: 'Do you want to transform the selected image on a image button?', // MISSING
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Same domain', // MISSING
 		accessNever		: 'Never', // MISSING
-		align			: 'การจัดวาง',
-		alignLeft		: 'ชิดซ้าย',
 		alignAbsBottom	: 'ชิดด้านล่างสุด',
 		alignAbsMiddle	: 'กึ่งกลาง',
 		alignBaseline	: 'ชิดบรรทัด',
-		alignBottom		: 'ชิดด้านล่าง',
-		alignMiddle		: 'กึ่งกลางแนวตั้ง',
-		alignRight		: 'ชิดขวา',
 		alignTextTop	: 'ใต้ตัวอักษร',
-		alignTop		: 'บนสุด',
 		quality			: 'Quality', // MISSING
 		qualityBest		: 'Best', // MISSING
@@ -475,11 +463,7 @@
 		flashvars		: 'Variables for Flash', // MISSING
 		bgcolor			: 'สีพื้นหลัง',
-		width			: 'ความกว้าง',
-		height			: 'ความสูง',
 		hSpace			: 'ระยะแนวนอน',
 		vSpace			: 'ระยะแนวตั้ง',
 		validateSrc		: 'กรุณาระบุที่อยู่อ้างอิงออนไลน์ (URL)',
-		validateWidth	: 'Width must be a number.', // MISSING
-		validateHeight	: 'Height must be a number.', // MISSING
 		validateHSpace	: 'HSpace must be a number.', // MISSING
 		validateVSpace	: 'VSpace must be a number.' // MISSING
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Anchor', // MISSING
-		flash	: 'Flash Animation', // MISSING
-		div		: 'Page Break', // MISSING
-		unknown	: 'Unknown Object' // MISSING
+		anchor		: 'Anchor', // MISSING
+		flash		: 'Flash Animation', // MISSING
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Unknown Object' // MISSING
 	},
 
Index: CKEditor/trunk/_source/lang/tr.js
===================================================================
--- CKEditor/trunk/_source/lang/tr.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/tr.js	(revision 6241)
@@ -56,4 +56,5 @@
 	horizontalrule	: 'Yatay Satır Ekle',
 	pagebreak		: 'Sayfa Sonu Ekle',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Köprü Kaldır',
 	undo			: 'Geri Al',
@@ -109,4 +110,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Genişlik',
+		height			: 'Yükseklik',
+		align			: 'Hizalama',
+		alignLeft		: 'Sol',
+		alignRight		: 'Sağ',
+		alignCenter		: 'Merkez',
+		alignTop		: 'Tepe',
+		alignMiddle		: 'Orta',
+		alignBottom		: 'Alt',
+		invalidHeight	: 'Yükseklik sayı olmalıdır.',
+		invalidWidth	: 'Genişlik bir sayı olmalıdır.',
 
 		// Put the voice-only part of the label in the span.
@@ -155,7 +167,5 @@
 		popupScrollBars	: 'Kaydırma Çubukları',
 		popupDependent	: 'Bağımlı (Netscape)',
-		popupWidth		: 'Genişlik',
 		popupLeft		: 'Sola Göre Konum',
-		popupHeight		: 'Yükseklik',
 		popupTop		: 'Yukarıya Göre Konum',
 		id				: 'Id',
@@ -243,13 +253,7 @@
 		columns		: 'Sütunlar',
 		border		: 'Kenar Kalınlığı',
-		align		: 'Hizalama',
-		alignLeft	: 'Sol',
-		alignCenter	: 'Merkez',
-		alignRight	: 'Sağ',
-		width		: 'Genişlik',
 		widthPx		: 'piksel',
 		widthPc		: 'yüzde',
 		widthUnit	: 'genişlik birimi',
-		height		: 'Yükseklik',
 		cellSpace	: 'Izgara kalınlığı',
 		cellPad		: 'Izgara yazı arası',
@@ -287,7 +291,4 @@
 			hAlign			: 'Düşey Hizalama',
 			vAlign			: 'Yataş Hizalama',
-			alignTop		: 'Üst',
-			alignMiddle		: 'Orta',
-			alignBottom		: 'Alt',
 			alignBaseline	: 'Tabana',
 			bgColor			: 'Arkaplan Rengi',
@@ -410,6 +411,4 @@
 		upload		: 'Karşıya Yükle',
 		alt			: 'Alternatif Yazı',
-		width		: 'Genişlik',
-		height		: 'Yükseklik',
 		lockRatio	: 'Oranı Kilitle',
 		unlockRatio	: 'Kilitli Oran',
@@ -418,7 +417,4 @@
 		hSpace		: 'Yatay Boşluk',
 		vSpace		: 'Dikey Boşluk',
-		align		: 'Hizalama',
-		alignLeft	: 'Sol',
-		alignRight	: 'Sağ',
 		alertUrl	: 'Lütfen resmin URL\'sini yazınız',
 		linkTab		: 'Köprü',
@@ -426,6 +422,4 @@
 		img2Button	: 'Seçili olan resimi, resimli butona çevirmek istermisiniz?',
 		urlMissing	: 'Resmin URL kaynağı eksiktir.',
-		validateWidth	: 'Genişlik tam sayı olmalıdır.',
-		validateHeight	: 'Yükseklik tam sayı olmalıdır.',
 		validateBorder	: 'Çerçeve tam sayı olmalıdır.',
 		validateHSpace	: 'HSpace tam sayı olmalıdır.',
@@ -451,14 +445,8 @@
 		accessSameDomain: 'Aynı domain',
 		accessNever		: 'Asla',
-		align			: 'Hizalama',
-		alignLeft		: 'Sol',
 		alignAbsBottom	: 'Tam Altı',
 		alignAbsMiddle	: 'Tam Ortası',
 		alignBaseline	: 'Taban Çizgisi',
-		alignBottom		: 'Alt',
-		alignMiddle		: 'Orta',
-		alignRight		: 'Sağ',
 		alignTextTop	: 'Yazı Tepeye',
-		alignTop		: 'Tepe',
 		quality			: 'Kalite',
 		qualityBest		: 'En iyi',
@@ -474,11 +462,7 @@
 		flashvars		: 'Flash Değerleri',
 		bgcolor			: 'Arka Renk',
-		width			: 'Genişlik',
-		height			: 'Yükseklik',
 		hSpace			: 'Yatay Boşluk',
 		vSpace			: 'Dikey Boşluk',
 		validateSrc		: 'Lütfen köprü URL\'sini yazın',
-		validateWidth	: 'Genişlik bir sayı olmalıdır.',
-		validateHeight	: 'Yükseklik sayı olmalıdır.',
 		validateHSpace	: 'HSpace sayı olmalıdır.',
 		validateVSpace	: 'VSpace sayı olmalıdır.'
@@ -614,4 +598,13 @@
 		remove				: 'Div Kaldır'
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -730,8 +723,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Bağlantı',
-		flash	: 'Flash Animasyonu',
-		div		: 'Sayfa Kesimi',
-		unknown	: 'Bilinmeyen Nesne'
+		anchor		: 'Bağlantı',
+		flash		: 'Flash Animasyonu',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Bilinmeyen Nesne'
 	},
 
Index: CKEditor/trunk/_source/lang/uk.js
===================================================================
--- CKEditor/trunk/_source/lang/uk.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/uk.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Горизонтальна лінія',
 	pagebreak		: 'Вставити розрив сторінки',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Видалити посилання',
 	undo			: 'Повернути',
@@ -110,4 +111,15 @@
 		styles			: 'Стиль CSS',
 		cssClasses		: 'Клас CSS',
+		width			: 'Ширина',
+		height			: 'Висота',
+		align			: 'Вирівнювання',
+		alignLeft		: 'По лівому краю',
+		alignRight		: 'По правому краю',
+		alignCenter		: 'По центру',
+		alignTop		: 'По верхньому краю',
+		alignMiddle		: 'По середині',
+		alignBottom		: 'По нижньому краю',
+		invalidHeight	: 'Висота повинна бути цілим числом.',
+		invalidWidth	: 'Ширина повинна бути цілим числом.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Стрічки прокрутки',
 		popupDependent	: 'Залежний (Netscape)',
-		popupWidth		: 'Ширина',
 		popupLeft		: 'Позиція зліва',
-		popupHeight		: 'Висота',
 		popupTop		: 'Позиція зверху',
 		id				: 'Ідентифікатор',
@@ -244,13 +254,7 @@
 		columns		: 'Стовбці',
 		border		: 'Розмір рамки',
-		align		: 'Вирівнювання',
-		alignLeft	: 'По лівому краю',
-		alignCenter	: 'По центру',
-		alignRight	: 'По правому краю',
-		width		: 'Ширина',
 		widthPx		: 'пікселів',
 		widthPc		: 'відсотків',
 		widthUnit	: 'Одиниці вимір.',
-		height		: 'Висота',
 		cellSpace	: 'Проміжок',
 		cellPad		: 'Внутр. відступ',
@@ -288,7 +292,4 @@
 			hAlign			: 'Гориз. вирівнювання',
 			vAlign			: 'Верт. вирівнювання',
-			alignTop		: 'По верхньому краю',
-			alignMiddle		: 'По середині',
-			alignBottom		: 'По нижньому краю',
 			alignBaseline	: 'По базовій лінії',
 			bgColor			: 'Колір фону',
@@ -411,6 +412,4 @@
 		upload		: 'Надіслати',
 		alt			: 'Альтернативний текст',
-		width		: 'Ширина',
-		height		: 'Висота',
 		lockRatio	: 'Зберегти пропорції',
 		unlockRatio	: 'Не зберігати пропорції',
@@ -419,7 +418,4 @@
 		hSpace		: 'Гориз. відступ',
 		vSpace		: 'Верт. відступ',
-		align		: 'Вирівн.',
-		alignLeft	: 'По лівому краю',
-		alignRight	: 'По правому краю',
 		alertUrl	: 'Будь ласка, вкажіть URL зображення',
 		linkTab		: 'Посилання',
@@ -427,6 +423,4 @@
 		img2Button	: 'Бажаєте перетворити обране зображення на кнопку-зображення?',
 		urlMissing	: 'Вкажіть URL зображення.',
-		validateWidth	: 'Ширина повинна бути цілим числом.',
-		validateHeight	: 'Висота повинна бути цілим числом.',
 		validateBorder	: 'Ширина рамки повинна бути цілим числом.',
 		validateHSpace	: 'Гориз. відступ повинен бути цілим числом.',
@@ -452,14 +446,8 @@
 		accessSameDomain: 'З того ж домена',
 		accessNever		: 'Ніколи',
-		align			: 'Вирівнювання',
-		alignLeft		: 'По лівому краю',
 		alignAbsBottom	: 'По нижньому краю (abs)',
 		alignAbsMiddle	: 'По середині (abs)',
 		alignBaseline	: 'По базовій лінії',
-		alignBottom		: 'По нижньому краю',
-		alignMiddle		: 'По середині',
-		alignRight		: 'По правому краю',
 		alignTextTop	: 'Текст по верхньому краю',
-		alignTop		: 'По верхньому краю',
 		quality			: 'Якість',
 		qualityBest		: 'Відмінна',
@@ -475,11 +463,7 @@
 		flashvars		: 'Змінні Flash',
 		bgcolor			: 'Колір фону',
-		width			: 'Ширина',
-		height			: 'Висота',
 		hSpace			: 'Гориз. відступ',
 		vSpace			: 'Верт. відступ',
 		validateSrc		: 'Будь ласка, вкажіть URL посилання',
-		validateWidth	: 'Ширина повинна бути цілим числом.',
-		validateHeight	: 'Висота повинна бути цілим числом.',
 		validateHSpace	: 'Гориз. відступ повинен бути цілим числом.',
 		validateVSpace	: 'Верт. відступ повинен бути цілим числом.'
@@ -615,4 +599,13 @@
 		remove				: 'Видалити блок'
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Якір',
-		flash	: 'Flash-анімація',
-		div		: 'Розрив сторінки',
-		unknown	: 'Невідомий об\'єкт'
+		anchor		: 'Якір',
+		flash		: 'Flash-анімація',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Невідомий об\'єкт'
 	},
 
Index: CKEditor/trunk/_source/lang/vi.js
===================================================================
--- CKEditor/trunk/_source/lang/vi.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/vi.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: 'Chèn đường phân cách ngang',
 	pagebreak		: 'Chèn ngắt trang',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: 'Xoá liên kết',
 	undo			: 'Khôi phục thao tác',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: 'Chiều rộng',
+		height			: 'chiều cao',
+		align			: 'Vị trí',
+		alignLeft		: 'Trái',
+		alignRight		: 'Phải',
+		alignCenter		: 'Giữa',
+		alignTop		: 'Trên',
+		alignMiddle		: 'Giữa',
+		alignBottom		: 'Dưới',
+		invalidHeight	: 'Chiều cao phải là số nguyên.',
+		invalidWidth	: 'Chiều rộng phải là số nguyên.',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: 'Thanh cuộn',
 		popupDependent	: 'Phụ thuộc (Netscape)',
-		popupWidth		: 'Rộng',
 		popupLeft		: 'Vị trí bên trái',
-		popupHeight		: 'Cao',
 		popupTop		: 'Vị trí phía trên',
 		id				: 'Định danh',
@@ -244,13 +254,7 @@
 		columns		: 'Số cột',
 		border		: 'Kích thước đường viền',
-		align		: 'Canh lề',
-		alignLeft	: 'Trái',
-		alignCenter	: 'Giữa',
-		alignRight	: 'Phải',
-		width		: 'Rộng',
 		widthPx		: 'Điểm ảnh (px)',
 		widthPc		: 'Phần trăm (%)',
 		widthUnit	: 'Đơn vị',
-		height		: 'Chiều cao',
 		cellSpace	: 'Khoảng cách giữa các ô',
 		cellPad		: 'Khoảng đệm giữ ô và nội dung',
@@ -288,7 +292,4 @@
 			hAlign			: 'Canh lề ngang',
 			vAlign			: 'Canh lề dọc',
-			alignTop		: 'Trên cùng',
-			alignMiddle		: 'Chính giữa',
-			alignBottom		: 'Dưới cùng',
 			alignBaseline	: 'Đường cơ sở',
 			bgColor			: 'Màu nền',
@@ -411,6 +412,4 @@
 		upload		: 'Tải lên',
 		alt			: 'Chú thích ảnh',
-		width		: 'Chiều rộng',
-		height		: 'chiều cao',
 		lockRatio	: 'Giữ nguyên tỷ lệ',
 		unlockRatio	: 'Phá bỏ tỷ lệ',
@@ -419,7 +418,4 @@
 		hSpace		: 'Khoảng đệm ngang',
 		vSpace		: 'Khoảng đệm dọc',
-		align		: 'Vị trí',
-		alignLeft	: 'Bên trái',
-		alignRight	: 'Bên phải',
 		alertUrl	: 'Hãy đưa vào đường dẫn của ảnh',
 		linkTab		: 'Tab liên kết',
@@ -427,6 +423,4 @@
 		img2Button	: 'Bạn có muốn chuyển đổi ảnh được chọn thành nút bấm bằng ảnh?',
 		urlMissing	: 'Thiếu đường dẫn hình ảnh',
-		validateWidth	: 'Chiều rộng của ảnh phải là một số nguyên dương',
-		validateHeight	: 'Chiều cao của ảnh phải là một số nguyên dương',
 		validateBorder	: 'Chiều rộng của đường viền phải là một số nguyên dương',
 		validateHSpace	: 'Khoảng đệm ngang phải là một số nguyên dương',
@@ -452,14 +446,8 @@
 		accessSameDomain: 'Cùng tên miền',
 		accessNever		: 'Không bao giờ',
-		align			: 'Vị trí',
-		alignLeft		: 'Trái',
 		alignAbsBottom	: 'Dưới tuyệt đối',
 		alignAbsMiddle	: 'Giữa tuyệt đối',
 		alignBaseline	: 'Đường cơ sở',
-		alignBottom		: 'Dưới',
-		alignMiddle		: 'Giữa',
-		alignRight		: 'Phải',
 		alignTextTop	: 'Phía trên chữ',
-		alignTop		: 'Trên',
 		quality			: 'Chất lượng',
 		qualityBest		: 'Tốt nhất',
@@ -475,11 +463,7 @@
 		flashvars		: 'Các biến số dành cho Flash',
 		bgcolor			: 'Màu nền',
-		width			: 'Rộng',
-		height			: 'Cao',
 		hSpace			: 'Khoảng đệm ngang',
 		vSpace			: 'Khoảng đệm dọc',
 		validateSrc		: 'Hãy đưa vào đường dẫn liên kết',
-		validateWidth	: 'Chiều rộng phải là số nguyên.',
-		validateHeight	: 'Chiều cao phải là số nguyên.',
 		validateHSpace	: 'Khoảng đệm ngang phải là số nguyên.',
 		validateVSpace	: 'Khoảng đệm dọc phải là số nguyên.'
@@ -615,4 +599,13 @@
 		remove				: 'Xóa bỏ'
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: 'Điểm neo',
-		flash	: 'Flash',
-		div		: 'Ngắt trang',
-		unknown	: 'Đối tượng không rõ ràng'
+		anchor		: 'Điểm neo',
+		flash		: 'Flash',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: 'Đối tượng không rõ ràng'
 	},
 
Index: CKEditor/trunk/_source/lang/zh-cn.js
===================================================================
--- CKEditor/trunk/_source/lang/zh-cn.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/zh-cn.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: '插入水平线',
 	pagebreak		: '插入分页符',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: '取消超链接',
 	undo			: '撤消',
@@ -110,4 +111,15 @@
 		styles			: '样式',
 		cssClasses		: '样式类',
+		width			: '宽度',
+		height			: '高度',
+		align			: '对齐方式',
+		alignLeft		: '左对齐',
+		alignRight		: '右对齐',
+		alignCenter		: '居中',
+		alignTop		: '顶端',
+		alignMiddle		: '居中',
+		alignBottom		: '底部',
+		invalidHeight	: '高度必须为数字格式',
+		invalidWidth	: '宽度必须为数字格式',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: '滚动条',
 		popupDependent	: '依附 (NS)',
-		popupWidth		: '宽',
 		popupLeft		: '左',
-		popupHeight		: '高',
 		popupTop		: '右',
 		id				: 'ID',
@@ -244,13 +254,7 @@
 		columns		: '列数',
 		border		: '边框',
-		align		: '对齐',
-		alignLeft	: '左对齐',
-		alignCenter	: '居中',
-		alignRight	: '右对齐',
-		width		: '宽度',
 		widthPx		: '像素',
 		widthPc		: '百分比',
 		widthUnit	: '宽度单位',
-		height		: '高度',
 		cellSpace	: '间距',
 		cellPad		: '边距',
@@ -288,7 +292,4 @@
 			hAlign			: '水平对齐',
 			vAlign			: '垂直对齐',
-			alignTop		: '顶端',
-			alignMiddle		: '中间',
-			alignBottom		: '底部',
 			alignBaseline	: '基线',
 			bgColor			: '背景颜色',
@@ -411,6 +412,4 @@
 		upload		: '上传',
 		alt			: '替换文本',
-		width		: '宽度',
-		height		: '高度',
 		lockRatio	: '锁定比例',
 		unlockRatio	: '不锁定比例',
@@ -419,7 +418,4 @@
 		hSpace		: '水平间距',
 		vSpace		: '垂直间距',
-		align		: '对齐方式',
-		alignLeft	: '左对齐',
-		alignRight	: '右对齐',
 		alertUrl	: '请输入图象地址',
 		linkTab		: '链接',
@@ -427,6 +423,4 @@
 		img2Button	: '确定要把当前图像改变为按钮吗?',
 		urlMissing	: '缺少图像源文件地址',
-		validateWidth	: '图像宽度必须为整数格式',
-		validateHeight	: '图像高度必须为整数格式',
 		validateBorder	: '边框大小必须为整数格式',
 		validateHSpace	: '水平间距必须为整数格式',
@@ -452,14 +446,8 @@
 		accessSameDomain: '同域',
 		accessNever		: '从不',
-		align			: '对齐方式',
-		alignLeft		: '左对齐',
 		alignAbsBottom	: '绝对底部',
 		alignAbsMiddle	: '绝对居中',
 		alignBaseline	: '基线',
-		alignBottom		: '底部',
-		alignMiddle		: '居中',
-		alignRight		: '右对齐',
 		alignTextTop	: '文本上方',
-		alignTop		: '顶端',
 		quality			: '质量',
 		qualityBest		: '最好',
@@ -475,11 +463,7 @@
 		flashvars		: 'Flash 变量',
 		bgcolor			: '背景颜色',
-		width			: '宽度',
-		height			: '高度',
 		hSpace			: '水平间距',
 		vSpace			: '垂直间距',
 		validateSrc		: '请输入源文件地址',
-		validateWidth	: '宽度必须为数字格式',
-		validateHeight	: '高度必须为数字格式',
 		validateHSpace	: '水平间距必须为数字格式',
 		validateVSpace	: '垂直间距必须为数字格式'
@@ -615,4 +599,13 @@
 		remove				: '移除 DIV'
   	},
+
+	iframe :
+	{
+		title		: 'iFrame属性',
+		toolbar		: 'iFrame',
+		noUrl		: '请输入框架的 URL',
+		scrolling	: '允许滚动条',
+		border		: '显示框架边框'
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: '锚点',
-		flash	: 'Flash 动画',
-		div		: '分页',
-		unknown	: '未知对象'
+		anchor		: '锚点',
+		flash		: 'Flash 动画',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: '未知对象'
 	},
 
Index: CKEditor/trunk/_source/lang/zh.js
===================================================================
--- CKEditor/trunk/_source/lang/zh.js	(revision 6232)
+++ CKEditor/trunk/_source/lang/zh.js	(revision 6241)
@@ -57,4 +57,5 @@
 	horizontalrule	: '插入水平線',
 	pagebreak		: '插入分頁符號',
+	pagebreakAlt		: 'Page Break', // MISSING
 	unlink			: '移除超連結',
 	undo			: '復原',
@@ -110,4 +111,15 @@
 		styles			: 'Style', // MISSING
 		cssClasses		: 'Stylesheet Classes', // MISSING
+		width			: '寬度',
+		height			: '高度',
+		align			: '對齊',
+		alignLeft		: '靠左對齊',
+		alignRight		: '靠右對齊',
+		alignCenter		: '置中',
+		alignTop		: '靠上對齊',
+		alignMiddle		: '置中對齊',
+		alignBottom		: '靠下對齊',
+		invalidHeight	: '高度必須為數字格式',
+		invalidWidth	: '寬度必須為數字格式',
 
 		// Put the voice-only part of the label in the span.
@@ -156,7 +168,5 @@
 		popupScrollBars	: '捲軸',
 		popupDependent	: '從屬 (NS)',
-		popupWidth		: '寬',
 		popupLeft		: '左',
-		popupHeight		: '高',
 		popupTop		: '右',
 		id				: 'ID',
@@ -244,13 +254,7 @@
 		columns		: '欄數',
 		border		: '邊框',
-		align		: '對齊',
-		alignLeft	: '靠左對齊',
-		alignCenter	: '置中',
-		alignRight	: '靠右對齊',
-		width		: '寬度',
 		widthPx		: '像素',
 		widthPc		: '百分比',
 		widthUnit	: 'width unit', // MISSING
-		height		: '高度',
 		cellSpace	: '間距',
 		cellPad		: '內距',
@@ -288,7 +292,4 @@
 			hAlign			: '水平對齊',
 			vAlign			: '垂直對齊',
-			alignTop		: '向上對齊',
-			alignMiddle		: '置中對齊',
-			alignBottom		: '向下對齊',
 			alignBaseline	: '基線對齊',
 			bgColor			: '背景顏色',
@@ -411,6 +412,4 @@
 		upload		: '上傳',
 		alt			: '替代文字',
-		width		: '寬度',
-		height		: '高度',
 		lockRatio	: '等比例',
 		unlockRatio	: 'Unlock Ratio', // MISSING
@@ -419,7 +418,4 @@
 		hSpace		: '水平距離',
 		vSpace		: '垂直距離',
-		align		: '對齊',
-		alignLeft	: '靠左對齊',
-		alignRight	: '靠右對齊',
 		alertUrl	: '請輸入影像 URL',
 		linkTab		: '超連結',
@@ -427,6 +423,4 @@
 		img2Button	: '要把影像改成影像按鈕嗎？',
 		urlMissing	: 'Image source URL is missing.', // MISSING
-		validateWidth	: 'Width must be a whole number.', // MISSING
-		validateHeight	: 'Height must be a whole number.', // MISSING
 		validateBorder	: 'Border must be a whole number.', // MISSING
 		validateHSpace	: 'HSpace must be a whole number.', // MISSING
@@ -452,14 +446,8 @@
 		accessSameDomain: '相同域名',
 		accessNever		: '永不',
-		align			: '對齊',
-		alignLeft		: '靠左對齊',
 		alignAbsBottom	: '絕對下方',
 		alignAbsMiddle	: '絕對中間',
 		alignBaseline	: '基準線',
-		alignBottom		: '靠下對齊',
-		alignMiddle		: '置中對齊',
-		alignRight		: '靠右對齊',
 		alignTextTop	: '文字上方',
-		alignTop		: '靠上對齊',
 		quality			: '質素',
 		qualityBest		: '最好',
@@ -475,11 +463,7 @@
 		flashvars		: 'Flash 變數',
 		bgcolor			: '背景顏色',
-		width			: '寬度',
-		height			: '高度',
 		hSpace			: '水平距離',
 		vSpace			: '垂直距離',
 		validateSrc		: '請輸入欲連結的 URL',
-		validateWidth	: '寬度必須為數字格式',
-		validateHeight	: '高度必須為數字格式',
 		validateHSpace	: '水平間距必須為數字格式',
 		validateVSpace	: '垂直間距必須為數字格式'
@@ -615,4 +599,13 @@
 		remove				: 'Remove Div' // MISSING
   	},
+
+	iframe :
+	{
+		title		: 'iFrame Properties', // MISSING
+		toolbar		: 'iFrame', // MISSING
+		noUrl		: 'Please type the iFrame URL', // MISSING
+		scrolling	: 'Enable scrollbars', // MISSING
+		border		: 'Show frame border' // MISSING
+	},
 
 	font :
@@ -731,8 +724,9 @@
 	fakeobjects :
 	{
-		anchor	: '錨點',
-		flash	: 'Flash 動畫',
-		div		: '分頁',
-		unknown	: '不明物件'
+		anchor		: '錨點',
+		flash		: 'Flash 動畫',
+		iframe		: 'iFrame', // MISSING
+		hiddenfield	: 'Hidden Field', // MISSING
+		unknown		: '不明物件'
 	},
 
Index: CKEditor/trunk/_source/plugins/adobeair/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/adobeair/plugin.js	(revision 6241)
+++ CKEditor/trunk/_source/plugins/adobeair/plugin.js	(revision 6241)
@@ -0,0 +1,228 @@
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	var eventNameList = [ 'click', 'keydown', 'mousedown', 'keypress', 'mouseover', 'mouseout' ];
+
+	// Inline event callbacks assigned via innerHTML/outerHTML, such as
+	// onclick/onmouseover, are ignored in AIR.
+	// Use DOM2 event listeners to substitue inline handlers instead.
+	function convertInlineHandlers( container )
+	{
+		// TODO: document.querySelectorAll is not supported in AIR.
+		var children = container.getElementsByTag( '*' ),
+			count = children.count(),
+			child;
+
+		for ( var i = 0; i < count; i++ )
+		{
+			child = children.getItem( i );
+
+			(function( node )
+			{
+				for ( var j = 0; j < eventNameList.length; j++ )
+				{
+					(function( eventName )
+					{
+						var inlineEventHandler = node.getAttribute( 'on' + eventName );
+						if ( node.hasAttribute( 'on' + eventName ) )
+						{
+							node.removeAttribute( 'on' + eventName );
+							node.on( eventName, function( evt )
+							{
+								var callFunc = /(return\s*)?CKEDITOR\.tools\.callFunction\(([^)]+)\)/.exec( inlineEventHandler ),
+									hasReturn = callFunc && callFunc[ 1 ],
+									callFuncArgs = callFunc &&  callFunc[ 2 ].split( ',' ),
+									preventDefault = /return false;/.test( inlineEventHandler );
+
+								if ( callFuncArgs )
+								{
+									var nums = callFuncArgs.length,
+										argName;
+
+									for ( var i = 0; i < nums; i++ )
+									{
+										// Trim spaces around param.
+										callFuncArgs[ i ] = argName = CKEDITOR.tools.trim( callFuncArgs[ i ] );
+
+										// String form param.
+										var strPattern = argName.match( /^(["'])([^"']*?)\1$/ );
+										if ( strPattern )
+										{
+											callFuncArgs[ i ] = strPattern[ 2 ];
+											continue;
+										}
+
+										// Integer form param.
+										if ( argName.match( /\d+/ ) )
+										{
+											callFuncArgs[ i ] = parseInt( argName, 10 );
+											continue;
+										}
+
+										// Speical variables.
+										switch( argName )
+										{
+											case 'this' :
+												callFuncArgs[ i ] = node.$;
+												break;
+											case 'event' :
+												callFuncArgs[ i ] = evt.data.$;
+												break;
+											case 'null' :
+												callFuncArgs [ i ] = null;
+												break;
+										}
+									}
+
+									var retval = CKEDITOR.tools.callFunction.apply( window, callFuncArgs );
+									if ( hasReturn && retval === false )
+										 preventDefault = 1;
+								}
+
+								if ( preventDefault )
+									evt.data.preventDefault();
+							});
+						}
+					})( eventNameList[ j ] );
+				}
+			})( child );
+		}
+	}
+
+	CKEDITOR.plugins.add( 'adobeair',
+	{
+		init : function( editor )
+		{
+			if ( !CKEDITOR.env.air )
+				return;
+
+			// Body doesn't get default margin on AIR.
+			editor.addCss( 'body { padding: 8px }' );
+
+			editor.on( 'uiReady', function()
+				{
+					convertInlineHandlers( editor.container );
+
+					if ( editor.sharedSpaces )
+					{
+						for ( var space in editor.sharedSpaces )
+							convertInlineHandlers( editor.sharedSpaces[ space ] );
+					}
+
+					editor.on( 'elementsPathUpdate', function( evt ) { convertInlineHandlers( evt.data.space ); } );
+				});
+
+			editor.on( 'contentDom', function()
+				{
+					// Hyperlinks are enabled in editable documents in Adobe
+					// AIR. Prevent their click behavior.
+					editor.document.on( 'click', function( ev )
+						{
+							ev.data.preventDefault( true );
+						});
+				});
+		}
+	});
+
+	CKEDITOR.ui.on( 'ready', function( evt )
+		{
+			var ui = evt.data;
+			// richcombo, panelbutton and menu
+			if ( ui._.panel )
+			{
+				var panel = ui._.panel._.panel,
+						holder;
+
+				( function()
+				{
+					// Adding dom event listeners off-line are not supported in AIR,
+					// waiting for panel iframe loaded.
+					if ( !panel.isLoaded )
+					{
+						setTimeout( arguments.callee, 30 );
+						return;
+					}
+					holder = panel._.holder;
+					convertInlineHandlers( holder );
+				})();
+			}
+			else if ( ui instanceof CKEDITOR.dialog )
+				convertInlineHandlers( ui._.element );
+		});
+})();
+
+CKEDITOR.dom.document.prototype.write = CKEDITOR.tools.override( CKEDITOR.dom.document.prototype.write,
+	function( original_write )
+	{
+		function appendElement( parent, tagName, fullTag, text )
+		{
+			var node = parent.append( tagName ),
+				attrs = CKEDITOR.htmlParser.fragment.fromHtml( fullTag ).children[ 0 ].attributes;
+			attrs && node.setAttributes( attrs );
+			text && node.append( parent.getDocument().createText( text ) );
+		}
+
+		return function( html, mode )
+			{
+				// document.write() or document.writeln() fail silently after
+				// the page load event in Adobe AIR.
+				// DOM manipulation could be used instead.
+				if ( this.getBody() )
+				{
+					// We're taking the below extra work only because innerHTML
+					// on <html> element doesn't work as expected.
+					var doc = this,
+						head = this.getHead();
+
+					// Create style nodes for inline css. ( <style> content doesn't applied when setting via innerHTML )
+					html = html.replace( /(<style[^>]*>)([\s\S]*?)<\/style>/gi,
+						function ( match, startTag, styleText )
+						{
+							appendElement( head, 'style', startTag, styleText );
+							return '';
+						});
+
+					html = html.replace( /<base\b[^>]*\/>/i,
+						function( match )
+						{
+							appendElement( head, 'base', match );
+							return '';
+						});
+
+					html = html.replace( /<title>([\s\S]*)<\/title>/i,
+						function( match, title )
+						{
+							doc.$.title = title;
+							return '';
+						});
+
+					// Move the rest of head stuff.
+					html = html.replace( /<head>([\s\S]*)<\/head>/i,
+						function( headHtml )
+						{
+							// Inject the <head> HTML inside a <div>.
+							// Do that before getDocumentHead because WebKit moves
+							// <link css> elements to the <head> at this point.
+							var div = new CKEDITOR.dom.element( 'div', doc );
+							div.setHtml( headHtml );
+							// Move the <div> nodes to <head>.
+							div.moveChildren( head );
+							return '';
+						});
+
+					html.replace( /(<body[^>]*>)([\s\S]*)(?=$|<\/body>)/i,
+						function( match, startTag, innerHTML )
+						{
+							doc.getBody().setHtml( innerHTML );
+							var attrs = CKEDITOR.htmlParser.fragment.fromHtml( startTag ).children[ 0 ].attributes;
+							attrs && doc.getBody().setAttributes( attrs );
+						});
+				}
+				else
+					original_write.apply( this, arguments );
+			};
+	});
Index: CKEditor/trunk/_source/plugins/button/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/button/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/button/plugin.js	(revision 6241)
@@ -55,4 +55,43 @@
 	}
 };
+
+/**
+ * Handles a button click.
+ * @private
+ */
+CKEDITOR.ui.button._ =
+{
+	instances : [],
+
+	keydown : function( index, ev )
+	{
+		var instance = CKEDITOR.ui.button._.instances[ index ];
+
+		if ( instance.onkey )
+		{
+			ev = new CKEDITOR.dom.event( ev );
+			return ( instance.onkey( instance, ev.getKeystroke() ) !== false );
+		}
+	},
+
+	focus : function( index, ev )
+	{
+		var instance = CKEDITOR.ui.button._.instances[ index ],
+			retVal;
+
+		if ( instance.onfocus )
+			retVal = ( instance.onfocus( instance, new CKEDITOR.dom.event( ev ) ) !== false );
+
+		// FF2: prevent focus event been bubbled up to editor container, which caused unexpected editor focus.
+		if ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 )
+			ev.preventBubble();
+		return retVal;
+	}
+};
+
+( function()
+{
+	var keydownFn = CKEDITOR.tools.addFunction( CKEDITOR.ui.button._.keydown, CKEDITOR.ui.button._ ),
+		focusFn = CKEDITOR.tools.addFunction( CKEDITOR.ui.button._.focus, CKEDITOR.ui.button._ );
 
 CKEDITOR.ui.button.prototype =
@@ -172,6 +211,6 @@
 
 		output.push(
-				' onkeydown="return CKEDITOR.ui.button._.keydown(', index, ', event);"' +
-				' onfocus="return CKEDITOR.ui.button._.focus(', index, ', event);"' +
+					' onkeydown="return CKEDITOR.tools.callFunction(', keydownFn, ', ', index, ', event);"' +
+					' onfocus="return CKEDITOR.tools.callFunction(', focusFn,', ', index, ', event);"' +
 				' onclick="CKEDITOR.tools.callFunction(', clickFn, ', this); return false;">' +
 					'<span class="cke_icon"' );
@@ -233,37 +272,5 @@
 };
 
-/**
- * Handles a button click.
- * @private
- */
-CKEDITOR.ui.button._ =
-{
-	instances : [],
-
-	keydown : function( index, ev )
-	{
-		var instance = CKEDITOR.ui.button._.instances[ index ];
-
-		if ( instance.onkey )
-		{
-			ev = new CKEDITOR.dom.event( ev );
-			return ( instance.onkey( instance, ev.getKeystroke() ) !== false );
-		}
-	},
-
-	focus : function( index, ev )
-	{
-		var instance = CKEDITOR.ui.button._.instances[ index ],
-			retVal;
-
-		if ( instance.onfocus )
-			retVal = ( instance.onfocus( instance, new CKEDITOR.dom.event( ev ) ) !== false );
-
-		// FF2: prevent focus event been bubbled up to editor container, which caused unexpected editor focus.
-		if ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 )
-			ev.preventBubble();
-		return retVal;
-	}
-};
+})();
 
 /**
Index: CKEditor/trunk/_source/plugins/clipboard/dialogs/paste.js
===================================================================
--- CKEditor/trunk/_source/plugins/clipboard/dialogs/paste.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/clipboard/dialogs/paste.js	(revision 6241)
@@ -14,5 +14,6 @@
 			docElement = doc.$;
 
-		doc.getById( 'cke_actscrpt' ).remove();
+		var script = doc.getById( 'cke_actscrpt' );
+		script && script.remove();
 
 		CKEDITOR.env.ie ?
@@ -75,4 +76,16 @@
 				'</html>';
 
+			var src =
+				CKEDITOR.env.air ?
+					'javascript:void(0)' :
+				isCustomDomain ?
+					'javascript:void((function(){' +
+						'document.open();' +
+						'document.domain=\'' + document.domain + '\';' +
+						'document.close();' +
+						'})())"'
+				:
+					'';
+
 			var iframe = CKEDITOR.dom.element.createFromHtml(
 						'<iframe' +
@@ -80,11 +93,5 @@
 						' frameborder="0" ' +
 						' allowTransparency="true"' +
-						// Support for custom document.domain in IE.
-						( isCustomDomain ?
-							' src="javascript:void((function(){' +
-								'document.open();' +
-								'document.domain=\'' + document.domain + '\';' +
-								'document.close();' +
-							'})())"' : '' ) +
+						' src="' + src + '"' +
 						' role="region"' +
 						' aria-label="' + lang.pasteArea + '"' +
@@ -94,14 +101,14 @@
 
 			iframe.on( 'load', function( e )
-			{
-				e.removeListener();
-				var doc = iframe.getFrameDocument().$;
-				// Custom domain handling is needed after each document.open().
-				doc.open();
-				if ( isCustomDomain )
-					doc.domain = document.domain;
-				doc.write( htmlToLoad );
-				doc.close();
-			}, this );
+				{
+					e.removeListener();
+
+					var doc = iframe.getFrameDocument();
+					doc.write( htmlToLoad );
+
+					if ( CKEDITOR.env.air )
+						onPasteFrameLoad.call( this, doc.getWindow().$ );
+				},
+				this );
 
 			iframe.setCustomData( 'dialog', this );
Index: CKEditor/trunk/_source/plugins/clipboard/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/clipboard/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/clipboard/plugin.js	(revision 6241)
@@ -50,5 +50,5 @@
 				{
 					// Other browsers throw an error if the command is disabled.
-					return editor.document.$.execCommand( type );
+					return editor.document.$.execCommand( type, false, null );
 				}
 				catch( e )
Index: CKEditor/trunk/_source/plugins/colorbutton/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/colorbutton/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/colorbutton/plugin.js	(revision 6241)
@@ -23,4 +23,5 @@
 		function addButton( name, type, title )
 		{
+			var colorBoxId = CKEDITOR.tools.getNextId() + '_colorBox';
 			editor.ui.add( name, CKEDITOR.UI_PANELBUTTON,
 				{
@@ -40,7 +41,9 @@
 						block.autoSize = true;
 						block.element.addClass( 'cke_colorblock' );
-						block.element.setHtml( renderColors( panel, type ) );
+						block.element.setHtml( renderColors( panel, type, colorBoxId ) );
 						// The block should not have scrollbars (#5933, #6056)
 						block.element.getDocument().getBody().setStyle( 'overflow', 'hidden' );
+
+						CKEDITOR.ui.fire( 'ready', this );
 
 						var keys = block.keys;
@@ -53,4 +56,29 @@
 						keys[ CKEDITOR.SHIFT + 9 ]	= 'prev';	// SHIFT + TAB
 						keys[ 32 ]	= 'click';					// SPACE
+					},
+
+					// The automatic colorbox should represent the real color (#6010)
+					onOpen : function()
+					{
+						var selection = editor.getSelection(),
+							block = selection && selection.getStartElement(),
+							path = new CKEDITOR.dom.elementPath( block ),
+							color;
+
+						// Find the closest block element.
+						block = path.block || path.blockLimit;
+
+						// The background color might be transparent. In that case, look up the color in the DOM tree.
+						do
+						{
+							color = block && block.getComputedStyle( type == 'back' ? 'background-color' : 'color' ) || 'transparent';
+						}
+						while ( type == 'back' && color == 'transparent' && ( block = block.getParent() ) );
+
+						// The box should never be transparent.
+						if ( !color || color == 'transparent' )
+							color = '#ffffff';
+
+						this._.panel._.iframe.getFrameDocument().getById( colorBoxId ).setStyle( 'background-color', color );
 					}
 				});
@@ -58,5 +86,5 @@
 
 
-		function renderColors( panel, type )
+		function renderColors( panel, type, colorBoxId )
 		{
 			var output = [],
@@ -101,8 +129,16 @@
 
 						colorStyle.childRule = type == 'back' ?
-							// It's better to apply background color as the innermost style. (#3599)
-							function(){ return false; } :
-							// Fore color style must be applied inside links instead of around it.
-							function( element ){ return element.getName() != 'a'; };
+							function( element )
+							{
+								// It's better to apply background color as the innermost style. (#3599)
+								// Except for "unstylable elements". (#6103)
+								return isUnstylable( element );
+							}
+							:
+							function( element )
+							{
+								// Fore color style must be applied inside links instead of around it.
+								return element.getName() != 'a' || isUnstylable( element );
+							};
 
 						new CKEDITOR.style( colorStyle, { color : color } ).apply( editor.document );
@@ -122,5 +158,5 @@
 						'<tr>' +
 							'<td>' +
-								'<span class="cke_colorbox" style="background-color:#000"></span>' +
+								'<span class="cke_colorbox" id="', colorBoxId, '"></span>' +
 							'</td>' +
 							'<td colspan=7 align=center>',
@@ -182,4 +218,9 @@
 			return output.join( '' );
 		}
+
+		function isUnstylable( ele )
+		{
+			return ( ele.getAttribute( 'contentEditable' ) == 'false' ) || ele.getAttribute( 'data-cke-nostyle' );
+		}
 	}
 });
Index: CKEditor/trunk/_source/plugins/contextmenu/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/contextmenu/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/contextmenu/plugin.js	(revision 6241)
@@ -8,4 +8,148 @@
 	requires : [ 'menu' ],
 
+	// Make sure the base class (CKEDITOR.menu) is loaded before it (#3318).
+	onLoad : function()
+	{
+		CKEDITOR.plugins.contextMenu = CKEDITOR.tools.createClass(
+		{
+			base : CKEDITOR.menu,
+
+			$ : function( editor )
+			{
+				this.base.call( this, editor,
+				{
+					panel:
+					{
+						className : editor.skinClass + ' cke_contextmenu',
+						attributes :
+						{
+							'aria-label' : editor.lang.contextmenu.options
+						}
+					}
+				});
+			},
+
+			proto :
+			{
+				addTarget : function( element, nativeContextMenuOnCtrl )
+				{
+					// Opera doesn't support 'contextmenu' event, we have duo approaches employed here:
+					// 1. Inherit the 'button override' hack we introduced in v2 (#4530), while this require the Opera browser
+					//  option 'Allow script to detect context menu/right click events' to be always turned on.
+					// 2. Considering the fact that ctrl/meta key is not been occupied
+					//  for multiple range selecting (like Gecko), we use this key
+					//  combination as a fallback for triggering context-menu. (#4530)
+					if ( CKEDITOR.env.opera && !( 'oncontextmenu' in document.body ))
+					{
+						var contextMenuOverrideButton;
+						element.on( 'mousedown', function( evt )
+						{
+							evt = evt.data;
+							if ( evt.$.button != 2 )
+							{
+								if ( evt.getKeystroke() == CKEDITOR.CTRL + 1 )
+									element.fire( 'contextmenu', evt );
+								return;
+							}
+
+							if ( nativeContextMenuOnCtrl
+								 && ( CKEDITOR.env.mac ? evt.$.metaKey : evt.$.ctrlKey ) )
+								return;
+
+							var target = evt.getTarget();
+
+							if ( !contextMenuOverrideButton )
+							{
+								var ownerDoc =  target.getDocument();
+								contextMenuOverrideButton = ownerDoc.createElement( 'input' ) ;
+								contextMenuOverrideButton.$.type = 'button' ;
+								ownerDoc.getBody().append( contextMenuOverrideButton ) ;
+							}
+
+							contextMenuOverrideButton.setAttribute( 'style', 'position:absolute;top:' + ( evt.$.clientY - 2 ) +
+								'px;left:' + ( evt.$.clientX - 2 ) +
+								'px;width:5px;height:5px;opacity:0.01' );
+
+						} );
+
+						element.on( 'mouseup', function ( evt )
+						{
+							if ( contextMenuOverrideButton )
+							{
+								contextMenuOverrideButton.remove();
+								contextMenuOverrideButton = undefined;
+								// Simulate 'contextmenu' event.
+								element.fire( 'contextmenu', evt.data );
+							}
+						} );
+					}
+
+					element.on( 'contextmenu', function( event )
+						{
+							var domEvent = event.data;
+
+							if ( nativeContextMenuOnCtrl &&
+								 // Safari on Windows always show 'ctrlKey' as true in 'contextmenu' event,
+								// which make this property unreliable. (#4826)
+								 ( CKEDITOR.env.webkit ? holdCtrlKey : ( CKEDITOR.env.mac ? domEvent.$.metaKey : domEvent.$.ctrlKey ) ) )
+								return;
+
+
+							// Cancel the browser context menu.
+							domEvent.preventDefault();
+
+							var offsetParent = domEvent.getTarget().getDocument().getDocumentElement(),
+								offsetX = domEvent.$.clientX,
+								offsetY = domEvent.$.clientY;
+
+							CKEDITOR.tools.setTimeout( function()
+								{
+									this.open( offsetParent, null, offsetX, offsetY );
+								},
+								0, this );
+						},
+						this );
+
+					if ( CKEDITOR.env.opera )
+					{
+						// 'contextmenu' event triggered by Windows menu key is unpreventable,
+						// cancel the key event itself. (#6534)
+						element.on( 'keypress' , function ( evt )
+						{
+							var domEvent = evt.data;
+
+							if ( domEvent.$.keyCode === 0 )
+								domEvent.preventDefault();
+						});
+					}
+
+					if ( CKEDITOR.env.webkit )
+					{
+						var holdCtrlKey,
+							onKeyDown = function( event )
+							{
+								holdCtrlKey = CKEDITOR.env.mac ? event.data.$.metaKey : event.data.$.ctrlKey ;
+							},
+							resetOnKeyUp = function()
+							{
+								holdCtrlKey = 0;
+							};
+
+						element.on( 'keydown', onKeyDown );
+						element.on( 'keyup', resetOnKeyUp );
+						element.on( 'contextmenu', resetOnKeyUp );
+					}
+				},
+
+				open : function( offsetParent, corner, offsetX, offsetY )
+				{
+					this.editor.focus();
+					offsetParent = offsetParent || CKEDITOR.document.getDocumentElement();
+					this.show( offsetParent, corner, offsetX, offsetY );
+				}
+			}
+		});
+	},
+
 	beforeInit : function( editor )
 	{
@@ -16,264 +160,7 @@
 				exec : function()
 					{
-						editor.contextMenu.show( editor.document.getBody() );
+						editor.contextMenu.open( editor.document.getBody() );
 					}
 			});
-	}
-});
-
-CKEDITOR.plugins.contextMenu = CKEDITOR.tools.createClass(
-{
-	$ : function( editor )
-	{
-		this.id = CKEDITOR.tools.getNextId();
-		this.editor = editor;
-		this._.listeners = [];
-		this._.functionId = CKEDITOR.tools.addFunction( function( commandName )
-			{
-				this._.panel.hide();
-				editor.focus();
-				editor.execCommand( commandName );
-			},
-			this);
-
-		this.definition =
-		{
-			panel:
-			{
-				className : editor.skinClass + ' cke_contextmenu',
-				attributes :
-				{
-					'aria-label' : editor.lang.contextmenu.options
-				}
-			}
-		};
-	},
-
-	_ :
-	{
-		onMenu : function( offsetParent, corner, offsetX, offsetY )
-		{
-			var menu = this._.menu,
-				editor = this.editor;
-
-			if ( menu )
-			{
-				menu.hide();
-				menu.removeAll();
-			}
-			else
-			{
-				menu = this._.menu = new CKEDITOR.menu( editor, this.definition );
-				menu.onClick = CKEDITOR.tools.bind( function( item )
-				{
-					menu.hide();
-
-					if ( item.onClick )
-						item.onClick();
-					else if ( item.command )
-						editor.execCommand( item.command );
-
-				}, this );
-
-				menu.onEscape = function( keystroke )
-				{
-					var parent = this.parent;
-					// 1. If it's sub-menu, restore the last focused item
-					// of upper level menu.
-					// 2. In case of a top-menu, close it.
-					if ( parent )
-					{
-						parent._.panel.hideChild();
-						// Restore parent block item focus.
-						var parentBlock = parent._.panel._.panel._.currentBlock,
-							parentFocusIndex =  parentBlock._.focusIndex;
-						parentBlock._.markItem( parentFocusIndex );
-					}
-					else if ( keystroke == 27 )
-					{
-						this.hide();
-						editor.focus();
-					}
-					return false;
-				};
-			}
-
-			var listeners = this._.listeners,
-				includedItems = [];
-
-			var selection = this.editor.getSelection(),
-				element = selection && selection.getStartElement();
-
-			menu.onHide = CKEDITOR.tools.bind( function()
-				{
-					menu.onHide = null;
-
-					if ( CKEDITOR.env.ie )
-					{
-						var selection = editor.getSelection();
-						selection && selection.unlock();
-					}
-
-					this.onHide && this.onHide();
-				},
-				this );
-
-			// Call all listeners, filling the list of items to be displayed.
-			for ( var i = 0 ; i < listeners.length ; i++ )
-			{
-				var listenerItems = listeners[ i ]( element, selection );
-
-				if ( listenerItems )
-				{
-					for ( var itemName in listenerItems )
-					{
-						var item = this.editor.getMenuItem( itemName );
-
-						if ( item )
-						{
-							item.state = listenerItems[ itemName ];
-							menu.add( item );
-						}
-					}
-				}
-			}
-
-			// Don't show context menu with zero items.
-			menu.items.length && menu.show( offsetParent, corner || ( editor.lang.dir == 'rtl' ? 2 : 1 ), offsetX, offsetY );
-		}
-	},
-
-	proto :
-	{
-		addTarget : function( element, nativeContextMenuOnCtrl )
-		{
-
-			// For browsers (Opera <=10a) that doesn't  support 'contextmenu' event, we have duo approaches employed here:
-			// 1. Inherit the 'button override' hack we introduced in v2 (#4530) (In Opera browser, this require the
-			//  option 'Allow script to detect context menu/right click events' to be always turned on).
-			// 2. Considering the fact that ctrl/meta key is not been occupied
-			//  for multiple range selecting (like Gecko), we use this key
-			//  combination as a fallback for triggering context-menu. (#4530)
-			if ( CKEDITOR.env.opera && !( 'oncontextmenu' in document.body ) )
-			{
-				var contextMenuOverrideButton;
-				element.on( 'mousedown', function( evt )
-				{
-					evt = evt.data;
-					if ( evt.$.button != 2 )
-					{
-						if ( evt.getKeystroke() == CKEDITOR.CTRL + 1 )
-							element.fire( 'contextmenu', evt );
-						return;
-					}
-
-					if ( nativeContextMenuOnCtrl
-						 && ( CKEDITOR.env.mac ? evt.$.metaKey : evt.$.ctrlKey ) )
-						return;
-
-					var target = evt.getTarget();
-
-					if ( !contextMenuOverrideButton )
-					{
-						var ownerDoc =  target.getDocument();
-						contextMenuOverrideButton = ownerDoc.createElement( 'input' ) ;
-						contextMenuOverrideButton.$.type = 'button' ;
-						ownerDoc.getBody().append( contextMenuOverrideButton ) ;
-					}
-
-					contextMenuOverrideButton.setAttribute( 'style', 'position:absolute;top:' + ( evt.$.clientY - 2 ) +
-						'px;left:' + ( evt.$.clientX - 2 ) +
-						'px;width:5px;height:5px;opacity:0.01' );
-
-				} );
-
-				element.on( 'mouseup', function ( evt )
-				{
-					if ( contextMenuOverrideButton )
-					{
-						contextMenuOverrideButton.remove();
-						contextMenuOverrideButton = undefined;
-						// Simulate 'contextmenu' event.
-						element.fire( 'contextmenu', evt.data );
-					}
-				} );
-			}
-
-			element.on( 'contextmenu', function( event )
-				{
-					var domEvent = event.data;
-
-					if ( nativeContextMenuOnCtrl &&
-					     // Safari on Windows always show 'ctrlKey' as true in 'contextmenu' event,
-						// which make this property unreliable. (#4826)
-					     ( CKEDITOR.env.webkit ? holdCtrlKey : ( CKEDITOR.env.mac ? domEvent.$.metaKey : domEvent.$.ctrlKey ) ) )
-						return;
-
-
-					// Cancel the browser context menu.
-					domEvent.preventDefault();
-
-					var offsetParent = domEvent.getTarget().getDocument().getDocumentElement(),
-						offsetX = domEvent.$.clientX,
-						offsetY = domEvent.$.clientY;
-
-					CKEDITOR.tools.setTimeout( function()
-						{
-							this.show( offsetParent, null, offsetX, offsetY );
-						},
-						0, this );
-				},
-				this );
-
-			if ( CKEDITOR.env.opera )
-			{
-				// 'contextmenu' event triggered by Windows menu key is unpreventable,
-				// cancel the key event itself. (#6534)
-				element.on( 'keypress' , function ( evt )
-				{
-					var domEvent = evt.data;
-
-					if ( domEvent.$.keyCode === 0 )
-						domEvent.preventDefault();
-				});
-			}
-
-			if ( CKEDITOR.env.webkit )
-			{
-				var holdCtrlKey,
-					onKeyDown = function( event )
-					{
-						holdCtrlKey = CKEDITOR.env.mac ? event.data.$.metaKey : event.data.$.ctrlKey ;
-					},
-					resetOnKeyUp = function()
-					{
-						holdCtrlKey = 0;
-					};
-
-				element.on( 'keydown', onKeyDown );
-				element.on( 'keyup', resetOnKeyUp );
-				element.on( 'contextmenu', resetOnKeyUp );
-			}
-		},
-
-		addListener : function( listenerFn )
-		{
-			this._.listeners.push( listenerFn );
-		},
-
-		show : function( offsetParent, corner, offsetX, offsetY )
-		{
-			this.editor.focus();
-
-			// Selection will be unavailable after context menu shows up
-			// in IE, lock it now.
-			if ( CKEDITOR.env.ie )
-			{
-				var selection = this.editor.getSelection();
-				selection && selection.lock();
-			}
-
-			this._.onMenu( offsetParent || CKEDITOR.document.getDocumentElement(), corner, offsetX || 0, offsetY || 0 );
-		}
 	}
 });
Index: CKEditor/trunk/_source/plugins/dialog/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/dialog/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/dialog/plugin.js	(revision 6241)
@@ -106,8 +106,17 @@
 	{
 		// Load the dialog definition.
-		var definition = CKEDITOR.dialog._.dialogDefinitions[ dialogName ];
+		var definition = CKEDITOR.dialog._.dialogDefinitions[ dialogName ],
+			defaultDefinition = CKEDITOR.tools.clone( defaultDialogDefinition ),
+			buttonsOrder = editor.config.dialog_buttonsOrder || 'OS',
+			dir = editor.lang.dir;
+
+			if ( ( buttonsOrder == 'OS' && CKEDITOR.env.mac ) ||    // The buttons in MacOS Apps are in reverse order (#4750)
+				( buttonsOrder == 'rtl' && dir == 'ltr' ) ||
+				( buttonsOrder == 'ltr' && dir == 'rtl' ) )
+					defaultDefinition.buttons.reverse();
+
 
 		// Completes the definition with the default values.
-		definition = CKEDITOR.tools.extend( definition( editor ), defaultDialogDefinition );
+		definition = CKEDITOR.tools.extend( definition( editor ), defaultDefinition );
 
 		// Clone a functionally independent copy for this dialog.
@@ -117,5 +126,4 @@
 		// functions.
 		definition = new definitionObject( this, definition );
-
 
 		var doc = CKEDITOR.document;
@@ -131,5 +139,4 @@
 			contentSize : { width : 0, height : 0 },
 			size : { width : 0, height : 0 },
-			updateSize : false,
 			contents : {},
 			buttons : {},
@@ -180,4 +187,32 @@
 			}
 			, editor ).definition;
+
+		var tabsToRemove = {};
+		// Cache tabs that should be removed.
+		if ( !( 'removeDialogTabs' in editor._ ) && editor.config.removeDialogTabs )
+		{
+			var removeContents = editor.config.removeDialogTabs.split( ';' );
+
+			for ( i = 0; i < removeContents.length; i++ )
+			{
+				var parts = removeContents[ i ].split( ':' );
+				if ( parts.length == 2 )
+				{
+					var removeDialogName = parts[ 0 ];
+					if ( !tabsToRemove[ removeDialogName ] )
+						tabsToRemove[ removeDialogName ] = [];
+					tabsToRemove[ removeDialogName ].push( parts[ 1 ] );
+				}
+			}
+			editor._.removeDialogTabs = tabsToRemove;
+		}
+
+		// Remove tabs of this dialog.
+		if ( editor._.removeDialogTabs && ( tabsToRemove = editor._.removeDialogTabs[ dialogName ] ) )
+		{
+			for ( i = 0; i < tabsToRemove.length; i++ )
+				definition.removeContents( tabsToRemove[ i ] );
+		}
+
 		// Initialize load, show, hide, ok and cancel events.
 		if ( definition.onLoad )
@@ -602,5 +637,4 @@
 
 				this._.contentSize = { width : width, height : height };
-				this._.updateSize = true;
 			};
 		})(),
@@ -614,13 +648,6 @@
 		getSize : function()
 		{
-			if ( !this._.updateSize )
-				return this._.size;
 			var element = this._.element.getFirst();
-			var size = this._.size = { width : element.$.offsetWidth || 0, height : element.$.offsetHeight || 0};
-
-			// If either the offsetWidth or offsetHeight is 0, the element isn't visible.
-			this._.updateSize = !size.width || !size.height;
-
-			return size;
+			return { width : element.$.offsetWidth || 0, height : element.$.offsetHeight || 0};
 		},
 
@@ -630,4 +657,5 @@
 		 * @param {Number} x The target x-coordinate.
 		 * @param {Number} y The target y-coordinate.
+		 * @param {Boolean} save Flag indicate whether the dialog position should be remembered on next open up.
 		 * @example
 		 * dialogObj.move( 10, 40 );
@@ -636,5 +664,5 @@
 		{
 			var isFixed;
-			return function( x, y )
+			return function( x, y, save )
 			{
 				// The dialog may be fixed positioned or absolute positioned. Ask the
@@ -663,4 +691,6 @@
 							'top'	: ( y > 0 ? y : 0 ) + 'px'
 						});
+
+				save && ( this._.moved = 1 );
 			};
 		})(),
@@ -709,5 +739,6 @@
 
 			// First, set the dialog to an appropriate size.
-			this.resize( definition.minWidth, definition.minHeight );
+			this.resize( this._.contentSize && this._.contentSize.width || definition.minWidth,
+					this._.contentSize && this._.contentSize.height || definition.minHeight );
 
 			// Reset all inputs back to their default value.
@@ -754,18 +785,13 @@
 			this._.hasFocus = false;
 
-			// Rearrange the dialog to the middle of the window.
 			CKEDITOR.tools.setTimeout( function()
 				{
-					var viewSize = CKEDITOR.document.getWindow().getViewPaneSize();
-					var dialogSize = this.getSize();
-
-					// We're using definition size for initial position because of
-					// offten corrupted data in offsetWidth at this point. (#4084)
-					this.move( ( viewSize.width - definition.minWidth ) / 2, ( viewSize.height - dialogSize.height ) / 2 );
-
+					this.layout();
 					this.parts.dialog.setStyle( 'visibility', '' );
 
 					// Execute onLoad for the first show.
 					this.fireOnce( 'load', {} );
+					CKEDITOR.ui.fire( 'ready', this );
+
 					this.fire( 'show', {} );
 					this._.editor.fire( 'dialogShow', this );
@@ -776,4 +802,17 @@
 				},
 				100, this );
+		},
+
+		/**
+		 * Rearrange the dialog to its previous position or the middle of the window.
+		 * @since 3.5
+		 */
+		layout : function()
+		{
+			var viewSize = CKEDITOR.document.getWindow().getViewPaneSize(),
+					dialogSize = this.getSize();
+
+			this.move( this._.moved ? this._.position.x : ( viewSize.width - dialogSize.width ) / 2,
+					this._.moved ? this._.position.y : ( viewSize.height - dialogSize.height ) / 2 );
 		},
 
@@ -904,5 +943,5 @@
 							expand : !!contents.expand,
 							padding : contents.padding,
-							style : contents.style || 'width: 100%; height: 100%;'
+							style : contents.style || 'width: 100%;'
 						}, pageHtml );
 
@@ -1343,7 +1382,4 @@
 	};
 
-	// The buttons in MacOS Apps are in reverse order #4750
-	CKEDITOR.env.mac && defaultDialogDefinition.buttons.reverse();
-
 	// Tool function used to return an item from an array based on its id
 	// property.
@@ -1614,5 +1650,5 @@
 				realX = - margins[3];
 			else if ( abstractDialogCoords.x - margins[1] > viewPaneSize.width - dialogSize.width - magnetDistance )
-				realX = viewPaneSize.width - dialogSize.width + margins[1];
+				realX = viewPaneSize.width - dialogSize.width + ( editor.lang.dir == 'rtl' ? 0 : margins[1] );
 			else
 				realX = abstractDialogCoords.x;
@@ -1625,5 +1661,5 @@
 				realY = abstractDialogCoords.y;
 
-			dialog.move( realX, realY );
+			dialog.move( realX, realY, 1 );
 
 			evt.data.preventDefault();
@@ -1645,6 +1681,4 @@
 		dialog.parts.title.on( 'mousedown', function( evt )
 			{
-				dialog._.updateSize = true;
-
 				lastCoords = { x : evt.data.$.screenX, y : evt.data.$.screenY };
 
@@ -1666,116 +1700,104 @@
 	function initResizeHandles( dialog )
 	{
-		var definition = dialog.definition,
-			minWidth = definition.minWidth || 0,
-			minHeight = definition.minHeight || 0,
-			resizable = definition.resizable,
-			margins = dialog.getParentEditor().skin.margins || [ 0, 0, 0, 0 ];
-
-		function topSizer( coords, dy )
-		{
-			coords.y += dy;
-		}
-
-		function rightSizer( coords, dx )
-		{
-			coords.x2 += dx;
-		}
-
-		function bottomSizer( coords, dy )
-		{
-			coords.y2 += dy;
-		}
-
-		function leftSizer( coords, dx )
-		{
-			coords.x += dx;
-		}
-
-		var lastCoords = null,
-			abstractDialogCoords = null,
-			magnetDistance = dialog._.editor.config.magnetDistance,
-			parts = [ 'tl', 't', 'tr', 'l', 'r', 'bl', 'b', 'br' ];
-
-		function mouseDownHandler( evt )
-		{
-			var partName = evt.listenerData.part, size = dialog.getSize();
-			abstractDialogCoords = dialog.getPosition();
-			CKEDITOR.tools.extend( abstractDialogCoords,
-				{
-					x2 : abstractDialogCoords.x + size.width,
-					y2 : abstractDialogCoords.y + size.height
-				} );
-			lastCoords = { x : evt.data.$.screenX, y : evt.data.$.screenY };
-
-			CKEDITOR.document.on( 'mousemove', mouseMoveHandler, dialog, { part : partName } );
-			CKEDITOR.document.on( 'mouseup', mouseUpHandler, dialog, { part : partName } );
+		var def = dialog.definition,
+			resizable = def.resizable;
+
+		if ( resizable == CKEDITOR.DIALOG_RESIZE_NONE )
+			return;
+
+		var editor = dialog.getParentEditor();
+		var wrapperWidth, wrapperHeight, viewSize, origin, startSize;
+
+		function positionDialog( right )
+		{
+			// Maintain righthand sizing in RTL.
+			if ( dialog._.moved && editor.lang.dir == 'rtl' )
+			{
+				var element = dialog._.element.getFirst();
+				element.setStyle( 'right', right + "px" );
+				element.removeStyle( 'left' );
+			}
+			else if ( !dialog._.moved )
+				dialog.layout();
+		}
+
+		var mouseDownFn = CKEDITOR.tools.addFunction( function( $event )
+		{
+			startSize = dialog.getSize();
+
+			// Calculate the offset between content and chrome size.
+			wrapperHeight = startSize.height - dialog.parts.contents.getSize( 'height',  ! ( CKEDITOR.env.gecko || CKEDITOR.env.opera || CKEDITOR.env.ie && CKEDITOR.env.quirks ) );
+			wrapperWidth = startSize.width - dialog.parts.contents.getSize( 'width', 1 );
+
+			origin = { x : $event.screenX, y : $event.screenY };
+
+			viewSize = CKEDITOR.document.getWindow().getViewPaneSize();
+
+			CKEDITOR.document.on( 'mousemove', mouseMoveHandler );
+			CKEDITOR.document.on( 'mouseup', mouseUpHandler );
 
 			if ( CKEDITOR.env.ie6Compat )
 			{
 				var coverDoc = currentCover.getChild( 0 ).getFrameDocument();
-				coverDoc.on( 'mousemove', mouseMoveHandler, dialog, { part : partName } );
-				coverDoc.on( 'mouseup', mouseUpHandler, dialog, { part : partName } );
-			}
+				coverDoc.on( 'mousemove', mouseMoveHandler );
+				coverDoc.on( 'mouseup', mouseUpHandler );
+			}
+
+			$event.preventDefault && $event.preventDefault();
+		});
+
+		// Prepend the grip to the dialog.
+		dialog.on( 'load', function()
+		{
+			var direction = '';
+			if ( resizable == CKEDITOR.DIALOG_RESIZE_WIDTH )
+				direction = ' cke_resizer_horizontal';
+			else if ( resizable == CKEDITOR.DIALOG_RESIZE_HEIGHT )
+				direction = ' cke_resizer_vertical';
+			var resizer = CKEDITOR.dom.element.createFromHtml( '<div class="cke_resizer' + direction + '"' +
+					' title="' + CKEDITOR.tools.htmlEncode( editor.lang.resize ) + '"' +
+					' onmousedown="CKEDITOR.tools.callFunction(' + mouseDownFn + ', event )"></div>' );
+			dialog.parts.footer.append( resizer, 1 );
+		});
+		editor.on( 'destroy', function() { CKEDITOR.tools.removeFunction( mouseDownFn ); } );
+
+		function mouseMoveHandler( evt )
+		{
+			var rtl = editor.lang.dir == 'rtl',
+				dx = ( evt.data.$.screenX - origin.x ) * ( rtl ? -1 : 1 ),
+				dy = evt.data.$.screenY - origin.y,
+				width = startSize.width,
+				height = startSize.height,
+				internalWidth = width + dx * ( dialog._.moved ? 1 : 2 ),
+				internalHeight = height + dy * ( dialog._.moved ? 1 : 2 ),
+				element = dialog._.element.getFirst(),
+				right = rtl && element.getComputedStyle( 'right' ),
+				position = dialog.getPosition();
+
+			// IE might return "auto", we need exact position.
+			if ( right )
+				right = right == 'auto' ? viewSize.width - ( position.x || 0 ) - element.getSize( 'width' ) : parseInt( right, 10 );
+
+			if ( position.y + internalHeight > viewSize.height )
+				internalHeight = viewSize.height - position.y;
+
+			if ( ( rtl ? right : position.x ) + internalWidth > viewSize.width )
+				internalWidth = viewSize.width - ( rtl ? right : position.x );
+
+			// Make sure the dialog will not be resized to the wrong side when it's in the leftmost position for RTL.
+			if ( ( resizable == CKEDITOR.DIALOG_RESIZE_WIDTH || resizable == CKEDITOR.DIALOG_RESIZE_BOTH ) && !( rtl && dx > 0 && !position.x ) )
+				width = Math.max( def.minWidth || 0, internalWidth - wrapperWidth );
+
+			if ( resizable == CKEDITOR.DIALOG_RESIZE_HEIGHT || resizable == CKEDITOR.DIALOG_RESIZE_BOTH )
+				height = Math.max( def.minHeight || 0, internalHeight - wrapperHeight );
+
+			dialog.resize( width, height );
+			// The right property might get broken during resizing, so computing it before the resizing.
+			positionDialog( right );
 
 			evt.data.preventDefault();
 		}
 
-		function mouseMoveHandler( evt )
-		{
-			var x = evt.data.$.screenX,
-				y = evt.data.$.screenY,
-				dx = x - lastCoords.x,
-				dy = y - lastCoords.y,
-				viewPaneSize = CKEDITOR.document.getWindow().getViewPaneSize(),
-				partName = evt.listenerData.part;
-
-			if ( partName.search( 't' ) != -1 )
-				topSizer( abstractDialogCoords, dy );
-			if ( partName.search( 'l' ) != -1 )
-				leftSizer( abstractDialogCoords, dx );
-			if ( partName.search( 'b' ) != -1 )
-				bottomSizer( abstractDialogCoords, dy );
-			if ( partName.search( 'r' ) != -1 )
-				rightSizer( abstractDialogCoords, dx );
-
-			lastCoords = { x : x, y : y };
-
-			var realX, realY, realX2, realY2;
-
-			if ( abstractDialogCoords.x + margins[3] < magnetDistance )
-				realX = - margins[3];
-			else if ( partName.search( 'l' ) != -1 && abstractDialogCoords.x2 - abstractDialogCoords.x < minWidth + magnetDistance )
-				realX = abstractDialogCoords.x2 - minWidth;
-			else
-				realX = abstractDialogCoords.x;
-
-			if ( abstractDialogCoords.y + margins[0] < magnetDistance )
-				realY = - margins[0];
-			else if ( partName.search( 't' ) != -1 && abstractDialogCoords.y2 - abstractDialogCoords.y < minHeight + magnetDistance )
-				realY = abstractDialogCoords.y2 - minHeight;
-			else
-				realY = abstractDialogCoords.y;
-
-			if ( abstractDialogCoords.x2 - margins[1] > viewPaneSize.width - magnetDistance )
-				realX2 = viewPaneSize.width + margins[1] ;
-			else if ( partName.search( 'r' ) != -1 && abstractDialogCoords.x2 - abstractDialogCoords.x < minWidth + magnetDistance )
-				realX2 = abstractDialogCoords.x + minWidth;
-			else
-				realX2 = abstractDialogCoords.x2;
-
-			if ( abstractDialogCoords.y2 - margins[2] > viewPaneSize.height - magnetDistance )
-				realY2= viewPaneSize.height + margins[2] ;
-			else if ( partName.search( 'b' ) != -1 && abstractDialogCoords.y2 - abstractDialogCoords.y < minHeight + magnetDistance )
-				realY2 = abstractDialogCoords.y + minHeight;
-			else
-				realY2 = abstractDialogCoords.y2 ;
-
-			dialog.move( realX, realY );
-			dialog.resize( realX2 - realX, realY2 - realY );
-
-			evt.data.preventDefault();
-		}
-
-		function mouseUpHandler( evt )
+		function mouseUpHandler()
 		{
 			CKEDITOR.document.removeListener( 'mouseup', mouseUpHandler );
@@ -1788,21 +1810,23 @@
 				coverDoc.removeListener( 'mousemove', mouseMoveHandler );
 			}
-		}
-
-// TODO : Simplify the resize logic, having just a single resize grip <div>.
-//		var widthTest = /[lr]/,
-//			heightTest = /[tb]/;
-//		for ( var i = 0 ; i < parts.length ; i++ )
-//		{
-//			var element = dialog.parts[ parts[i] + '_resize' ];
-//			if ( resizable == CKEDITOR.DIALOG_RESIZE_NONE ||
-//					resizable == CKEDITOR.DIALOG_RESIZE_HEIGHT && widthTest.test( parts[i] ) ||
-//			  		resizable == CKEDITOR.DIALOG_RESIZE_WIDTH && heightTest.test( parts[i] ) )
-//			{
-//				element.hide();
-//				continue;
-//			}
-//			element.on( 'mousedown', mouseDownHandler, dialog, { part : parts[i] } );
-//		}
+
+			// Switch back to use the left property, if RTL is used.
+			if ( editor.lang.dir == 'rtl' )
+			{
+				var element = dialog._.element.getFirst(),
+					left = element.getComputedStyle( 'left' );
+
+				// IE might return "auto", we need exact position.
+				if ( left == 'auto' )
+					left = viewSize.width - parseInt( element.getStyle( 'right' ), 10 ) - dialog.getSize().width;
+				else
+					left = parseInt( left, 10 );
+
+				element.removeStyle( 'right' );
+				// Make sure the left property gets applied, even if it is the same as previously.
+				dialog._.position.x += 1;
+				dialog.move( left, dialog._.position.y );
+			}
+		}
 	}
 
@@ -2993,4 +3017,32 @@
 
 /**
+ * The guildeline to follow when generating the dialog buttons. There are 3 possible options:
+ * <ul>
+ *     <li>'OS' - the buttons will be displayed in the default order of the user's OS;</li>
+ *     <li>'ltr' - for Left-To-Right order;</li>
+ *     <li>'rtl' - for Right-To-Left order.</li>
+ * </ul>
+ * @name CKEDITOR.config.dialog_buttonsOrder
+ * @type String
+ * @default 'OS'
+ * @since 3.5
+ * @example
+ * config.dialog_buttonsOrder = 'rtl';
+ */
+
+/**
+ * The dialog contents to removed. It's a string composed by dialog name and tab name with a colon between them.
+ * Separate each pair with semicolon (see example).
+ * <b>Note: All names are case-sensitive.</b>
+ * <b>Note: Be cautious when specifying dialog tabs that are mandatory, like "info", dialog functionality might be broken because of this!<b>
+ * @name CKEDITOR.config.removeDialogTabs
+ * @type String
+ * @since 3.5
+ * @default ''
+ * @example
+ * config.removeDialogTabs = 'flash:advanced;image:Link';
+ */
+
+/**
  * Fired when a dialog definition is about to be used to create a dialog into
  * an editor instance. This event makes it possible to customize the definition
Index: CKEditor/trunk/_source/plugins/dialogui/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/dialogui/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/dialogui/plugin.js	(revision 6241)
@@ -1461,5 +1461,5 @@
 				getValue : function()
 				{
-					return this.getInputElement().$.value;
+					return this.getInputElement().$.value || '';
 				},
 
Index: CKEditor/trunk/_source/plugins/div/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/div/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/div/plugin.js	(revision 6241)
@@ -38,8 +38,8 @@
 								div = blockLimit.is( 'div' ) && blockLimit;
 
-							if ( div && !div.getAttribute( '_cke_div_added' ) )
+							if ( div && !div.data( 'cke-div-added' ) )
 							{
 								toRemove.push( div );
-								div.setAttribute( '_cke_div_added' );
+								div.data( 'cke-div-added' );
 							}
 						}
Index: CKEditor/trunk/_source/plugins/elementspath/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/elementspath/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/elementspath/plugin.js	(revision 6241)
@@ -20,6 +20,7 @@
 				var element = CKEDITOR.document.getById( idBase + '0' );
 
-				if ( element )
-					element.focus();
+				// Make the first button focus accessible for IE. (#3417)
+				// Adobe AIR instead need while of delay.
+				element && element.focus( CKEDITOR.env.ie || CKEDITOR.env.air );
 			}
 		}
@@ -55,4 +56,58 @@
 							'<div id="' + spaceId + '" class="cke_path" role="group" aria-labelledby="' + spaceId + '_label">' + emptyHtml + '</div>';
 					}
+				});
+
+			function onClick( elementIndex )
+			{
+				editor.focus();
+				var element = editor._.elementsPath.list[ elementIndex ];
+				if ( element.is( 'body' ) )
+				{
+					var range = new CKEDITOR.dom.range( editor.document );
+					range.selectNodeContents( element );
+					range.select();
+				}
+				else
+					editor.getSelection().selectElement( element );
+			}
+
+			var onClickHanlder = CKEDITOR.tools.addFunction( onClick );
+
+			var onKeyDownHandler = CKEDITOR.tools.addFunction( function( elementIndex, ev )
+				{
+					var idBase = editor._.elementsPath.idBase,
+						element;
+
+					ev = new CKEDITOR.dom.event( ev );
+
+					var rtl = editor.lang.dir == 'rtl';
+					switch ( ev.getKeystroke() )
+					{
+						case rtl ? 39 : 37 :		// LEFT-ARROW
+						case 9 :					// TAB
+							element = CKEDITOR.document.getById( idBase + ( elementIndex + 1 ) );
+							if ( !element )
+								element = CKEDITOR.document.getById( idBase + '0' );
+							element.focus();
+							return false;
+
+						case rtl ? 37 : 39 :		// RIGHT-ARROW
+						case CKEDITOR.SHIFT + 9 :	// SHIFT + TAB
+							element = CKEDITOR.document.getById( idBase + ( elementIndex - 1 ) );
+							if ( !element )
+								element = CKEDITOR.document.getById( idBase + ( editor._.elementsPath.list.length - 1 ) );
+							element.focus();
+							return false;
+
+						case 27 :					// ESC
+							editor.focus();
+							return false;
+
+						case 13 :					// ENTER	// Opera
+						case 32 :					// SPACE
+							onClick( elementIndex );
+							return false;
+					}
+					return true;
 				});
 
@@ -83,6 +138,6 @@
 							var index = elementsList.push( element ) - 1;
 							var name;
-							if ( element.getAttribute( '_cke_real_element_type' ) )
-								name = element.getAttribute( '_cke_real_element_type' );
+							if ( element.data( 'cke-real-element-type' ) )
+								name = element.data( 'cke-real-element-type' );
 							else
 								name = element.getName();
@@ -113,7 +168,7 @@
 									' onfocus="event.preventBubble();"' : '' ) +
 									' hidefocus="true" ' +
-									' onkeydown="return CKEDITOR._.elementsPath.keydown(\'', editor.name, '\',', index, ', event);"' +
+									' onkeydown="return CKEDITOR.tools.callFunction(', onKeyDownHandler, ',', index, ', event );"' +
 									extra ,
-									' onclick="return CKEDITOR._.elementsPath.click(\'', editor.name, '\',', index, ');"',
+									' onclick="CKEDITOR.tools.callFunction('+ onClickHanlder, ',', index, '); return false;"',
 									' role="button" aria-labelledby="' + idBase + index + '_label">',
 										name,
@@ -129,5 +184,7 @@
 					}
 
-					getSpaceElement().setHtml( html.join('') + emptyHtml );
+					var space = getSpaceElement();
+					space.setHtml( html.join('') + emptyHtml );
+					editor.fire( 'elementsPathUpdate', { space : space } );
 				});
 
@@ -143,72 +200,2 @@
 	});
 })();
-
-/**
- * Handles the click on an element in the element path.
- * @private
- */
-CKEDITOR._.elementsPath =
-{
-	click : function( instanceName, elementIndex )
-	{
-		var editor = CKEDITOR.instances[ instanceName ];
-		editor.focus();
-
-		var element = editor._.elementsPath.list[ elementIndex ];
-
-		if ( element.is( 'body' ) )
-		{
-			var range = new CKEDITOR.dom.range( editor.document );
-			range.selectNodeContents( element );
-			range.select();
-		}
-		else
-			editor.getSelection().selectElement( element );
-
-		return false;
-	},
-
-	keydown : function( instanceName, elementIndex, ev )
-	{
-		var instance = CKEDITOR.ui.button._.instances[ elementIndex ];
-		var editor = CKEDITOR.instances[ instanceName ];
-		var idBase = editor._.elementsPath.idBase;
-
-		var element;
-
-		ev = new CKEDITOR.dom.event( ev );
-
-		var rtl = editor.lang.dir == 'rtl';
-		switch ( ev.getKeystroke() )
-		{
-			case rtl ? 39 : 37 :					// LEFT-ARROW
-			case 9 :					// TAB
-				element = CKEDITOR.document.getById( idBase + ( elementIndex + 1 ) );
-				if ( !element )
-					element = CKEDITOR.document.getById( idBase + '0' );
-				element.focus();
-				return false;
-
-			case rtl ? 37 : 39 :					// RIGHT-ARROW
-			case CKEDITOR.SHIFT + 9 :	// SHIFT + TAB
-				element = CKEDITOR.document.getById( idBase + ( elementIndex - 1 ) );
-				if ( !element )
-					element = CKEDITOR.document.getById( idBase + ( editor._.elementsPath.list.length - 1 ) );
-				element.focus();
-				return false;
-
-			case 27 :					// ESC
-				editor.focus();
-				return false;
-
-			case 13 :					// ENTER	// Opera
-			case 32 :					// SPACE
-				this.click( instanceName, elementIndex );
-				return false;
-
-			//default :
-			//	alert( ev.getKeystroke() );
-		}
-		return true;
-	}
-};
Index: CKEditor/trunk/_source/plugins/enterkey/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/enterkey/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/enterkey/plugin.js	(revision 6241)
@@ -231,5 +231,5 @@
 					newBlockDir;
 
-				if ( newBlockDir = startBlock.getDirection() )
+				if ( ( newBlockDir = startBlock.getDirection() ) )
 				{
 					newBlock = doc.createElement( 'div' );
Index: CKEditor/trunk/_source/plugins/fakeobjects/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/fakeobjects/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/fakeobjects/plugin.js	(revision 6241)
@@ -13,5 +13,5 @@
 			{
 				var attributes = element.attributes,
-					realHtml = attributes && attributes._cke_realelement,
+					realHtml = attributes && attributes[ 'data-cke-realelement' ],
 					realFragment = realHtml && new CKEDITOR.htmlParser.fragment.fromHtml( decodeURIComponent( realHtml ) ),
 					realElement = realFragment && realFragment.children[ 0 ];
@@ -19,5 +19,5 @@
 				// If we have width/height in the element, we must move it into
 				// the real element.
-				if ( realElement && element.attributes._cke_resizable )
+				if ( realElement && element.attributes[ 'data-cke-resizable' ] )
 				{
 					var style = element.attributes.style;
@@ -63,5 +63,6 @@
 CKEDITOR.editor.prototype.createFakeElement = function( realElement, className, realElementType, isResizable )
 {
-	var lang = this.lang.fakeobjects;
+	var lang = this.lang.fakeobjects,
+		label = lang[ realElementType ] || lang.unknown;
 
 	var attributes =
@@ -69,15 +70,16 @@
 		'class' : className,
 		src : CKEDITOR.getUrl( 'images/spacer.gif' ),
-		_cke_realelement : encodeURIComponent( realElement.getOuterHtml() ),
-		_cke_real_node_type : realElement.type,
-		alt : lang[ realElementType ] || lang.unknown,
+		'data-cke-realelement' : encodeURIComponent( realElement.getOuterHtml() ),
+		'data-cke-real-node-type' : realElement.type,
+		alt : label,
+		title : label,
 		align : realElement.getAttribute( 'align' ) || ''
 	};
 
 	if ( realElementType )
-		attributes._cke_real_element_type = realElementType;
+		attributes[ 'data-cke-real-element-type' ] = realElementType;
 
 	if ( isResizable )
-		attributes._cke_resizable = isResizable;
+		attributes[ 'data-cke-resizable' ] = isResizable;
 
 	return this.document.createElement( 'img', { attributes : attributes } );
@@ -87,4 +89,5 @@
 {
 	var lang = this.lang.fakeobjects,
+		label = lang[ realElementType ] || lang.unknown,
 		html;
 
@@ -97,15 +100,16 @@
 		'class' : className,
 		src : CKEDITOR.getUrl( 'images/spacer.gif' ),
-		_cke_realelement : encodeURIComponent( html ),
-		_cke_real_node_type : realElement.type,
-		alt : lang[ realElementType ] || lang.unknown,
+		'data-cke-realelement' : encodeURIComponent( html ),
+		'data-cke-real-node-type' : realElement.type,
+		alt : label,
+		title : label,
 		align : realElement.attributes.align || ''
 	};
 
 	if ( realElementType )
-		attributes._cke_real_element_type = realElementType;
+		attributes[ 'data-cke-real-element-type' ] = realElementType;
 
 	if ( isResizable )
-		attributes._cke_resizable = isResizable;
+		attributes[ 'data-cke-resizable' ] = isResizable;
 
 	return new CKEDITOR.htmlParser.element( 'img', attributes );
@@ -114,9 +118,9 @@
 CKEDITOR.editor.prototype.restoreRealElement = function( fakeElement )
 {
-	if ( fakeElement.getAttribute( '_cke_real_node_type' ) != CKEDITOR.NODE_ELEMENT )
+	if ( fakeElement.data( 'cke-real-node-type' ) != CKEDITOR.NODE_ELEMENT )
 		return null;
 
 	return CKEDITOR.dom.element.createFromHtml(
-		decodeURIComponent( fakeElement.getAttribute( '_cke_realelement' ) ),
+		decodeURIComponent( fakeElement.data( 'cke-realelement' ) ),
 		this.document );
 };
Index: CKEditor/trunk/_source/plugins/filebrowser/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/filebrowser/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/filebrowser/plugin.js	(revision 6241)
@@ -279,5 +279,5 @@
 			else if ( element.filebrowser.action == 'QuickUpload' && element[ 'for' ] )
 			{
-				var url = element.filebrowser.url;
+				url = element.filebrowser.url;
 				if ( url === undefined )
 				{
Index: CKEditor/trunk/_source/plugins/flash/dialogs/flash.js
===================================================================
--- CKEditor/trunk/_source/plugins/flash/dialogs/flash.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/flash/dialogs/flash.js	(revision 6241)
@@ -191,5 +191,5 @@
 				// Try to detect any embed or object tag that has Flash parameters.
 				var fakeImage = this.getSelectedElement();
-				if ( fakeImage && fakeImage.getAttribute( '_cke_real_element_type' ) && fakeImage.getAttribute( '_cke_real_element_type' ) == 'flash' )
+				if ( fakeImage && fakeImage.data( 'cke-real-element-type' ) && fakeImage.data( 'cke-real-element-type' ) == 'flash' )
 				{
 					this.fakeImage = fakeImage;
@@ -366,6 +366,6 @@
 									id : 'width',
 									style : 'width:95px',
-									label : editor.lang.flash.width,
-									validate : CKEDITOR.dialog.validate.integer( editor.lang.flash.validateWidth ),
+									label : editor.lang.common.width,
+									validate : CKEDITOR.dialog.validate.integer( editor.lang.common.invalidWidth ),
 									setup : function( objectNode, embedNode, paramMap, fakeImage )
 									{
@@ -389,6 +389,6 @@
 									id : 'height',
 									style : 'width:95px',
-									label : editor.lang.flash.height,
-									validate : CKEDITOR.dialog.validate.integer( editor.lang.flash.validateHeight ),
+									label : editor.lang.common.height,
+									validate : CKEDITOR.dialog.validate.integer( editor.lang.common.invalidHeight ),
 									setup : function( objectNode, embedNode, paramMap, fakeImage )
 									{
@@ -559,5 +559,5 @@
 									id : 'align',
 									type : 'select',
-									label : editor.lang.flash.align,
+									label : editor.lang.common.align,
 									'default' : '',
 									style : 'width : 100%;',
@@ -565,13 +565,13 @@
 									[
 										[ editor.lang.common.notSet , ''],
-										[ editor.lang.flash.alignLeft , 'left'],
+										[ editor.lang.common.alignLeft , 'left'],
 										[ editor.lang.flash.alignAbsBottom , 'absBottom'],
 										[ editor.lang.flash.alignAbsMiddle , 'absMiddle'],
 										[ editor.lang.flash.alignBaseline , 'baseline'],
-										[ editor.lang.flash.alignBottom , 'bottom'],
-										[ editor.lang.flash.alignMiddle , 'middle'],
-										[ editor.lang.flash.alignRight , 'right'],
+										[ editor.lang.common.alignBottom , 'bottom'],
+										[ editor.lang.common.alignMiddle , 'middle'],
+										[ editor.lang.common.alignRight , 'right'],
 										[ editor.lang.flash.alignTextTop , 'textTop'],
-										[ editor.lang.flash.alignTop , 'top']
+										[ editor.lang.common.alignTop , 'top']
 									],
 									setup : loadValue,
Index: CKEditor/trunk/_source/plugins/flash/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/flash/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/flash/plugin.js	(revision 6241)
@@ -76,5 +76,5 @@
 					var element = evt.data.element;
 
-					if ( element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'flash' )
+					if ( element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'flash' )
 						evt.data.dialog = 'flash';
 				});
@@ -86,5 +86,5 @@
 					{
 						if ( element && element.is( 'img' ) && !element.isReadOnly()
-								&& element.getAttribute( '_cke_real_element_type' ) == 'flash' )
+								&& element.data( 'cke-real-element-type' ) == 'flash' )
 							return { flash : CKEDITOR.TRISTATE_OFF };
 					});
Index: CKEditor/trunk/_source/plugins/floatpanel/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/floatpanel/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/floatpanel/plugin.js	(revision 6241)
@@ -306,5 +306,5 @@
 							this.allowBlur( true );
 						}, 0, this);
-					}, 0, this);
+					},  CKEDITOR.env.air ? 200 : 0, this);
 				this.visible = 1;
 
Index: CKEditor/trunk/_source/plugins/forms/dialogs/button.js
===================================================================
--- CKEditor/trunk/_source/plugins/forms/dialogs/button.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/forms/dialogs/button.js	(revision 6241)
@@ -53,5 +53,5 @@
 						{
 							this.setValue(
-									element.getAttribute( '_cke_saved_name' ) ||
+									element.data( 'cke-saved-name' ) ||
 									element.getAttribute( 'name' ) ||
 									'' );
@@ -62,8 +62,8 @@
 
 							if ( this.getValue() )
-								element.setAttribute( '_cke_saved_name', this.getValue() );
+								element.data( 'cke-saved-name', this.getValue() );
 							else
 							{
-								element.removeAttribute( '_cke_saved_name' );
+								element.data( 'cke-saved-name', false );
 								element.removeAttribute( 'name' );
 							}
Index: CKEditor/trunk/_source/plugins/forms/dialogs/checkbox.js
===================================================================
--- CKEditor/trunk/_source/plugins/forms/dialogs/checkbox.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/forms/dialogs/checkbox.js	(revision 6241)
@@ -52,5 +52,5 @@
 						{
 							this.setValue(
-									element.getAttribute( '_cke_saved_name' ) ||
+									element.data( 'cke-saved-name' ) ||
 									element.getAttribute( 'name' ) ||
 									'' );
@@ -62,8 +62,8 @@
 							// IE failed to update 'name' property on input elements, protect it now.
 							if ( this.getValue() )
-								element.setAttribute( '_cke_saved_name', this.getValue() );
+								element.data( 'cke-saved-name', this.getValue() );
 							else
 							{
-								element.removeAttribute( '_cke_saved_name' );
+								element.data( 'cke-saved-name', false );
 								element.removeAttribute( 'name' );
 							}
Index: CKEditor/trunk/_source/plugins/forms/dialogs/form.js
===================================================================
--- CKEditor/trunk/_source/plugins/forms/dialogs/form.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/forms/dialogs/form.js	(revision 6241)
@@ -85,5 +85,5 @@
 						setup : function( element )
 						{
-							this.setValue( element.getAttribute( '_cke_saved_name' ) ||
+							this.setValue( element.data( 'cke-saved-name' ) ||
 									element.getAttribute( 'name' ) ||
 									'' );
@@ -92,8 +92,8 @@
 						{
 							if ( this.getValue() )
-								element.setAttribute( '_cke_saved_name', this.getValue() );
+								element.data( 'cke-saved-name', this.getValue() );
 							else
 							{
-								element.removeAttribute( '_cke_saved_name' );
+								element.data( 'cke-saved-name', false );
 								element.removeAttribute( 'name' );
 							}
Index: CKEditor/trunk/_source/plugins/forms/dialogs/hiddenfield.js
===================================================================
--- CKEditor/trunk/_source/plugins/forms/dialogs/hiddenfield.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/forms/dialogs/hiddenfield.js	(revision 6241)
@@ -18,5 +18,5 @@
 				element = selection.getSelectedElement();
 
-			if ( element && element.getAttribute( '_cke_real_element_type' ) && element.getAttribute( '_cke_real_element_type' ) == 'hiddenfield' )
+			if ( element && element.data( 'cke-real-element-type' ) && element.data( 'cke-real-element-type' ) == 'hiddenfield' )
 			{
 				this.hiddenField = element;
@@ -60,5 +60,5 @@
 						{
 							this.setValue(
-									element.getAttribute( '_cke_saved_name' ) ||
+									element.data( 'cke-saved-name' ) ||
 									element.getAttribute( 'name' ) ||
 									'' );
Index: CKEditor/trunk/_source/plugins/forms/dialogs/radio.js
===================================================================
--- CKEditor/trunk/_source/plugins/forms/dialogs/radio.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/forms/dialogs/radio.js	(revision 6241)
@@ -52,5 +52,5 @@
 						{
 							this.setValue(
-									element.getAttribute( '_cke_saved_name' ) ||
+									element.data( 'cke-saved-name' ) ||
 									element.getAttribute( 'name' ) ||
 									'' );
@@ -61,8 +61,8 @@
 
 							if ( this.getValue() )
-								element.setAttribute( '_cke_saved_name', this.getValue() );
+								element.data( 'cke-saved-name', this.getValue() );
 							else
 							{
-								element.removeAttribute( '_cke_saved_name' );
+								element.data( 'cke-saved-name', false );
 								element.removeAttribute( 'name' );
 							}
Index: CKEditor/trunk/_source/plugins/forms/dialogs/select.js
===================================================================
--- CKEditor/trunk/_source/plugins/forms/dialogs/select.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/forms/dialogs/select.js	(revision 6241)
@@ -194,9 +194,9 @@
 						{
 							if ( name == 'clear' )
-								this.setValue( this['default'] || '' );
+								this.setValue( this[ 'default' ] || '' );
 							else if ( name == 'select' )
 							{
 								this.setValue(
-										element.getAttribute( '_cke_saved_name' ) ||
+										element.data( 'cke-saved-name' ) ||
 										element.getAttribute( 'name' ) ||
 										'' );
@@ -206,8 +206,8 @@
 						{
 							if ( this.getValue() )
-								element.setAttribute( '_cke_saved_name', this.getValue() );
+								element.data( 'cke-saved-name', this.getValue() );
 							else
 							{
-								element.removeAttribute( '_cke_saved_name' ) ;
+								element.data( 'cke-saved-name', false );
 								element.removeAttribute( 'name' );
 							}
Index: CKEditor/trunk/_source/plugins/forms/dialogs/textarea.js
===================================================================
--- CKEditor/trunk/_source/plugins/forms/dialogs/textarea.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/forms/dialogs/textarea.js	(revision 6241)
@@ -51,5 +51,5 @@
 						{
 							this.setValue(
-									element.getAttribute( '_cke_saved_name' ) ||
+									element.data( 'cke-saved-name' ) ||
 									element.getAttribute( 'name' ) ||
 									'' );
@@ -58,8 +58,8 @@
 						{
 							if ( this.getValue() )
-								element.setAttribute( '_cke_saved_name', this.getValue() );
+								element.data( 'cke-saved-name', this.getValue() );
 							else
 							{
-								element.removeAttribute( '_cke_saved_name' );
+								element.data( 'cke-saved-name', false );
 								element.removeAttribute( 'name' );
 							}
Index: CKEditor/trunk/_source/plugins/forms/dialogs/textfield.js
===================================================================
--- CKEditor/trunk/_source/plugins/forms/dialogs/textfield.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/forms/dialogs/textfield.js	(revision 6241)
@@ -99,5 +99,5 @@
 								{
 									this.setValue(
-											element.getAttribute( '_cke_saved_name' ) ||
+											element.data( 'cke-saved-name' ) ||
 											element.getAttribute( 'name' ) ||
 											'' );
@@ -108,8 +108,8 @@
 
 									if ( this.getValue() )
-										element.setAttribute( '_cke_saved_name', this.getValue() );
+										element.data( 'cke-saved-name', this.getValue() );
 									else
 									{
-										element.removeAttribute( '_cke_saved_name' );
+										element.data( 'cke-saved-name', false );
 										element.removeAttribute( 'name' );
 									}
Index: CKEditor/trunk/_source/plugins/forms/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/forms/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/forms/plugin.js	(revision 6241)
@@ -168,5 +168,5 @@
 						}
 
-						if ( name == 'img' && element.getAttribute( '_cke_real_element_type' ) == 'hiddenfield' )
+						if ( name == 'img' && element.data( 'cke-real-element-type' ) == 'hiddenfield' )
 							return { hiddenfield : CKEDITOR.TRISTATE_OFF };
 					}
@@ -184,5 +184,5 @@
 				else if ( element.is( 'textarea' ) )
 					evt.data.dialog = 'textarea';
-				else if ( element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'hiddenfield' )
+				else if ( element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'hiddenfield' )
 					evt.data.dialog = 'hiddenfield';
 				else if ( element.is( 'input' ) )
Index: CKEditor/trunk/_source/plugins/htmldataprocessor/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/htmldataprocessor/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/htmldataprocessor/plugin.js	(revision 6241)
@@ -39,6 +39,10 @@
 	}
 
-	function blockNeedsExtension( block, fromSource )
-	{
+	function blockNeedsExtension( block, fromSource, extendEmptyBlock )
+	{
+		if( !fromSource && ( !extendEmptyBlock ||
+			typeof extendEmptyBlock == 'function' && ( extendEmptyBlock( block ) === false ) ) )
+			return false;
+
         // 1. For IE version >=8,  empty blocks are displayed correctly themself in wysiwiyg;
         // 2. For the rest, at least table cell and list item need no filler space.
@@ -52,30 +56,25 @@
 		var lastChild = lastNoneSpaceChild( block );
 
-		return !lastChild
-			|| lastChild.type == CKEDITOR.NODE_ELEMENT && lastChild.name == 'br'
-			// Some of the controls in form needs extension too,
-			// to move cursor at the end of the form. (#4791)
-			|| block.name == 'form' && lastChild.name == 'input';
-	}
-
-	function extendBlockForDisplay( block )
-	{
-		trimFillers( block, true );
-
-		if ( blockNeedsExtension( block, true ) )
-		{
-			if ( CKEDITOR.env.ie )
-				block.add( new CKEDITOR.htmlParser.text( '\xa0' ) );
-			else
-				block.add( new CKEDITOR.htmlParser.element( 'br', {} ) );
-		}
-	}
-
-	function extendBlockForOutput( block )
-	{
-		trimFillers( block );
-
-		if ( blockNeedsExtension( block ) )
-			block.add( new CKEDITOR.htmlParser.text( '\xa0' ) );
+		return !lastChild || lastChild &&
+				( lastChild.type == CKEDITOR.NODE_ELEMENT && lastChild.name == 'br'
+				// Some of the controls in form needs extension too,
+				// to move cursor at the end of the form. (#4791)
+				|| block.name == 'form' && lastChild.name == 'input' );
+	}
+
+	function getBlockExtension( isOutput, emptyBlockFiller )
+	{
+		return function( node )
+		{
+			trimFillers( node, !isOutput );
+
+			if ( blockNeedsExtension( node, !isOutput, emptyBlockFiller ) )
+			{
+				if ( isOutput || CKEDITOR.env.ie )
+					node.add( new CKEDITOR.htmlParser.text( '\xa0' ) );
+				else
+					node.add( new CKEDITOR.htmlParser.element( 'br', {} ) );
+			}
+		};
 	}
 
@@ -99,5 +98,5 @@
 			// Event attributes (onXYZ) must not be directly set. They can become
 			// active in the editing area (IE|WebKit).
-			[ ( /^on/ ), '_cke_pa_on' ]
+			[ ( /^on/ ), 'data-cke-pa-on' ]
 		]
 	};
@@ -106,5 +105,5 @@
 
 	for ( i in blockLikeTags )
-		defaultDataBlockFilterRules.elements[ i ] = extendBlockForDisplay;
+		defaultDataBlockFilterRules.elements[ i ] = getBlockExtension();
 
 	var defaultHtmlFilterRules =
@@ -122,8 +121,8 @@
 			[
 				// Attributes saved for changes and protected attributes.
-				[ ( /^_cke_(saved|pa)_/ ), '' ],
-
-				// All "_cke" attributes are to be ignored.
-				[ ( /^_cke.*/ ), '' ],
+				[ ( /^data-cke-(saved|pa)-/ ), '' ],
+
+				// All "data-cke" attributes are to be ignored.
+				[ ( /^data-cke.*/ ), '' ],
 
 				[ 'hidefocus', '' ]
@@ -139,5 +138,5 @@
 					{
 						// Elements marked as temporary are to be ignored.
-						if ( attribs.cke_temp )
+						if ( attribs[ 'data-cke-temp' ] )
 							return false;
 
@@ -147,5 +146,5 @@
 						for ( var i = 0 ; i < attributeNames.length ; i++ )
 						{
-							savedAttributeName = '_cke_saved_' + attributeNames[ i ];
+							savedAttributeName = 'data-cke-saved-' + attributeNames[ i ];
 							savedAttributeName in attribs && ( delete attribs[ attributeNames[ i ] ] );
 						}
@@ -182,5 +181,5 @@
 					if ( !( element.children.length ||
 							element.attributes.name ||
-							element.attributes._cke_saved_name ) )
+							element.attributes[ 'data-cke-saved-name' ] ) )
 					{
 						return false;
@@ -188,4 +187,11 @@
 				},
 
+				// Remove dummy span in webkit.
+				span: function( element )
+				{
+					if ( element.attributes[ 'class' ] == 'Apple-style-span' )
+						delete element.name;
+				},
+
 				html : function( element )
 				{
@@ -212,5 +218,5 @@
 				{
 					var titleText = element.children[ 0 ];
-					titleText && ( titleText.value = element.attributes[ '_cke_title' ] || '' );
+					titleText && ( titleText.value = element.attributes[ 'data-cke-title' ] || '' );
 				}
 			},
@@ -243,9 +249,4 @@
 		};
 
-	var defaultHtmlBlockFilterRules = { elements : {} };
-
-	for ( i in blockLikeTags )
-		defaultHtmlBlockFilterRules.elements[ i ] = extendBlockForOutput;
-
 	if ( CKEDITOR.env.ie )
 	{
@@ -274,5 +275,5 @@
 
 	var protectAttributeRegex = /<((?:a|area|img|input)\b[\s\S]*?\s)((href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+)))([^>]*)>/gi,
-		findSavedSrcRegex = /\s_cke_saved_src\s*=/;
+		findSavedSrcRegex = /\sdata-cke-saved-src\s*=/;
 
 	var protectElementsRegex = /(?:<style(?=[ >])[^>]*>[\s\S]*<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,
@@ -292,5 +293,5 @@
 					return tag;
 				else
-					return '<' + beginning + fullAttr + ' _cke_saved_' + fullAttr + end + '>';
+					return '<' + beginning + fullAttr + ' data-cke-saved-' + fullAttr + end + '>';
 			});
 	}
@@ -413,5 +414,15 @@
 			dataProcessor.dataFilter.addRules( defaultDataBlockFilterRules );
 			dataProcessor.htmlFilter.addRules( defaultHtmlFilterRules );
+
+			var defaultHtmlBlockFilterRules = { elements : {} };
+			for ( i in blockLikeTags )
+				defaultHtmlBlockFilterRules.elements[ i ] = getBlockExtension( true, editor.config.fillEmptyBlocks );
+
 			dataProcessor.htmlFilter.addRules( defaultHtmlBlockFilterRules );
+		},
+
+		onLoad : function()
+		{
+			! ( 'fillEmptyBlocks' in CKEDITOR.config ) && ( CKEDITOR.config.fillEmptyBlocks = 1 );
 		}
 	});
@@ -505,4 +516,5 @@
  * W3C XHTML 1.0 standards (<a href="http://www.w3.org/TR/xhtml1/#C_12">C.12, XHTML 1.0</a>).
  * @name CKEDITOR.config.forceSimpleAmpersand
+ * @name CKEDITOR.config.forceSimpleAmpersand
  * @type Boolean
  * @default false
@@ -510,2 +522,22 @@
  * config.forceSimpleAmpersand = false;
  */
+
+/**
+ * Whether a filler text (non-breaking space entity - &nbsp;) will be inserted into empty block elements in HTML output,
+ * this is used to render block elements properly with line-height; When a function is instead specified,
+ * it'll be passed a {@link CKEDITOR.htmlParser.element} to decide whether adding the filler text
+ * by expecting a boolean return value.
+ * @name CKEDITOR.config.fillEmptyBlocks
+ * @since 3.5
+ * @type Boolean
+ * @default true
+ * @example
+ * config.fillEmptyBlocks = false;	// Prevent filler nodes in all empty blocks.
+ *
+ * // Prevent filler node only in float cleaners.
+ * config.fillEmptyBlocks = function( element )
+ * {
+ * 	if ( element.attributes[ 'class' ].indexOf ( 'clear-both' ) != -1 )
+ * 		return false;
+ * }
+ */
Index: CKEditor/trunk/_source/plugins/iframe/dialogs/iframe.js
===================================================================
--- CKEditor/trunk/_source/plugins/iframe/dialogs/iframe.js	(revision 6241)
+++ CKEditor/trunk/_source/plugins/iframe/dialogs/iframe.js	(revision 6241)
@@ -0,0 +1,257 @@
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	// Map 'true' and 'false' values to match W3C's specifications
+	// http://www.w3.org/TR/REC-html40/present/frames.html#h-16.5
+	var checkboxValues =
+	{
+		scrolling : { 'true' : 'yes', 'false' : 'no' },
+		frameborder : { 'true' : '1', 'false' : '0' }
+	};
+
+	function loadValue( iframeNode )
+	{
+		var isCheckbox = this instanceof CKEDITOR.ui.dialog.checkbox;
+		if ( iframeNode.hasAttribute( this.id ) )
+		{
+			var value = iframeNode.getAttribute( this.id );
+			if ( isCheckbox )
+				this.setValue( checkboxValues[ this.id ][ 'true' ] == value.toLowerCase() );
+			else
+				this.setValue( value );
+		}
+	}
+
+	function commitValue( iframeNode )
+	{
+		var isRemove = this.getValue() === '',
+			isCheckbox = this instanceof CKEDITOR.ui.dialog.checkbox,
+			value = this.getValue();
+		if ( isRemove )
+			iframeNode.removeAttribute( this.att || this.id );
+		else if ( isCheckbox )
+			iframeNode.setAttribute( this.id, checkboxValues[ this.id ][ value ] );
+		else
+			iframeNode.setAttribute( this.att || this.id, value );
+	}
+
+	CKEDITOR.dialog.add( 'iframe', function( editor )
+	{
+		var iframeLang = editor.lang.iframe,
+			commonLang = editor.lang.common,
+			dialogadvtab = editor.plugins.dialogadvtab;
+		return {
+			title : iframeLang.title,
+			minWidth : 350,
+			minHeight : 260,
+			onShow : function()
+			{
+				// Clear previously saved elements.
+				this.fakeImage = this.iframeNode = null;
+
+				var fakeImage = this.getSelectedElement();
+				if ( fakeImage && fakeImage.data( 'cke-real-element-type' ) && fakeImage.data( 'cke-real-element-type' ) == 'iframe' )
+				{
+					this.fakeImage = fakeImage;
+
+					var iframeNode = editor.restoreRealElement( fakeImage );
+					this.iframeNode = iframeNode;
+
+					this.setupContent( iframeNode, fakeImage );
+				}
+			},
+			onOk : function()
+			{
+				var iframeNode;
+				if ( !this.fakeImage )
+					iframeNode = new CKEDITOR.dom.element( 'iframe' );
+				else
+					iframeNode = this.iframeNode;
+
+				// A subset of the specified attributes/styles
+				// should also be applied on the fake element to
+				// have better visual effect. (#5240)
+				var extraStyles = {}, extraAttributes = {};
+				this.commitContent( iframeNode, extraStyles, extraAttributes );
+
+				// Refresh the fake image.
+				var newFakeImage = editor.createFakeElement( iframeNode, 'cke_iframe', 'iframe', true );
+				newFakeImage.setAttributes( extraAttributes );
+				newFakeImage.setStyles( extraStyles );
+				if ( this.fakeImage )
+				{
+					newFakeImage.replace( this.fakeImage );
+					editor.getSelection().selectElement( newFakeImage );
+				}
+				else
+					editor.insertElement( newFakeImage );
+			},
+			contents : [
+				{
+					id : 'info',
+					label : commonLang.generalTab,
+					accessKey : 'I',
+					elements :
+					[
+						{
+							type : 'vbox',
+							padding : 0,
+							children :
+							[
+								{
+									id : 'src',
+									type : 'text',
+									label : commonLang.url,
+									required : true,
+									validate : CKEDITOR.dialog.validate.notEmpty( iframeLang.noUrl ),
+									setup : loadValue,
+									commit : commitValue
+								}
+							]
+						},
+						{
+							type : 'hbox',
+							children :
+							[
+								{
+									id : 'width',
+									type : 'text',
+									style : 'width:100%',
+									labelLayout : 'vertical',
+									label : commonLang.width,
+									validate : CKEDITOR.dialog.validate.integer( commonLang.invalidWidth ),
+									setup : function( iframeNode, fakeImage )
+									{
+										loadValue.apply( this, arguments );
+										if ( fakeImage )
+										{
+											var fakeImageWidth = parseInt( fakeImage.$.style.width, 10 );
+											if ( !isNaN( fakeImageWidth ) )
+												this.setValue( fakeImageWidth );
+										}
+									},
+									commit : function( iframeNode, extraStyles )
+									{
+										commitValue.apply( this, arguments );
+										if ( this.getValue() )
+											extraStyles.width = this.getValue() + 'px';
+									}
+								},
+								{
+									id : 'height',
+									type : 'text',
+									style : 'width:100%',
+									labelLayout : 'vertical',
+									label : commonLang.height,
+									validate : CKEDITOR.dialog.validate.integer( commonLang.invalidHeight ),
+									setup : function( iframeNode, fakeImage )
+									{
+										loadValue.apply( this, arguments );
+										if ( fakeImage )
+										{
+											var fakeImageHeight = parseInt( fakeImage.$.style.height, 10 );
+											if ( !isNaN( fakeImageHeight ) )
+												this.setValue( fakeImageHeight );
+										}
+									},
+									commit : function( iframeNode, extraStyles )
+									{
+										commitValue.apply( this, arguments );
+										if ( this.getValue() )
+											extraStyles.height = this.getValue() + 'px';
+									}
+								},
+								{
+									id : 'align',
+									type : 'select',
+									'default' : '',
+									items :
+									[
+										[ commonLang.notSet , '' ],
+										[ commonLang.alignLeft , 'left' ],
+										[ commonLang.alignRight , 'right' ],
+										[ commonLang.alignTop , 'top' ],
+										[ commonLang.alignMiddle , 'middle' ],
+										[ commonLang.alignBottom , 'bottom' ]
+									],
+									style : 'width:100%',
+									labelLayout : 'vertical',
+									label : commonLang.align,
+									setup : function( iframeNode, fakeImage )
+									{
+										loadValue.apply( this, arguments );
+										if ( fakeImage )
+										{
+											var fakeImageAlign = fakeImage.getAttribute( 'align' );
+											this.setValue( fakeImageAlign && fakeImageAlign.toLowerCase() || '' );
+										}
+									},
+									commit : function( iframeNode, extraStyles, extraAttributes )
+									{
+										commitValue.apply( this, arguments );
+										if ( this.getValue() )
+											extraAttributes.align = this.getValue();
+									}
+								}
+							]
+						},
+						{
+							type : 'hbox',
+							widths : [ '50%', '50%' ],
+							children :
+							[
+								{
+									id : 'scrolling',
+									type : 'checkbox',
+									label : iframeLang.scrolling,
+									setup : loadValue,
+									commit : commitValue
+								},
+								{
+									id : 'frameborder',
+									type : 'checkbox',
+									label : iframeLang.border,
+									setup : loadValue,
+									commit : commitValue
+								}
+							]
+						},
+						{
+							type : 'hbox',
+							widths : [ '50%', '50%' ],
+							children :
+							[
+								{
+									id : 'name',
+									type : 'text',
+									label : commonLang.name,
+									setup : loadValue,
+									commit : commitValue
+								},
+								{
+									id : 'title',
+									type : 'text',
+									label : commonLang.advisoryTitle,
+									setup : loadValue,
+									commit : commitValue
+								}
+							]
+						},
+						{
+							id : 'longdesc',
+							type : 'text',
+							label : commonLang.longDescr,
+							setup : loadValue,
+							commit : commitValue
+						}
+					]
+				},
+				dialogadvtab && dialogadvtab.createAdvancedTab( editor, { id:1, classes:1, styles:1 })
+			]
+		};
+	});
+})();
Index: CKEditor/trunk/_source/plugins/iframe/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/iframe/plugin.js	(revision 6241)
+++ CKEditor/trunk/_source/plugins/iframe/plugin.js	(revision 6241)
@@ -0,0 +1,106 @@
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function()
+{
+	function createFakeElement( editor, realElement )
+	{
+		var fakeElement = editor.createFakeParserElement( realElement, 'cke_iframe', 'iframe', true ),
+			fakeStyle = fakeElement.attributes.style || '';
+
+		var width = realElement.attributes.width,
+			height = realElement.attributes.height;
+
+		if ( typeof width != 'undefined' )
+			fakeStyle += 'width:' + CKEDITOR.tools.cssLength( width ) + ';';
+
+		if ( typeof height != 'undefined' )
+			fakeStyle += 'height:' + CKEDITOR.tools.cssLength( height ) + ';';
+
+		fakeElement.attributes.style = fakeStyle;
+
+		return fakeElement;
+	}
+
+	CKEDITOR.plugins.add( 'iframe',
+	{
+		requires : [ 'dialog', 'fakeobjects' ],
+		init : function( editor )
+		{
+			var pluginName = 'iframe',
+				lang = editor.lang.iframe;
+
+			CKEDITOR.dialog.add( pluginName, this.path + 'dialogs/iframe.js' );
+			editor.addCommand( pluginName, new CKEDITOR.dialogCommand( pluginName ) );
+
+			editor.addCss(
+				'img.cke_iframe' +
+				'{' +
+					'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/placeholder.png' ) + ');' +
+					'background-position: center center;' +
+					'background-repeat: no-repeat;' +
+					'border: 1px solid #a9a9a9;' +
+					'width: 80px;' +
+					'height: 80px;' +
+				'}'
+			);
+
+			editor.ui.addButton( 'Iframe',
+				{
+					label : lang.toolbar,
+					command : pluginName
+				});
+
+			editor.on( 'doubleclick', function( evt )
+				{
+					var element = evt.data.element;
+					if ( element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'iframe' )
+						evt.data.dialog = 'iframe';
+				});
+
+			if ( editor.addMenuItems )
+			{
+				editor.addMenuItems(
+				{
+					iframe :
+					{
+						label : lang.title,
+						command : 'iframe',
+						group : 'image'
+					}
+				});
+			}
+
+			// If the "contextmenu" plugin is loaded, register the listeners.
+			if ( editor.contextMenu )
+			{
+				editor.contextMenu.addListener( function( element, selection )
+					{
+						if ( element && element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'iframe' )
+							return { iframe : CKEDITOR.TRISTATE_OFF };
+					});
+			}
+		},
+		afterInit : function( editor )
+		{
+			var dataProcessor = editor.dataProcessor,
+				dataFilter = dataProcessor && dataProcessor.dataFilter;
+
+			if ( dataFilter )
+			{
+				dataFilter.addRules(
+				{
+					elements :
+					{
+						iframe : function( element )
+						{
+							return createFakeElement( editor, element );
+						}
+					}
+				});
+			}
+		}
+	});
+})();
Index: CKEditor/trunk/_source/plugins/image/dialogs/image.js
===================================================================
--- CKEditor/trunk/_source/plugins/image/dialogs/image.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/image/dialogs/image.js	(revision 6241)
@@ -265,5 +265,5 @@
 			title : ( dialogType == 'image' ) ? editor.lang.image.title : editor.lang.image.titleButton,
 			minWidth : 420,
-			minHeight : 310,
+			minHeight : CKEDITOR.env.ie && CKEDITOR.env.quirks?  360: 310,
 			onShow : function()
 			{
@@ -320,5 +320,5 @@
 				}
 
-				if ( element && element.getName() == 'img' && !element.getAttribute( '_cke_realelement' )
+				if ( element && element.getName() == 'img' && !element.data( 'cke-realelement' )
 					|| element && element.getName() == 'input' && element.getAttribute( 'type' ) == 'image' )
 				{
@@ -534,5 +534,5 @@
 												if ( type == IMAGE )
 												{
-													var url = element.getAttribute( '_cke_saved_src' ) || element.getAttribute( 'src' );
+													var url = element.data( 'cke-saved-src' ) || element.getAttribute( 'src' );
 													var field = this;
 
@@ -548,5 +548,5 @@
 												if ( type == IMAGE && ( this.getValue() || this.isChanged() ) )
 												{
-													element.setAttribute( '_cke_saved_src', decodeURI( this.getValue() ) );
+													element.data( 'cke-saved-src', decodeURI( this.getValue() ) );
 													element.setAttribute( 'src', decodeURI( this.getValue() ) );
 												}
@@ -608,15 +608,13 @@
 						{
 							type : 'hbox',
-							widths : [ '140px', '240px' ],
 							children :
 							[
 								{
 									type : 'vbox',
-									padding : 10,
 									children :
 									[
 										{
 											type : 'hbox',
-											widths : [ '70%', '30%' ],
+											widths : [ '50%', '50%' ],
 											children :
 											[
@@ -630,6 +628,5 @@
 															width: '40px',
 															id : 'txtWidth',
-															labelLayout : 'horizontal',
-															label : editor.lang.image.width,
+															label : editor.lang.common.width,
 															onKeyUp : onSizeChange,
 															onChange : function()
@@ -641,5 +638,5 @@
 																var aMatch  =  this.getValue().match( regexGetSizeOrEmpty );
 																if ( !aMatch )
-																	alert( editor.lang.image.validateWidth );
+																	alert( editor.lang.common.invalidWidth );
 																return !!aMatch;
 															},
@@ -680,6 +677,5 @@
 															id : 'txtHeight',
 															width: '40px',
-															labelLayout : 'horizontal',
-															label : editor.lang.image.height,
+															label : editor.lang.common.height,
 															onKeyUp : onSizeChange,
 															onChange : function()
@@ -691,5 +687,5 @@
 																var aMatch = this.getValue().match( regexGetSizeOrEmpty );
 																if ( !aMatch )
-																	alert( editor.lang.image.validateHeight );
+																	alert( editor.lang.common.invalidHeight );
 																return !!aMatch;
 															},
@@ -731,5 +727,5 @@
 												{
 													type : 'html',
-													style : 'margin-top:10px;width:40px;height:40px;',
+													style : 'margin-top:30px;width:40px;height:40px;',
 													onLoad : function()
 													{
@@ -801,5 +797,4 @@
 													id : 'txtBorder',
 													width: '60px',
-													labelLayout : 'horizontal',
 													label : editor.lang.image.border,
 													'default' : '',
@@ -858,5 +853,4 @@
 													id : 'txtHSpace',
 													width: '60px',
-													labelLayout : 'horizontal',
 													label : editor.lang.image.hSpace,
 													'default' : '',
@@ -922,5 +916,4 @@
 													id : 'txtVSpace',
 													width : '60px',
-													labelLayout : 'horizontal',
 													label : editor.lang.image.vSpace,
 													'default' : '',
@@ -984,14 +977,13 @@
 													id : 'cmbAlign',
 													type : 'select',
-													labelLayout : 'horizontal',
 													widths : [ '35%','65%' ],
 													style : 'width:90px',
-													label : editor.lang.image.align,
+													label : editor.lang.common.align,
 													'default' : '',
 													items :
 													[
 														[ editor.lang.common.notSet , ''],
-														[ editor.lang.image.alignLeft , 'left'],
-														[ editor.lang.image.alignRight , 'right']
+														[ editor.lang.common.alignLeft , 'left'],
+														[ editor.lang.common.alignRight , 'right']
 														// Backward compatible with v2 on setup when specified as attribute value,
 														// while these values are no more available as select options.
@@ -1099,5 +1091,5 @@
 								if ( type == LINK )
 								{
-									var href = element.getAttribute( '_cke_saved_href' );
+									var href = element.data( 'cke-saved-href' );
 									if ( !href )
 										href = element.getAttribute( 'href' );
@@ -1111,5 +1103,5 @@
 									if ( this.getValue() || this.isChanged() )
 									{
-										element.setAttribute( '_cke_saved_href', decodeURI( this.getValue() ) );
+										element.data( 'cke-saved-href', decodeURI( this.getValue() ) );
 										element.setAttribute( 'href', 'javascript:void(0)/*' +
 											CKEDITOR.tools.getNextNumber() + '*/' );
Index: CKEditor/trunk/_source/plugins/image/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/image/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/image/plugin.js	(revision 6241)
@@ -31,5 +31,5 @@
 				var element = evt.data.element;
 
-				if ( element.is( 'img' ) && !element.getAttribute( '_cke_realelement' ) )
+				if ( element.is( 'img' ) && !element.data( 'cke-realelement' ) )
 					evt.data.dialog = 'image';
 			});
@@ -54,5 +54,5 @@
 			editor.contextMenu.addListener( function( element, selection )
 				{
-					if ( !element || !element.is( 'img' ) || element.getAttribute( '_cke_realelement' ) || element.isReadOnly() )
+					if ( !element || !element.is( 'img' ) || element.data( 'cke-realelement' ) || element.isReadOnly() )
 						return null;
 
Index: CKEditor/trunk/_source/plugins/link/dialogs/anchor.js
===================================================================
--- CKEditor/trunk/_source/plugins/link/dialogs/anchor.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/link/dialogs/anchor.js	(revision 6241)
@@ -39,5 +39,5 @@
 
 			// Set name.
-			element.removeAttribute( '_cke_saved_name' );
+			element.data( 'cke-saved-name', false );
 			element.setAttribute( 'name', name );
 
@@ -62,5 +62,5 @@
 			var selection = editor.getSelection();
 			var element = selection.getSelectedElement();
-			if ( element && element.getAttribute( '_cke_real_element_type' ) && element.getAttribute( '_cke_real_element_type' ) == 'anchor' )
+			if ( element && element.data( 'cke-real-element-type' ) && element.data( 'cke-real-element-type' ) == 'anchor' )
 			{
 				this.fakeObj = element;
Index: CKEditor/trunk/_source/plugins/link/dialogs/link.js
===================================================================
--- CKEditor/trunk/_source/plugins/link/dialogs/link.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/link/dialogs/link.js	(revision 6241)
@@ -76,4 +76,6 @@
 				element.hide();
 		}
+
+		dialog.layout();
 	};
 
@@ -95,5 +97,5 @@
 	var parseLink = function( editor, element )
 	{
-		var href = ( element  && ( element.getAttribute( '_cke_saved_href' ) || element.getAttribute( 'href' ) ) ) || '',
+		var href = ( element  && ( element.data( 'cke-saved-href' ) || element.getAttribute( 'href' ) ) ) || '',
 		 	javascriptMatch,
 			emailMatch,
@@ -185,5 +187,5 @@
 			if ( !target )
 			{
-				var onclick = element.getAttribute( '_cke_pa_onclick' ) || element.getAttribute( 'onclick' ),
+				var onclick = element.data( 'cke-pa-onclick' ) || element.getAttribute( 'onclick' ),
 					onclickMatch = onclick && onclick.match( popupRegex );
 				if ( onclickMatch )
@@ -243,5 +245,5 @@
 		{
 			var item = elements.getItem( i );
-			if ( item.getAttribute( '_cke_realelement' ) && item.getAttribute( '_cke_real_element_type' ) == 'anchor' )
+			if ( item.data( 'cke-realelement' ) && item.data( 'cke-real-element-type' ) == 'anchor' )
 				anchors.push( editor.restoreRealElement( item ) );
 		}
@@ -792,5 +794,5 @@
 					{
 						type : 'vbox',
-						width : 260,
+						width : '100%',
 						align : 'center',
 						padding : 2,
@@ -896,7 +898,7 @@
 											{
 												type :  'text',
-												widths : [ '30%', '70%' ],
+												widths : [ '50%', '50%' ],
 												labelLayout : 'horizontal',
-												label : linkLang.popupWidth,
+												label : commonLang.width,
 												id : 'width',
 												setup : setupPopupParams,
@@ -907,5 +909,5 @@
 												type :  'text',
 												labelLayout : 'horizontal',
-												widths : [ '55%', '45%' ],
+												widths : [ '50%', '50%' ],
 												label : linkLang.popupLeft,
 												id : 'left',
@@ -923,6 +925,6 @@
 												type :  'text',
 												labelLayout : 'horizontal',
-												widths : [ '30%', '70%' ],
-												label : linkLang.popupHeight,
+												widths : [ '50%', '50%' ],
+												label : commonLang.height,
 												id : 'height',
 												setup : setupPopupParams,
@@ -934,5 +936,5 @@
 												labelLayout : 'horizontal',
 												label : linkLang.popupTop,
-												widths : [ '55%', '45%' ],
+												widths : [ '50%', '50%' ],
 												id : 'top',
 												setup : setupPopupParams,
@@ -1146,6 +1148,6 @@
 				selection.selectElement( element );
 			else if ( ( element = selection.getSelectedElement() ) && element.is( 'img' )
-					&& element.getAttribute( '_cke_real_element_type' )
-					&& element.getAttribute( '_cke_real_element_type' ) == 'anchor' )
+					&& element.data( 'cke-real-element-type' )
+					&& element.data( 'cke-real-element-type' ) == 'anchor' )
 			{
 				this.fakeObj = element;
@@ -1174,10 +1176,10 @@
 					var protocol = ( data.url && data.url.protocol != undefined ) ? data.url.protocol : 'http://',
 						url = ( data.url && data.url.url ) || '';
-					attributes._cke_saved_href = ( url.indexOf( '/' ) === 0 ) ? url : protocol + url;
+					attributes[ 'data-cke-saved-href' ] = ( url.indexOf( '/' ) === 0 ) ? url : protocol + url;
 					break;
 				case 'anchor':
 					var name = ( data.anchor && data.anchor.name ),
 						id = ( data.anchor && data.anchor.id );
-					attributes._cke_saved_href = '#' + ( name || id || '' );
+					attributes[ 'data-cke-saved-href' ] = '#' + ( name || id || '' );
 					break;
 				case 'email':
@@ -1226,5 +1228,5 @@
 					}
 
-					attributes._cke_saved_href = linkHref.join( '' );
+					attributes[ 'data-cke-saved-href' ] = linkHref.join( '' );
 					break;
 			}
@@ -1254,5 +1256,5 @@
 
 					onclickList.push( featureList.join( ',' ), '\'); return false;' );
-					attributes[ '_cke_pa_onclick' ] = onclickList.join( '' );
+					attributes[ 'data-cke-pa-onclick' ] = onclickList.join( '' );
 
 					// Add the "target" attribute. (#5074)
@@ -1266,5 +1268,5 @@
 						removeAttributes.push( 'target' );
 
-					removeAttributes.push( '_cke_pa_onclick', 'onclick' );
+					removeAttributes.push( 'data-cke-pa-onclick', 'onclick' );
 				}
 			}
@@ -1305,5 +1307,5 @@
 					// Short mailto link text view (#5736).
 					var text = new CKEDITOR.dom.text( data.type == 'email' ?
-							data.email.address : attributes._cke_saved_href, editor.document );
+							data.email.address : attributes[ 'data-cke-saved-href' ], editor.document );
 					ranges[0].insertNode( text );
 					ranges[0].selectNodeContents( text );
@@ -1334,5 +1336,5 @@
 				// We're only editing an existing link, so just overwrite the attributes.
 				var element = this._.selectedElement,
-					href = element.getAttribute( '_cke_saved_href' ),
+					href = element.data( 'cke-saved-href' ),
 					textView = element.getHtml();
 
@@ -1361,5 +1363,5 @@
 					// Short mailto link text view (#5736).
 					element.setHtml( data.type == 'email' ?
-						data.email.address : attributes._cke_saved_href );
+						data.email.address : attributes[ 'data-cke-saved-href' ] );
 				}
 				// Make the element display as an anchor if a name has been set.
Index: CKEditor/trunk/_source/plugins/link/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/link/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/link/plugin.js	(revision 6241)
@@ -74,5 +74,5 @@
 					if ( element.is( 'a' ) )
 						evt.data.dialog =  ( element.getAttribute( 'name' ) && !element.getAttribute( 'href' ) ) ? 'anchor' : 'link';
-					else if ( element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'anchor' )
+					else if ( element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'anchor' )
 						evt.data.dialog = 'anchor';
 				}
@@ -117,5 +117,5 @@
 						return null;
 
-					var isAnchor = ( element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'anchor' );
+					var isAnchor = ( element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'anchor' );
 
 					if ( !isAnchor )
Index: CKEditor/trunk/_source/plugins/menu/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/menu/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/menu/plugin.js	(revision 6241)
@@ -54,4 +54,5 @@
 			this.editor = editor;
 			this.items = [];
+			this._.listeners = [];
 
 			this._.level = definition.level || 1;
@@ -72,4 +73,82 @@
 		_ :
 		{
+			onShow : function()
+			{
+				var selection = this.editor.getSelection();
+
+				// Selection will be unavailable after menu shows up
+				// in IE, lock it now.
+				if ( CKEDITOR.env.ie )
+					selection && selection.lock();
+
+				var element = selection && selection.getStartElement(),
+					listeners = this._.listeners,
+					includedItems = [];
+
+				this.removeAll();
+				// Call all listeners, filling the list of items to be displayed.
+				for ( var i = 0 ; i < listeners.length ; i++ )
+				{
+					var listenerItems = listeners[ i ]( element, selection );
+
+					if ( listenerItems )
+					{
+						for ( var itemName in listenerItems )
+						{
+							var item = this.editor.getMenuItem( itemName );
+
+							if ( item )
+							{
+								item.state = listenerItems[ itemName ];
+								this.add( item );
+							}
+						}
+					}
+				}
+			},
+
+			onClick : function( item )
+			{
+				this.hide();
+
+				if ( item.onClick )
+					item.onClick();
+				else if ( item.command )
+					this.editor.execCommand( item.command );
+			},
+
+			onEscape : function( keystroke )
+			{
+				var parent = this.parent;
+				// 1. If it's sub-menu, restore the last focused item
+				// of upper level menu.
+				// 2. In case of a top-menu, close it.
+				if ( parent )
+				{
+					parent._.panel.hideChild();
+					// Restore parent block item focus.
+					var parentBlock = parent._.panel._.panel._.currentBlock,
+						parentFocusIndex =  parentBlock._.focusIndex;
+					parentBlock._.markItem( parentFocusIndex );
+				}
+				else if ( keystroke == 27 )
+				{
+					this.hide();
+					this.editor.focus();
+				}
+				return false;
+			},
+
+			onHide : function()
+			{
+				if ( CKEDITOR.env.ie )
+				{
+					var selection = this.editor.getSelection();
+					selection && selection.unlock();
+				}
+
+				this.onHide && this.onHide();
+			},
+
 			showSubMenu : function( index )
 			{
@@ -99,7 +178,5 @@
 								   CKEDITOR.tools.extend( {}, this._.definition, { level : this._.level + 1 }, true ) );
 					menu.parent = this;
-					menu.onClick = CKEDITOR.tools.bind( this.onClick, this );
-					// Sub menu use their own scope for binding onEscape.
-					menu.onEscape = this.onEscape;
+					menu._.onClick = CKEDITOR.tools.bind( this._.onClick, this );
 				}
 
@@ -143,4 +220,15 @@
 			show : function( offsetParent, corner, offsetX, offsetY )
 			{
+				// Not for sub menu.
+				if ( !this.parent )
+				{
+					this._.onShow();
+					// Don't menu with zero items.
+					if ( ! this.items.length )
+						return;
+				}
+
+				corner = corner || ( this.editor.lang.dir == 'rtl' ? 2 : 1 );
+
 				var items = this.items,
 					editor = this.editor,
@@ -158,5 +246,5 @@
 					panel.onEscape = CKEDITOR.tools.bind( function( keystroke )
 					{
-						if ( this.onEscape && this.onEscape( keystroke ) === false )
+						if ( this._.onEscape( keystroke ) === false )
 							return false;
 					},
@@ -165,5 +253,5 @@
 					panel.onHide = CKEDITOR.tools.bind( function()
 					{
-						this.onHide && this.onHide();
+						this._.onHide && this._.onHide();
 					},
 					this );
@@ -214,5 +302,5 @@
 								this._.showSubMenu( index );
 							else
-								this.onClick && this.onClick( item );
+								this._.onClick( item );
 						},
 						this );
@@ -248,4 +336,6 @@
 				element.setHtml( output.join( '' ) );
 
+				CKEDITOR.ui.fire( 'ready', this );
+
 				// Show the panel.
 				if ( this.parent )
@@ -257,6 +347,12 @@
 			},
 
+			addListener : function( listenerFn )
+			{
+				this._.listeners.push( listenerFn );
+			},
+
 			hide : function()
 			{
+				this._.onHide && this._.onHide();
 				this._.panel && this._.panel.hide();
 			}
@@ -278,40 +374,38 @@
 			});
 	}
-})();
-
-CKEDITOR.menuItem = CKEDITOR.tools.createClass(
-{
-	$ : function( editor, name, definition )
+	CKEDITOR.menuItem = CKEDITOR.tools.createClass(
 	{
-		CKEDITOR.tools.extend( this, definition,
-			// Defaults
-			{
-				order : 0,
-				className : 'cke_button_' + name
-			});
-
-		// Transform the group name into its order number.
-		this.group = editor._.menuGroups[ this.group ];
-
-		this.editor = editor;
-		this.name = name;
-	},
-
-	proto :
-	{
-		render : function( menu, index, output )
+		$ : function( editor, name, definition )
 		{
-			var id = menu.id + String( index ),
-				state = ( typeof this.state == 'undefined' ) ? CKEDITOR.TRISTATE_OFF : this.state;
-
-			var classes = ' cke_' + (
-				state == CKEDITOR.TRISTATE_ON ? 'on' :
-				state == CKEDITOR.TRISTATE_DISABLED ? 'disabled' :
-				'off' );
-
-			var htmlLabel = this.label;
-
-			if ( this.className )
-				classes += ' ' + this.className;
+			CKEDITOR.tools.extend( this, definition,
+				// Defaults
+				{
+					order : 0,
+					className : 'cke_button_' + name
+				});
+
+			// Transform the group name into its order number.
+			this.group = editor._.menuGroups[ this.group ];
+
+			this.editor = editor;
+			this.name = name;
+		},
+
+		proto :
+		{
+			render : function( menu, index, output )
+			{
+				var id = menu.id + String( index ),
+					state = ( typeof this.state == 'undefined' ) ? CKEDITOR.TRISTATE_OFF : this.state;
+
+				var classes = ' cke_' + (
+					state == CKEDITOR.TRISTATE_ON ? 'on' :
+					state == CKEDITOR.TRISTATE_DISABLED ? 'disabled' :
+					'off' );
+
+				var htmlLabel = this.label;
+
+				if ( this.className )
+					classes += ' ' + this.className;
 
 			var hasSubMenu = this.getItems;
@@ -330,23 +424,23 @@
 					( state == CKEDITOR.TRISTATE_ON ? 'aria-pressed="true"' : '' ) );
 
-			// Some browsers don't cancel key events in the keydown but in the
-			// keypress.
-			// TODO: Check if really needed for Gecko+Mac.
-			if ( CKEDITOR.env.opera || ( CKEDITOR.env.gecko && CKEDITOR.env.mac ) )
-			{
+				// Some browsers don't cancel key events in the keydown but in the
+				// keypress.
+				// TODO: Check if really needed for Gecko+Mac.
+				if ( CKEDITOR.env.opera || ( CKEDITOR.env.gecko && CKEDITOR.env.mac ) )
+				{
+					output.push(
+						' onkeypress="return false;"' );
+				}
+
+				// With Firefox, we need to force the button to redraw, otherwise it
+				// will remain in the focus state.
+				if ( CKEDITOR.env.gecko )
+				{
+					output.push(
+						' onblur="this.style.cssText = this.style.cssText;"' );
+				}
+
+				var offset = ( this.iconOffset || 0 ) * -16;
 				output.push(
-					' onkeypress="return false;"' );
-			}
-
-			// With Firefox, we need to force the button to redraw, otherwise it
-			// will remain in the focus state.
-			if ( CKEDITOR.env.gecko )
-			{
-				output.push(
-					' onblur="this.style.cssText = this.style.cssText;"' );
-			}
-
-			var offset = ( this.iconOffset || 0 ) * -16;
-			output.push(
 //					' onkeydown="return CKEDITOR.ui.button._.keydown(', index, ', event);"' +
 					' onmouseover="CKEDITOR.tools.callFunction(', menu._.itemOverFn, ',', index, ');"' +
@@ -372,12 +466,15 @@
 			}
 
-			output.push(
-							htmlLabel,
-						'</span>' +
-				'</a>' +
-				'</span>' );
+				output.push(
+								htmlLabel,
+							'</span>' +
+					'</a>' +
+					'</span>' );
 		}
-	}
-});
+		}
+	});
+
+})();
+
 
 /**
Index: CKEditor/trunk/_source/plugins/menubutton/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/menubutton/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/menubutton/plugin.js	(revision 6241)
@@ -6,5 +6,5 @@
 CKEDITOR.plugins.add( 'menubutton',
 {
-	requires : [ 'button', 'contextmenu' ],
+	requires : [ 'button', 'menu' ],
 	beforeInit : function( editor )
 	{
@@ -36,6 +36,12 @@
 		if ( !menu )
 		{
-			menu = _.menu = new CKEDITOR.plugins.contextMenu( editor );
-			menu.definition.panel.attributes[ 'aria-label' ] = editor.lang.common.options;
+			menu = _.menu = new CKEDITOR.menu( editor,
+			{
+				panel:
+				{
+					className : editor.skinClass + ' cke_contextmenu',
+					attributes : { 'aria-label' : editor.lang.common.options }
+				}
+			});
 
 			menu.onHide = CKEDITOR.tools.bind( function()
Index: CKEditor/trunk/_source/plugins/pagebreak/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/pagebreak/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/pagebreak/plugin.js	(revision 6241)
@@ -89,6 +89,5 @@
 		// Creates the fake image used for this element.
 		breakObject = editor.createFakeElement( breakObject, 'cke_pagebreak', 'div' );
-		breakObject.setAttribute( 'alt', label );
-		breakObject.setAttribute( 'aria-label', label );
+		breakObject.setAttributes( { alt : label, 'aria-label' : label, title : label } );
 
 		var ranges = editor.getSelection().getRanges( true );
Index: CKEditor/trunk/_source/plugins/panel/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/panel/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/panel/plugin.js	(revision 6241)
@@ -137,10 +137,4 @@
 					langCode = parentDiv.getParent().getAttribute( 'lang' ),
 					doc = iframe.getFrameDocument();
-				// Initialize the IFRAME document body.
-				doc.$.open();
-
-				// Support for custom document.domain in IE.
-				if ( CKEDITOR.env.isCustomDomain() )
-					doc.$.domain = document.domain;
 
 				var onLoad = CKEDITOR.tools.addFunction( CKEDITOR.tools.bind( function( ev )
@@ -151,5 +145,5 @@
 					}, this ) );
 
-				doc.$.write(
+				var data =
 					'<!DOCTYPE html>' +
 					'<html dir="' + dir + '" class="' + className + '_container" lang="' + langCode + '">' +
@@ -163,6 +157,7 @@
 						// available. (#3031)
 						CKEDITOR.tools.buildStyleHtml( this.css ) +
-					'<\/html>' );
-				doc.$.close();
+					'<\/html>';
+
+				doc.write( data );
 
 				var win = doc.getWindow();
@@ -195,4 +190,5 @@
 				holder = doc.getBody();
 				holder.unselectable();
+				CKEDITOR.env.air && CKEDITOR.tools.callFunction( onLoad );
 			}
 			else
Index: CKEditor/trunk/_source/plugins/pastetext/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/pastetext/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/pastetext/plugin.js	(revision 6241)
@@ -38,18 +38,4 @@
 	};
 
-	function doInsertText( doc, text )
-	{
-		// Native text insertion.
-		if ( CKEDITOR.env.ie )
-		{
-			var selection = doc.selection;
-			if ( selection.type == 'Control' )
-				selection.clear();
-			selection.createRange().pasteHTML( text );
-		}
-		else
-			doc.execCommand( 'inserthtml', false, text );
-	}
-
 	// Register the plugin.
 	CKEDITOR.plugins.add( 'pastetext',
@@ -85,50 +71,4 @@
 	});
 
-	function doEnter( editor, mode, times, forceMode )
-	{
-		while ( times-- )
-		{
-			CKEDITOR.plugins.enterkey[ mode == CKEDITOR.ENTER_BR ? 'enterBr' : 'enterBlock' ]
-					( editor, mode, null, forceMode );
-		}
-	}
-
-	CKEDITOR.editor.prototype.insertText = function( text )
-	{
-		this.focus();
-		this.fire( 'saveSnapshot' );
-
-		var mode = this.getSelection().getStartElement().hasAscendant( 'pre', true ) ? CKEDITOR.ENTER_BR : this.config.enterMode,
-			isEnterBrMode = mode == CKEDITOR.ENTER_BR,
-			doc = this.document.$,
-			self = this,
-			line;
-
-		text = CKEDITOR.tools.htmlEncode( text.replace( /\r\n|\r/g, '\n' ) );
-
-		var startIndex = 0;
-		text.replace( /\n+/g, function( match, lastIndex )
-		 {
-			line = text.substring( startIndex, lastIndex );
-			startIndex = lastIndex + match.length;
-			line.length && doInsertText( doc, line );
-
-			var lineBreakNums = match.length,
-				// Duo consequence line-break as a enter block.
-				enterBlockTimes = isEnterBrMode ? 0 : Math.floor( lineBreakNums / 2 ),
-				// Per link-break as a enter br.
-				enterBrTimes = isEnterBrMode ? lineBreakNums : lineBreakNums % 2;
-
-			// Line-breaks are converted to editor enter key strokes.
-			doEnter( self, mode, enterBlockTimes );
-			doEnter( self, CKEDITOR.ENTER_BR, enterBrTimes, isEnterBrMode ? false : true );
-		 });
-
-		// Insert the last text line of text.
-		line = text.substring( startIndex, text.length );
-		line.length && doInsertText( doc, line );
-
-		this.fire( 'saveSnapshot' );
-	};
 })();
 
Index: CKEditor/trunk/_source/plugins/placeholder/dialogs/placeholder.js
===================================================================
--- CKEditor/trunk/_source/plugins/placeholder/dialogs/placeholder.js	(revision 6241)
+++ CKEditor/trunk/_source/plugins/placeholder/dialogs/placeholder.js	(revision 6241)
@@ -0,0 +1,78 @@
+﻿/*
+ * Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.html or http://ckeditor.com/license
+ */
+
+(function()
+{
+	function placeholderDialog( editor, isEdit )
+	{
+
+		var lang = editor.lang.placeholder,
+			generalLabel = editor.lang.common.generalTab;
+		return {
+			title : lang.title,
+			minWidth : 300,
+			minHeight : 80,
+			contents :
+			[
+				{
+					id : 'info',
+					label : generalLabel,
+					title : generalLabel,
+					elements :
+					[
+						{
+							id : 'text',
+							type : 'text',
+							style : 'width: 100%;',
+							label : lang.text,
+							'default' : '',
+							required : true,
+							validate : CKEDITOR.dialog.validate.notEmpty( lang.textMissing ),
+							setup : function( element )
+							{
+								if ( isEdit )
+									this.setValue( element.getText().slice( 2, -2 ) );
+							},
+							commit : function( element )
+							{
+								var text = '[[' + this.getValue() + ']]';
+								// The placeholder must be recreated.
+								CKEDITOR.plugins.placeholder.createPlaceholder( editor, element, text );
+							}
+						}
+					]
+				}
+			],
+			onShow : function()
+			{
+				if ( isEdit )
+				{
+					var range = editor.getSelection().getRanges()[0];
+					range.shrink( CKEDITOR.SHRINK_TEXT );
+					var node = range.startContainer;
+					while( node && !( node.type == CKEDITOR.NODE_ELEMENT && node.data( 'cke-placeholder' ) ) )
+						node = node.getParent();
+					this._element = node;
+				}
+
+				this.setupContent( this._element );
+			},
+			onOk : function()
+			{
+				this.commitContent( this._element );
+				delete this._element;
+			}
+		};
+	}
+
+	CKEDITOR.dialog.add( 'createplaceholder', function( editor )
+		{
+			return placeholderDialog( editor );
+		});
+	CKEDITOR.dialog.add( 'editplaceholder', function( editor )
+		{
+			return placeholderDialog( editor, 1 );
+		});
+} )();
Index: CKEditor/trunk/_source/plugins/placeholder/lang/en.js
===================================================================
--- CKEditor/trunk/_source/plugins/placeholder/lang/en.js	(revision 6241)
+++ CKEditor/trunk/_source/plugins/placeholder/lang/en.js	(revision 6241)
@@ -0,0 +1,16 @@
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang( 'placeholder', 'en',
+{
+	placeholder :
+	{
+		title		: 'Placeholder Properties',
+		toolbar		: 'Create Placeholder',
+		text		: 'Placeholder Text',
+		edit		: 'Edit Placeholder',
+		textMissing	: 'The placeholder must contain text.'
+	}
+});
Index: CKEditor/trunk/_source/plugins/placeholder/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/placeholder/plugin.js	(revision 6241)
+++ CKEditor/trunk/_source/plugins/placeholder/plugin.js	(revision 6241)
@@ -0,0 +1,160 @@
+﻿/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview The "placeholder" plugin.
+ *
+ */
+
+(function()
+{
+	var placeholderReplaceRegex = /\[\[[^\]]+\]\]/g;
+	CKEDITOR.plugins.add( 'placeholder',
+	{
+		requires : [ 'dialog' ],
+		lang : [ 'en' ],
+		init : function( editor )
+		{
+			var lang = editor.lang.placeholder;
+
+			editor.addCommand( 'createplaceholder', new CKEDITOR.dialogCommand( 'createplaceholder' ) );
+			editor.addCommand( 'editplaceholder', new CKEDITOR.dialogCommand( 'editplaceholder' ) );
+
+			editor.ui.addButton( 'CreatePlaceholder',
+			{
+				label : lang.toolbar,
+				command :'createplaceholder',
+				icon : this.path + 'placeholder.gif'
+			});
+
+			if ( editor.addMenuItems )
+			{
+				editor.addMenuGroup( 'placeholder', 20 );
+				editor.addMenuItems(
+					{
+						editplaceholder :
+						{
+							label : lang.edit,
+							command : 'editplaceholder',
+							group : 'placeholder',
+							order : 1,
+							icon : this.path + 'placeholder.gif'
+						}
+					} );
+
+				if ( editor.contextMenu )
+				{
+					editor.contextMenu.addListener( function( element, selection )
+						{
+							if ( !element || !element.data( 'cke-placeholder' ) )
+								return null;
+
+							return { editplaceholder : CKEDITOR.TRISTATE_OFF };
+						} );
+				}
+			}
+
+			editor.on( 'doubleclick', function( evt )
+				{
+					var element = evt.data.element;
+					if ( element.data( 'cke-placeholder' ) )
+						evt.data.dialog = 'editplaceholder';
+				});
+
+			editor.addCss(
+				'.cke_placeholder' +
+				'{' +
+					'background-color: #ffff00;' +
+					( CKEDITOR.env.gecko ? 'cursor: default;' : '' ) +
+				'}'
+			);
+
+			editor.on( 'contentDom', function()
+				{
+					editor.document.getBody().on( 'resizestart', function( evt )
+						{
+							if ( editor.getSelection().getSelectedElement().data( 'cke-placeholder' ) )
+								evt.data.preventDefault();
+						});
+				});
+
+			CKEDITOR.dialog.add( 'createplaceholder', this.path + 'dialogs/placeholder.js' );
+			CKEDITOR.dialog.add( 'editplaceholder', this.path + 'dialogs/placeholder.js' );
+		},
+		afterInit : function( editor )
+		{
+			var dataProcessor = editor.dataProcessor,
+				dataFilter = dataProcessor && dataProcessor.dataFilter,
+				htmlFilter = dataProcessor && dataProcessor.htmlFilter;
+
+			if ( dataFilter )
+			{
+				dataFilter.addRules(
+				{
+					text : function( text )
+					{
+						return text.replace( placeholderReplaceRegex, function( match )
+							{
+								return CKEDITOR.plugins.placeholder.createPlaceholder( editor, null, match, 1 );
+							});
+					}
+				});
+			}
+
+			if ( htmlFilter )
+			{
+				htmlFilter.addRules(
+				{
+					elements :
+					{
+						'span' : function( element )
+						{
+							if ( element.attributes && element.attributes[ 'data-cke-placeholder' ] )
+								delete element.name;
+						}
+					}
+				});
+			}
+		}
+	});
+})();
+
+CKEDITOR.plugins.placeholder =
+{
+	createPlaceholder : function( editor, oldElement, text, isGet )
+	{
+		var element = new CKEDITOR.dom.element( 'span', editor.document );
+		element.setAttributes(
+			{
+				contentEditable		: 'false',
+				'data-cke-placeholder'	: 1,
+				'class'			: 'cke_placeholder'
+			}
+		);
+
+		text && element.setText( text );
+
+		if ( isGet )
+			return element.getOuterHtml();
+
+		if ( oldElement )
+		{
+			if ( CKEDITOR.env.ie )
+			{
+				element.insertAfter( oldElement );
+				// Some time is required for IE before the element is removed.
+				setTimeout( function()
+					{
+						oldElement.remove();
+						element.focus();
+					}, 10 );
+			}
+			else
+				element.replace( oldElement );
+		}
+		else
+			editor.insertElement( element );
+	}
+};
Index: CKEditor/trunk/_source/plugins/removeformat/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/removeformat/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/removeformat/plugin.js	(revision 6241)
@@ -99,5 +99,5 @@
 						// This node must not be a fake element.
 						if ( !( currentNode.getName() == 'img'
-							&& currentNode.getAttribute( '_cke_realelement' ) )
+							&& currentNode.data( 'cke-realelement' ) )
 							&& filter( editor, currentNode ) )
 						{
Index: CKEditor/trunk/_source/plugins/richcombo/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/richcombo/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/richcombo/plugin.js	(revision 6241)
@@ -107,6 +107,5 @@
 					}
 
-					!_.committed && this.commit();
-
+					this.commit();
 					var value = this.getValue();
 					if ( value )
@@ -198,5 +197,5 @@
 							'<span id="' + id + '_text" class="cke_text cke_inline_label">' + this.label + '</span>' +
 						'</span>' +
-						'<span class=cke_openbutton>' + ( CKEDITOR.env.hc ? '<span>&#9660;</span>' : '' ) + '</span>' +	// BLACK DOWN-POINTING TRIANGLE
+						'<span class=cke_openbutton>' + ( CKEDITOR.env.hc ? '<span>&#9660;</span>' : CKEDITOR.env.air ?  '&nbsp;' : '' ) + '</span>' +	// BLACK DOWN-POINTING TRIANGLE
 					'</a>' +
 				'</span>' +
@@ -346,5 +345,10 @@
 		commit : function()
 		{
-			this._.list.commit();
+			if ( !this._.committed )
+			{
+				this._.list.commit();
+				this._.committed = 1;
+				CKEDITOR.ui.fire( 'ready', this );
+			}
 			this._.committed = 1;
 		},
Index: CKEditor/trunk/_source/plugins/scayt/dialogs/options.js
===================================================================
--- CKEditor/trunk/_source/plugins/scayt/dialogs/options.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/scayt/dialogs/options.js	(revision 6241)
@@ -201,5 +201,5 @@
 	tags = CKEDITOR.plugins.scayt.uiTabs;
 
-	for ( var i in tags )
+	for ( i in tags )
 	{
 		if ( tags[ i ] == 1 )
@@ -290,5 +290,5 @@
 		if ( tags[1] ==1 )
 		{
-			for ( var i in lang_list.rtl )
+			for ( i in lang_list.rtl )
 				langList[ langList.length ] = createOption( i, lang_list.ltr );
 
Index: CKEditor/trunk/_source/plugins/scayt/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/scayt/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/scayt/plugin.js	(revision 6241)
@@ -359,6 +359,6 @@
 		loadEngine : function( editor )
 		{
-			// SCAYT doesn't work with Firefox2, Opera.
-			if ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 || CKEDITOR.env.opera )
+			// SCAYT doesn't work with Firefox2, Opera and AIR.
+			if ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 || CKEDITOR.env.opera || CKEDITOR.env.air )
 				return editor.fire( 'showScaytState' );
 
@@ -759,5 +759,5 @@
 					editor.removeListener( 'showScaytState', showInitialState );
 
-					if ( !CKEDITOR.env.opera )
+					if ( !CKEDITOR.env.opera && !CKEDITOR.env.air )
 						command.setState( plugin.isScaytEnabled( editor ) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF );
 					else
@@ -767,5 +767,5 @@
 			editor.on( 'showScaytState', showInitialState );
 
-			if ( CKEDITOR.env.opera )
+			if ( CKEDITOR.env.opera || CKEDITOR.env.air )
 			{
 				editor.on( 'instanceReady', function()
Index: CKEditor/trunk/_source/plugins/showblocks/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/showblocks/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/showblocks/plugin.js	(revision 6241)
@@ -148,5 +148,6 @@
 /**
  * Whether to automaticaly enable the "show block" command when the editor
- * loads.
+ * loads. (StartupShowBlocks in FCKeditor)
+ * @name CKEDITOR.config.startupOutlineBlocks
  * @type Boolean
  * @default false
Index: CKEditor/trunk/_source/plugins/showborders/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/showborders/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/showborders/plugin.js	(revision 6241)
@@ -195,4 +195,6 @@
 /**
  * Whether to automatically enable the "show borders" command when the editor loads.
+ * (ShowBorders in FCKeditor)
+ * @name CKEDITOR.config.startupShowBorders
  * @type Boolean
  * @default true
Index: CKEditor/trunk/_source/plugins/smiley/dialogs/smiley.js
===================================================================
--- CKEditor/trunk/_source/plugins/smiley/dialogs/smiley.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/smiley/dialogs/smiley.js	(revision 6241)
@@ -35,5 +35,5 @@
 				{
 					src : src,
-					_cke_saved_src : src,
+					'data-cke-saved-src' : src,
 					title : title,
 					alt : title,
Index: CKEditor/trunk/_source/plugins/specialchar/dialogs/specialchar.js
===================================================================
--- CKEditor/trunk/_source/plugins/specialchar/dialogs/specialchar.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/specialchar/dialogs/specialchar.js	(revision 6241)
@@ -13,30 +13,4 @@
 		lang = editor.lang.specialChar;
 
-	var insertSpecialChar = function ( specialChar )
-	{
-		var selection = editor.getSelection(),
-			ranges = selection.getRanges( true ),
-			range, textNode;
-
-		editor.fire( 'saveSnapshot' );
-
-		for ( var i = ranges.length - 1; i >= 0 ; i-- )
-		{
-			range = ranges[ i ];
-			range.deleteContents();
-
-			textNode = CKEDITOR.dom.element.createFromHtml( specialChar );
-			range.insertNode( textNode );
-		}
-
-		if ( range )
-		{
-			range.moveToPosition( textNode, CKEDITOR.POSITION_AFTER_END );
-			range.select();
-		}
-
-		editor.fire( 'saveSnapshot' );
-	};
-
 	var onChoice = function( evt )
 	{
@@ -52,9 +26,5 @@
 			dialog.hide();
 
-			// Firefox has bug on insert chars into a element use its own API. (#5170)
-			if ( CKEDITOR.env.gecko )
-				insertSpecialChar( value );
-			else
-				editor.insertHtml( value );
+			editor.insertHtml( value );
 		}
 	};
@@ -223,46 +193,9 @@
 		buttons : [ CKEDITOR.dialog.cancelButton ],
 		charColumns : 17,
-		chars :
-			[
-				'!','&quot;','#','$','%','&amp;',"'",'(',')','*','+','-','.','/',
-				'0','1','2','3','4','5','6','7','8','9',':',';',
-				'&lt;','=','&gt;','?','@',
-				'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O',
-				'P','Q','R','S','T','U','V','W','X','Y','Z',
-				'[',']','^','_','`',
-				'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p',
-				'q','r','s','t','u','v','w','x','y','z',
-				'{','|','}','~','&euro;(EURO SIGN)','&lsquo;(LEFT SINGLE QUOTATION MARK)','&rsquo;(RIGHT SINGLE QUOTATION MARK)','&ldquo;(LEFT DOUBLE QUOTATION MARK)',
-				'&rdquo;(RIGHT DOUBLE QUOTATION MARK)','&ndash;(EN DASH)','&mdash;(EM DASH)','&iexcl;(INVERTED EXCLAMATION MARK)','&cent;(CENT SIGN)','&pound;(POUND SIGN)',
-				'&curren;(CURRENCY SIGN)','&yen;(YEN SIGN)','&brvbar;(BROKEN BAR)','&sect;(SECTION SIGN)','&uml;(DIAERESIS)','&copy;(COPYRIGHT SIGN)','&ordf;(FEMININE ORDINAL INDICATOR)',
-				'&laquo;(LEFT-POINTING DOUBLE ANGLE QUOTATION MARK)','&not;(NOT SIGN)','&reg;(REGISTERED SIGN)','&macr;(MACRON)','&deg;(DEGREE SIGN)','&plusmn;(PLUS-MINUS SIGN)','&sup2;(SUPERSCRIPT TWO)',
-				'&sup3;(SUPERSCRIPT THREE)','&acute;(ACUTE ACCENT)','&micro;(MICRO SIGN)','&para;(PILCROW SIGN)','&middot;(MIDDLE DOT)','&cedil;(CEDILLA)',
-				'&sup1;(SUPERSCRIPT ONE)','&ordm;(MASCULINE ORDINAL INDICATOR)','&raquo;(RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK)','&frac14;(VULGAR FRACTION ONE QUARTER)','&frac12;(VULGAR FRACTION ONE HALF)','&frac34;(VULGAR FRACTION THREE QUARTERS)',
-				'&iquest;(INVERTED QUESTION MARK)','&Agrave;(LATIN CAPITAL LETTER A WITH GRAVE)','&Aacute;(LATIN CAPITAL LETTER A WITH ACUTE)','&Acirc;(LATIN CAPITAL LETTER A WITH CIRCUMFLEX)','&Atilde;(LATIN CAPITAL LETTER A WITH TILDE)','&Auml;(LATIN CAPITAL LETTER A WITH DIAERESIS)',
-				'&Aring;(LATIN CAPITAL LETTER A WITH RING ABOVE)','&AElig;(LATIN CAPITAL LETTER AE)','&Ccedil;(LATIN CAPITAL LETTER C WITH CEDILLA)','&Egrave;(LATIN CAPITAL LETTER E WITH GRAVE)','&Eacute;(LATIN CAPITAL LETTER E WITH ACUTE)','&Ecirc;(LATIN CAPITAL LETTER E WITH CIRCUMFLEX)',
-				'&Euml;(LATIN CAPITAL LETTER E WITH DIAERESIS)','&Igrave;(LATIN CAPITAL LETTER I WITH GRAVE)','&Iacute;(LATIN CAPITAL LETTER I WITH ACUTE)','&Icirc;(LATIN CAPITAL LETTER I WITH CIRCUMFLEX)','&Iuml;(LATIN CAPITAL LETTER I WITH DIAERESIS)','&ETH;(LATIN CAPITAL LETTER ETH)',
-				'&Ntilde;(LATIN CAPITAL LETTER N WITH TILDE)','&Ograve;(LATIN CAPITAL LETTER O WITH GRAVE)','&Oacute;(LATIN CAPITAL LETTER O WITH ACUTE)','&Ocirc;(LATIN CAPITAL LETTER O WITH CIRCUMFLEX)','&Otilde;(LATIN CAPITAL LETTER O WITH TILDE)','&Ouml;(LATIN CAPITAL LETTER O WITH DIAERESIS)',
-				'&times;(MULTIPLICATION SIGN)','&Oslash;(LATIN CAPITAL LETTER O WITH STROKE)','&Ugrave;(LATIN CAPITAL LETTER U WITH GRAVE)','&Uacute;(LATIN CAPITAL LETTER U WITH ACUTE)','&Ucirc;(LATIN CAPITAL LETTER U WITH CIRCUMFLEX)','&Uuml;(LATIN CAPITAL LETTER U WITH DIAERESIS)',
-				'&Yacute;(LATIN CAPITAL LETTER Y WITH ACUTE)','&THORN;(LATIN CAPITAL LETTER THORN)','&szlig;(LATIN SMALL LETTER SHARP S)','&agrave;(LATIN SMALL LETTER A WITH GRAVE)','&aacute;(LATIN SMALL LETTER A WITH ACUTE)','&acirc;(LATIN SMALL LETTER A WITH CIRCUMFLEX)',
-				'&atilde;(LATIN SMALL LETTER A WITH TILDE)','&auml;(LATIN SMALL LETTER A WITH DIAERESIS)','&aring;(LATIN SMALL LETTER A WITH RING ABOVE)','&aelig;(LATIN SMALL LETTER AE)','&ccedil;(LATIN SMALL LETTER C WITH CEDILLA)','&egrave;(LATIN SMALL LETTER E WITH GRAVE)',
-				'&eacute;(LATIN SMALL LETTER E WITH ACUTE)','&ecirc;(LATIN SMALL LETTER E WITH CIRCUMFLEX)','&euml;(LATIN SMALL LETTER E WITH DIAERESIS)','&igrave;(LATIN SMALL LETTER I WITH GRAVE)','&iacute;(LATIN SMALL LETTER I WITH ACUTE)','&icirc;(LATIN SMALL LETTER I WITH CIRCUMFLEX)',
-				'&iuml;(LATIN SMALL LETTER I WITH DIAERESIS)','&eth;(LATIN SMALL LETTER ETH)','&ntilde;(LATIN SMALL LETTER N WITH TILDE)','&ograve;(LATIN SMALL LETTER O WITH GRAVE)','&oacute;(LATIN SMALL LETTER O WITH ACUTE)','&ocirc;(LATIN SMALL LETTER O WITH CIRCUMFLEX)',
-				'&otilde;(LATIN SMALL LETTER O WITH TILDE)','&ouml;(LATIN SMALL LETTER O WITH DIAERESIS)',
-				'&divide;(DIVISION SIGN)','&oslash;(LATIN SMALL LETTER O WITH STROKE)',
-				'&ugrave;(LATIN SMALL LETTER U WITH GRAVE)','&uacute;(LATIN SMALL LETTER U WITH ACUTE)',
-				'&ucirc;(LATIN SMALL LETTER U WITH CIRCUMFLEX)','&uuml;(LATIN SMALL LETTER U WITH DIAERESIS)',
-				'&uuml;(LATIN SMALL LETTER U WITH DIAERESIS)','&yacute;(LATIN SMALL LETTER Y WITH ACUTE)','&thorn;(LATIN SMALL LETTER THORN)','&yuml;(LATIN SMALL LETTER Y WITH DIAERESIS)',
-				'&OElig;(LATIN CAPITAL LIGATURE OE)',
-				'&oelig;(LATIN SMALL LIGATURE OE)','&#372;(LATIN CAPITAL LETTER W WITH CIRCUMFLEX)',
-				'&#374(LATIN CAPITAL LETTER Y WITH CIRCUMFLEX)','&#373(LATIN SMALL LETTER W WITH CIRCUMFLEX)',
-				'&#375;(LATIN SMALL LETTER Y WITH CIRCUMFLEX)','&sbquo;(SINGLE LOW-9 QUOTATION MARK)',
-				'&#8219;(SINGLE HIGH-REVERSED-9 QUOTATION MARK)','&bdquo;(DOUBLE LOW-9 QUOTATION MARK)','&hellip;(HORIZONTAL ELLIPSIS)',
-				'&trade;(TRADE MARK SIGN)','&#9658;(BLACK RIGHT-POINTING POINTER)','&bull;(BULLET)',
-				'&rarr;(RIGHTWARDS ARROW)','&rArr;(RIGHTWARDS DOUBLE ARROW)','&hArr;(LEFT RIGHT DOUBLE ARROW)','&diams;(BLACK DIAMOND SUIT)','&asymp;(ALMOST EQUAL TO)'
-			],
 		onLoad :  function()
 		{
 			var columns = this.definition.charColumns,
-				chars = this.definition.chars;
+				extraChars = editor.config.extraSpecialChars,
+				chars = editor.config.specialChars;
 
 			var charsTableLabel =  CKEDITOR.tools.getNextId() + '_specialchar_table_label';
@@ -285,12 +218,17 @@
 					{
 						charDesc = '';
-						character = character.replace( /\((.*?)\)/, function( match, desc )
-							{
-								charDesc = desc;
-								return '';
-							} );
-
-						// Use character in case description unavailable.
-						charDesc = charDesc || character;
+
+						if ( character instanceof Array )
+						{
+							charDesc = character[ 1 ];
+							character = character[ 0 ];
+						}
+						else
+						{
+							var _tmpName = character.toLowerCase().replace( '&', '' ).replace( ';', '' ).replace( '#', '' );
+
+							// Use character in case description unavailable.
+							charDesc = lang[ _tmpName ] || character;
+						}
 
 						var charLabelId =  'cke_specialchar_label_' + i + '_' + CKEDITOR.tools.getNextNumber();
Index: CKEditor/trunk/_source/plugins/specialchar/lang/en.js
===================================================================
--- CKEditor/trunk/_source/plugins/specialchar/lang/en.js	(revision 6241)
+++ CKEditor/trunk/_source/plugins/specialchar/lang/en.js	(revision 6241)
@@ -0,0 +1,89 @@
+﻿
+CKEDITOR.plugins.setLang( 'specialchar', 'en',
+{
+	euro: "EURO SIGN",
+	lsquo: "LEFT SINGLE QUOTATION MARK",
+	rsquo: "RIGHT SINGLE QUOTATION MARK",
+	ldquo: "LEFT DOUBLE QUOTATION MARK",
+	rdquo: "RIGHT DOUBLE QUOTATION MARK",
+	ndash: "EN DASH",
+	mdash: "EM DASH",
+	iexcl: "INVERTED EXCLAMATION MARK",
+	cent: "CENT SIGN",
+	pound: "POUND SIGN",
+	curren: "CURRENCY SIGN",
+	yen: "YEN SIGN",
+	brvbar: "BROKEN BAR",
+	sect: "SECTION SIGN",
+	uml: "DIAERESIS",
+	copy: "COPYRIGHT SIGN",
+	ordf: "FEMININE ORDINAL INDICATOR",
+	laquo: "LEFT-POINTING DOUBLE ANGLE QUOTATION MARK",
+	not: "NOT SIGN",
+	reg: "REGISTERED SIGN",
+	macr: "MACRON",
+	deg: "DEGREE SIGN",
+	sup2: "SUPERSCRIPT TWO",
+	sup3: "SUPERSCRIPT THREE",
+	acute: "ACUTE ACCENT",
+	micro: "MICRO SIGN",
+	para: "PILCROW SIGN",
+	middot: "MIDDLE DOT",
+	cedil: "CEDILLA",
+	sup1: "SUPERSCRIPT ONE",
+	ordm: "MASCULINE ORDINAL INDICATOR",
+	frac14: "VULGAR FRACTION ONE QUARTER",
+	frac12: "VULGAR FRACTION ONE HALF",
+	frac34: "VULGAR FRACTION THREE QUARTERS",
+	iquest: "INVERTED QUESTION MARK",
+	agrave: "LATIN SMALL LETTER A WITH GRAVE",
+	aacute: "LATIN SMALL LETTER A WITH ACUTE",
+	acirc: "LATIN SMALL LETTER A WITH CIRCUMFLEX",
+	atilde: "LATIN SMALL LETTER A WITH TILDE",
+	auml: "LATIN SMALL LETTER A WITH DIAERESIS",
+	aring: "LATIN SMALL LETTER A WITH RING ABOVE",
+	aelig: "LATIN SMALL LETTER AE",
+	ccedil: "LATIN SMALL LETTER C WITH CEDILLA",
+	egrave: "LATIN SMALL LETTER E WITH GRAVE",
+	eacute: "LATIN SMALL LETTER E WITH ACUTE",
+	ecirc: "LATIN SMALL LETTER E WITH CIRCUMFLEX",
+	euml: "LATIN SMALL LETTER E WITH DIAERESIS",
+	igrave: "LATIN SMALL LETTER I WITH GRAVE",
+	iacute: "LATIN SMALL LETTER I WITH ACUTE",
+	icirc: "LATIN SMALL LETTER I WITH CIRCUMFLEX",
+	iuml: "LATIN SMALL LETTER I WITH DIAERESIS",
+	eth: "LATIN SMALL LETTER ETH",
+	ntilde: "LATIN SMALL LETTER N WITH TILDE",
+	ograve: "LATIN SMALL LETTER O WITH GRAVE",
+	oacute: "LATIN SMALL LETTER O WITH ACUTE",
+	ocirc: "LATIN SMALL LETTER O WITH CIRCUMFLEX",
+	otilde: "LATIN SMALL LETTER O WITH TILDE",
+	ouml: "LATIN SMALL LETTER O WITH DIAERESIS",
+	times: "MULTIPLICATION SIGN",
+	oslash: "LATIN SMALL LETTER O WITH STROKE",
+	ugrave: "LATIN SMALL LETTER U WITH GRAVE",
+	uacute: "LATIN SMALL LETTER U WITH ACUTE",
+	ucirc: "LATIN SMALL LETTER U WITH CIRCUMFLEX",
+	uuml: "LATIN SMALL LETTER U WITH DIAERESIS",
+	yacute: "LATIN SMALL LETTER Y WITH ACUTE",
+	thorn: "LATIN SMALL LETTER THORN",
+	szlig: "LATIN SMALL LETTER SHARP S",
+	divide: "DIVISION SIGN",
+	yuml: "LATIN SMALL LETTER Y WITH DIAERESIS",
+	oelig: "LATIN SMALL LIGATURE OE",
+	'372': "LATIN CAPITAL LETTER W WITH CIRCUMFLEX",
+	'374': "LATIN CAPITAL LETTER Y WITH CIRCUMFLEX",
+	'373': "LATIN SMALL LETTER W WITH CIRCUMFLEX",
+	'375': "LATIN SMALL LETTER Y WITH CIRCUMFLEX",
+	8219: "SINGLE HIGH-REVERSED-9 QUOTATION MARK",
+	bdquo: "DOUBLE LOW-9 QUOTATION MARK",
+	hellip: "HORIZONTAL ELLIPSIS",
+	trade: "TRADE MARK SIGN",
+	'9658': "BLACK RIGHT-POINTING POINTER",
+	bull: "BULLET",
+	rarr: "RIGHTWARDS DOUBLE ARROW",
+	harr: "LEFT RIGHT DOUBLE ARROW",
+	diams: "BLACK DIAMOND SUIT",
+	asymp: "ALMOST EQUAL TO",
+	sbquo: 'SINGLE LOW-9 QUOTATION MARK'
+});
Index: CKEditor/trunk/_source/plugins/specialchar/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/specialchar/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/specialchar/plugin.js	(revision 6241)
@@ -10,13 +10,33 @@
 CKEDITOR.plugins.add( 'specialchar',
 {
+	// List of available localizations.
+	availableLangs : { en:1 },
+
 	init : function( editor )
 	{
-		var pluginName = 'specialchar';
+		var pluginName = 'specialchar',
+			plugin = this;
 
 		// Register the dialog.
 		CKEDITOR.dialog.add( pluginName, this.path + 'dialogs/specialchar.js' );
 
-		// Register the command.
-		editor.addCommand( pluginName, new CKEDITOR.dialogCommand( pluginName ) );
+		editor.addCommand( pluginName,
+			{
+				exec : function()
+				{
+					var langCode = editor.langCode;
+					langCode = plugin.availableLangs[ langCode ] ? langCode : 'en';
+
+					CKEDITOR.scriptLoader.load(
+							CKEDITOR.getUrl( plugin.path + 'lang/' + langCode + '.js' ),
+							function()
+							{
+								CKEDITOR.tools.extend( editor.lang.specialChar, plugin.lang[ langCode ] );
+								editor.openDialog( pluginName );
+							});
+				},
+				modes : { wysiwyg:1 },
+				canUndo : false
+			});
 
 		// Register the toolbar button.
@@ -28,2 +48,23 @@
 	}
 } );
+
+/**
+  * The list of special characters visible in Special Character dialog.
+  * @type Array
+  * @example
+  * config.specialChars = [ '&quot;', '&rsquo;', [ '&custom;', 'Custom label' ] ];
+  * config.specialChars = config.specialChars.concat( [ '&quot;', [ '&rsquo;', 'Custom label' ] ] );
+  */
+CKEDITOR.config.specialChars =
+	[
+		'!','&quot;','#','$','%','&amp;',"'",'(',')','*','+','-','.','/',
+		'0','1','2','3','4','5','6','7','8','9',':',';',
+		'&lt;','=','&gt;','?','@',
+		'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O',
+		'P','Q','R','S','T','U','V','W','X','Y','Z',
+		'[',']','^','_','`',
+		'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p',
+		'q','r','s','t','u','v','w','x','y','z',
+		'{','|','}','~',
+		"&euro;", "&lsquo;", "&rsquo;", "&ldquo;", "&rdquo;", "&ndash;", "&mdash;", "&iexcl;", "&cent;", "&pound;", "&curren;", "&yen;", "&brvbar;", "&sect;", "&uml;", "&copy;", "&ordf;", "&laquo;", "&not;", "&reg;", "&macr;", "&deg;", "&", "&sup2;", "&sup3;", "&acute;", "&micro;", "&para;", "&middot;", "&cedil;", "&sup1;", "&ordm;", "&", "&frac14;", "&frac12;", "&frac34;", "&iquest;", "&Agrave;", "&Aacute;", "&Acirc;", "&Atilde;", "&Auml;", "&Aring;", "&AElig;", "&Ccedil;", "&Egrave;", "&Eacute;", "&Ecirc;", "&Euml;", "&Igrave;", "&Iacute;", "&Icirc;", "&Iuml;", "&ETH;", "&Ntilde;", "&Ograve;", "&Oacute;", "&Ocirc;", "&Otilde;", "&Ouml;", "&times;", "&Oslash;", "&Ugrave;", "&Uacute;", "&Ucirc;", "&Uuml;", "&Yacute;", "&THORN;", "&szlig;", "&agrave;", "&aacute;", "&acirc;", "&atilde;", "&auml;", "&aring;", "&aelig;", "&ccedil;", "&egrave;", "&eacute;", "&ecirc;", "&euml;", "&igrave;", "&iacute;", "&icirc;", "&iuml;", "&eth;", "&ntilde;", "&ograve;", "&oacute;", "&ocirc;", "&otilde;", "&ouml;", "&divide;", "&oslash;", "&ugrave;", "&uacute;", "&ucirc;", "&uuml;", "&uuml;", "&yacute;", "&thorn;", "&yuml;", "&OElig;", "&oelig;", "&#372;", "&#374", "&#373", "&#375;", "&sbquo;", "&#8219;", "&bdquo;", "&hellip;", "&trade;", "&#9658;", "&bull;", "&rarr;", "&rArr;", "&hArr;", "&diams;", "&asymp;"
+	];
Index: CKEditor/trunk/_source/plugins/styles/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/styles/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/styles/plugin.js	(revision 6241)
@@ -6,5 +6,15 @@
 CKEDITOR.plugins.add( 'styles',
 {
-	requires : [ 'selection' ]
+	requires : [ 'selection' ],
+	init : function( editor )
+	{
+		// This doesn't look like correct, but it's the safest way to proper
+		// pass the disableReadonlyStyling configuration to the style system
+		// without having to change any method signature in the API. (#6103)
+		editor.on( 'contentDom', function()
+			{
+				editor.document.setCustomData( 'cke_includeReadonly', !editor.config.disableReadonlyStyling );
+			});
+	}
 });
 
@@ -354,4 +364,33 @@
 	};
 
+	// Gets the parent element which blocks the styling for an element. This
+	// can be done through read-only elements (contenteditable=false) or
+	// elements with the "data-cke-nostyle" attribute.
+	function getUnstylableParent( element )
+	{
+		var unstylable,
+			editable;
+
+		while ( ( element = element.getParent() ) )
+		{
+			if ( element.getName() == 'body' )
+				break;
+
+			if ( element.getAttribute( 'data-cke-nostyle' ) )
+				unstylable = element;
+			else if ( !editable )
+			{
+				var contentEditable = element.getAttribute( 'contentEditable' );
+
+				if ( contentEditable == 'false' )
+					unstylable = element;
+				else if ( contentEditable == 'true' )
+					editable = 1;
+			}
+		}
+
+		return unstylable;
+	}
+
 	function applyInlineStyle( range )
 	{
@@ -375,4 +414,12 @@
 		var def = this._.definition;
 		var isUnknownElement;
+
+		// Indicates that fully selected read-only elements are to be included in the styling range.
+		var includeReadonly = def.includeReadonly;
+
+		// If the read-only inclusion is not available in the definition, try
+		// to get it from the document data.
+		if ( includeReadonly == undefined )
+			includeReadonly = document.getCustomData( 'cke_includeReadonly' );
 
 		// Get the DTD definition for the element. Defaults to "span".
@@ -393,4 +440,22 @@
 		var styleRange;
 
+		// Check if the boundaries are inside non stylable elements.
+		var firstUnstylable = getUnstylableParent( firstNode ),
+			lastUnstylable = getUnstylableParent( lastNode );
+
+		// If the first element can't be styled, we'll start processing right
+		// after its unstylable root.
+		if ( firstUnstylable )
+			currentNode = firstUnstylable.getNextSourceNode( true );
+
+		// If the last element can't be styled, we'll stop processing on its
+		// unstylable root.
+		if ( lastUnstylable )
+			lastNode = lastUnstylable;
+
+		// Do nothing if the current node now follows the last node to be processed.
+		if ( currentNode.getPosition( lastNode ) == CKEDITOR.POSITION_FOLLOWING )
+			currentNode = 0;
+
 		while ( currentNode )
 		{
@@ -406,6 +471,8 @@
 				var nodeType = currentNode.type;
 				var nodeName = nodeType == CKEDITOR.NODE_ELEMENT ? currentNode.getName() : null;
-
-				if ( nodeName && currentNode.getAttribute( '_cke_bookmark' ) )
+				var nodeIsReadonly = nodeName && ( currentNode.getAttribute( 'contentEditable' ) == 'false' );
+				var nodeIsNoStyle = nodeName && currentNode.getAttribute( 'data-cke-nostyle' );
+
+				if ( nodeName && currentNode.data( 'cke-bookmark' ) )
 				{
 					currentNode = currentNode.getNextSourceNode( true );
@@ -415,4 +482,6 @@
 				// Check if the current node can be a child of the style element.
 				if ( !nodeName || ( dtd[ nodeName ]
+					&& !nodeIsNoStyle
+					&& ( !nodeIsReadonly || includeReadonly )
 					&& ( currentNode.getPosition( lastNode ) | CKEDITOR.POSITION_PRECEDING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED ) == ( CKEDITOR.POSITION_PRECEDING + CKEDITOR.POSITION_IDENTICAL + CKEDITOR.POSITION_IS_CONTAINED )
 					&& ( !def.childRule || def.childRule( currentNode ) ) ) )
@@ -436,7 +505,7 @@
 						}
 
-						// Non element nodes, or empty elements can be added
-						// completely to the range.
-						if ( nodeType == CKEDITOR.NODE_TEXT || ( nodeType == CKEDITOR.NODE_ELEMENT && !currentNode.getChildCount() ) )
+						// Non element nodes, readonly elements, or empty
+						// elements can be added completely to the range.
+						if ( nodeType == CKEDITOR.NODE_TEXT || nodeIsReadonly || ( nodeType == CKEDITOR.NODE_ELEMENT && !currentNode.getChildCount() ) )
 						{
 							var includedNode = currentNode;
@@ -462,5 +531,4 @@
 							if ( !includedNode.$.nextSibling )
 								applyStyle = true;
-
 						}
 					}
@@ -472,5 +540,5 @@
 
 				// Get the next node to be processed.
-				currentNode = currentNode.getNextSourceNode();
+				currentNode = currentNode.getNextSourceNode( nodeIsNoStyle || nodeIsReadonly );
 			}
 
@@ -884,5 +952,5 @@
 		// Exclude the ones at header OR at tail,
 		// and ignore bookmark content between them.
-		var duoBrRegex = /(\S\s*)\n(?:\s|(<span[^>]+_cke_bookmark.*?\/span>))*\n(?!$)/gi,
+		var duoBrRegex = /(\S\s*)\n(?:\s|(<span[^>]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi,
 			blockName = preBlock.getName(),
 			splitedHtml = replace( preBlock.getOuterHtml(),
@@ -906,5 +974,5 @@
 			tailBookmark = '';
 
-		str = str.replace( /(^<span[^>]+_cke_bookmark.*?\/span>)|(<span[^>]+_cke_bookmark.*?\/span>$)/gi,
+		str = str.replace( /(^<span[^>]+data-cke-bookmark.*?\/span>)|(<span[^>]+data-cke-bookmark.*?\/span>$)/gi,
 			function( str, m1, m2 ){
 					m1 && ( headBookmark = m1 );
@@ -1356,5 +1424,5 @@
 			// Bookmark the range so we can re-select it after processing.
 			bookmarks = selection.createBookmarks( 1 ),
-			ranges = selection.getRanges( 1 ),
+			ranges = selection.getRanges(),
 			func = remove ? this.removeFromRange : this.applyToRange,
 			range;
@@ -1448,4 +1516,21 @@
 		callback( this._.stylesDefinitions );
 };
+
+/**
+ * Indicates that fully selected read-only elements will be included when
+ * applying the style (for inline styles only).
+ * @name CKEDITOR.style.includeReadonly
+ * @type Boolean
+ * @default false
+ * @since 3.5
+ */
+
+ /**
+  * Disables inline styling on read-only elements.
+  * @name CKEDITOR.config.disableReadonlyStyling
+  * @type Boolean
+  * @default false
+  * @since 3.5
+  */
 
 /**
Index: CKEditor/trunk/_source/plugins/table/dialogs/table.js
===================================================================
--- CKEditor/trunk/_source/plugins/table/dialogs/table.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/table/dialogs/table.js	(revision 6241)
@@ -168,5 +168,5 @@
 							var th = theRow.getChild( i );
 							// Skip bookmark nodes. (#6155)
-							if ( th.type == CKEDITOR.NODE_ELEMENT && !th.hasAttribute( '_cke_bookmark' ) )
+							if ( th.type == CKEDITOR.NODE_ELEMENT && !th.data( 'cke-bookmark' ) )
 							{
 								th.renameNode( 'th' );
@@ -388,11 +388,11 @@
 											type : 'select',
 											'default' : '',
-											label : editor.lang.table.align,
+											label : editor.lang.common.align,
 											items :
 											[
 												[ editor.lang.common.notSet , ''],
-												[ editor.lang.table.alignLeft , 'left'],
-												[ editor.lang.table.alignCenter , 'center'],
-												[ editor.lang.table.alignRight , 'right']
+												[ editor.lang.common.alignLeft , 'left'],
+												[ editor.lang.common.alignCenter , 'center'],
+												[ editor.lang.common.alignRight , 'right']
 											],
 											setup : function( selectedTable )
@@ -424,5 +424,5 @@
 													id : 'txtWidth',
 													style : 'width:5em',
-													label : editor.lang.table.width,
+													label : editor.lang.common.width,
 													'default' : 500,
 													validate : CKEDITOR.dialog.validate['number']( editor.lang.table.invalidWidth ),
@@ -498,5 +498,5 @@
 													id : 'txtHeight',
 													style : 'width:5em',
-													label : editor.lang.table.height,
+													label : editor.lang.common.height,
 													'default' : '',
 													validate : CKEDITOR.dialog.validate['number']( editor.lang.table.invalidHeight ),
Index: CKEditor/trunk/_source/plugins/tableresize/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/tableresize/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/tableresize/plugin.js	(revision 6241)
@@ -299,5 +299,5 @@
 
 		resizer = CKEDITOR.dom.element.createFromHtml(
-			'<div cke_temp=1 contenteditable=false unselectable=on '+
+			'<div data-cke-temp=1 contenteditable=false unselectable=on '+
 			'style="position:absolute;cursor:col-resize;filter:alpha(opacity=0);opacity:0;' +
 				'padding:0;background-color:#004;background-image:none;border:0px none;z-index:10"></div>', document );
Index: CKEditor/trunk/_source/plugins/tabletools/dialogs/tableCell.js
===================================================================
--- CKEditor/trunk/_source/plugins/tabletools/dialogs/tableCell.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/tabletools/dialogs/tableCell.js	(revision 6241)
@@ -13,5 +13,6 @@
 			heightPattern = /^(\d+(?:\.\d+)?)px$/,
 			bind = CKEDITOR.tools.bind,
-			spacer = { type : 'html', html : '&nbsp;' };
+			spacer = { type : 'html', html : '&nbsp;' },
+			rtl = editor.lang.dir == 'rtl';
 
 		/**
@@ -72,6 +73,6 @@
 		return {
 			title : langCell.title,
-			minWidth : CKEDITOR.env.ie && CKEDITOR.env.quirks ? 550 : 480,
-			minHeight : CKEDITOR.env.ie ? ( CKEDITOR.env.quirks ? 180 : 150 ) : 140,
+			minWidth : CKEDITOR.env.ie && CKEDITOR.env.quirks? 450 : 410,
+			minHeight : CKEDITOR.env.ie && CKEDITOR.env.quirks?  230 : 200,
 			contents : [
 				{
@@ -99,7 +100,6 @@
 													type : 'text',
 													id : 'width',
-													label : langTable.width,
-													widths : [ '71%', '29%' ],
-													labelLayout : 'horizontal',
+													width: '100px',
+													label : langCommon.width,
 													validate : validate[ 'number' ]( langCell.invalidWidth ),
 
@@ -140,8 +140,6 @@
 													type : 'select',
 													id : 'widthType',
-													labelLayout : 'horizontal',
-													widths : [ '0%', '100%' ],
 													label : editor.lang.table.widthUnit,
-													labelStyle: 'display:none',
+													labelStyle: 'visibility:hidden',
 													'default' : 'px',
 													items :
@@ -167,8 +165,7 @@
 													type : 'text',
 													id : 'height',
-													label : langTable.height,
+													label : langCommon.height,
+													width: '100px',
 													'default' : '',
-													widths : [ '71%', '29%' ],
-													labelLayout : 'horizontal',
 													validate : validate[ 'number' ]( langCell.invalidHeight ),
 
@@ -207,5 +204,5 @@
 													id : 'htmlHeightType',
 													type : 'html',
-													html : langTable.widthPx
+													html : '<br />'+ langTable.widthPx
 												}
 											]
@@ -215,7 +212,5 @@
 											type : 'select',
 											id : 'wordWrap',
-											labelLayout : 'horizontal',
 											label : langCell.wordWrap,
-											widths : [ '50%', '50%' ],
 											'default' : 'yes',
 											items :
@@ -246,14 +241,12 @@
 											type : 'select',
 											id : 'hAlign',
-											labelLayout : 'horizontal',
 											label : langCell.hAlign,
-											widths : [ '50%', '50%' ],
 											'default' : '',
 											items :
 											[
 												[ langCommon.notSet, '' ],
-												[ langTable.alignLeft, 'left' ],
-												[ langTable.alignCenter, 'center' ],
-												[ langTable.alignRight, 'right' ]
+												[ langCommon.alignLeft, 'left' ],
+												[ langCommon.alignCenter, 'center' ],
+												[ langCommon.alignRight, 'right' ]
 											],
 											setup : function( element )
@@ -279,14 +272,12 @@
 											type : 'select',
 											id : 'vAlign',
-											labelLayout : 'horizontal',
 											label : langCell.vAlign,
-											widths : [ '50%', '50%' ],
 											'default' : '',
 											items :
 											[
 												[ langCommon.notSet, '' ],
-												[ langCell.alignTop, 'top' ],
-												[ langCell.alignMiddle, 'middle' ],
-												[ langCell.alignBottom, 'bottom' ],
+												[ langCommon.alignTop, 'top' ],
+												[ langCommon.alignMiddle, 'middle' ],
+												[ langCommon.alignBottom, 'bottom' ],
 												[ langCell.alignBaseline, 'baseline' ]
 											],
@@ -334,6 +325,4 @@
 											id : 'cellType',
 											label : langCell.cellType,
-											labelLayout : 'horizontal',
-											widths : [ '50%', '50%' ],
 											'default' : 'td',
 											items :
@@ -356,6 +345,4 @@
 											id : 'rowSpan',
 											label : langCell.rowSpan,
-											labelLayout : 'horizontal',
-											widths : [ '50%', '50%' ],
 											'default' : '',
 											validate : validate.integer( langCell.invalidRowSpan ),
@@ -379,6 +366,4 @@
 											id : 'colSpan',
 											label : langCell.colSpan,
-											labelLayout : 'horizontal',
-											widths : [ '50%', '50%' ],
 											'default' : '',
 											validate : validate.integer( langCell.invalidColSpan ),
@@ -402,5 +387,5 @@
 											type : 'hbox',
 											padding : 0,
-											widths : [ '80%', '20%' ],
+											widths : [ '60%', '40%' ],
 											children :
 											[
@@ -409,6 +394,4 @@
 													id : 'bgColor',
 													label : langCell.bgColor,
-													labelLayout : 'horizontal',
-													widths : [ '70%', '30%' ],
 													'default' : '',
 													setup : function( element )
@@ -434,6 +417,11 @@
 													type : 'button',
 													id : 'bgColorChoose',
+													"class" : 'colorChooser',
 													label : langCell.chooseColor,
-													style : 'margin-left: 10px',
+													onLoad : function()
+													{
+														// Stick the element to the bottom (#5587)
+														this.getElement().getParent().setStyle( 'vertical-align', 'bottom' );
+													},
 													onClick : function()
 													{
@@ -453,5 +441,5 @@
 											type : 'hbox',
 											padding : 0,
-											widths : [ '80%', '20%' ],
+											widths : [ '60%', '40%' ],
 											children :
 											[
@@ -460,6 +448,4 @@
 													id : 'borderColor',
 													label : langCell.borderColor,
-													labelLayout : 'horizontal',
-													widths : [ '70%', '30%' ],
 													'default' : '',
 													setup : function( element )
@@ -484,6 +470,12 @@
 													type : 'button',
 													id : 'borderColorChoose',
+													"class" : 'colorChooser',
 													label : langCell.chooseColor,
-													style : 'margin-left: 10px',
+													style : ( rtl ? 'margin-right' : 'margin-left' ) + ': 10px',
+													onLoad : function()
+													{
+														// Stick the element to the bottom (#5587)
+														this.getElement().getParent().setStyle( 'vertical-align', 'bottom' );
+													},
 													onClick : function()
 													{
Index: CKEditor/trunk/_source/plugins/toolbar/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/toolbar/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/toolbar/plugin.js	(revision 6241)
@@ -44,6 +44,7 @@
 					editor.toolbox.focusCommandExecuted = true;
 
-					// Make the first button focus accessible. (#3417)
-					if ( CKEDITOR.env.ie )
+					// Make the first button focus accessible for IE. (#3417)
+					// Adobe AIR instead need while of delay.
+					if ( CKEDITOR.env.ie || CKEDITOR.env.air )
 						setTimeout( function(){ editor.toolbox.focus(); }, 100 );
 					else
@@ -418,5 +419,5 @@
  *     ['BidiLtr', 'BidiRtl' ],
  *     ['Link','Unlink','Anchor'],
- *     ['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
+ *     ['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak','Iframe'],
  *     '/',
  *     ['Styles','Format','Font','FontSize'],
@@ -437,5 +438,5 @@
 	['BidiLtr', 'BidiRtl' ],
 	['Link','Unlink','Anchor'],
-	['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
+	['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak','Iframe'],
 	'/',
 	['Styles','Format','Font','FontSize'],
Index: CKEditor/trunk/_source/plugins/undo/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/undo/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/undo/plugin.js	(revision 6241)
@@ -153,5 +153,5 @@
 
 		// In IE, we need to remove the expando attributes.
-		CKEDITOR.env.ie && contents && ( contents = contents.replace( /\s+_cke_expando=".*?"/g, '' ) );
+		CKEDITOR.env.ie && contents && ( contents = contents.replace( /\s+data-cke-expando=".*?"/g, '' ) );
 
 		this.contents	= contents;
@@ -268,5 +268,5 @@
 						// In IE, we need to remove the expando attributes.
 						if ( CKEDITOR.env.ie )
-							currentSnapshot = currentSnapshot.replace( /\s+_cke_expando=".*?"/g, '' );
+							currentSnapshot = currentSnapshot.replace( /\s+data-cke-expando=".*?"/g, '' );
 
 						if ( beforeTypeImage.contents != currentSnapshot )
Index: CKEditor/trunk/_source/plugins/wsc/dialogs/wsc.js
===================================================================
--- CKEditor/trunk/_source/plugins/wsc/dialogs/wsc.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/wsc/dialogs/wsc.js	(revision 6241)
@@ -180,8 +180,12 @@
 {
 	var data = evt.data,
-		dialog = data.dialog,
-		height = data.height;
+		dialog = data.dialog;
+
+	if ( dialog._.name == 'checkspell' )
+	{
 		var content = dialog.getContentElement( 'general', 'content' ).getElement(),
-				iframe = content && content.getChild( 2 );
-		iframe && iframe.setStyle( 'height', height + 'px' );
+			iframe = content && content.getChild( 2 );
+
+		iframe && iframe.setStyle( 'height', data.height + 'px' );
+	}
 });
Index: CKEditor/trunk/_source/plugins/wsc/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/wsc/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/wsc/plugin.js	(revision 6241)
@@ -19,5 +19,5 @@
 
 		// SpellChecker doesn't work in Opera and with custom domain
-		command.modes = { wysiwyg : ( !CKEDITOR.env.opera && document.domain == window.location.hostname ) };
+		command.modes = { wysiwyg : ( !CKEDITOR.env.opera && !CKEDITOR.env.air && document.domain == window.location.hostname ) };
 
 		editor.ui.addButton( 'SpellChecker',
Index: CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js	(revision 6232)
+++ CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js	(revision 6241)
@@ -34,175 +34,238 @@
 	}
 
-	function onInsertHtml( evt )
-	{
-		if ( this.mode == 'wysiwyg' )
-		{
-			this.focus();
-
-			var selection = this.getSelection();
-			if ( checkReadOnly( selection ) )
-				return;
-
-			var data = evt.data;
-			this.fire( 'saveSnapshot' );
-
-			if ( this.dataProcessor )
-				data = this.dataProcessor.toHtml( data );
-
-			if ( CKEDITOR.env.ie )
-			{
-				var selIsLocked = selection.isLocked;
-
-				if ( selIsLocked )
-					selection.unlock();
-
-				var $sel = selection.getNative();
-
-				// Delete control selections to avoid IE bugs on pasteHTML.
-				if ( $sel.type == 'Control' )
-					$sel.clear();
+
+	function onInsert( insertFunc )
+	{
+		return function( evt )
+		{
+			if ( this.mode == 'wysiwyg' )
+			{
+				this.focus();
+
+				var selection = this.getSelection();
+				if ( checkReadOnly( selection ) )
+					return;
+
+				this.fire( 'saveSnapshot' );
+
+				insertFunc.call( this, evt.data );
+
+				// Save snaps after the whole execution completed.
+				// This's a workaround for make DOM modification's happened after
+				// 'insertElement' to be included either, e.g. Form-based dialogs' 'commitContents'
+				// call.
+				CKEDITOR.tools.setTimeout( function()
+				   {
+					   this.fire( 'saveSnapshot' );
+				   }, 0, this );
+			}
+		};
+	}
+
+	function doInsertHtml( data )
+	{
+		if ( this.dataProcessor )
+			data = this.dataProcessor.toHtml( data );
+
+		var selection = this.getSelection();
+		if ( CKEDITOR.env.ie )
+		{
+			var selIsLocked = selection.isLocked;
+
+			if ( selIsLocked )
+				selection.unlock();
+
+			var $sel = selection.getNative();
+
+			// Delete control selections to avoid IE bugs on pasteHTML.
+			if ( $sel.type == 'Control' )
+				$sel.clear();
 				else if  ( selection.getType() == CKEDITOR.SELECTION_TEXT )
+			{
+				// Due to IE bugs on handling contenteditable=false blocks
+				// (#6005), we need to make some checks and eventually
+				// delete the selection first.
+
+				var range = selection.getRanges()[0],
+						endContainer = range && range.endContainer;
+
+				if ( endContainer &&
+						endContainer.type == CKEDITOR.NODE_ELEMENT &&
+						endContainer.getAttribute( 'contenteditable' ) == 'false' &&
+						range.checkBoundaryOfElement( endContainer, CKEDITOR.END ) )
 				{
-					// Due to IE bugs on handling contenteditable=false blocks
-					// (#6005), we need to make some checks and eventually
-					// delete the selection first.
-
-					var range = selection.getRanges()[0],
-						endContainer = range && range.endContainer;
-
-					if ( endContainer &&
- 						 endContainer.type == CKEDITOR.NODE_ELEMENT &&
- 						 endContainer.getAttribute( 'contenteditable' ) == 'false' &&
-						 range.checkBoundaryOfElement( endContainer, CKEDITOR.END ) )
-					{
-						range.setEndAfter( range.endContainer );
-						range.deleteContents();
-					}
+					range.setEndAfter( range.endContainer );
+					range.deleteContents();
 				}
-
-				try
+			}
+
+			try
+			{
+				$sel.createRange().pasteHTML( data );
+			}
+				catch (e) {}
+
+			if ( selIsLocked )
+				this.getSelection().lock();
+			}
+		else
+			this.document.$.execCommand( 'inserthtml', false, data );
+
+		// Webkit does not scroll to the cursor position after pasting (#5558)
+		if ( CKEDITOR.env.webkit )
+		{
+			selection = this.getSelection();
+			selection.scrollIntoView();
+		}
+	}
+
+	function doInsertText( text )
+	{
+		var selection = this.getSelection(),
+			mode = selection.getStartElement().hasAscendant( 'pre', true ) ?
+				   CKEDITOR.ENTER_BR : this.config.enterMode,
+			isEnterBrMode = mode == CKEDITOR.ENTER_BR;
+
+		var html = CKEDITOR.tools.htmlEncode( text.replace( /\r\n|\r/g, '\n' ) );
+
+		// Convert leading and trailing whitespaces into &nbsp;
+		html = html.replace( /^[ \t]+|[ \t]+$/g, function( match, offset, s )
+			{
+				if ( match.length == 1 )	// one space, preserve it
+					return '&nbsp;';
+				else if ( !offset )		// beginning of block
+					return CKEDITOR.tools.repeat( '&nbsp;', match.length - 1 ) + ' ';
+				else				// end of block
+					return ' ' + CKEDITOR.tools.repeat( '&nbsp;', match.length - 1 );
+			} );
+
+		// Convert subsequent whitespaces into &nbsp;
+		html = html.replace( /[ \t]{2,}/g, function ( match )
+		   {
+			   return CKEDITOR.tools.repeat( '&nbsp;', match.length - 1 ) + ' ';
+		   } );
+
+		var paragraphTag = mode == CKEDITOR.ENTER_P ? 'p' : 'div';
+
+		// Two line-breaks create one paragraph.
+		if ( !isEnterBrMode )
+		{
+			html = html.replace( /(\n{2})([\s\S]*?)(?:$|\1)/g,
+				function( match, group1, text )
 				{
-					$sel.createRange().pasteHTML( data );
-				}
-				catch (e) {}
-
-				if ( selIsLocked )
-					this.getSelection().lock();
+					return '<'+paragraphTag + '>' + text + '</' + paragraphTag + '>';
+				});
+		}
+
+		// One <br> per line-break.
+		html = html.replace( /\n/g, '<br>' );
+
+		// Compensate padding <br> for non-IE.
+		if ( !( isEnterBrMode || CKEDITOR.env.ie ) )
+		{
+			html = html.replace( new RegExp( '<br>(?=</' + paragraphTag + '>)' ), function( match )
+			{
+				return CKEDITOR.tools.repeat( match, 2 );
+			} );
+		}
+
+		// Inline styles have to be inherited in Firefox.
+		if ( CKEDITOR.env.gecko || CKEDITOR.env.webkit )
+		{
+			var path = new CKEDITOR.dom.elementPath( selection.getStartElement() ),
+				context = [];
+
+			for ( var i = 0; i < path.elements.length; i++ )
+			{
+				var tag = path.elements[ i ].getName();
+				if ( tag in CKEDITOR.dtd.$inline )
+					context.unshift( path.elements[ i ].getOuterHtml().match( /^<.*?>/) );
+				else if ( tag in CKEDITOR.dtd.$block )
+					break;
 			}
-			else
-				this.document.$.execCommand( 'inserthtml', false, data );
-
-			// Webkit does not scroll to the cursor position after pasting (#5558)
-			if ( CKEDITOR.env.webkit )
-			{
-				this.document.$.execCommand( 'inserthtml', false, '<span id="cke_paste_marker" cke_temp="1"></span>' );
-				var marker = this.document.getById( 'cke_paste_marker' );
-				marker.scrollIntoView();
-				marker.remove();
-				marker = null;
-			}
-
-			CKEDITOR.tools.setTimeout( function()
-				{
-					this.fire( 'saveSnapshot' );
-				}, 0, this );
+
+			// Reproduce the context  by preceding the pasted HTML with opening inline tags.
+			html = context.join( '' ) + html;
 		}
-	}
-
-	function onInsertElement( evt )
-	{
-		if ( this.mode == 'wysiwyg' )
-		{
-			this.focus();
-
-			var selection = this.getSelection();
-			if ( checkReadOnly( selection ) )
-				return;
-
-			this.fire( 'saveSnapshot' );
-
-			var ranges = selection.getRanges(),
-				element = evt.data,
+
+		doInsertHtml.call( this, html );
+	}
+
+	function doInsertElement( element )
+	{
+		var selection = this.getSelection(),
+				ranges = selection.getRanges(),
 				elementName = element.getName(),
 				isBlock = CKEDITOR.dtd.$block[ elementName ];
 
-			var selIsLocked = selection.isLocked;
-
-			if ( selIsLocked )
-				selection.unlock();
-
-			var range, clone, lastElement, bookmark;
-
-			for ( var i = ranges.length - 1 ; i >= 0 ; i-- )
-			{
-				range = ranges[ i ];
-
-				// Remove the original contents.
-				range.deleteContents();
-
-				clone = !i && element || element.clone( 1 );
-
-				// If we're inserting a block at dtd-violated position, split
-				// the parent blocks until we reach blockLimit.
-				var current, dtd;
-				if ( isBlock )
+		var selIsLocked = selection.isLocked;
+
+		if ( selIsLocked )
+			selection.unlock();
+
+		var range, clone, lastElement, bookmark;
+
+		for ( var i = ranges.length - 1 ; i >= 0 ; i-- )
+		{
+			range = ranges[ i ];
+
+			// Remove the original contents.
+			range.deleteContents();
+
+			clone = !i && element || element.clone( 1 );
+
+			// If we're inserting a block at dtd-violated position, split
+			// the parent blocks until we reach blockLimit.
+			var current, dtd;
+			if ( isBlock )
+			{
+				while ( ( current = range.getCommonAncestor( 0, 1 ) )
+						&& ( dtd = CKEDITOR.dtd[ current.getName() ] )
+						&& !( dtd && dtd [ elementName ] ) )
 				{
-					while ( ( current = range.getCommonAncestor( 0, 1 ) )
-							&& ( dtd = CKEDITOR.dtd[ current.getName() ] )
-							&& !( dtd && dtd [ elementName ] ) )
+					// Split up inline elements.
+					if ( current.getName() in CKEDITOR.dtd.span )
+						range.splitElement( current );
+					// If we're in an empty block which indicate a new paragraph,
+					// simply replace it with the inserting block.(#3664)
+					else if ( range.checkStartOfBlock()
+							&& range.checkEndOfBlock() )
 					{
-						// Split up inline elements.
-						if ( current.getName() in CKEDITOR.dtd.span )
-							range.splitElement( current );
-						// If we're in an empty block which indicate a new paragraph,
-						// simply replace it with the inserting block.(#3664)
-						else if ( range.checkStartOfBlock()
-							 && range.checkEndOfBlock() )
-						{
-							range.setStartBefore( current );
-							range.collapse( true );
-							current.remove();
-						}
-						else
-							range.splitBlock();
+						range.setStartBefore( current );
+						range.collapse( true );
+						current.remove();
 					}
+					else
+						range.splitBlock();
 				}
-
-				// Insert the new node.
-				range.insertNode( clone );
-
-				// Save the last element reference so we can make the
-				// selection later.
-				if ( !lastElement )
-					lastElement = clone;
 			}
 
-			range.moveToPosition( lastElement, CKEDITOR.POSITION_AFTER_END );
-
-			// If we're inserting a block element immediatelly followed by
-			// another block element, the selection must move there. (#3100,#5436)
-			if ( isBlock )
-			{
-				var next = lastElement.getNext( notWhitespaceEval ),
+			// Insert the new node.
+			range.insertNode( clone );
+
+			// Save the last element reference so we can make the
+			// selection later.
+			if ( !lastElement )
+				lastElement = clone;
+		}
+
+		range.moveToPosition( lastElement, CKEDITOR.POSITION_AFTER_END );
+
+		// If we're inserting a block element immediatelly followed by
+		// another block element, the selection must move there. (#3100,#5436)
+		if ( isBlock )
+		{
+			var next = lastElement.getNext( notWhitespaceEval ),
 					nextName = next && next.type == CKEDITOR.NODE_ELEMENT && next.getName();
 
-				// Check if it's a block element that accepts text.
-				if ( nextName && CKEDITOR.dtd.$block[ nextName ] && CKEDITOR.dtd[ nextName ]['#'] )
-					range.moveToElementEditStart( next );
-			}
-
-			selection.selectRanges( [ range ] );
-
-			if ( selIsLocked )
-				this.getSelection().lock();
-
-			// Save snaps after the whole execution completed.
-			// This's a workaround for make DOM modification's happened after
-			// 'insertElement' to be included either, e.g. Form-based dialogs' 'commitContents'
-			// call.
-			CKEDITOR.tools.setTimeout( function(){
-				this.fire( 'saveSnapshot' );
-			}, 0, this );
+			// Check if it's a block element that accepts text.
+			if ( nextName && CKEDITOR.dtd.$block[ nextName ] && CKEDITOR.dtd[ nextName ]['#'] )
+				range.moveToElementEditStart( next );
 		}
+
+		selection.selectRanges( [ range ] );
+
+		if ( selIsLocked )
+			this.getSelection().lock();
 	}
 
@@ -412,6 +475,5 @@
 							iframe.remove();
 
-
-						var srcScript =
+						var src =
 							'document.open();' +
 
@@ -421,4 +483,15 @@
 
 							'document.close();';
+
+						// With IE, the custom domain has to be taken care at first,
+						// for other browers, the 'src' attribute should be left empty to
+						// trigger iframe's 'load' event.
+  						src =
+							CKEDITOR.env.air ?
+								'javascript:void(0)' :
+							CKEDITOR.env.ie ?
+								'javascript:void(function(){' + encodeURIComponent( src ) + '}())'
+							:
+								'';
 
 						iframe = CKEDITOR.dom.element.createFromHtml( '<iframe' +
@@ -426,8 +499,5 @@
   							' frameBorder="0"' +
   							' title="' + frameLabel + '"' +
-							// With IE, the custom domain has to be taken care at first,
-							// for other browers, the 'src' attribute should be left empty to
-							// trigger iframe's 'load' event.
-  							' src="' + ( CKEDITOR.env.ie ? 'javascript:void(function(){' + encodeURIComponent( srcScript ) + '}())' : '' ) + '"' +
+  							' src="' + src + '"' +
 							' tabIndex="' + ( CKEDITOR.env.webkit? -1 : editor.tabIndex ) + '"' +
   							' allowTransparency="true"' +
@@ -444,10 +514,8 @@
 								ev.removeListener();
 
-								var doc = iframe.getFrameDocument().$;
-
-								// Don't leave any history log in IE. (#5657)
-								doc.open( "text/html","replace" );
+								var doc = iframe.getFrameDocument();
 								doc.write( data );
-								doc.close();
+
+								CKEDITOR.env.air && contentDomReady( doc.getWindow().$ );
 							});
 
@@ -486,5 +554,5 @@
 					contentDomReadyHandler = CKEDITOR.tools.addFunction( contentDomReady );
 					var activationScript =
-						'<script id="cke_actscrpt" type="text/javascript" cke_temp="1">' +
+						'<script id="cke_actscrpt" type="text/javascript" data-cke-temp="1">' +
 							( isCustomDomain ? ( 'document.domain="' + document.domain + '";' ) : '' ) +
 							'window.parent.CKEDITOR.tools.callFunction( ' + contentDomReadyHandler + ', window );' +
@@ -505,5 +573,5 @@
 						// Remove this script from the DOM.
 						var script = domDocument.getElementById( "cke_actscrpt" );
-						script.parentNode.removeChild( script );
+						script && script.parentNode.removeChild( script );
 
 						body.spellcheck = !editor.config.disableNativeSpellChecker;
@@ -799,5 +867,5 @@
 								// Build the additional stuff to be included into <head>.
 								var headExtra =
-									'<style type="text/css" cke_temp="1">' +
+									'<style type="text/css" data-cke-temp="1">' +
 										editor._.styles.join( '\n' ) +
 									'</style>';
@@ -807,5 +875,5 @@
 									headExtra );
 
-								var baseTag = config.baseHref ? '<base href="' + config.baseHref + '" cke_temp="1" />' : '';
+								var baseTag = config.baseHref ? '<base href="' + config.baseHref + '" data-cke-temp="1" />' : '';
 
 								if ( fullPage )
@@ -945,4 +1013,6 @@
 							focus : function()
 							{
+								var win = editor.window;
+
 								if ( isLoadingData )
 									isPendingFocus = true;
@@ -958,8 +1028,8 @@
 									editor.selectionChange();
 								}
-								else if ( !CKEDITOR.env.opera && editor.window )
-								{
-									editor.window.focus();
-
+								else if ( !CKEDITOR.env.opera && win )
+								{
+									// AIR needs a while to focus when moving from a link.
+									CKEDITOR.env.air ? setTimeout( function () { win.focus(); }, 0 ) : win.focus();
 									editor.selectionChange();
 								}
@@ -967,6 +1037,7 @@
 						});
 
-					editor.on( 'insertHtml', onInsertHtml, null, null, 20 );
-					editor.on( 'insertElement', onInsertElement, null, null, 20 );
+					editor.on( 'insertHtml', onInsert( doInsertHtml ) , null, null, 20 );
+					editor.on( 'insertElement', onInsert( doInsertElement ), null, null, 20 );
+					editor.on( 'insertText', onInsert( doInsertText ), null, null, 20 );
 					// Auto fixing on some document structure weakness to enhance usabilities. (#3190 and #3189)
 					editor.on( 'selectionChange', onSelectionChangeFixBody, null, null, 1 );
@@ -979,5 +1050,5 @@
 				{
 					var title = editor.document.getElementsByTag( 'title' ).getItem( 0 );
-					title.setAttribute( '_cke_title', editor.document.$.title );
+					title.data( 'cke-title', editor.document.$.title );
 					editor.document.$.title = frameLabel;
 				});
Index: CKEditor/trunk/_source/skins/kama/dialog.css
===================================================================
--- CKEditor/trunk/_source/skins/kama/dialog.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/kama/dialog.css	(revision 6241)
@@ -103,4 +103,14 @@
 }
 
+.cke_skin_kama .cke_dialog_footer .cke_resizer
+{
+	margin-top: 20px;
+}
+.cke_skin_kama .cke_browser_iequirks .cke_dialog_footer .cke_resizer,
+.cke_skin_kama .cke_browser_ie6 .cke_dialog_footer .cke_resizer
+{
+	margin-top: 27px;
+}
+
 /* tabs */
 
@@ -719,6 +729,6 @@
 	border : 2px ridge black;
 	overflow : scroll;
-	height : 160px;
-	width : 230px;
+	height : 200px;
+	width : 300px;
 	padding : 2px;
 	background-color : white;
@@ -887,2 +897,19 @@
 	border: 1px solid white;
 }
+
+/**
+ * Styles specific to "cellProperties" dialog.
+ */
+
+.cke_skin_kama .cke_dialog_contents a.colorChooser
+{
+	display:block;
+	margin-top:6px;
+	margin-left: 10px;
+	width: 80px;
+}
+
+.cke_skin_kama .cke_rtl .cke_dialog_contents a.colorChooser
+{
+	margin-right: 10px;
+}
Index: CKEditor/trunk/_source/skins/kama/icons.css
===================================================================
--- CKEditor/trunk/_source/skins/kama/icons.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/kama/icons.css	(revision 6241)
@@ -356,2 +356,6 @@
 	background-position: 0 -1056px;
 }
+.cke_skin_kama .cke_button_iframe .cke_icon
+{
+	background-position: 0 -1279px;
+}
Index: CKEditor/trunk/_source/skins/kama/mainui.css
===================================================================
--- CKEditor/trunk/_source/skins/kama/mainui.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/kama/mainui.css	(revision 6241)
@@ -126,4 +126,11 @@
 }
 
+/* Adobe AIR doesn't support *-resize cursor shape. */
+.cke_skin_kama .cke_browser_air .cke_resizer,
+.cke_skin_kama .cke_browser_air .cke_rtl .cke_resizer
+{
+	cursor: move;
+}
+
 .cke_skin_kama .cke_rtl .cke_resizer
 {
Index: CKEditor/trunk/_source/skins/kama/menu.css
===================================================================
--- CKEditor/trunk/_source/skins/kama/menu.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/kama/menu.css	(revision 6241)
@@ -50,8 +50,36 @@
 }
 
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_browser_ie .cke_skin_kama .cke_menuitem .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_browser_ie.cke_rtl .cke_skin_kama .cke_menuitem .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_browser_ie6 .cke_skin_kama .cke_menuitem .cke_icon
+{
+	filter: ;
+}
+
 .cke_skin_kama .cke_menuitem .cke_disabled .cke_icon
 {
 	filter: alpha(opacity=70); /* IE */
 	opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_browser_ie .cke_skin_kama .cke_menuitem .cke_disabled .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_browser_ie.cke_rtl .cke_skin_kama .cke_menuitem .cke_disabled .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_browser_ie6 .cke_skin_kama .cke_menuitem .cke_disabled .cke_icon
+{
+	filter: ;
 }
 
Index: CKEditor/trunk/_source/skins/kama/richcombo.css
===================================================================
--- CKEditor/trunk/_source/skins/kama/richcombo.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/kama/richcombo.css	(revision 6241)
@@ -201,4 +201,14 @@
 }
 
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_skin_kama .cke_browser_ie .cke_rcombo .cke_disabled .cke_openbutton
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=50);
+}
+.cke_skin_kama .cke_browser_ie6 .cke_rcombo .cke_disabled .cke_openbutton
+{
+	filter: alpha(opacity=50);
+}
+
 .cke_skin_kama .cke_hc .cke_rcombo .cke_disabled .cke_text,
 .cke_skin_kama .cke_hc .cke_rcombo .cke_disabled .cke_openbutton
Index: CKEditor/trunk/_source/skins/kama/skin.js
===================================================================
--- CKEditor/trunk/_source/skins/kama/skin.js	(revision 6232)
+++ CKEditor/trunk/_source/skins/kama/skin.js	(revision 6241)
@@ -6,16 +6,7 @@
 CKEDITOR.skins.add( 'kama', (function()
 {
-	var preload = [],
-		uiColorStylesheetId = 'cke_ui_color';
-
-	if ( CKEDITOR.env.ie && CKEDITOR.env.version < 7 )
-	{
-		// For IE6, we need to preload some images, otherwhise they will be
-		// downloaded several times (CSS background bug).
-		preload.push( 'icons.png', 'images/sprites_ie6.png', 'images/dialog_sides.gif' );
-	}
+	var uiColorStylesheetId = 'cke_ui_color';
 
 	return {
-		preload		: preload,
 		editor		: { css : [ 'editor.css' ] },
 		dialog		: { css : [ 'dialog.css' ] },
Index: CKEditor/trunk/_source/skins/kama/toolbar.css
===================================================================
--- CKEditor/trunk/_source/skins/kama/toolbar.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/kama/toolbar.css	(revision 6241)
@@ -180,9 +180,25 @@
 }
 
-.cke_skin_kama .cke_button a.cke_disabled *,
-.cke_skin_kama .cke_browser_ie a:hover.cke_button .cke_disabled *
+.cke_skin_kama .cke_button a.cke_disabled *
 {
 	filter: alpha(opacity=30); /* IE */
 	opacity: 0.3; /* Safari, Opera and Mozilla */
+}
+
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_skin_kama .cke_browser_ie .cke_button a.cke_disabled *,
+.cke_skin_kama .cke_browser_ie a:hover.cke_button .cke_disabled *
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=30);
+}
+.cke_skin_kama .cke_browser_ie .cke_rtl .cke_button a.cke_disabled *,
+.cke_skin_kama .cke_browser_ie .cke_rtl a:hover.cke_button .cke_disabled *
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=30);
+}
+.cke_skin_kama .cke_browser_ie6 .cke_button a.cke_disabled *,
+.cke_skin_kama .cke_browser_ie6 a:hover.cke_button .cke_disabled *
+{
+	filter: alpha(opacity=30);
 }
 
@@ -245,4 +261,17 @@
 	background-image: url(icons_rtl.png);
 }
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_skin_kama .cke_browser_ie .cke_button .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_skin_kama .cke_browser_ie .cke_rtl .cke_button .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_skin_kama .cke_browser_ie6 .cke_button .cke_icon
+{
+	filter: ;
+}
 
 .cke_skin_kama .cke_rtl .cke_button .cke_icon
@@ -301,4 +330,14 @@
 }
 
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_skin_kama .cke_browser_ie .cke_button .cke_buttonarrow
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_skin_kama .cke_browser_ie6 .cke_button .cke_buttonarrow
+{
+	filter: ;
+}
+
 .cke_skin_kama .cke_rtl .cke_button .cke_buttonarrow
 {
Index: CKEditor/trunk/_source/skins/office2003/dialog.css
===================================================================
--- CKEditor/trunk/_source/skins/office2003/dialog.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/office2003/dialog.css	(revision 6241)
@@ -206,4 +206,8 @@
 }
 
+.cke_skin_office2003 .cke_dialog_footer .cke_resizer {
+	margin-top: 21px;
+}
+
 /* tabs */
 
@@ -653,5 +657,5 @@
 	border : 2px ridge black;
 	overflow : scroll;
-	height : 160px;
+	height : 210px;
 	width : 230px;
 	padding : 2px;
@@ -799,2 +803,24 @@
 	float: right;
 }
+
+/**
+ * Styles specific to "cellProperties" dialog.
+ */
+
+.cke_skin_office2003 .cke_dialog_contents a.colorChooser
+{
+	display:block;
+	margin-top:12px;
+	margin-left: 10px;
+	width: 40px;
+}
+
+.cke_skin_office2003 .cke_dialog_contents a.colorChooser .cke_dialog_ui_button
+{
+	width:100%;
+}
+
+.cke_skin_office2003 .cke_rtl .cke_dialog_contents a.colorChooser
+{
+	margin-right: 10px;
+}
Index: CKEditor/trunk/_source/skins/office2003/icons.css
===================================================================
--- CKEditor/trunk/_source/skins/office2003/icons.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/office2003/icons.css	(revision 6241)
@@ -353,2 +353,6 @@
 	background-position: 0 -1056px;
 }
+.cke_skin_office2003 .cke_button_iframe .cke_icon
+{
+	background-position: 0 -1279px;
+}
Index: CKEditor/trunk/_source/skins/office2003/mainui.css
===================================================================
--- CKEditor/trunk/_source/skins/office2003/mainui.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/office2003/mainui.css	(revision 6241)
@@ -94,4 +94,11 @@
 }
 
+/* Adobe AIR doesn't support *-resize cursor shape. */
+.cke_skin_office2003 .cke_browser_air .cke_resizer,
+.cke_skin_office2003 .cke_browser_air .cke_rtl .cke_resizer
+{
+	cursor: move;
+}
+
 .cke_skin_office2003 .cke_rtl .cke_resizer
 {
Index: CKEditor/trunk/_source/skins/office2003/menu.css
===================================================================
--- CKEditor/trunk/_source/skins/office2003/menu.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/office2003/menu.css	(revision 6241)
@@ -50,8 +50,36 @@
 }
 
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_browser_ie .cke_skin_office2003 .cke_menuitem .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_browser_ie.cke_rtl .cke_skin_office2003 .cke_menuitem .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_browser_ie6 .cke_skin_office2003 .cke_menuitem .cke_icon
+{
+	filter: ;
+}
+
 .cke_skin_office2003 .cke_menuitem .cke_disabled .cke_icon
 {
 	filter: alpha(opacity=70); /* IE */
 	opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_browser_ie .cke_skin_office2003 .cke_menuitem .cke_disabled .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_browser_ie.cke_rtl .cke_skin_office2003 .cke_menuitem .cke_disabled .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_browser_ie6 .cke_skin_office2003 .cke_menuitem .cke_disabled .cke_icon
+{
+	filter: ;
 }
 
Index: CKEditor/trunk/_source/skins/office2003/richcombo.css
===================================================================
--- CKEditor/trunk/_source/skins/office2003/richcombo.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/office2003/richcombo.css	(revision 6241)
@@ -145,5 +145,5 @@
 	background-position: 5px -1002px;
 	background-image: url(images/sprites.png);
-	background-image: url(images/sprites_ie6.png);
+	_background-image: url(images/sprites_ie6.png);
 	background-repeat: no-repeat;
 
@@ -152,4 +152,14 @@
 	width: 14px;
 	height: 22px;
+}
+
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_skin_office2003 .cke_browser_ie .cke_rcombo .cke_openbutton
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_skin_office2003 .cke_browser_ie6 .cke_rcombo .cke_openbutton
+{
+	filter: ;
 }
 
@@ -245,4 +255,14 @@
 }
 
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_skin_office2003 .cke_browser_ie .cke_rcombo .cke_disabled .cke_openbutton
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=50);
+}
+.cke_skin_office2003 .cke_browser_ie6 .cke_rcombo .cke_disabled .cke_openbutton
+{
+	filter: alpha(opacity=50);
+}
+
 .cke_skin_office2003 .cke_hc .cke_rcombo .cke_disabled .cke_text,
 .cke_skin_office2003 .cke_hc .cke_rcombo .cke_disabled .cke_openbutton
@@ -251,4 +271,5 @@
 	opacity: 0.8;
 }
+
 
 .cke_skin_office2003 .cke_rcombo .cke_disabled .cke_text
Index: CKEditor/trunk/_source/skins/office2003/skin.js
===================================================================
--- CKEditor/trunk/_source/skins/office2003/skin.js	(revision 6232)
+++ CKEditor/trunk/_source/skins/office2003/skin.js	(revision 6241)
@@ -6,15 +6,5 @@
 CKEDITOR.skins.add( 'office2003', (function()
 {
-	var preload = [];
-
-	if ( CKEDITOR.env.ie && CKEDITOR.env.version < 7 )
-	{
-		// For IE6, we need to preload some images, otherwhise they will be
-		// downloaded several times (CSS background bug).
-		preload.push( 'icons.png', 'images/sprites_ie6.png', 'images/dialog_sides.gif' );
-	}
-
 	return {
-		preload		: preload,
 		editor		: { css : [ 'editor.css' ] },
 		dialog		: { css : [ 'dialog.css' ] },
Index: CKEditor/trunk/_source/skins/office2003/toolbar.css
===================================================================
--- CKEditor/trunk/_source/skins/office2003/toolbar.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/office2003/toolbar.css	(revision 6241)
@@ -269,9 +269,25 @@
 }
 
-.cke_skin_office2003 .cke_button a.cke_disabled *,
-.cke_skin_office2003 .cke_browser_ie a:hover.cke_button .cke_disabled *
+.cke_skin_office2003 .cke_button a.cke_disabled *
 {
 	filter: alpha(opacity=30); /* IE */
 	opacity: 0.3; /* Safari, Opera and Mozilla */
+}
+
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_skin_office2003 .cke_browser_ie .cke_button a.cke_disabled *,
+.cke_skin_office2003 .cke_browser_ie a:hover.cke_button .cke_disabled *
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=30);
+}
+.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_button a.cke_disabled *,
+.cke_skin_office2003 .cke_browser_ie .cke_rtl a:hover.cke_button .cke_disabled *
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=30);
+}
+.cke_skin_office2003 .cke_browser_ie6 .cke_button a.cke_disabled *,
+.cke_skin_office2003 .cke_browser_ie6 a:hover.cke_button .cke_disabled *
+{
+	filter: alpha(opacity=30);
 }
 
@@ -314,4 +330,18 @@
 }
 
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_skin_office2003 .cke_browser_ie .cke_button .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_button .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_skin_office2003 .cke_browser_ie6 .cke_button .cke_icon
+{
+	filter: ;
+}
+
 .cke_skin_office2003 .cke_button .cke_label
 {
@@ -367,4 +397,14 @@
 	background-repeat: no-repeat;
 	cursor: default;
+}
+
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_skin_office2003 .cke_browser_ie .cke_button .cke_buttonarrow
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_skin_office2003 .cke_browser_ie6 .cke_button .cke_buttonarrow
+{
+	filter: ;
 }
 
Index: CKEditor/trunk/_source/skins/v2/dialog.css
===================================================================
--- CKEditor/trunk/_source/skins/v2/dialog.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/v2/dialog.css	(revision 6241)
@@ -201,4 +201,8 @@
 {
 	text-align: left;
+}
+
+.cke_skin_v2 .cke_dialog_footer .cke_resizer {
+	margin-top: 21px;
 }
 
@@ -655,5 +659,5 @@
 	border : 2px ridge black;
 	overflow : scroll;
-	height : 160px;
+	height : 210px;
 	width : 230px;
 	padding : 2px;
@@ -814,2 +818,25 @@
 	border-color: #C7C78F;
 }
+
+
+/**
+ * Styles specific to "cellProperties" dialog.
+ */
+
+.cke_skin_v2 .cke_dialog_contents a.colorChooser
+{
+	display:block;
+	margin-top:12px;
+	margin-left: 10px;
+	width: 40px;
+}
+
+.cke_skin_v2 .cke_dialog_contents a.colorChooser .cke_dialog_ui_button
+{
+	width:100%;
+}
+
+.cke_skin_v2 .cke_rtl .cke_dialog_contents a.colorChooser
+{
+	margin-right: 10px;
+}
Index: CKEditor/trunk/_source/skins/v2/icons.css
===================================================================
--- CKEditor/trunk/_source/skins/v2/icons.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/v2/icons.css	(revision 6241)
@@ -343,5 +343,4 @@
 	background-position: 0 -1200px;
 }
-
 .cke_skin_v2 .cke_button_bidirtl .cke_icon
 {
@@ -353,2 +352,7 @@
 	background-position: 0 -1056px;
 }
+
+.cke_skin_v2 .cke_button_iframe .cke_icon
+{
+	background-position: 0 -1279px;
+}
Index: CKEditor/trunk/_source/skins/v2/mainui.css
===================================================================
--- CKEditor/trunk/_source/skins/v2/mainui.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/v2/mainui.css	(revision 6241)
@@ -103,4 +103,11 @@
 }
 
+/* Adobe AIR doesn't support *-resize cursor shape. */
+.cke_skin_v2 .cke_browser_air .cke_resizer,
+.cke_skin_v2 .cke_browser_air .cke_rtl .cke_resizer
+{
+	cursor: move;
+}
+
 .cke_skin_v2 .cke_rtl .cke_resizer
 {
Index: CKEditor/trunk/_source/skins/v2/menu.css
===================================================================
--- CKEditor/trunk/_source/skins/v2/menu.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/v2/menu.css	(revision 6241)
@@ -49,8 +49,37 @@
 }
 
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_browser_ie .cke_skin_v2 .cke_menuitem .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_browser_ie.cke_rtl .cke_skin_v2 .cke_menuitem .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_browser_ie6 .cke_skin_v2 .cke_menuitem .cke_icon
+{
+	filter: ;
+}
+
 .cke_skin_v2 .cke_menuitem .cke_disabled .cke_icon
 {
 	filter: alpha(opacity=70); /* IE */
 	opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_browser_ie .cke_skin_v2 .cke_menuitem .cke_disabled .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_browser_ie.cke_rtl .cke_skin_v2 .cke_menuitem .cke_disabled .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_browser_ie6 .cke_skin_v2 .cke_menuitem .cke_disabled .cke_icon
+{
+	filter: ;
 }
 
Index: CKEditor/trunk/_source/skins/v2/richcombo.css
===================================================================
--- CKEditor/trunk/_source/skins/v2/richcombo.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/v2/richcombo.css	(revision 6241)
@@ -149,4 +149,14 @@
 }
 
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_skin_v2 .cke_browser_ie .cke_rcombo .cke_openbutton
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_skin_v2 .cke_browser_ie6 .cke_rcombo .cke_openbutton
+{
+	filter: ;
+}
+
 .cke_skin_v2 .cke_rcombo .cke_openbutton span
 {
@@ -240,4 +250,14 @@
 }
 
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_skin_v2 .cke_browser_ie .cke_rcombo .cke_disabled .cke_openbutton
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=50);
+}
+.cke_skin_v2 .cke_browser_ie6 .cke_rcombo .cke_disabled .cke_openbutton
+{
+	filter: alpha(opacity=50);
+}
+
 .cke_skin_v2 .cke_hc .cke_rcombo .cke_disabled .cke_text,
 .cke_skin_v2 .cke_hc .cke_rcombo .cke_disabled .cke_openbutton
Index: CKEditor/trunk/_source/skins/v2/skin.js
===================================================================
--- CKEditor/trunk/_source/skins/v2/skin.js	(revision 6232)
+++ CKEditor/trunk/_source/skins/v2/skin.js	(revision 6241)
@@ -6,15 +6,5 @@
 CKEDITOR.skins.add( 'v2', (function()
 {
-	var preload = [];
-
-	if ( CKEDITOR.env.ie && CKEDITOR.env.version < 7 )
-	{
-		// For IE6, we need to preload some images, otherwhise they will be
-		// downloaded several times (CSS background bug).
-		preload.push( 'icons.png', 'images/sprites_ie6.png', 'images/dialog_sides.gif' );
-	}
-
 	return {
-		preload		: preload,
 		editor		: { css : [ 'editor.css' ] },
 		dialog		: { css : [ 'dialog.css' ] },
Index: CKEditor/trunk/_source/skins/v2/toolbar.css
===================================================================
--- CKEditor/trunk/_source/skins/v2/toolbar.css	(revision 6232)
+++ CKEditor/trunk/_source/skins/v2/toolbar.css	(revision 6241)
@@ -239,9 +239,25 @@
 }
 
-.cke_skin_v2 .cke_button a.cke_disabled *,
-.cke_skin_v2 .cke_browser_ie a:hover.cke_button .cke_disabled *
+.cke_skin_v2 .cke_button a.cke_disabled *
 {
 	filter: alpha(opacity=30); /* IE */
 	opacity: 0.3; /* Safari, Opera and Mozilla */
+}
+
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_skin_v2 .cke_browser_ie .cke_button a.cke_disabled *,
+.cke_skin_v2 .cke_browser_ie a:hover.cke_button .cke_disabled *
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=30);
+}
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_button a.cke_disabled *,
+.cke_skin_v2 .cke_browser_ie .cke_rtl a:hover.cke_button .cke_disabled *
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale'), alpha(opacity=30);
+}
+.cke_skin_v2 .cke_browser_ie6 .cke_button a.cke_disabled *,
+.cke_skin_v2 .cke_browser_ie6 a:hover.cke_button .cke_disabled *
+{
+	filter: alpha(opacity=30);
 }
 
@@ -285,4 +301,18 @@
 {
 	background-image: url(icons_rtl.png);
+}
+
+/* IE with zoom != 100% will distort the icons otherwise #4821 */
+.cke_skin_v2 .cke_browser_ie .cke_button .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_button .cke_icon
+{
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
+}
+.cke_skin_v2 .cke_browser_ie6 .cke_button .cke_icon
+{
+	filter: ;
 }
 
Index: CKEditor/trunk/_source/themes/default/theme.js
===================================================================
--- CKEditor/trunk/_source/themes/default/theme.js	(revision 6232)
+++ CKEditor/trunk/_source/themes/default/theme.js	(revision 6241)
@@ -46,4 +46,8 @@
 			container = mainContainer.getChild( [0,0,0,0] );
 
+			// Save a reference to the shared space container.
+			!editor.sharedSpaces && ( editor.sharedSpaces = {} );
+			editor.sharedSpaces[ spaceName ] = container;
+
 			// When the editor gets focus, we show the space container, hiding others.
 			editor.on( 'focus', function()
@@ -123,5 +127,5 @@
 					' title="', ( CKEDITOR.env.gecko ? ' ' : '' ), '"' +
 					' lang="', editor.langCode, '"' +
-					( CKEDITOR.env.webkit? ' tabindex="' + tabIndex + '"' : '' ) +
+						( CKEDITOR.env.webkit? ' tabindex="' + tabIndex + '"' : '' ) +
 					' role="application"' +
 					' aria-labelledby="cke_', name, '_arialbl"' +
Index: CKEditor/trunk/ckeditor.pack
===================================================================
--- CKEditor/trunk/ckeditor.pack	(revision 6232)
+++ CKEditor/trunk/ckeditor.pack	(revision 6241)
@@ -110,5 +110,4 @@
 					'_source/core/resourcemanager.js',
 					'_source/core/plugins.js',
-					'_source/core/imagecacher.js',
 					'_source/core/skins.js',
 					'_source/core/themes.js',
@@ -157,4 +156,5 @@
 					'_source/plugins/horizontalrule/plugin.js',
 					'_source/plugins/htmldataprocessor/plugin.js',
+					'_source/plugins/iframe/plugin.js',
 					'_source/plugins/image/plugin.js',
 					'_source/plugins/indent/plugin.js',
Index: CKEditor/trunk/ckeditor_basic_source.js
===================================================================
--- CKEditor/trunk/ckeditor_basic_source.js	(revision 6232)
+++ CKEditor/trunk/ckeditor_basic_source.js	(revision 6241)
@@ -6,5 +6,5 @@
 // Compressed version of core/ckeditor_base.js. See original for instructions.
 /*jsl:ignore*/
-if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'%VERSION%',revision:'%REV%',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf('://')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf('://')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();
+if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'%VERSION%',revision:'%REV%',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf(':/')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf(':/')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();
 /*jsl:end*/
 
Index: CKEditor/trunk/ckeditor_source.js
===================================================================
--- CKEditor/trunk/ckeditor_source.js	(revision 6232)
+++ CKEditor/trunk/ckeditor_source.js	(revision 6241)
@@ -6,5 +6,5 @@
 // Compressed version of core/ckeditor_base.js. See original for instructions.
 /*jsl:ignore*/
-if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'%VERSION%',revision:'%REV%',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf('://')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf('://')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();
+if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'%VERSION%',revision:'%REV%',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf(':/')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf(':/')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();
 /*jsl:end*/
 
