// Adapted from DOM Ready extension by Dan Webb
// http://www.vivabit.com/bollocks/2006/06/21/a-dom-ready-extension-for-prototype
// which was based on work by Matthias Miller, Dean Edwards and John Resig
//
// Usage:
//
// Event.onReady(callbackFunction);
Object.extend(Event, {
	_domReady : function() {
		if (arguments.callee.done) return;
		arguments.callee.done = true;
		if (Event._timer) clearInterval(Event._timer);

		Event._readyCallbacks.each(function(f) { f() });
		Event._readyCallbacks = null; 
	},
	onReady : function(f) {
		if (!this._readyCallbacks) {
		var domReady = this._domReady;

		if (domReady.done) return f();

		if (document.addEventListener)
			document.addEventListener("DOMContentLoaded", domReady, false);
			/*@cc_on @*/
			/*@if (@_win32)
				var dummy = location.protocol == "https:" ? "https://javascript:void(0)" : "javascript:void(0)";
				document.write("<script id=__ie_onload defer src='" + dummy + "'><\/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);
	}
});