
	Object.extend(Event, {
		_domReady:function()
		{
			if(arguments.callee.done) return;
			arguments.callee.done = true;
			
			if(this._timer) clearInterval(this._timer);
			
			this._readyCallbacks.each(function(f){f();});
			this._readyCallbacks = null;
		},
		onDOMReady:function(f)
		{
			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);
		}
	});