Index: CKEditor/branches/features/adobeair/_source/plugins/adobeair/plugin.js
===================================================================
--- CKEditor/branches/features/adobeair/_source/plugins/adobeair/plugin.js	(revision 6063)
+++ CKEditor/branches/features/adobeair/_source/plugins/adobeair/plugin.js	(revision 6064)
@@ -107,4 +107,5 @@
 			editor.sharedtop && convertInlineHandlers( editor.sharedtop );
 			editor.sharedbottom && convertInlineHandlers( editor.sharedbottom );
+			editor.on( 'elementsPathUpdate', function( evt ) { convertInlineHandlers( evt.data ); } );
 		} );
 
Index: CKEditor/branches/features/adobeair/_source/plugins/elementspath/plugin.js
===================================================================
--- CKEditor/branches/features/adobeair/_source/plugins/elementspath/plugin.js	(revision 6063)
+++ CKEditor/branches/features/adobeair/_source/plugins/elementspath/plugin.js	(revision 6064)
@@ -1,3 +1,3 @@
-﻿/*
+/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -57,4 +57,53 @@
 				});
 
+			function onClick( elementIndex )
+			{
+				editor.focus();
+				var element = editor._.elementsPath.list[ elementIndex ];
+				editor.getSelection().selectElement( element );
+			}
+
+			var onClickHanlder = CKEDITOR.tools.addFunction( onClick ),
+					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;
+
+						 //default :
+						 //	alert( ev.getKeystroke() );
+						}
+						return true;
+					});
+
 			editor.on( 'selectionChange', function( ev )
 				{
@@ -113,7 +162,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 +178,7 @@
 					}
 
-					getSpaceElement().setHtml( html.join('') + emptyHtml );
+					var space = getSpaceElement();
+					space.setHtml( html.join('') + emptyHtml );
+					editor.fire( 'elementsPathUpdate', space );
 				});
 
@@ -143,64 +194,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 ];
-		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;
-	}
-};
