/*
 * (c)2006 Jesse Skinner/Dean Edwards/Matthias Miller/John Resig
 * Special thanks to Dan Webb's domready.js Prototype extension
 * and Simon Willison's addLoadEvent
 *
 * For more info, see:
 * http://www.thefutureoftheweb.com/blog/adddomloadevent
 * http://dean.edwards.name/weblog/2006/06/again/
 * http://www.vivabit.com/bollocks/2006/06/21/a-dom-ready-extension-for-prototype
 * http://simon.incutio.com/archive/2004/05/26/addLoadEvent
 * 
 * To use: call addDOMLoadEvent one or more times with functions, ie:
 *    function something() {
 *       // do something
 *    }
 *    addDOMLoadEvent(something);
 *    addDOMLoadEvent(function() {
 *        // do other stuff
 *    });
 */
 
addDOMLoadEvent = (
	function() {
		// create event function stack
		var load_events = [],
		load_timer,
		script,
		done,
		exec,
		old_onload,
		init = function () {
			done = true;  // kill the timer
			clearInterval(load_timer);
			// execute each function in the stack in the order they were added
			while (exec = load_events.shift()) { exec(); }
			if (script) script.onreadystatechange = '';
		};

		return function (func) {
			// if the init function was already ran, just run this function now and stop
			if (done) { return func(); }

			if (!load_events[0]) {
				// for Mozilla/Opera9
				if (document.addEventListener) { document.addEventListener("DOMContentLoaded", init, false); }

				// for Internet Explorer
				/*@cc_on @*/
				/*@if (@_win32)
				document.write("<script id=__ie_onload defer src=//0><\/scr"+"ipt>");
				script = document.getElementById("__ie_onload");
				script.onreadystatechange = function() {
					if (this.readyState == "complete")
					init(); // call the onload handler
				};
	    		/*@end @*/

				// for Safari
				if (/WebKit/i.test(navigator.userAgent)) { // sniff
					load_timer = setInterval(function() {
						if (/loaded|complete/.test(document.readyState))
						init(); // call the onload handler
					}, 10);
	    		}

				// for other browsers set the window.onload, but also execute the old window.onload
				old_onload = window.onload;
				window.onload = function() {
					init();
					if (old_onload) old_onload();
			    };
			    
			}
			load_events.push(func);
    	}
	}
)();