import rt 3.8.7
[freeside.git] / rt / share / html / NoAuth / RichText / FCKeditor / editor / _source / classes / fckimagepreloader.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  * Preload a list of images, firing an event when complete.\r
22  */\r
23 \r
24 var FCKImagePreloader = function()\r
25 {\r
26         this._Images = new Array() ;\r
27 }\r
28 \r
29 FCKImagePreloader.prototype =\r
30 {\r
31         AddImages : function( images )\r
32         {\r
33                 if ( typeof( images ) == 'string' )\r
34                         images = images.split( ';' ) ;\r
35 \r
36                 this._Images = this._Images.concat( images ) ;\r
37         },\r
38 \r
39         Start : function()\r
40         {\r
41                 var aImages = this._Images ;\r
42                 this._PreloadCount = aImages.length ;\r
43 \r
44                 for ( var i = 0 ; i < aImages.length ; i++ )\r
45                 {\r
46                         var eImg = document.createElement( 'img' ) ;\r
47                         FCKTools.AddEventListenerEx( eImg, 'load', _FCKImagePreloader_OnImage, this ) ;\r
48                         FCKTools.AddEventListenerEx( eImg, 'error', _FCKImagePreloader_OnImage, this ) ;\r
49                         eImg.src = aImages[i] ;\r
50 \r
51                         _FCKImagePreloader_ImageCache.push( eImg ) ;\r
52                 }\r
53         }\r
54 };\r
55 \r
56 // All preloaded images must be placed in a global array, otherwise the preload\r
57 // magic will not happen.\r
58 var _FCKImagePreloader_ImageCache = new Array() ;\r
59 \r
60 function _FCKImagePreloader_OnImage( ev, imagePreloader )\r
61 {\r
62         if ( (--imagePreloader._PreloadCount) == 0 && imagePreloader.OnComplete )\r
63                 imagePreloader.OnComplete() ;\r
64 }\r