Index: /CKEditor/branches/features/adobeair/CHANGES.html
===================================================================
--- /CKEditor/branches/features/adobeair/CHANGES.html	(revision 6061)
+++ /CKEditor/branches/features/adobeair/CHANGES.html	(revision 6062)
@@ -36,5 +36,21 @@
 	</h1>
 	<h3>
-			CKEditor 3.4.2 (SVN)</h3>
+			CKEditor 3.4.3 (SVN)</h3>
+	<p>
+			New features:</p>
+	<ul>
+		<li></li>
+	</ul>
+	<p>
+			Fixed issues:</p>
+	<ul>
+		<li><a href="http://dev.ckeditor.com/ticket/6569">#6569</a> : Indentation now honors text direction of the only item.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6579">#6579</a> : The jQuery adapter wasn't working properly tunning on incompatible environments.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6471">#6471</a> : BIDI: Pressing decrease indent in an RTL bulleted list causes incorrect behaviour.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6644">#6644</a> : Restrict onmousedown handler to the toolbar area.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6656">#6656</a> : Panelbutton's buttons became active when clicking on source.</li>
+	</ul>
+	<h3>
+			CKEditor 3.4.2</h3>
 	<p>
 			New features:</p>
@@ -47,5 +63,5 @@
 		<li><a href="http://dev.ckeditor.com/ticket/5237">#5237</a> : English text in dialogs' title was flipped when using RTL language (office2003 and v2 skins).</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6289">#6289</a> : Deleting nested table removed the parent cell.</li>
-		<li><a href="http://dev.ckeditor.com/ticket/6341">#6341</a> : The editor contents now has the text cursor.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6341">#6341</a> : The editor contents now have the text cursor.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6153">#6153</a> : Chrome: tab focus is wrong.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6261">#6261</a> : Focus and infinite loop between multiple editors.</li>
@@ -62,5 +78,5 @@
 		<li><a href="http://dev.ckeditor.com/ticket/6377">#6377</a> : FF width and height are not shown for smiley in Image properties dialog.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/5399">#5399</a> : Lists pasted from Word do not maintain their nesting.</li>
-		<li><a href="http://dev.ckeditor.com/ticket/6225">#6225</a> : [FF] Can not transform sevaral lines to list with enterMode BR.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6225">#6225</a> : [FF] Cannot transform several lines to list with enterMode BR.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6467">#6467</a> : [FF] It is now possible to disable the plugin command on "mode" event.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6461">#6461</a> : Attributes are now being kept when changing block formatting.</li>
@@ -69,5 +85,5 @@
 		<li><a href="http://dev.ckeditor.com/ticket/6444">#6444</a> : [Opera] Close panels and dialogs don't return focus to wysiwyg frame.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6332">#6332</a> : IE: V2 skin bottom dialog's border broken.</li>
-		<li><a href="http://dev.ckeditor.com/ticket/5646">#5646</a> : Parser incorreclty removes inline element when there's only one comment node enclosed.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/5646">#5646</a> : Parser incorrectly removes inline element when there's only one comment node enclosed.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6189">#6189</a> : Minor code size reduction.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/5045">#5045</a> : uiColor behaved wrong if multiple editors were used with period in their names.</li>
@@ -77,6 +93,8 @@
 		<li><a href="http://dev.ckeditor.com/ticket/6253">#6253</a> : BIDI: creating a Numbered/Bulleted list causing improper behavior on bidi.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/4023">#4023</a> : [Opera] Maximize plugin.</li>
-		<li><a href="http://dev.ckeditor.com/ticket/6403">#6403</a> : [Opera] Font name options is not correctly marked in dropdown list.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6403">#6403</a> : [Opera] Font name options are not correctly marked in dropdown list.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/4534">#4534</a> : [Opera] Arrow key to navigate through combo list has side effects of window scrolling.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6534">#6534</a> : [Opera] Menu key brings up both CKEditor and browser context menu.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6534">#6534</a> : [Opera] Menu key brings up both CKEditor and browser context menu.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6416">#6416</a> : [IE9] Unable to make text selection with mouse in source area.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6417">#6417</a> : [IE9] Context menu opens at the upper-left corner always.</li>
@@ -90,7 +108,7 @@
 		<li><a href="http://dev.ckeditor.com/ticket/5626">#5626</a> : CKeditor 3.2.1 : html content attached makes ckeditor crash the browser FF/IE.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6508">#6508</a> : BiDi: Margin mirroring logic doesn't honor CSS direction.</li>
-		<li><a href="http://dev.ckeditor.com/ticket/6043">#6043</a> : BIDI: When we apply RTL direction to a right aligned Paragraph, Paragraph is not moved to left & Alignment of Paragraph is not changed.</li>
-		<li><a href="http://dev.ckeditor.com/ticket/6485">#6485</a> : BIDI: When direction is applied on partial selected list, the style is been incorrectly applied on the entired list.</li>
-		<li><a href="http://dev.ckeditor.com/ticket/6087">#6087</a> : Cursor of input fields in dialog isn't visible in RLT .</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6043">#6043</a> : BIDI: When we apply RTL direction to a right aligned Paragraph, Paragraph is not moved to the left & Alignment of Paragraph is not changed.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6485">#6485</a> : BIDI: When direction is applied on partial selected list, the style is been incorrectly applied to the entire list.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6087">#6087</a> : Cursor of input fields in dialog isn't visible in RTL.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/5595">#5595</a> : Extra leading spaces added in preformatted block.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6094">#6094</a> : Match full word option doesn't stop on block boundaries.</li>
Index: /CKEditor/branches/features/adobeair/_dev/docs_build/docs_build.conf
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/docs_build/docs_build.conf	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_dev/docs_build/docs_build.conf	(revision 6062)
@@ -17,5 +17,6 @@
 		'../../_source/core/',
 		'../../_source/plugins/',
-		'../../_source/skins/kama/skin.js'
+		'../../_source/skins/kama/skin.js',
+		'../../_source/themes/default/theme.js'
 	],
 
Index: /CKEditor/branches/features/adobeair/_dev/docs_build/template/class.tmpl
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/docs_build/template/class.tmpl	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_dev/docs_build/template/class.tmpl	(revision 6062)
@@ -54,4 +54,7 @@
 					{+ data.version +}.<br />
 				</if>
+
+				{+resolveLinks(data.classDesc)+}
+				
 				<if test="data.augments.length"><br />Extends
 					{+
@@ -62,9 +65,7 @@
 						)
 						.join(", ")
-					+}.<br />
+					+}.
 				</if>
 			
-				{+resolveLinks(data.classDesc)+}
-				
 				<if test="!data.isBuiltin()">{# isn't defined in any file #}
 					<br /><i>Defined in: </i> {+ ckeditor_FileLink( data.srcFile ) +}.
@@ -73,5 +74,5 @@
 
 <!-- ============================== constructor summary ==================== -->			
-			<if test="!data.isBuiltin() && (data.isNamespace || data.is('CONSTRUCTOR'))">
+			<if test="!data.isBuiltin() && data.is('CONSTRUCTOR')">
 			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class {+data.alias+}.">
 				<caption>{+classType+}Summary</caption>
@@ -313,5 +314,5 @@
 
 <!-- ============================== constructor details ==================== -->		
-			<if test="!data.isBuiltin() && (data.isNamespace || data.is('CONSTRUCTOR'))">
+			<if test="!data.isBuiltin() && data.is('CONSTRUCTOR')">
 			<div class="details"><a name="constructor"> </a>
 				<div class="sectionTitle">
Index: /CKEditor/branches/features/adobeair/_dev/docs_build/template/static/default.css
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/docs_build/template/static/default.css	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_dev/docs_build/template/static/default.css	(revision 6062)
@@ -36,7 +36,7 @@
 #index
 {
-	margin-top: 24px;
+	margin-top: 14px;
 	float: left;
-	width: 160px;
+	width: 220px;
 	position: absolute;
 	left: 8px;
@@ -47,5 +47,5 @@
 #content
 {
-	margin-left: 190px;
+	margin-left: 250px;
 }
 
Index: /CKEditor/branches/features/adobeair/_dev/releaser/release.bat
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/releaser/release.bat	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_dev/releaser/release.bat	(revision 6062)
@@ -11,3 +11,3 @@
 :: rmdir /S /Q release
 
-java -jar ckreleaser/ckreleaser.jar ckreleaser.release ../.. release "3.4.2 (SVN)" ckeditor_3.4.2_svn --run-before-release=langtool.bat
+java -jar ckreleaser/ckreleaser.jar ckreleaser.release ../.. release "3.4.3 (SVN)" ckeditor_3.4.3_svn --run-before-release=langtool.bat
Index: /CKEditor/branches/features/adobeair/_dev/releaser/release.sh
===================================================================
--- /CKEditor/branches/features/adobeair/_dev/releaser/release.sh	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_dev/releaser/release.sh	(revision 6062)
@@ -13,4 +13,4 @@
 
 pushd $DIR
-java -jar ckreleaser/ckreleaser.jar ckreleaser.release ../.. release "3.4.2 (SVN)" ckeditor_3.4.2_svn --run-before-release=$LANGTOOL
+java -jar ckreleaser/ckreleaser.jar ckreleaser.release ../.. release "3.4.3 (SVN)" ckeditor_3.4.3_svn --run-before-release=$LANGTOOL
 popd
Index: /CKEditor/branches/features/adobeair/_samples/assets/swfobject.js
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/assets/swfobject.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_samples/assets/swfobject.js	(revision 6062)
@@ -1,3 +1,3 @@
-/**
+﻿/**
  * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
  *
Index: /CKEditor/branches/features/adobeair/_samples/output_for_flash.html
===================================================================
--- /CKEditor/branches/features/adobeair/_samples/output_for_flash.html	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_samples/output_for_flash.html	(revision 6062)
@@ -96,5 +96,5 @@
 						 */
 						// Define the way font elements will be applied to the document. The "font"
-						// element will be used. 
+						// element will be used.
 						font_style :
 						{
@@ -138,5 +138,5 @@
 
 /*
- * Adjust the behavior of the dataProcessor to match the 
+ * Adjust the behavior of the dataProcessor to match the
  * requirements of Flash
  */
@@ -173,5 +173,5 @@
 
 	// Output properties as attributes, not styles.
-	htmlFilter.addRules( 
+	htmlFilter.addRules(
 		{
 			elements :
@@ -218,5 +218,5 @@
 						{
 							// Get the align from the style.
-							match = /(?:^|\s)text-align\s*:\s*(\w*);/i.exec( style );
+							match = /(?:^|\s)text-align\s*:\s*(\w*);?/i.exec( style );
 							align = match && match[1];
 
Index: /CKEditor/branches/features/adobeair/_source/adapters/jquery.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/adapters/jquery.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/adapters/jquery.js	(revision 6062)
@@ -98,4 +98,7 @@
 		ckeditor: function( callback, config )
 		{
+			if ( !CKEDITOR.env.isCompatible )
+				return this;
+
 			if ( !jQuery.isFunction( callback ))
 			{
Index: /CKEditor/branches/features/adobeair/_source/core/ajax.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/ajax.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/ajax.js	(revision 6062)
@@ -10,6 +10,5 @@
 
 /**
- * Ajax methods for data loading.
- * @namespace
+ * @namespace Ajax methods for data loading.
  * @example
  */
Index: /CKEditor/branches/features/adobeair/_source/core/ckeditor_base.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/ckeditor_base.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/ckeditor_base.js	(revision 6062)
@@ -21,7 +21,6 @@
 {
 	/**
-	 * This is the API entry point. The entire CKEditor code runs under this object.
 	 * @name CKEDITOR
-	 * @namespace
+	 * @namespace This is the API entry point. The entire CKEditor code runs under this object.
 	 * @example
 	 */
Index: /CKEditor/branches/features/adobeair/_source/core/ckeditor_basic.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/ckeditor_basic.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/ckeditor_basic.js	(revision 6062)
@@ -139,8 +139,5 @@
 		};
 
-		/**
-		 * @ignore
-		 * Documented at ckeditor.js.
-		 */
+		// Documented at ckeditor.js.
 		CKEDITOR.add = function( editor )
 		{
Index: /CKEditor/branches/features/adobeair/_source/core/command.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/command.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/command.js	(revision 6062)
@@ -199,6 +199,7 @@
 /**
  * Fired when the command state changes.
- * @name CKEDITOR.command.prototype#state
+ * @name CKEDITOR.command#state
  * @event
+ * @example
  * command.on( <b>'state'</b> , function( e )
  *     {
Index: /CKEditor/branches/features/adobeair/_source/core/commanddefinition.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/commanddefinition.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/commanddefinition.js	(revision 6062)
@@ -12,13 +12,13 @@
 /**
  * (Virtual Class) Do not call this constructor. This class is not really part
- *		of the API. It just illustrates the features of command objects to be
+ * of the API.
+ * @name CKEDITOR.commandDefinition
+ * @class Virtual class that illustrates the features of command objects to be
  *		passed to the {@link CKEDITOR.editor.prototype.addCommand} function.
- * @name CKEDITOR.commandDefinition
- * @constructor
  * @example
  */
 
  /**
- * Executes the command.
+ * The function to be fired when the commend is executed.
  * @name CKEDITOR.commandDefinition.prototype.exec
  * @function
@@ -39,7 +39,7 @@
 /**
  * Whether the command need to be hooked into the redo/undo system.
- * @name  CKEDITOR.commandDefinition.canUndo
- * @type {Boolean} If not defined or 'true' both hook into undo system, set it
- *		to 'false' explicitly  keep it out.
+ * @name  CKEDITOR.commandDefinition.prototype.canUndo
+ * @type {Boolean}
+ * @default true
  * @field
  * @example
@@ -55,16 +55,21 @@
 
 /**
- * Whether the command is asynchronous, which means the 'afterCommandExec' event
- * will be fired by the command itself manually, and the 'exec' function return value
- * of this command is not to be returned.
- * @name  CKEDITOR.commandDefinition.async
- * @type {Boolean} If defined as 'true', the command is asynchronous.
+ * Whether the command is asynchronous, which means that the
+ * {@link CKEDITOR.editor#event:afterCommandExec} event will be fired by the
+ * command itself manually, and that the return value of this command is not to
+ * be returned by the {@link CKEDITOR.command#exec} function.
+ * @name  CKEDITOR.commandDefinition.prototype.async
+ * @default false
+ * @type {Boolean}
  * @example
- * editorInstance.addCommand( 'alertName',
+ * editorInstance.addCommand( 'loadOptions',
  * {
  *     exec : function( editor )
  *     {
  *         // Asynchronous operation below.
- *         CKEDITOR.ajax.loadXml( 'data.xml' );
+ *         CKEDITOR.ajax.loadXml( 'data.xml', function()
+ *             {
+ *                 editor.fire( 'afterCommandExec' );
+ *             ));
  *     },
  *     async : true    // The command need some time to complete after exec function returns.
@@ -74,6 +79,8 @@
 /**
  * Whether the command should give focus to the editor before execution.
- * @name  CKEDITOR.commandDefinition.editorFocus
+ * @name  CKEDITOR.commandDefinition.prototype.editorFocus
  * @type {Boolean}
+ * @default true
+ * @see CKEDITOR.command#editorFocus
  * @example
  * editorInstance.addCommand( 'maximize',
@@ -81,4 +88,5 @@
  *     exec : function( editor )
  *     {
+ *         // ...
  *     },
  *     editorFocus : false    // The command doesn't require focusing the editing document.
@@ -89,5 +97,5 @@
 /**
  * Whether the command state should be set to {@link CKEDITOR.TRISTATE_DISABLED} on startup.
- * @name  CKEDITOR.commandDefinition.startDisabled
+ * @name  CKEDITOR.commandDefinition.prototype.startDisabled
  * @type {Boolean}
  * @default false
@@ -97,6 +105,25 @@
  *     exec : function( editor )
  *     {
+ *         // ...
  *     },
  *     startDisabled : true    // Command is unavailable until selection is inside a link.
  * });
  */
+
+/**
+ * The editor modes within which the command can be executed. The execution
+ * will have no action if the current mode is not listed in this property.
+ * @name  CKEDITOR.commandDefinition.prototype.modes
+ * @type Object
+ * @default { wysiwyg : 1 }
+ * @see CKEDITOR.command#modes
+ * @example
+ * editorInstance.addCommand( 'link',
+ * {
+ *     exec : function( editor )
+ *     {
+ *         // ...
+ *     },
+ *     modes : { wysiwyg : 1 }    // Command is available in wysiwyg mode only.
+ * });
+ */
Index: /CKEditor/branches/features/adobeair/_source/core/config.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/config.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/config.js	(revision 6062)
@@ -9,17 +9,32 @@
  */
 
+/**
+ * Used in conjuction with {@link CKEDITOR.config.enterMode} and
+ * {@link CKEDITOR.config.shiftEnterMode} to make the editor produce &lt;p&gt;
+ * tags when using the ENTER key.
+ * @constant
+ */
 CKEDITOR.ENTER_P	= 1;
+
+/**
+ * Used in conjuction with {@link CKEDITOR.config.enterMode} and
+ * {@link CKEDITOR.config.shiftEnterMode} to make the editor produce &lt;br&gt;
+ * tags when using the ENTER key.
+ * @constant
+ */
 CKEDITOR.ENTER_BR	= 2;
+
+/**
+ * Used in conjuction with {@link CKEDITOR.config.enterMode} and
+ * {@link CKEDITOR.config.shiftEnterMode} to make the editor produce &lt;div&gt;
+ * tags when using the ENTER key.
+ * @constant
+ */
 CKEDITOR.ENTER_DIV	= 3;
 
 /**
- * Holds the default configuration settings. Changes to this object are
+ * @namespace Holds the default configuration settings. Changes to this object are
  * reflected in all editor instances, if not specificaly specified for those
  * instances.
- * @namespace
- * @example
- * // All editor created after the following setting will not load custom
- * // configuration files.
- * CKEDITOR.config.customConfig = '';
  */
 CKEDITOR.config =
@@ -57,5 +72,5 @@
 	 * editor content.
 	 * @type String
-	 * @default '' (empty string)
+	 * @default '' (empty)
 	 * @example
 	 * config.baseHref = 'http://www.example.com/path/';
@@ -195,8 +210,13 @@
 	/**
 	 * Sets the "id" attribute to be used on the body element of the editing
-	 * area.
+	 * area. This can be useful when reusing the original CSS file you're using
+	 * on your live website and you want to assing to the editor the same id
+	 * you're using for the region that'll hold the contents. In this way,
+	 * id specific CSS rules will be enabled.
 	 * @since 3.1
 	 * @type String
-	 * @default ''
+	 * @default '' (empty)
+	 * @example
+	 * config.bodyId = 'contents_id';
 	 */
 	bodyId : '',
@@ -204,8 +224,13 @@
 	/**
 	 * Sets the "class" attribute to be used on the body element of the editing
-	 * area.
+	 * area. This can be useful when reusing the original CSS file you're using
+	 * on your live website and you want to assing to the editor the same class
+	 * name you're using for the region that'll hold the contents. In this way,
+	 * class specific CSS rules will be enabled.
 	 * @since 3.1
 	 * @type String
-	 * @default ''
+	 * @default '' (empty)
+	 * @example
+	 * config.bodyClass = 'contents';
 	 */
 	bodyClass : '',
@@ -389,8 +414,8 @@
 
 /**
- * Indicates that some of the editor features, like alignement and text
+ * Indicates that some of the editor features, like alignment and text
  * direction, should used the "computed value" of the feature to indicate it's
- * on/off state, instead of using the "real value".
- *
+ * on/off state, instead of using the "real value".<br />
+ * <br />
  * If enabled, in a left to right written document, the "Left Justify"
  * alignment button will show as active, even if the aligment style is not
Index: /CKEditor/branches/features/adobeair/_source/core/dom.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/dom.js	(revision 6062)
@@ -10,8 +10,7 @@
 
 /**
- * DOM manipulation objects and function.<br /><br />
+ * @namespace DOM manipulation objects, classes and functions.
  * @see CKEDITOR.dom.element
  * @see CKEDITOR.dom.node
- * @namespace
  * @example
  */
Index: /CKEditor/branches/features/adobeair/_source/core/dom/documentfragment.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/documentfragment.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/documentfragment.js	(revision 6062)
@@ -3,11 +3,11 @@
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
+
 /**
- * DocumentFragment is a "lightweight" or "minimal" Document object. It is
+ * @class DocumentFragment is a "lightweight" or "minimal" Document object. It is
  * commonly used to extract a portion of a document's tree or to create a new
  * fragment of a document. Various operations may take DocumentFragment objects
  * as arguments and results in all the child nodes of the DocumentFragment being
  * moved to the child list of this node.
- *
  * @param {Object} ownerDocument
  */
Index: /CKEditor/branches/features/adobeair/_source/core/dom/domobject.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/domobject.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/domobject.js	(revision 6062)
@@ -239,5 +239,9 @@
 
 	/**
-	 * @name CKEDITOR.dom.domObject.prototype.getCustomData
+	 * Gets an ID that can be used to identiquely identify this DOM object in
+	 * the running session.
+	 * @name CKEDITOR.dom.domObject.prototype.getUniqueId
+	 * @function
+	 * @returns {Number} A unique ID.
 	 */
 	domObjectProto.getUniqueId = function()
Index: /CKEditor/branches/features/adobeair/_source/core/dom/element.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/element.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/element.js	(revision 6062)
Index: /CKEditor/branches/features/adobeair/_source/core/dom/elementpath.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/elementpath.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/elementpath.js	(revision 6062)
@@ -28,4 +28,7 @@
 	};
 
+	/**
+	 * @class
+	 */
 	CKEDITOR.dom.elementPath = function( lastNode )
 	{
Index: /CKEditor/branches/features/adobeair/_source/core/dom/nodelist.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/nodelist.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/nodelist.js	(revision 6062)
@@ -4,4 +4,7 @@
 */
 
+/**
+ * @class
+ */
 CKEDITOR.dom.nodeList = function( nativeList )
 {
Index: /CKEditor/branches/features/adobeair/_source/core/dom/range.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/range.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/range.js	(revision 6062)
@@ -4,4 +4,7 @@
 */
 
+/**
+ * @class
+ */
 CKEDITOR.dom.range = function( document )
 {
@@ -1301,5 +1304,6 @@
 				}
 
-				var walker = new CKEDITOR.dom.walker( walkerRange );
+				var walker = new CKEDITOR.dom.walker( walkerRange ),
+					isBookmark = CKEDITOR.dom.walker.bookmark();
 
 				walker.evaluator = function( node )
@@ -1312,4 +1316,7 @@
 				walker.guard = function( node, movingOut )
 				{
+					if ( isBookmark( node ) )
+						return true;
+
 					// Stop when we're shrink in element mode while encountering a text node.
 					if ( mode == CKEDITOR.SHRINK_ELEMENT && node.type == CKEDITOR.NODE_TEXT )
Index: /CKEditor/branches/features/adobeair/_source/core/dom/rangelist.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/rangelist.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/rangelist.js	(revision 6062)
@@ -1,3 +1,3 @@
-/*
+﻿/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -41,5 +41,4 @@
 				var rangeList = this,
 					bookmark = CKEDITOR.dom.walker.bookmark(),
-					emptySpaces = CKEDITOR.dom.walker.whitespaces(),
 					guard = function( node ) { return ! ( node.is && node.is( 'tr' ) ); },
 						bookmarks = [],
@@ -114,9 +113,10 @@
 
 							range.moveToBookmark( bookmarks.shift() );
-							
+
+							var next;
 							// Merge ranges finally after moving to bookmarks.
 							while( mergeCount-- )
 							{
-								var next = rangeList[ ++current ];
+								next = rangeList[ ++current ];
 								next.moveToBookmark( bookmarks.shift() );
 								range.setEnd( next.endContainer, next.endOffset );
Index: /CKEditor/branches/features/adobeair/_source/core/dom/walker.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dom/walker.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/dom/walker.js	(revision 6062)
@@ -1,3 +1,3 @@
-/*
+﻿/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
Index: /CKEditor/branches/features/adobeair/_source/core/dtd.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/dtd.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/dtd.js	(revision 6062)
@@ -11,14 +11,13 @@
 
 /**
- * Holds and object representation of the HTML DTD to be used by the editor in
- * its internal operations.
- *
- * Each element in the DTD is represented by a
- * property in this object. Each property contains the list of elements that
- * can be contained by the element. Text is represented by the "#" property.
- *
+ * @namespace Holds and object representation of the HTML DTD to be used by the
+ * editor in its internal operations.<br />
+ * <br />
+ * Each element in the DTD is represented by a property in this object. Each
+ * property contains the list of elements that can be contained by the element.
+ * Text is represented by the "#" property.<br />
+ * <br />
  * Several special grouping properties are also available. Their names start
  * with the "$" character.
- * @namespace
  * @example
  * // Check if "div" can be contained in a "p" element.
@@ -82,6 +81,12 @@
 		$blockLimit : { body:1,div:1,td:1,th:1,caption:1,form:1 },
 
+		/**
+		 * List of inline (&lt;span&gt; like) elements.
+		 */
 		$inline : L,	// Just like span.
 
+		/**
+		 * list of elements that can be children at &lt;body&gt;.
+		 */
 		$body : X({script:1,style:1}, block),
 
Index: /CKEditor/branches/features/adobeair/_source/core/editor.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/editor.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/editor.js	(revision 6062)
@@ -119,8 +119,44 @@
 				'skins/' + skinName + '/' ) );
 
+		/**
+		 * The name of the skin used by this editor instance. The skin name can
+		 * be set though the {@link CKEDITOR.config.skin} setting.
+		 * @name CKEDITOR.editor.prototype.skinName
+		 * @type String
+		 * @example
+		 * alert( editor.skinName );  // "kama" (e.g.)
+		 */
 		editor.skinName = skinName;
+
+		/**
+		 * The full URL of the skin directory.
+		 * @name CKEDITOR.editor.prototype.skinPath
+		 * @type String
+		 * @example
+		 * alert( editor.skinPath );  // "http://example.com/ckeditor/skins/kama/" (e.g.)
+		 */
 		editor.skinPath = skinPath;
+
+		/**
+		 * The CSS class name used for skin identification purposes.
+		 * @name CKEDITOR.editor.prototype.skinClass
+		 * @type String
+		 * @example
+		 * alert( editor.skinClass );  // "cke_skin_kama" (e.g.)
+		 */
 		editor.skinClass = 'cke_skin_' + skinName;
 
+		/**
+		 * The <a href="http://en.wikipedia.org/wiki/Tabbing_navigation">tabbing
+		 * navigation</a> order that has been calculated for this editor
+		 * instance. This can be set by the {@link CKEDITOR.config.tabIndex}
+		 * setting or taken from the "tabindex" attribute of the
+		 * {@link #element} associated to the editor.
+		 * @name CKEDITOR.editor.prototype.tabIndex
+		 * @type Number
+		 * @default 0 (zero)
+		 * @example
+		 * alert( editor.tabIndex );  // "0" (e.g.)
+		 */
 		editor.tabIndex = editor.config.tabIndex || editor.element.getAttribute( 'tabindex' ) || 0;
 
@@ -136,6 +172,22 @@
 		CKEDITOR.lang.load( editor.config.language, editor.config.defaultLanguage, function( languageCode, lang )
 			{
+				/**
+				 * The code for the language resources that have been loaded
+				 * for the user internface elements of this editor instance.
+				 * @name CKEDITOR.editor.prototype.langCode
+				 * @type String
+				 * @example
+				 * alert( editor.langCode );  // "en" (e.g.)
+				 */
 				editor.langCode = languageCode;
 
+				/**
+				 * An object holding all language strings used by the editor
+				 * interface.
+				 * @name CKEDITOR.editor.prototype.lang
+				 * @type CKEDITOR.lang
+				 * @example
+				 * alert( editor.lang.bold );  // "Negrito" (e.g. if language is Portuguese)
+				 */
 				// As we'll be adding plugin specific entries that could come
 				// from different language code files, we need a copy of lang,
@@ -189,5 +241,12 @@
 				var languageFiles = [];
 
-				// Cache the loaded plugin names.
+				/**
+				 * And object holding references to all plugins used by this
+				 * editor istance.
+				 * @name CKEDITOR.editor.prototype.plugins
+				 * @type Object
+				 * @example
+				 * alert( editor.plugins.dialog.path );  // "http://example.com/ckeditor/plugins/dialog/" (e.g.)
+				 */
 				editor.plugins = plugins;
 
@@ -272,4 +331,11 @@
 		CKEDITOR.themes.load( theme, function()
 			{
+				/**
+				 * The theme used by this editor instance.
+				 * @name CKEDITOR.editor.prototype.theme
+				 * @type CKEDITOR.theme
+				 * @example
+				 * alert( editor.theme );  "http://example.com/ckeditor/themes/default/" (e.g.)
+				 */
 				var editorTheme = editor.theme = CKEDITOR.themes.get( theme );
 				editorTheme.path = CKEDITOR.themes.getPath( theme );
@@ -604,4 +670,14 @@
 		},
 
+		/**
+		 * Gets the "raw data" currently available in the editor. This is a
+		 * fast method which return the data as is, without processing, so it's
+		 * not recommended to use it on resulting pages. It can be used instead
+		 * combined with the {@link #loadSnapshot} so one can automatic save
+		 * the editor data from time to time while the user is using the
+		 * editor, to avoid data loss, without risking performance issues.
+		 * @example
+		 * alert( editor.getSnapshot() );
+		 */
 		getSnapshot : function()
 		{
@@ -618,4 +694,13 @@
 		},
 
+		/**
+		 * Loads "raw data" in the editor. This data is loaded with processing
+		 * straight to the editing area. It should not be used as a way to load
+		 * any kind of data, but instead in combination with
+		 * {@link #getSnapshot} produced data.
+		 * @example
+		 * var data = editor.getSnapshot();
+		 * editor.<b>loadSnapshot( data )</b>;
+		 */
 		loadSnapshot : function( snapshot )
 		{
@@ -685,4 +770,22 @@
 		},
 
+		/**
+		 * Checks whether the current editor contents present changes when
+		 * compared to the contents loaded into the editor at startup, or to
+		 * the contents available in the editor when {@link #resetDirty} has
+		 * been called.
+		 * @returns {Boolean} "true" is the contents present changes.
+		 * @example
+		 * function beforeUnload( e )
+		 * {
+		 *     if ( CKEDITOR.instances.editor1.<b>checkDirty()</b> )
+		 * 	        return e.returnValue = "You'll loose the changes made in the editor.";
+		 * }
+		 *
+		 * if ( window.addEventListener )
+		 *     window.addEventListener( 'beforeunload', beforeUnload, false );
+		 * else
+		 *     window.attachEvent( 'onbeforeunload', beforeUnload );
+		 */
 		checkDirty : function()
 		{
@@ -690,4 +793,13 @@
 		},
 
+		/**
+		 * Resets the "dirty state" of the editor so subsequent calls to
+		 * {@link #checkDirty} will return "false" if the user will not make
+		 * further changes to the contents.
+		 * @example
+		 * alert( editor.checkDirty() );  // "true" (e.g.)
+		 * editor.<b>resetDirty()</b>;
+		 * alert( editor.checkDirty() );  // "false"
+		 */
 		resetDirty : function()
 		{
@@ -764,3 +876,49 @@
  * @name CKEDITOR#pluginsLoaded
  * @event
+ * @param {CKEDITOR.editor} editor The editor instance that has been destroyed.
  */
+
+/**
+ * Fired before the command execution when {@link #execCommand} is called.
+ * @name CKEDITOR.editor#beforeCommandExec
+ * @event
+ * @param {CKEDITOR.editor} editor This editor instance.
+ * @param {String} data.name The command name.
+ * @param {Object} data.commandData The data to be sent to the command. This
+ *		can be manipulated by the event listener.
+ * @param {CKEDITOR.command} data.command The command itself.
+ */
+
+/**
+ * Fired after the command execution when {@link #execCommand} is called.
+ * @name CKEDITOR.editor#afterCommandExec
+ * @event
+ * @param {CKEDITOR.editor} editor This editor instance.
+ * @param {String} data.name The command name.
+ * @param {Object} data.commandData The data sent to the command.
+ * @param {CKEDITOR.command} data.command The command itself.
+ * @param {Object} data.returnValue The value returned by the command execution.
+ */
+
+/**
+ * Fired every custom configuration file is loaded, before the final
+ * configurations initialization.<br />
+ * <br />
+ * Custom configuration files can be loaded thorugh the
+ * {@link CKEDITOR.config.customConfig} setting. Several files can be loading
+ * by chaning this setting.
+ * @name CKEDITOR.editor#customConfigLoaded
+ * @event
+ * @param {CKEDITOR.editor} editor This editor instance.
+ * @example
+ */
+
+/**
+ * Fired once the editor configuration is ready (loaded and processed).
+ * @name CKEDITOR.editor#configLoaded
+ * @event
+ * @param {CKEDITOR.editor} editor This editor instance.
+ * @example
+ * if( editor.config.fullPage )
+ *     alert( 'This is a full page editor' );
+ */
Index: /CKEditor/branches/features/adobeair/_source/core/editor_basic.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/editor_basic.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/editor_basic.js	(revision 6062)
@@ -28,7 +28,7 @@
 
 	/**
-	 * Represents an editor instance. This constructor should be rarely used,
-	 * being the {@link CKEDITOR} methods preferible.
-	 * @constructor
+	 * Creates an editor class instance. This constructor should be rarely
+	 * used, in favor of the {@link CKEDITOR} editor creation functions.
+	 * @ class Represents an editor instance.
 	 * @param {Object} instanceConfig Configuration values for this specific
 	 *		instance.
@@ -36,5 +36,5 @@
 	 *		instance.
 	 * @param {Number} [mode] The mode in which the element is linked to this
-	 *		instance.
+	 *		instance. See {@link #elementMode}.
 	 * @param {String} [data] Since 3.3. Initial value for the instance.
 	 * @augments CKEDITOR.event
@@ -55,9 +55,9 @@
 		 * instance. It can be any of the following values:
 		 * <ul>
-		 * <li><b>CKEDITOR.ELEMENT_MODE_NONE</b>: No element is linked to the
+		 * <li>{@link CKEDITOR.ELEMENT_MODE_NONE}: No element is linked to the
 		 *		editor instance.</li>
-		 * <li><b>CKEDITOR.ELEMENT_MODE_REPLACE</b>: The element is to be
+		 * <li>{@link CKEDITOR.ELEMENT_MODE_REPLACE}: The element is to be
 		 *		replaced by the editor instance.</li>
-		 * <li><b>CKEDITOR.ELEMENT_MODE_APPENDTO</b>: The editor is to be
+		 * <li>{@link CKEDITOR.ELEMENT_MODE_APPENDTO}: The editor is to be
 		 *		created inside the element.</li>
 		 * </ul>
Index: /CKEditor/branches/features/adobeair/_source/core/env.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/env.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/env.js	(revision 6062)
@@ -12,7 +12,5 @@
 {
 	/**
-	 * Environment and browser information.
-	 * @namespace
-	 * @example
+	 * @namespace Environment and browser information.
 	 */
 	CKEDITOR.env = (function()
@@ -70,8 +68,30 @@
 			mac	: ( agent.indexOf( 'macintosh' ) > -1 ),
 
+			/**
+			 * Indicates that CKEditor is running on a quirks mode environemnt.
+			 * @type Boolean
+			 * @example
+			 * if ( CKEDITOR.env.quirks )
+			 *     alert( "Nooooo!" );
+			 */
 			quirks : ( document.compatMode == 'BackCompat' ),
 
+			/**
+			 * Indicates that CKEditor is running on a mobile like environemnt.
+			 * @type Boolean
+			 * @example
+			 * if ( CKEDITOR.env.mobile )
+			 *     alert( "I'm running with CKEditor today!" );
+			 */
 			mobile : ( agent.indexOf( 'mobile' ) > -1 ),
 
+			/**
+			 * Indicates that the browser has a custom domain enabled. This has
+			 * been set with "document.domain".
+			 * @returns {Boolean} "true" if a custom domain is enabled.
+			 * @example
+			 * if ( CKEDITOR.env.isCustomDomain() )
+			 *     alert( "I'm in a custom domain!" );
+			 */
 			isCustomDomain : function()
 			{
@@ -106,10 +126,21 @@
 
 			/**
-			 *  Indicate IE8 browser.
+			 * Indicates that CKEditor is running on Internet Explorer 8.
+			 * @name CKEDITOR.env.ie8
+			 * @type Boolean
+			 * @example
+			 * if ( CKEDITOR.env.ie8 )
+			 *     alert( "I'm on IE8!" );
 			 */
 			env.ie8 = !!document.documentMode;
 
 			/**
-			 * Indicte IE8 document mode.
+			 * Indicates that CKEditor is running on Internet Explorer 8 on
+			 * standards mode.
+			 * @name CKEDITOR.env.ie8Compat
+			 * @type Boolean
+			 * @example
+			 * if ( CKEDITOR.env.ie8Compat )
+			 *     alert( "Now I'm on IE8, for real!" );
 			 */
 			env.ie8Compat = document.documentMode == 8;
@@ -118,5 +149,9 @@
 			 * Indicates that CKEditor is running on an IE7-like environment, which
 			 * includes IE7 itself and IE8's IE7 document mode.
-			 * @type Boolean
+			 * @name CKEDITOR.env.ie7Compat
+			 * @type Boolean
+			 * @example
+			 * if ( CKEDITOR.env.ie8Compat )
+			 *     alert( "I'm on IE7 or on an IE7 like IE8!" );
 			 */
 			env.ie7Compat = ( ( version == 7 && !document.documentMode )
@@ -126,4 +161,5 @@
 			 * Indicates that CKEditor is running on an IE6-like environment, which
 			 * includes IE6 itself and IE7 and IE8 quirks mode.
+			 * @name CKEDITOR.env.ie6Compat
 			 * @type Boolean
 			 * @example
@@ -132,5 +168,4 @@
 			 */
 			env.ie6Compat = ( version < 7 || env.quirks );
-
 		}
 
@@ -161,10 +196,10 @@
 
 		/**
-		 * Contains the browser version.
-		 *
+		 * Contains the browser version.<br />
+		 * <br />
 		 * For gecko based browsers (like Firefox) it contains the revision
 		 * number with first three parts concatenated with a padding zero
-		 * (e.g. for revision 1.9.0.2 we have 10900).
-		 *
+		 * (e.g. for revision 1.9.0.2 we have 10900).<br />
+		 * <br />
 		 * For webkit based browser (like Safari and Chrome) it contains the
 		 * WebKit build version (e.g. 522).
@@ -194,6 +229,12 @@
 			false );
 
-		// The CSS class to be appended on the main UI containers, making it
-		// easy to apply browser specific styles to it.
+		/**
+		 * The CSS class to be appended on the main UI containers, making it
+		 * easy to apply browser specific styles to it.
+		 * @name CKEDITOR.env.cssClass
+		 * @type String
+		 * @example
+		 * myDiv.className = CKEDITOR.env.cssClass;
+		 */
 		env.cssClass =
 			'cke_browser_' + (
Index: /CKEditor/branches/features/adobeair/_source/core/event.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/event.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/event.js	(revision 6062)
@@ -12,7 +12,13 @@
 {
 	/**
-	 * This is a base class for classes and objects that require event handling
-	 * features.
-	 * @constructor
+	 * Creates an event class instance. This constructor is rearely used, being
+	 * the {@link #.implementOn} function used in class prototypes directly
+	 * instead.
+	 * @class This is a base class for classes and objects that require event
+	 * handling features.<br />
+	 * <br />
+	 * Do not confuse this class with {@link CKEDITOR.dom.event} which is
+	 * instead used for DOM events. The CKEDITOR.event class implements the
+	 * internal event system used by the CKEditor to fire API related events.
 	 * @example
 	 */
@@ -22,5 +28,5 @@
 	/**
 	 * Implements the {@link CKEDITOR.event} features in an object.
-	 * @param {Object} targetObject The object in which implement the features.
+	 * @param {Object} targetObject The object into which implement the features.
 	 * @example
 	 * var myObject = { message : 'Example' };
@@ -32,5 +38,5 @@
 	 * myObject.fire( 'testEvent' );
 	 */
-	CKEDITOR.event.implementOn = function( targetObject, isTargetPrototype )
+	CKEDITOR.event.implementOn = function( targetObject )
 	{
 		var eventProto = CKEDITOR.event.prototype;
Index: /CKEditor/branches/features/adobeair/_source/core/eventInfo.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/eventInfo.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/eventInfo.js	(revision 6062)
@@ -11,9 +11,9 @@
 
 /**
- * This class is not really part of the API. It just illustrates the features
- * of the event object passed to event listeners by a {@link CKEDITOR.event}
- * based object.
+ * (Virtual Class) Do not call this constructor. This class is not really part
+ * of the API.
+ * @class Virtual class that illustrates the features of the event object to be
+ * passed to event listeners by a {@link CKEDITOR.event} based object.
  * @name CKEDITOR.eventInfo
- * @constructor
  * @example
  * // Do not do this.
Index: /CKEditor/branches/features/adobeair/_source/core/focusmanager.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/focusmanager.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/focusmanager.js	(revision 6062)
@@ -10,9 +10,12 @@
 
 /**
- * Manages the focus activity in an editor instance. This class is to be used
- * mainly by UI elements coders when adding interface elements to CKEditor.
- * @constructor
+ * Creates a focusManager class instance.
+ * @class Manages the focus activity in an editor instance. This class is to be
+ * used mainly by UI elements coders when adding interface elements that need
+ * to set the focus state of the editor.
  * @param {CKEDITOR.editor} editor The editor instance.
  * @example
+ * var focusManager = <b>new CKEDITOR.focusManager( editor )</b>;
+ * focusManager.focus();
  */
 CKEDITOR.focusManager = function( editor )
@@ -44,7 +47,8 @@
 {
 	/**
-	 * Indicates that the editor instance has the focus.
-	 *
-	 * This function is not used to set the focus in the editor. Use
+	 * Used to indicate that the editor instance has the focus.<br />
+	 * <br />
+	 * Note that this function will not explicitelly set the focus in the
+	 * editor (for example, making the caret blinking on it). Use
 	 * {@link CKEDITOR.editor#focus} for it instead.
 	 * @example
@@ -77,8 +81,9 @@
 
 	/**
-	 * Indicates that the editor instance has lost the focus. Note that this
-	 * functions acts asynchronously with a delay of 100ms to avoid subsequent
-	 * blur/focus effects. If you want the "blur" to happen immediately, use
-	 * the {@link #forceBlur} function instead.
+	 * Used to indicate that the editor instance has lost the focus.<br />
+	 * <br />
+	 * Note that this functions acts asynchronously with a delay of 100ms to
+	 * avoid subsequent blur/focus effects. If you want the "blur" to happen
+	 * immediately, use the {@link #forceBlur} function instead.
 	 * @example
 	 * var editor = CKEDITOR.instances.editor1;
@@ -102,5 +107,5 @@
 
 	/**
-	 * Indicates that the editor instance has lost the focus. Unlike
+	 * Used to indicate that the editor instance has lost the focus. Unlike
 	 * {@link #blur}, this function is synchronous, marking the instance as
 	 * "blured" immediately.
@@ -128,4 +133,9 @@
  * @event
  * @param {CKEDITOR.editor} editor The editor instance.
+ * @example
+ * editor.on( 'focus', function( e )
+ *     {
+ *         alert( 'The editor named ' + e.editor.name + ' is now focused' );
+ *     });
  */
 
@@ -135,3 +145,8 @@
  * @event
  * @param {CKEDITOR.editor} editor The editor instance.
+ * @example
+ * editor.on( 'blur', function( e )
+ *     {
+ *         alert( 'The editor named ' + e.editor.name + ' lost the focus' );
+ *     });
  */
Index: /CKEditor/branches/features/adobeair/_source/core/htmlparser.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/htmlparser.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/htmlparser.js	(revision 6062)
@@ -5,7 +5,13 @@
 
 /**
- * HTML text parser.
- * @constructor
+ * Creates a {@link CKEDITOR.htmlParser} class instance.
+ * @class Provides an "event like" system to parse strings of HTML data.
  * @example
+ * var parser = new CKEDITOR.htmlParser();
+ * parser.onTagOpen = function( tagName, attributes, selfClosing )
+ *     {
+ *         alert( tagName );
+ *     };
+ * parser.parse( '&lt;p&gt;Some &lt;b&gt;text&lt;/b&gt;.&lt;/p&gt;' );
  */
 CKEDITOR.htmlParser = function()
@@ -93,5 +99,5 @@
 		 * @example
 		 * var parser = new CKEDITOR.htmlParser();
-		 * parser.onText = function( comment )
+		 * parser.onComment = function( comment )
 		 *     {
 		 *         alert( comment );  // e.g. " Example "
Index: /CKEditor/branches/features/adobeair/_source/core/imagecacher.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/imagecacher.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/imagecacher.js	(revision 6062)
@@ -24,7 +24,5 @@
 
 	/**
-	 * Load images into the browser cache.
-	 * @namespace
-	 * @example
+	 * @namespace Load images into the browser cache.
 	 */
  	CKEDITOR.imageCacher =
@@ -32,9 +30,19 @@
 		/**
 		 * Loads one or more images.
-		 * @param {Array} images The URLs for the images to be loaded.
-		 * @param {Function} callback The optional function to be called once all images
-		 *		are loaded. You can bind any function to the returned event object.
-		 * @return {CKEDITOR.event} Event object which fires 'preloaded' event when all images finished.
-		 *    Additionally it set "finished" property flag after 'preloaded' event.
+		 * @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 )
@@ -43,17 +51,17 @@
 
 			var event = new CKEDITOR.event;
-			event.on( 'preloaded', function()
-			{
-				event.finished = true;
-			});
-			
+			event.on( 'loaded', function()
+				{
+					event.finished = 1;
+				});
+
 			if ( callback )
-				event.on( 'preloaded', callback );
+				event.on( 'loaded', callback );
 
 			var checkPending = function()
-			{
-				if ( --pendingCount === 0 )
-					event.fire( 'preloaded' );
-			};
+				{
+					if ( --pendingCount === 0 )
+						event.fire( 'loaded' );
+				};
 
 			for ( var i = 0 ; i < images.length ; i++ )
Index: /CKEditor/branches/features/adobeair/_source/core/lang.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/lang.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/lang.js	(revision 6062)
@@ -8,4 +8,7 @@
 	var loadedLangs = {};
 
+	/**
+	 * @namespace Holds language related functions.
+	 */
 	CKEDITOR.lang =
 	{
@@ -82,10 +85,9 @@
 		 * then called when the file gets loaded.
 		 * @param {String} languageCode The code of the language file to be
-		 *		loaded. If "autoDetect" is set to true, this language will be
-		 *		used as the default one, if the detect language is not
-		 *		available in the core.
-		 * @param {Boolean} autoDetect Indicates that the function must try to
-		 *		detect the user language and load it instead.
-		 * @param {Function} callback The function to be called once the
+		 *		loaded. If null or empty, autodetection will be performed. The
+		 *		same happens if the language is not supported.
+		 * @param {String} defaultLanguage The language to be used if
+		 *		languageCode is not supported or if the autodetection fails.
+		 * @param {Function} callback A function to be called once the
 		 *		language file is loaded. Two parameters are passed to this
 		 *		function: the language code and the loaded language entries.
@@ -122,4 +124,6 @@
 		 * @param {String} defaultLanguage The default language to be returned
 		 *		if the user language is not supported.
+		 * @param {String} [probeLanguage] A language code to try to use,
+		 *		instead of the browser based autodetection.
 		 * @returns {String} The detected language code.
 		 * @example
Index: /CKEditor/branches/features/adobeair/_source/core/skins.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/core/skins.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/core/skins.js	(revision 6062)
@@ -71,5 +71,5 @@
 			{
 				// Bind listener for this editor instance.
-				preloaded[ skinName ].on( 'preloaded', function()
+				preloaded[ skinName ].on( 'loaded', function()
 					{
 						loadPart( editor, skinName, part, callback );
Index: /CKEditor/branches/features/adobeair/_source/plugins/basicstyles/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/basicstyles/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/basicstyles/plugin.js	(revision 6062)
@@ -30,5 +30,5 @@
 		};
 
-		var config = editor.config, 
+		var config = editor.config,
 			lang = editor.lang;
 
Index: /CKEditor/branches/features/adobeair/_source/plugins/bidi/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/bidi/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/bidi/plugin.js	(revision 6062)
@@ -1,3 +1,3 @@
-/*
+﻿/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -6,9 +6,9 @@
 (function()
 {
-	var guardElements = { table:1, tbody: 1, tr:1, ul:1, ol:1, blockquote:1, div:1 },
+	var guardElements = { table:1, tbody: 1, ul:1, ol:1, blockquote:1, div:1, tr: 1 },
 		directSelectionGuardElements = {},
 		// All guard elements which can have a direction applied on them.
 		allGuardElements = {};
-	CKEDITOR.tools.extend( directSelectionGuardElements, guardElements, { p:1, div:1, li:1 } );
+	CKEDITOR.tools.extend( directSelectionGuardElements, guardElements, { tr:1, p:1, div:1, li:1 } );
 	CKEDITOR.tools.extend( allGuardElements, directSelectionGuardElements, { td:1 } );
 
@@ -50,5 +50,5 @@
 			chromeRoot = editor.container.getChild( 1 ),
 			directionNode = getElementForDirection( evt.data.path.lastElement );
-		
+
 		if ( directionNode && editor.lang.dir != directionNode.getComputedStyle( 'direction' ) )
 			chromeRoot.addClass( 'cke_mixed_dir_content' );
@@ -94,5 +94,5 @@
 
 		var useComputedState = ( 'useComputedState' in editor.config ) ? editor.config.useComputedState : 1;
-		
+
 		var elementDir = useComputedState ? element.getComputedStyle( 'direction' )
 			: element.getStyle( 'direction' ) || element.hasAttribute( 'dir' );
@@ -108,5 +108,5 @@
 		element.removeStyle( 'direction' );
 
-		// Do the second check when computed state is ON, to check 
+		// Do the second check when computed state is ON, to check
 		// if we need to apply explicit direction on this element.
 		if ( useComputedState )
Index: /CKEditor/branches/features/adobeair/_source/plugins/contextmenu/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/contextmenu/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/contextmenu/plugin.js	(revision 6062)
@@ -225,4 +225,17 @@
 				},
 				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 )
Index: /CKEditor/branches/features/adobeair/_source/plugins/dialog/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/dialog/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/dialog/plugin.js	(revision 6062)
@@ -996,6 +996,6 @@
 			var selected = this._.tabs[ id ];
 			selected[ 0 ].addClass( 'cke_dialog_tab_selected' );
-			
-			// [IE] an invisible input[type='text'] will enlarge it's width 
+
+			// [IE] an invisible input[type='text'] will enlarge it's width
 			// if it's value is long when it shows, so we clear it's value
 			// before it shows and then recover it (#5649)
Index: /CKEditor/branches/features/adobeair/_source/plugins/domiterator/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/domiterator/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/domiterator/plugin.js	(revision 6062)
@@ -1,3 +1,3 @@
-/*
+﻿/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -66,5 +66,5 @@
 
 				var walker = new CKEDITOR.dom.walker( range ),
-					ignoreBookmarkTextEvaluator = CKEDITOR.dom.walker.bookmark( false, true );
+					ignoreBookmarkTextEvaluator = CKEDITOR.dom.walker.bookmark( true, true );
 				// Avoid anchor inside bookmark inner text.
 				walker.evaluator = ignoreBookmarkTextEvaluator;
Index: /CKEditor/branches/features/adobeair/_source/plugins/floatpanel/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/floatpanel/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/floatpanel/plugin.js	(revision 6062)
@@ -124,5 +124,6 @@
 				element.setStyles(
 					{
-						top : '-30000px',
+						top : 0,
+						left: 0,
 						display	: ''
 					});
@@ -278,5 +279,5 @@
 
 							// Trigger the onHide event of the previously active panel to prevent
-							// incorrect styles from being applied (#6170) 
+							// incorrect styles from being applied (#6170)
 							var innerElement = element.getFirst(),
 								activePanel;
@@ -318,5 +319,5 @@
 					this.element.setStyle( 'display', 'none' );
 					this.visible = 0;
-					this.element.getFirst().removeCustomData( 'activePanel' ); 
+					this.element.getFirst().removeCustomData( 'activePanel' );
 				}
 			},
Index: /CKEditor/branches/features/adobeair/_source/plugins/indent/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/indent/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/indent/plugin.js	(revision 6062)
@@ -1,3 +1,3 @@
-/*
+﻿/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -79,7 +79,7 @@
 
 	// Returns the CSS property to be used for identing a given element.
-	function getIndentCssProperty( element )
-	{
-		return element.getComputedStyle( 'direction' ) == 'ltr' ? 'margin-left' : 'margin-right';
+	function getIndentCssProperty( element, dir )
+	{
+		return ( dir || element.getComputedStyle( 'direction' ) ) == 'ltr' ? 'margin-left' : 'margin-right';
 	}
 
@@ -158,6 +158,5 @@
 				// Convert the array back to a DOM forest (yes we might have a few subtrees now).
 				// And replace the old list with the new forest.
-				var newListDir = listNode.getAttribute( 'dir' ) || listNode.getStyle( 'direction' );
-				var newList = CKEDITOR.plugins.list.arrayToList( listArray, database, null, editor.config.enterMode, newListDir );
+				var newList = CKEDITOR.plugins.list.arrayToList( listArray, database, null, editor.config.enterMode, listNode.getDirection() );
 
 				// Avoid nested <li> after outdent even they're visually same,
@@ -221,5 +220,5 @@
 			}
 
-			function indentElement( element )
+			function indentElement( element, dir )
 			{
 				if ( element.getCustomData( 'indent_processed' ) )
@@ -257,5 +256,5 @@
 				else
 				{
-					var indentCssProperty = getIndentCssProperty( element ),
+					var indentCssProperty = getIndentCssProperty( element, dir ),
 						currentOffset = parseInt( element.getStyle( indentCssProperty ), 10 );
 					if ( isNaN( currentOffset ) )
@@ -283,17 +282,9 @@
 				range;
 
-			var skipBookmarks = CKEDITOR.dom.walker.bookmark( 0, 1 );
 
 			var iterator = ranges.createIterator();
 			while ( ( range = iterator.getNextRange() ) )
 			{
-				// Do not indent body. (#6138)
-				range.shrink( CKEDITOR.SHRINK_ELEMENT );
-				if ( range.endContainer.getName() == 'body' )
-					range.setEndAt( range.endContainer.getLast( skipBookmarks ), CKEDITOR.POSITION_BEFORE_END );
-
-				var startContainer = range.startContainer,
-					endContainer = range.endContainer,
-					rangeRoot = range.getCommonAncestor(),
+				var rangeRoot = range.getCommonAncestor(),
 					nearestListBlock = rangeRoot;
 
@@ -302,8 +293,23 @@
 					nearestListBlock = nearestListBlock.getParent();
 
+				// Avoid having selection enclose the entire list. (#6138)
+				// [<ul><li>...</li></ul>] =><ul><li>[...]</li></ul>
+				if ( !nearestListBlock )
+				{
+					var selectedNode = range.getEnclosedNode();
+					if ( selectedNode
+						&& selectedNode.type == CKEDITOR.NODE_ELEMENT
+						&& selectedNode.getName() in listNodeNames)
+					{
+						range.setStartAt( selectedNode, CKEDITOR.POSITION_AFTER_START );
+						range.setEndAt( selectedNode, CKEDITOR.POSITION_BEFORE_END );
+						nearestListBlock = selectedNode;
+					}
+				}
+
 				// Avoid selection anchors under list root.
 				// <ul>[<li>...</li>]</ul> =>	<ul><li>[...]</li></ul>
-				if ( nearestListBlock && startContainer.type == CKEDITOR.NODE_ELEMENT
-					&& startContainer.getName() in listNodeNames )
+				if ( nearestListBlock && range.startContainer.type == CKEDITOR.NODE_ELEMENT
+					&& range.startContainer.getName() in listNodeNames )
 				{
 					var walker = new CKEDITOR.dom.walker( range );
@@ -312,6 +318,6 @@
 				}
 
-				if ( nearestListBlock && endContainer.type == CKEDITOR.NODE_ELEMENT
-					&& endContainer.getName() in listNodeNames )
+				if ( nearestListBlock && range.endContainer.type == CKEDITOR.NODE_ELEMENT
+					&& range.endContainer.getName() in listNodeNames )
 				{
 					walker = new CKEDITOR.dom.walker( range );
@@ -322,8 +328,6 @@
 				if ( nearestListBlock )
 				{
-					var firstListItem = nearestListBlock.getFirst( function( node )
-						{
-							return node.type == CKEDITOR.NODE_ELEMENT && node.is( 'li' );
-						}),
+					var firstListItem = nearestListBlock.getFirst( isListItem ),
+						hasMultipleItems = !!firstListItem.getNext( isListItem ),
 						rangeStart = range.startContainer,
 						indentWholeList = firstListItem.equals( rangeStart ) || firstListItem.contains( rangeStart );
@@ -333,5 +337,5 @@
 					if ( !( indentWholeList &&
 						( self.name == 'indent' || self.useIndentClasses || parseInt( nearestListBlock.getStyle( getIndentCssProperty( nearestListBlock ) ), 10 ) ) &&
-							indentElement( nearestListBlock ) ) )
+							indentElement( nearestListBlock, !hasMultipleItems && firstListItem.getDirection() ) ) )
 								indentList( nearestListBlock );
 				}
@@ -391,5 +395,5 @@
 				range.setStartBefore( e.data );
 				range.setEndAfter( e.data );
-				
+
 				var walker = new CKEDITOR.dom.walker( range ),
 					node;
Index: /CKEditor/branches/features/adobeair/_source/plugins/justify/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/justify/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/justify/plugin.js	(revision 6062)
@@ -94,5 +94,5 @@
 			node;
 
-		while ( node = walker.next() )
+		while ( ( node = walker.next() ) )
 		{
 			if ( node.type == CKEDITOR.NODE_ELEMENT )
Index: /CKEditor/branches/features/adobeair/_source/plugins/list/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/list/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/list/plugin.js	(revision 6062)
@@ -89,4 +89,5 @@
 					{
 						rootNode = listArray[ currentIndex ].parent.clone( false, 1 );
+						dir && rootNode.setAttribute( 'dir', dir );
 						retval.append( rootNode );
 					}
@@ -293,5 +294,5 @@
 					listContents.push( contentNode );
 
-					// Determine the lists's direction. 
+					// Determine the lists's direction.
 					if ( !explicitDirection && contentNode.getDirection() )
 						explicitDirection = 1;
@@ -341,5 +342,5 @@
 					contentBlock.removeAttribute( 'dir' );
 				}
-				
+
 				contentBlock.copyAttributes( listItem );
 				contentBlock.moveChildren( listItem );
Index: /CKEditor/branches/features/adobeair/_source/plugins/maximize/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/maximize/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/maximize/plugin.js	(revision 6062)
@@ -196,5 +196,5 @@
 							// Hide scroll bars.
 							var viewPaneSize = mainWindow.getViewPaneSize();
-							var styles = 
+							var styles =
 								{
 									overflow : 'hidden',
@@ -202,5 +202,5 @@
 									height : ( CKEDITOR.env.opera ? viewPaneSize.height - 16 : 0 ) + 'px'
 								};
-							
+
 							if ( CKEDITOR.env.ie )
 							{
@@ -212,5 +212,5 @@
 								mainDocument.getBody().setStyles( styles );
 							}
-							
+
 							// #4023: [Opera] Maximize plugin
 							if ( CKEDITOR.env.opera )
Index: /CKEditor/branches/features/adobeair/_source/plugins/panel/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/panel/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/panel/plugin.js	(revision 6062)
@@ -166,5 +166,5 @@
 				win.$.CKEDITOR = CKEDITOR;
 
-				// Arrow keys for scrolling is only preventable with 'keypress' event in Opera (#4534).  
+				// Arrow keys for scrolling is only preventable with 'keypress' event in Opera (#4534).
 				doc.on( 'key' + ( CKEDITOR.env.opera? 'press':'down' ), function( evt )
 					{
@@ -315,5 +315,5 @@
 			// Safari need focus on the iframe window first(#3389), but we need
 			// lock the blur to avoid hiding the panel.
-			if ( CKEDITOR.env.webkit )
+			if ( CKEDITOR.env.webkit || CKEDITOR.env.opera )
 				item.getDocument().getWindow().focus();
 			item.focus();
Index: /CKEditor/branches/features/adobeair/_source/plugins/panelbutton/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/panelbutton/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/panelbutton/plugin.js	(revision 6062)
@@ -94,5 +94,5 @@
 
 				var panelDefinition = this._.panelDefinition || {},
-					 panelBlockDefinition = this._.panelDefinition.block,
+					panelBlockDefinition = this._.panelDefinition.block,
 					panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(),
 					panel = this._.panel = new CKEDITOR.ui.floatPanel( editor, panelParentElement, panelDefinition ),
@@ -105,5 +105,4 @@
 							this.element.getFirst().addClass( me.className + '_panel' );
 
-						_.oldState = me._.state;
 						me.setState( CKEDITOR.TRISTATE_ON );
 
@@ -119,5 +118,5 @@
 							this.element.getFirst().removeClass( me.className + '_panel' );
 
-						me.setState( _.oldState );
+						me.setState( me.modes && me.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );
 
 						_.on = 0;
@@ -137,8 +136,8 @@
 
 				block.onHide = function()
-						{
-								_.on = 0;
-								me.setState( CKEDITOR.TRISTATE_OFF );
-						};
+					{
+						_.on = 0;
+						me.setState( CKEDITOR.TRISTATE_OFF );
+					};
 			}
 		}
Index: /CKEditor/branches/features/adobeair/_source/plugins/scayt/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/scayt/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/scayt/plugin.js	(revision 6062)
@@ -1,3 +1,3 @@
-/*
+﻿/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
Index: /CKEditor/branches/features/adobeair/_source/plugins/selection/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/selection/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/selection/plugin.js	(revision 6062)
@@ -887,10 +887,12 @@
 							if ( !node || node.type != CKEDITOR.NODE_ELEMENT )
 								node = range.startContainer;
-
-							var child = node.getFirst();
-							while (  child && child.type == CKEDITOR.NODE_ELEMENT )
-							{
-								node = child;
-								child = child.getFirst();
+							else
+							{
+								var child = node.getFirst();
+								while (  child && child.type == CKEDITOR.NODE_ELEMENT )
+								{
+									node = child;
+									child = child.getFirst();
+								}
 							}
 						}
Index: /CKEditor/branches/features/adobeair/_source/plugins/smiley/dialogs/smiley.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/smiley/dialogs/smiley.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/smiley/dialogs/smiley.js	(revision 6062)
@@ -1,3 +1,3 @@
-/*
+﻿/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
Index: /CKEditor/branches/features/adobeair/_source/plugins/sourcearea/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/sourcearea/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/sourcearea/plugin.js	(revision 6062)
@@ -1,3 +1,3 @@
-/*
+﻿/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -72,15 +72,4 @@
 								win.on( 'resize', onResize );
 								setTimeout( onResize, 0 );
-							}
-							// As we prevent click to put focus on editor container,
-							// while 'mousedown' inside <textarea> is also captured,
-							// but we must stop the even propagation, otherwise
-							// it's not possible to place the caret inside of it (non IE and IE9).
-							if ( document.addEventListener )
-							{
-								textarea.on( 'mousedown', function( evt )
-									{
-										evt.data.stopPropagation();
-									} );
 							}
 
Index: /CKEditor/branches/features/adobeair/_source/plugins/styles/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/styles/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/styles/plugin.js	(revision 6062)
@@ -1,3 +1,3 @@
-/*
+﻿/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -1354,5 +1354,7 @@
 	{
 		var selection = document.getSelection(),
-			ranges = selection.getRanges( true ),
+			// Bookmark the range so we can re-select it after processing.
+			bookmarks = selection.createBookmarks( 1 ),
+			ranges = selection.getRanges( 1 ),
 			func = remove ? this.removeFromRange : this.applyToRange,
 			range;
@@ -1362,5 +1364,11 @@
 			func.call( this, range );
 
-		selection.selectRanges( ranges );
+		if ( bookmarks.length == 1 && bookmarks[0].collapsed )
+		{
+			selection.selectRanges( ranges );
+			document.getById( bookmarks[ 0 ].startNode ).remove();
+		}
+		else
+			selection.selectBookmarks( bookmarks );
 	}
 })();
Index: /CKEditor/branches/features/adobeair/_source/plugins/toolbar/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/toolbar/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/toolbar/plugin.js	(revision 6062)
@@ -160,5 +160,5 @@
 						var labelId = CKEDITOR.tools.getNextId();
 
-						var output = [ '<div class="cke_toolbox" role="toolbar" aria-labelledby="', labelId, '"' ],
+						var output = [ '<div class="cke_toolbox" role="toolbar" aria-labelledby="', labelId, '" onmousedown="return false;"' ],
 							expanded =  editor.config.toolbarStartupExpanded !== false,
 							groupStarted;
Index: /CKEditor/branches/features/adobeair/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/plugins/wysiwygarea/plugin.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/plugins/wysiwygarea/plugin.js	(revision 6062)
@@ -659,5 +659,5 @@
 								else if ( CKEDITOR.env.opera )
 									doc.getBody().focus();
-								// Webkit needs focus for the first time on the HTML element.
+								// Webkit needs focus for the first time on the HTML element. (#6153)
 								else if ( CKEDITOR.env.webkit )
 								{
@@ -666,13 +666,4 @@
 										editor.document.getDocumentElement().focus();
 										wasFocused = 1;
-
-										// Webkit does not scroll to the cursor position after first focus.
-										setTimeout(function()
-										{
-											doc.$.execCommand( 'inserthtml', false, '<span id="cke_focus_marker" cke_temp="1"></span>' );
-											var marker = doc.getById( 'cke_focus_marker' );
-											marker.scrollIntoView();
-											marker.remove();
-										}, 0 );
 									}
 								}
Index: /CKEditor/branches/features/adobeair/_source/themes/default/theme.js
===================================================================
--- /CKEditor/branches/features/adobeair/_source/themes/default/theme.js	(revision 6061)
+++ /CKEditor/branches/features/adobeair/_source/themes/default/theme.js	(revision 6062)
@@ -3,4 +3,9 @@
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */
+
+/**
+ * @name CKEDITOR.theme
+ * @class
+ */
 
 CKEDITOR.themes.add( 'default', (function()
@@ -66,5 +71,5 @@
 	}
 
-	return {
+	return /** @lends CKEDITOR.theme */ {
 		build : function( editor, themePath )
 		{
@@ -114,5 +119,4 @@
 				'<span' +
 					' id="cke_', name, '"' +
-					' onmousedown="return false;"' +
 					' class="', editor.skinClass, ' ', editor.id, ' cke_editor_', name, '"' +
 					' dir="', editor.lang.dir, '"' +
Index: /CKEditor/branches/features/adobeair/contents.css
===================================================================
--- /CKEditor/branches/features/adobeair/contents.css	(revision 6061)
+++ /CKEditor/branches/features/adobeair/contents.css	(revision 6062)
@@ -24,4 +24,6 @@
 	/* #6341: The text cursor must be set on the editor area. */
 	cursor: text;
+	/* #6632: Avoid having "text" shape of cursor in IE7 scrollbars.*/
+	*cursor:auto;
 }
 
