summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/vendor/loader.js
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-06-03 17:51:34 -0400
committerJules Laplace <jules@okfoc.us>2014-06-03 17:51:34 -0400
commit90142bd07f926ef8a7f3ea86a563ec0ca648ca5d (patch)
tree2851e990b4b71e215ad2fff4dbcaf80229953c35 /public/assets/javascripts/vendor/loader.js
parent607f69c67a5b4dc72d2754192e3cdf67d0ad11d0 (diff)
pulling in more stuff from posthang
Diffstat (limited to 'public/assets/javascripts/vendor/loader.js')
-rw-r--r--public/assets/javascripts/vendor/loader.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/public/assets/javascripts/vendor/loader.js b/public/assets/javascripts/vendor/loader.js
new file mode 100644
index 0000000..4c1c8cd
--- /dev/null
+++ b/public/assets/javascripts/vendor/loader.js
@@ -0,0 +1,68 @@
+var Loader = Loader || (function(){
+ function Loader (readyCallback){
+ this.assets = {};
+ this.images = [];
+ this.readyCallback = readyCallback;
+ }
+
+ // Register an asset as loading
+ Loader.prototype.register = function(s){
+ this.assets[s] = false;
+ }
+
+ // Signal that an asset has loaded
+ Loader.prototype.ready = function(s){
+ window.debug && console.log("ready >> " + s);
+
+ this.assets[s] = true;
+ if (this.loaded) return;
+ if (! this.isReady()) return;
+
+ this.loaded = true;
+ this.readyCallback && this.readyCallback();
+ }
+
+ // (boolean) Is the loader ready?
+ Loader.prototype.isReady = function(){
+ for (var s in this.assets) {
+ if (this.assets.hasOwnProperty(s) && this.assets[s] != true) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ // (int) Number of assets remaining
+ Loader.prototype.remainingAssets = function(){
+ var n = 0;
+ for (var s in this.assets) {
+ if (this.assets.hasOwnProperty(s) && this.assets[s] != true) {
+ n++;
+ console.log('remaining: ' + s);
+ }
+ }
+ return n;
+ }
+
+ // Preload the images in config.images
+ Loader.prototype.preloadImages = function(images){
+ this.register("preload");
+ for (var i = 0; i < images.length; i++) {
+ this.preloadImage(images[i]);
+ }
+ this.ready("preload");
+ }
+ Loader.prototype.preloadImage = function(src){
+ var _this = this;
+ this.register(src);
+ var img = new Image();
+ img.onload = function(){
+ _this.ready(src);
+ }
+ img.src = src;
+ if (img.complete) img.onload();
+ _this.images.push(img);
+ }
+
+ return Loader;
+})();