// prototype library extension
// source: http://www.vivabit.com/bollocks/2006/06/21/a-dom-ready-extension-for-prototype

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);
	}
});