Element.Events.domready = {
  add: function(fn){
    if (window.loaded){
      fn.call(this);
      return;
    }
    var domReady = function(){
      if (window.loaded) return;
      window.loaded = true;
      window.timer = $clear(window.timer);
      this.fireEvent('domready');
    }.bind(this);
    if (document.readyState && window.webkit){
      window.timer = function(){
        if (['loaded','complete'].contains(document.readyState)) domReady();
      }.periodical(50);
    } else {
      window.addListener("load", domReady);
      document.addListener("DOMContentLoaded", domReady);
    }
  }
};
