Object.extend(Function.prototype, {
  setLazy : function(ms) { 
    if (ms == 0 && this._lz) return;
    this._lzMs = (ms = ms || 0);    

    if(this._lz) {
      clearTimeout(this._lz);
      delete this._lz;
    }

    this._lzFunction = this._lzFunction || function() {
      try {
        this();
      } catch(e) {
        console.error(e);
      } finally {
        delete this._lz;
        this.clearLazy();
      }
    }.bind(this);

    this._lz = setTimeout(this._lzFunction, ms);
    return this;
  },

  clearLazy:function() {
    if(this._lz){
      clearTimeout(this._lz);
    }
    delete this._lz;
    delete this._lzFunction;
    delete this._lzMs;
    return this;
  }
});

function get(css) {
  return $(document.body).down(css);
}
