Index: /CKEditor/trunk/_source/plugins/panelbutton/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/panelbutton/plugin.js	(revision 6942)
+++ /CKEditor/trunk/_source/plugins/panelbutton/plugin.js	(revision 6943)
@@ -7,4 +7,128 @@
 {
 	requires : [ 'button' ],
+	onLoad : function()
+	{
+		function clickFn( editor )
+		{
+			var _ = this._;
+
+			if ( _.state == CKEDITOR.TRISTATE_DISABLED )
+				return;
+
+			this.createPanel( editor );
+
+			if ( _.on )
+			{
+				_.panel.hide();
+				return;
+			}
+
+			_.panel.showBlock( this._.id, this.document.getById( this._.id ), 4 );
+		}
+
+		CKEDITOR.ui.panelButton = CKEDITOR.tools.createClass(
+		{
+			base : CKEDITOR.ui.button,
+
+			$ : function( definition )
+			{
+				// We don't want the panel definition in this object.
+				var panelDefinition = definition.panel;
+				delete definition.panel;
+
+				this.base( definition );
+
+				this.document = ( panelDefinition
+									&& panelDefinition.parent
+									&& panelDefinition.parent.getDocument() )
+								|| CKEDITOR.document;
+
+				panelDefinition.block =
+				{
+					attributes : panelDefinition.attributes
+				};
+
+				this.hasArrow = true;
+
+				this.click = clickFn;
+
+				this._ =
+				{
+					panelDefinition : panelDefinition
+				};
+			},
+
+			statics :
+			{
+				handler :
+				{
+					create : function( definition )
+					{
+						return new CKEDITOR.ui.panelButton( definition );
+					}
+				}
+			},
+
+			proto :
+			{
+				createPanel : function( editor )
+				{
+					var _ = this._;
+
+					if ( _.panel )
+						return;
+
+					var panelDefinition = this._.panelDefinition || {},
+						panelBlockDefinition = this._.panelDefinition.block,
+						panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(),
+						panel = this._.panel = new CKEDITOR.ui.floatPanel( editor, panelParentElement, panelDefinition ),
+						block = panel.addBlock( _.id, panelBlockDefinition ),
+						me = this;
+
+					panel.onShow = function()
+						{
+							if ( me.className )
+								this.element.getFirst().addClass( me.className + '_panel' );
+
+							me.setState( CKEDITOR.TRISTATE_ON );
+
+							_.on = 1;
+
+							if ( me.onOpen )
+								me.onOpen();
+						};
+
+					panel.onHide = function( preventOnClose )
+						{
+							if ( me.className )
+								this.element.getFirst().removeClass( me.className + '_panel' );
+
+							me.setState( me.modes && me.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );
+
+							_.on = 0;
+
+							if ( !preventOnClose && me.onClose )
+								me.onClose();
+						};
+
+					panel.onEscape = function()
+						{
+							panel.hide();
+							me.document.getById( _.id ).focus();
+						};
+
+					if ( this.onBlock )
+						this.onBlock( panel, block );
+
+					block.onHide = function()
+						{
+							_.on = 0;
+							me.setState( CKEDITOR.TRISTATE_OFF );
+						};
+				}
+			}
+		});
+
+	},
 	beforeInit : function( editor )
 	{
@@ -19,128 +143,2 @@
  */
 CKEDITOR.UI_PANELBUTTON = 'panelbutton';
-
-(function()
-{
-	var clickFn = function( editor )
-	{
-		var _ = this._;
-
-		if ( _.state == CKEDITOR.TRISTATE_DISABLED )
-			return;
-
-		this.createPanel( editor );
-
-		if ( _.on )
-		{
-			_.panel.hide();
-			return;
-		}
-
-		_.panel.showBlock( this._.id, this.document.getById( this._.id ), 4 );
-	};
-
-
-	CKEDITOR.ui.panelButton = CKEDITOR.tools.createClass(
-	{
-		base : CKEDITOR.ui.button,
-
-		$ : function( definition )
-		{
-			// We don't want the panel definition in this object.
-			var panelDefinition = definition.panel;
-			delete definition.panel;
-
-			this.base( definition );
-
-			this.document = ( panelDefinition
-								&& panelDefinition.parent
-								&& panelDefinition.parent.getDocument() )
-							|| CKEDITOR.document;
-
-			panelDefinition.block =
-			{
-				attributes : panelDefinition.attributes
-			};
-
-			this.hasArrow = true;
-
-			this.click = clickFn;
-
-			this._ =
-			{
-				panelDefinition : panelDefinition
-			};
-		},
-
-		statics :
-		{
-			handler :
-			{
-				create : function( definition )
-				{
-					return new CKEDITOR.ui.panelButton( definition );
-				}
-			}
-		},
-
-		proto :
-		{
-			createPanel : function( editor )
-			{
-				var _ = this._;
-
-				if ( _.panel )
-					return;
-
-				var panelDefinition = this._.panelDefinition || {},
-					panelBlockDefinition = this._.panelDefinition.block,
-					panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(),
-					panel = this._.panel = new CKEDITOR.ui.floatPanel( editor, panelParentElement, panelDefinition ),
-					block = panel.addBlock( _.id, panelBlockDefinition ),
-					me = this;
-
-				panel.onShow = function()
-					{
-						if ( me.className )
-							this.element.getFirst().addClass( me.className + '_panel' );
-
-						me.setState( CKEDITOR.TRISTATE_ON );
-
-						_.on = 1;
-
-						if ( me.onOpen )
-							me.onOpen();
-					};
-
-				panel.onHide = function( preventOnClose )
-					{
-						if ( me.className )
-							this.element.getFirst().removeClass( me.className + '_panel' );
-
-						me.setState( me.modes && me.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );
-
-						_.on = 0;
-
-						if ( !preventOnClose && me.onClose )
-							me.onClose();
-					};
-
-				panel.onEscape = function()
-					{
-						panel.hide();
-						me.document.getById( _.id ).focus();
-					};
-
-				if ( this.onBlock )
-					this.onBlock( panel, block );
-
-				block.onHide = function()
-					{
-						_.on = 0;
-						me.setState( CKEDITOR.TRISTATE_OFF );
-					};
-			}
-		}
-	});
-
-})();
