
// general application onLoad handler

var onDomLoadFunctions = [];
function onDomLoad(fn) {
  onDomLoadFunctions.push(fn);
};

(function() {
  /* Support for the DOMContentLoaded event is based on work by Dan Webb,
     Matthias Miller, Dean Edwards and John Resig. */

  var timer, fired = false;

  function fireContentLoadedEvent() {
    if (fired) return;
    if (timer) window.clearInterval(timer);
    fired = true;
    onDomLoadFunctions.each(function(fn) { fn(); });
  }

  if (document.addEventListener) {
    if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
      timer = window.setInterval(function() {
        if (/loaded|complete/.test(document.readyState))
          fireContentLoadedEvent();
      }, 0);

      Event.observe(window, "load", fireContentLoadedEvent);

    } else {
      document.addEventListener("DOMContentLoaded",
        fireContentLoadedEvent, false);
    }

  } else {
    document.write("<script id=__onDOMContentLoaded defer " +
      "src='javascript:void(0)'><\/script>");

    $("__onDOMContentLoaded").onreadystatechange = function() {
      if (this.readyState == "complete") {
        this.onreadystatechange = null;
        fireContentLoadedEvent();
      }
    };
  }
})();

