if(typeof Event == 'undefined') {
	Event = new Object();
}
if(typeof Event.domReady == 'undefined') {
	Event.domReady = new Object();
}
Event.domReady.add = function(fn) {
	if(Event.domReady.loaded) {
		return fn();
	}
	
	//-----------------------------------------------------------
	// Observers
	//-----------------------------------------------------------
	var observers = Event.domReady.observers;
	if(!observers) {
		observers = Event.domReady.observers = [];
	}
	// Array#push is not supported by Mac IE 5
	observers[observers.length] = fn;
	
	//-----------------------------------------------------------
	// domReady function
	//-----------------------------------------------------------
	if(Event.domReady.callback) {
		return;
	}
	Event.domReady.callback = function() {
		if(Event.domReady.loaded) {
			return;
	  	}
		Event.domReady.loaded = true;
		if(Event.domReady.timer) {
			clearInterval(Event.domReady.timer);
			Event.domReady.timer = null;
		}
		var observers = Event.domReady.observers;
		for(var i=0, length=observers.length ; i < length ; i++) {
			var fn = observers[i];
			observers[i] = null;
			fn(); // make 'this' as window
		}
		Event.domReady.callback = Event.domReady.observers = null;
	};
	
	var webkit = navigator.userAgent.indexOf('AppleWebKit/') > -1;
	
	/*@cc_on
	  @if (5.6 < @_jscript_version)
		ie = 7;
	  @end
	  @*/
	
	if(document.addEventListener && !window.opera) {	// for Mozilla browsers
		document.addEventListener("DOMContentLoaded", Event.domReady.callback, false);
	} else if(document.readyState && webkit) {	  // WebKit
		Event.domReady.timer = setInterval(function() {
			var state = document.readyState;
			if(state == 'loaded' || state == 'complete') {
				Event.domReady.callback();
			}
		}, 50);
	} else if(window.attachEvent && !window.opera && window == top) {
		(function() {
			try { document.documentElement.doScroll("left"); }
			catch(error) { setTimeout(arguments.callee, 1); return; }
			Event.domReady.callback();
		})();
	} else if(window.addEventListener) {
		window.addEventListener("load", Event.domReady.callback, false);
	} else if(window.attachEvent) {
		window.attachEvent('onload', Event.domReady.callback);
	} else {
		var fn = window.onload;
		window.onload = function() {
			Event.domReady.callback();
			if(fn) {
				fn();
			}
		}
	}
};

