text: /*!
   * onDomReady.js 1.4.0 (c) 2013 Tubal Martin - MIT license
   *
   * Specially modified to work with Holder.js
   */
  
  ;(function(name, global, callback){
  		global[name] = callback;
  })("onDomReady", this,
  
  (function(win) {
  
      'use strict';
  
      //Lazy loading fix for Firefox < 3.6
      //http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.php
      if (document.readyState == null && document.addEventListener) {
          document.addEventListener("DOMContentLoaded", function DOMContentLoaded() {
              document.removeEventListener("DOMContentLoaded", DOMContentLoaded, false);
              document.readyState = "complete";
          }, false);
          document.readyState = "loading";
      }
  
      var doc = win.document,
          docElem = doc.documentElement,
  
          LOAD = "load",
          FALSE = false,
          ONLOAD = "on"+LOAD,
          COMPLETE = "complete",
          READYSTATE = "readyState",
          ATTACHEVENT = "attachEvent",
          DETACHEVENT = "detachEvent",
          ADDEVENTLISTENER = "addEventListener",
          DOMCONTENTLOADED = "DOMContentLoaded",
          ONREADYSTATECHANGE = "onreadystatechange",
          REMOVEEVENTLISTENER = "removeEventListener",
  
          // W3C Event model
          w3c = ADDEVENTLISTENER in doc,
          top = FALSE,
  
          // isReady: Is the DOM ready to be used? Set to true once it occurs.
          isReady = FALSE,
  
          // Callbacks pending execution until DOM is ready
          callbacks = [];
  
      // Handle when the DOM is ready
      function ready( fn ) {
          if ( !isReady ) {
  
              // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
              if ( !doc.body ) {
                  return defer( ready );
              }
  
              // Remember that the DOM is ready
              isReady = true;
  
              // Execute all callbacks
              while ( fn = callbacks.shift() ) {
                  defer( fn );
              }
          }
      }
  
      // The ready event handler
      function completed( event ) {
          // readyState === "complete" is good enough for us to call the dom ready in oldIE
          if ( w3c || event.type === LOAD || doc[READYSTATE] === COMPLETE ) {
              detach();
              ready();
          }
      }
  
      // Clean-up method for dom ready events
      function detach() {
          if ( w3c ) {
              doc[REMOVEEVENTLISTENER]( DOMCONTENTLOADED, completed, FALSE );
              win[REMOVEEVENTLISTENER]( LOAD, completed, FALSE );
          } else {
              doc[DETACHEVENT]( ONREADYSTATECHANGE, completed );
              win[DETACHEVENT]( ONLOAD, completed );
          }
      }
  
      // Defers a function, scheduling it to run after the current call stack has cleared.
      function defer( fn, wait ) {
          // Allow 0 to be passed
          setTimeout( fn, +wait >= 0 ? wait : 1 );
      }
  
      // Attach the listeners:
  
      // Catch cases where onDomReady is called after the browser event has already occurred.
      // we once tried to use readyState "interactive" here, but it caused issues like the one
      // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
      if ( doc[READYSTATE] === COMPLETE ) {
          // Handle it asynchronously to allow scripts the opportunity to delay ready
          defer( ready );
  
      // Standards-based browsers support DOMContentLoaded
      } else if ( w3c ) {
          // Use the handy event callback
          doc[ADDEVENTLISTENER]( DOMCONTENTLOADED, completed, FALSE );
  
          // A fallback to window.onload, that will always work
          win[ADDEVENTLISTENER]( LOAD, completed, FALSE );
  
      // If IE event model is used
      } else {
          // Ensure firing before onload, maybe late but safe also for iframes
          doc[ATTACHEVENT]( ONREADYSTATECHANGE, completed );
  
          // A fallback to window.onload, that will always work
          win[ATTACHEVENT]( ONLOAD, completed );
  
          // If IE and not a frame
          // continually check to see if the document is ready
          try {
              top = win.frameElement == null && docElem;
          } catch(e) {}
  
          if ( top && top.doScroll ) {
              (function doScrollCheck() {
                  if ( !isReady ) {
                      try {
                          // Use the trick by Diego Perini
                          // http://javascript.nwbox.com/IEContentLoaded/
                          top.doScroll("left");
                      } catch(e) {
                          return defer( doScrollCheck, 50 );
                      }
  
                      // detach all dom ready events
                      detach();
  
                      // and execute any waiting functions
                      ready();
                  }
              })();
          }
      }
  
      function onDomReady( fn ) {
          // If DOM is ready, execute the function (async), otherwise wait
          isReady ? defer( fn ) : callbacks.push( fn );
      }
  
      // Add version
      onDomReady.version = "1.4.0";
      // Add method to check if DOM is ready
      onDomReady.isReady = function(){
          return isReady;
      };
  
      return onDomReady;
  })(this));
  