Object.extend(Event, {
    _domReady: function() {
        if (arguments.callee.done) {
            return
        }
        arguments.callee.done = true;
        if (this._timer) {
            clearInterval(this._timer)
        }
        AC.isDomReady = true;
        if (this._readyCallbacks) {
            this._readyCallbacks.each(function(a) {
                a()
            })
        }
        this._readyCallbacks = null
    },
    onDOMReady: function(f) {
        if (AC.isDomReady) {
            f()
        } else {
            if (!this._readyCallbacks) {
                var domReady = this._domReady.bind(this);
                if (document.addEventListener) {
                    document.addEventListener("DOMContentLoaded", domReady, false);
                    /*@cc_on @*/
                    /*@if (@_win32)
					document.write("<script id=__ie_onload defer src=javascript:void(0)></script>");
					document.getElementById("__ie_onload").onreadystatechange = function() {
						if (this.readyState == "complete") domReady(); 
					};
				/*@end @*/
                }
                if (/WebKit/i.test(navigator.userAgent)) {
                    this._timer = setInterval(function() {
                        if (/loaded|complete/.test(document.readyState)) {
                            domReady()
                        }
                    },
                    10)
                }
                Event.observe(window, "load", domReady);
                Event._readyCallbacks = []
            }
            Event._readyCallbacks.push(f)
        }
    }
});
if (typeof(AC) == "undefined") {
    AC = {}
}
