From 5dc4052ababc4cf3e5f6f02ab9c597dce125142e Mon Sep 17 00:00:00 2001 From: Zach Wise Date: Thu, 5 Apr 2012 15:36:13 -0500 Subject: [PATCH] New library for loading 3rd party javascript APIs --- source/js/VMM.LoadLib.js | 251 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 251 insertions(+) create mode 100644 source/js/VMM.LoadLib.js diff --git a/source/js/VMM.LoadLib.js b/source/js/VMM.LoadLib.js new file mode 100644 index 0000000..b5d2b5c --- /dev/null +++ b/source/js/VMM.LoadLib.js @@ -0,0 +1,251 @@ +/* + LoadLib + Based on LazyLoad by Ryan Grove + https://github.com/rgrove/lazyload/ + Copyright (c) 2011 Ryan Grove + All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the 'Software'), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + +================================================== */ + + + +if(typeof VMM != 'undefined' && typeof VMM.LoadLib == 'undefined') { + //VMM.LoadLib.js('http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js', onJQueryLoaded); + //VMM.LoadLib.css('http://someurl.css', onCSSLoaded); + + + + VMM.LoadLib = (function (doc) { + var env, + head, + pending = {}, + pollCount = 0, + queue = {css: [], js: []}, + styleSheets = doc.styleSheets; + + var loaded_Array = []; + + function isLoaded(url) { + + for(var i=0; i= 0) { + if (styleSheets[i].href === css.urls[0]) { + finish('css'); + break; + } + } + + pollCount += 1; + + if (css) { + if (pollCount < 200) { + setTimeout(pollWebKit, 50); + } else { + + finish('css'); + } + } + } + } + + return { + + css: function (urls, callback, obj, context) { + if (isLoaded(urls)) { + return callback; + } else { + load('css', urls, callback, obj, context); + } + }, + + js: function (urls, callback, obj, context) { + if (isLoaded(urls)) { + return callback; + } else { + load('js', urls, callback, obj, context); + } + } + + }; + })(this.document); +} +