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