diff --git a/overviewer_core/data/js_src/util.js b/overviewer_core/data/js_src/util.js index 24dc808..e487b05 100644 --- a/overviewer_core/data/js_src/util.js +++ b/overviewer_core/data/js_src/util.js @@ -1,4 +1,9 @@ overviewer.util = { + + // vars for callback + readyQueue: [], + isReady: false, + /* fuzz tester! */ 'testMaths': function(t) { @@ -145,6 +150,13 @@ overviewer.util = { overviewer.util.initializeRegions(); overviewer.util.createMapControls(); */ + + // run ready callbacks now + google.maps.event.addListenerOnce(overviewer.map, 'idle', function(){ + // ok now.. + overviewer.util.runReadyQueue(); + overviewer.util.isReady = true; + }); }, 'injectMarkerScript': function(url) { @@ -196,6 +208,27 @@ overviewer.util = { return div; }; }, + /** + * onready function for other scripts that rely on overviewer + * usage: overviewer.util.ready(function(){ // do stuff }); + * + * + */ + 'ready': function(callback){ + if (!callback || !_.isFunction(callback)) return; + if (overviewer.util.isReady){ // run instantly if overviewer already is ready + overviewer.util.readyQueue.push(callback); + overviewer.util.runReadyQueue(); + } else { + overviewer.util.readyQueue.push(callback); // wait until initialize is finished + } + }, + 'runReadyQueue': function(){ + _.each(overviewer.util.readyQueue, function(callback){ + callback(); + }); + overviewer.util.readyQueue.length = 0; + }, /** * Quote an arbitrary string for use in a regex matcher. * WTB parametized regexes, JavaScript...