Index: /CKEditor/branches/prototype/_source/core/event.js
===================================================================
--- /CKEditor/branches/prototype/_source/core/event.js	(revision 2348)
+++ /CKEditor/branches/prototype/_source/core/event.js	(revision 2349)
@@ -201,5 +201,5 @@
 			 * <b>someObject.fire( 'someEvent', 'Example' )</b>;
 			 */
-			fire : function( eventName, data, editor )
+			fire : (function()
 			{
 				// Create the function that marks the event as stopped.
@@ -217,26 +217,32 @@
 				};
 
-				// Get the event entry.
-				var event = this._.events[ eventName ];
-
-				if ( event )
-				{
-					// Loop through all listeners.
-					for ( var i = 0, listeners = event.listeners ; i < listeners.length ; i++ )
+				return function( eventName, data, editor )
+				{
+					// Get the event entry.
+					var event = this._.events[ eventName ];
+
+					// Reset the stopped and cancelled flags.
+					stopped = cancelled = false;
+
+					if ( event )
 					{
-						// Call the listener, passing the event data.
-						var retData = listeners[i].call( this, editor, data, stopEvent, cancelEvent );
-
-						if ( typeof retData != 'undefined' )
-							data = retData;
-
-						// No further calls is stopped or cancelled.
-						if ( stopped || cancelled )
-							break;
+						// Loop through all listeners.
+						for ( var i = 0, listeners = event.listeners ; i < listeners.length ; i++ )
+						{
+							// Call the listener, passing the event data.
+							var retData = listeners[i].call( this, editor, data, stopEvent, cancelEvent );
+
+							if ( typeof retData != 'undefined' )
+								data = retData;
+
+							// No further calls is stopped or cancelled.
+							if ( stopped || cancelled )
+								break;
+						}
 					}
+
+					return cancelled || ( typeof data == 'undefined' ? false : data );
 				}
-
-				return cancelled || ( typeof data == 'undefined' ? false : data );
-			},
+			})(),
 
 			/**
