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