public/ckeditor/4.4dev/core/focusmanager.js
function( element, isCapture ) {
			var fm = element.getCustomData( SLOT_NAME );
			if ( !fm || fm != this ) {
				// If this element is already taken by another instance, dismiss it first.
				fm && fm.remove( element );

				var focusEvent = 'focus',
					blurEvent = 'blur';

				// Bypass the element's internal DOM focus change.
				if ( isCapture ) {

					// Use "focusin/focusout" events instead of capture phase in IEs,
					// which fires synchronously.
					if ( CKEDITOR.env.ie ) {
						focusEvent = 'focusin';
						blurEvent = 'focusout';
					} else {
						CKEDITOR.event.useCapture = 1;
					}
				}

				var listeners = {
					blur: function() {
						if ( element.equals( this.currentActive ) )
							this.blur();
					},
					focus: function() {
						this.focus( element );
					}
				};

				element.on( focusEvent, listeners.focus, this );
				element.on( blurEvent, listeners.blur, this );

				if ( isCapture )
					CKEDITOR.event.useCapture = 0;

				element.setCustomData( SLOT_NAME, this );
				element.setCustomData( SLOT_NAME_LISTENERS, listeners );
			}
		}
function( element, isCapture ) {
			var fm = element.getCustomData( SLOT_NAME );
			if ( !fm || fm != this ) {
				// If this element is already taken by another instance, dismiss it first.
				fm && fm.remove( element );

				var focusEvent = 'focus',
					blurEvent = 'blur';

				// Bypass the element's internal DOM focus change.
				if ( isCapture ) {

					// Use "focusin/focusout" events instead of capture phase in IEs,
					// which fires synchronously.
					if ( CKEDITOR.env.ie ) {
						focusEvent = 'focusin';
						blurEvent = 'focusout';
					} else {
						CKEDITOR.event.useCapture = 1;
					}
				}

				var listeners = {
					blur: function() {
						if ( element.equals( this.currentActive ) )
							this.blur();
					},
					focus: function() {
						this.focus( element );
					}
				};

				element.on( focusEvent, listeners.focus, this );
				element.on( blurEvent, listeners.blur, this );

				if ( isCapture )
					CKEDITOR.event.useCapture = 0;

				element.setCustomData( SLOT_NAME, this );
				element.setCustomData( SLOT_NAME_LISTENERS, listeners );
			}
		}
function ( element , isCapture ) { var fm = element . getCustomData ( SLOT_NAME ) ; if ( ! fm || fm != this ) { // If this element is already taken by another instance, dismiss it first. fm && fm . remove ( element ) ; var focusEvent = 'focus' , blurEvent = 'blur' ; // Bypass the element's internal DOM focus change. if ( isCapture ) { // Use "focusin/focusout" events instead of capture phase in IEs, // which fires synchronously. if ( CKEDITOR . env . ie ) { focusEvent = 'focusin' ; blurEvent = 'focusout' ; } else { CKEDITOR . event . useCapture = 1 ; } } var listeners = { blur : function ( ) { if ( element . equals ( this . currentActive ) ) this . blur ( ) ; } , focus : function ( ) { this . focus ( element ) ; } } ; element . on ( focusEvent , listeners . focus , this ) ; element . on ( blurEvent , listeners . blur , this ) ; if ( isCapture ) CKEDITOR . event . useCapture = 0 ; element . setCustomData ( SLOT_NAME , this ) ; element . setCustomData ( SLOT_NAME_LISTENERS , listeners ) ; } }
Registers a UI DOM element to the focus manager, which will make the focus manager "hasFocus"
once the input focus is relieved on the element.
This method is designed to be used by plugins to expand the jurisdiction of the editor focus.

@param {CKEDITOR.dom.element} element The container (topmost) element of one UI part.
@param {Boolean} isCapture If specified, {@link CKEDITOR.event#useCapture} will be used when listening to the focus event.
@member CKEDITOR.focusManager
Registers a UI DOM element to the focus manager which will make the focus manager hasFocus once the input focus is relieved on the element . This method is designed to be used by plugins to expand the jurisdiction of the editor focus .