1/* 2 * FCKeditor - The text editor for Internet - http://www.fckeditor.net 3 * Copyright (C) 2003-2007 Frederico Caldeira Knabben 4 * 5 * == BEGIN LICENSE == 6 * 7 * Licensed under the terms of any of the following licenses at your 8 * choice: 9 * 10 * - GNU General Public License Version 2 or later (the "GPL") 11 * http://www.gnu.org/licenses/gpl.html 12 * 13 * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") 14 * http://www.gnu.org/licenses/lgpl.html 15 * 16 * - Mozilla Public License Version 1.1 or later (the "MPL") 17 * http://www.mozilla.org/MPL/MPL-1.1.html 18 * 19 * == END LICENSE == 20 * 21 * FCKEvents Class: used to handle events is a advanced way. 22 */ 23 24var FCKEvents = function( eventsOwner ) 25{ 26 this.Owner = eventsOwner ; 27 this._RegisteredEvents = new Object() ; 28} 29 30FCKEvents.prototype.AttachEvent = function( eventName, functionPointer ) 31{ 32 var aTargets ; 33 34 if ( !( aTargets = this._RegisteredEvents[ eventName ] ) ) 35 this._RegisteredEvents[ eventName ] = [ functionPointer ] ; 36 else 37 aTargets.push( functionPointer ) ; 38} 39 40FCKEvents.prototype.FireEvent = function( eventName, params ) 41{ 42 var bReturnValue = true ; 43 44 var oCalls = this._RegisteredEvents[ eventName ] ; 45 46 if ( oCalls ) 47 { 48 for ( var i = 0 ; i < oCalls.length ; i++ ) 49 { 50 try 51 { 52 bReturnValue = ( oCalls[ i ]( this.Owner, params ) && bReturnValue ) ; 53 } 54 catch(e) 55 { 56 // Ignore the following error. It may happen if pointing to a 57 // script not anymore available (#934): 58 // -2146823277 = Can't execute code from a freed script 59 if ( e.number != -2146823277 ) 60 throw e ; 61 } 62 } 63 } 64 65 return bReturnValue ; 66} 67