Index: /CKEditor/branches/features/aria/_source/plugins/dialog/plugin.js
===================================================================
--- /CKEditor/branches/features/aria/_source/plugins/dialog/plugin.js	(revision 5067)
+++ /CKEditor/branches/features/aria/_source/plugins/dialog/plugin.js	(revision 5068)
@@ -422,5 +422,16 @@
 					this._.currentFocusIndex = -1;
 					setupFocus();
-					changeFocus( true );
+
+					// Decide where to put the initial focus.
+					if ( definition.onFocus )
+					{
+						var initialFocus = definition.onFocus.call( this );
+						// Focus the field that the user specified.
+						initialFocus && initialFocus.focus();
+					}
+					// Focus the first field in layout order.
+					else
+						changeFocus( true );
+
 					/*
 					 * IE BUG: If the initial focus went into a non-text element (e.g. button),
Index: /CKEditor/branches/features/aria/_source/plugins/dialogui/plugin.js
===================================================================
--- /CKEditor/branches/features/aria/_source/plugins/dialogui/plugin.js	(revision 5067)
+++ /CKEditor/branches/features/aria/_source/plugins/dialogui/plugin.js	(revision 5068)
@@ -768,5 +768,6 @@
 
 					// Look for focus function in definition.
-					if ( elementDefinition.focus )
+					var focus = elementDefinition.focus;
+					if ( focus )
 					{
 						var oldFocus = this.focus;
@@ -774,5 +775,5 @@
 						{
 							oldFocus.call( this );
-							elementDefinition.focus.call( this );
+							typeof focus == 'function' && focus.call( this );
 							this.fire( 'focus' );
 						};
Index: /CKEditor/branches/features/aria/_source/plugins/link/dialogs/link.js
===================================================================
--- /CKEditor/branches/features/aria/_source/plugins/link/dialogs/link.js	(revision 5067)
+++ /CKEditor/branches/features/aria/_source/plugins/link/dialogs/link.js	(revision 5068)
@@ -476,9 +476,4 @@
 											this.allowOnChange = true;
 
-											// Raise the tab order of this field to top in case of URL.
-											var linkType = this.getDialog().getContentElement( 'info', 'linkType' );
-											if ( linkType && linkType.getValue() == 'url' )
-												this.tabIndex = 1;
-
 										},
 										commit : function( data )
@@ -615,5 +610,6 @@
 								style : 'text-align: center;',
 								html : '<div role="label" tabIndex="-1">' + CKEDITOR.tools.htmlEncode( editor.lang.link.noAnchors ) + '</div>',
-								focus : function(){},
+								// Focus the first element defined in above html. 
+								focus : true,
 								setup : function( data )
 								{
@@ -1365,4 +1361,11 @@
 				this.hidePage( 'target' );		//Hide Target tab.
 
+		},
+		// Inital focus on 'url' field if link is of type URL.
+		onFocus : function()
+		{
+			var linkType = this.getContentElement( 'info', 'linkType' );
+			if ( linkType && linkType.getValue() == 'url' )
+				return this.getContentElement( 'info', 'url' );
 		}
 	};
