JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
07045567a3542fde2d0f312b58d3828e21991baf
[ckeditor.git] / _source / core / imagecacher.js
1 /*\r
2 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.\r
3 For licensing, see LICENSE.html or http://ckeditor.com/license\r
4 */\r
5 \r
6 (function()\r
7 {\r
8         var loaded = {};\r
9 \r
10         var loadImage = function( image, callback )\r
11         {\r
12                 var doCallback = function()\r
13                         {\r
14                                 img.removeAllListeners();\r
15                                 loaded[ image ] = 1;\r
16                                 callback();\r
17                         };\r
18 \r
19                 var img = new CKEDITOR.dom.element( 'img' );\r
20                 img.on( 'load', doCallback );\r
21                 img.on( 'error', doCallback );\r
22                 img.setAttribute( 'src', image );\r
23         };\r
24 \r
25         /**\r
26          * Load images into the browser cache.\r
27          * @namespace\r
28          * @example\r
29          */\r
30         CKEDITOR.imageCacher =\r
31         {\r
32                 /**\r
33                  * Loads one or more images.\r
34                  * @param {Array} images The URLs for the images to be loaded.\r
35                  * @param {Function} callback The function to be called once all images\r
36                  *              are loaded.\r
37                  */\r
38                 load : function( images, callback )\r
39                 {\r
40                         var pendingCount = images.length;\r
41 \r
42                         var checkPending = function()\r
43                         {\r
44                                 if ( --pendingCount === 0 )\r
45                                         callback();\r
46                         };\r
47 \r
48                         for ( var i = 0 ; i < images.length ; i++ )\r
49                         {\r
50                                 var image = images[ i ];\r
51 \r
52                                 if ( loaded[ image ] )\r
53                                         checkPending();\r
54                                 else\r
55                                         loadImage( image, checkPending );\r
56                         }\r
57                 }\r
58         };\r
59 })();\r