JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
c6260931513655ab9f73b655d3b27498c467ecb4
[ckeditor.git] / _source / core / imagecacher.js
1 /*\r
2 Copyright (c) 2003-2009, 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                                 loaded[ image ] = 1;\r
15                                 callback();\r
16                         };\r
17 \r
18                 var img = new CKEDITOR.dom.element( 'img' );\r
19                 img.on( 'load', doCallback );\r
20                 img.on( 'error', doCallback );\r
21                 img.setAttribute( 'src', image );\r
22         };\r
23 \r
24         /**\r
25          * Load images into the browser cache.\r
26          * @namespace\r
27          * @example\r
28          */\r
29         CKEDITOR.imageCacher =\r
30         {\r
31                 /**\r
32                  * Loads one or more images.\r
33                  * @param {Array} images The URLs for the images to be loaded.\r
34                  * @param {Function} callback The function to be called once all images\r
35                  *              are loaded.\r
36                  */\r
37                 load : function( images, callback )\r
38                 {\r
39                         var pendingCount = images.length;\r
40 \r
41                         var checkPending = function()\r
42                         {\r
43                                 if ( --pendingCount === 0 )\r
44                                         callback();\r
45                         };\r
46 \r
47                         for ( var i = 0 ; i < images.length ; i++ )\r
48                         {\r
49                                 var image = images[ i ];\r
50 \r
51                                 if ( loaded[ image ] )\r
52                                         checkPending();\r
53                                 else\r
54                                         loadImage( image, checkPending );\r
55                         }\r
56                 }\r
57         };\r
58 })();\r