var loadr = function(file, cb) { if (file instanceof Array) { for (var i = 0; i < file.length; i++) { if (loadr.cache.indexOf(file[i]) == -1) { loadr.pending.push(file[i]); loadr.loadFile(file[i], cb); } else { if (loadr.pending.length == 0) cb(err); } } } else { if (loadr.cache.indexOf(file) == -1) { loadr.pending.push(file); loadr.loadFile(file, cb); } else { if (loadr.pending.length == 0) cb(err); } } }; loadr.loadFile = function(file, cb) { var err = null; if (loadr.cache.indexOf(file) != -1 && loadr.pending.length == 0) { cb(err); return; } var script = document.createElement('script'); document.head.appendChild(script); script.file = file; script.onload = function() { loadr.pending.splice(loadr.pending.indexOf(script.file), 1); if (loadr.pending.length == 0) cb(err); }; script.onerror = function(err) { cb(err); }; script.setAttribute('type', 'text/javascript'); script.setAttribute('src', file); }; loadr.callbacks = []; loadr.pending = []; loadr.cache = [];