/* Based on stuff from: http://dean.edwards.name/weblog/2006/06/again/ */

function domready(fn) {
	if (arguments.callee.stack == null)
		arguments.callee.stack = [];
		
	if (arguments.callee.done == null)
		arguments.callee.done = false;
	
	if (arguments.callee.check == null){
		arguments.callee.check = function() {
			/*@cc_on
			if (document.body) {
				try {
					document.createElement('div').doScroll('left');
					return domready.success();
				} catch(e) {}
			}
			/*@if (false) @*/
			if (/loaded|complete/.test(document.readyState)) return domready.success();
			/*@end @*/
			if (!domready.done) setTimeout(arguments.callee, 50);
		};
		arguments.callee.check();
	}
	
	if (arguments.callee.success == null){
		arguments.callee.success = function() {
			if (domready.done) return;
			domready.done = true;
			
			for (var i=0; i < domready.stack.length; i++) {
				try {
					domready.stack[i]();
				} catch (e) {}
			}
		};
	}
	
	if (document.addEventListener) {
		document.addEventListener('DOMContentLoaded', arguments.callee.success, false);
	}
	
	if (window.onload != null && window.onload !== arguments.callee.success) {
		arguments.callee.stack.push(window.onload);
		window.onload = arguments.callee.success;
	}
	
	if (! arguments.callee.done)
		arguments.callee.stack.push(fn);
	else
		fn();
}