LSF.DOM.Event = {
	
	addMainListener : function (eventType, callback) {
		if (document.all) {
			document.addEventListener (eventType, callback, null);
		} else {
			window.addEventListener (eventType, callback, true);
		}
	},
	
	preventDefaultCallback : function (event) {
		event.preventDefault();
	},
	
	compatEvent : function (event) {
		var e = event || window.event;
		e.target = e.target || e.srcElement;
		if (typeof e.preventDefault != 'function') {
			e.preventDefault = function() { this.returnValue = false; }
		}
		if (typeof e.stopPropagation != 'function') {
			e.stopPropagation = function() { this.cancelBubble = true; }
		}
		return e;
	}
		
};

(function() {
	
	var isLoaded = false;
	var safariTimer = undefined;
	
	var callbacks = [];
	
	var onLoad = function() {
		if (isLoaded) return;
		isLoaded = true;
		if (typeof safariTimer != 'undefined') clearInterval (safariTimer);
		if (LSF.Browser.name == 'gecko' || LSF.Browser.name == 'opera') {
			document.removeEventListener ("DOMContentLoaded", onLoad, true)
		}		
		for (var i = 0; i < callbacks.length; i++) {
			callbacks[i]();
		}
		callbacks = null;
	}
	
	LSF.DOM.Event.onload = function (callback) {
		callbacks.push (callback);
	}
	
	if (LSF.Browser.name == 'gecko' || LSF.Browser.name == 'opera') {
		document.addEventListener("DOMContentLoaded", onLoad, true);
	} else if (LSF.Browser.name == 'msie') {
		document.write('<scr'+'ipt id="lsf_event_onload_defer" defer="defer" src="/'+'/:"></scr'+"ipt>");
		var script = document.getElementById ('lsf_event_onload_defer');
		script.attachEvent ('onreadystatechange', function() {
            if (script.readyState == "complete") onLoad();
		});
	} else {
        safariTimer = setInterval (function() {
            var state = document.readyState;
            if (state == "loaded" || state == "complete") onLoad();
        }, 10);
	}
	window.onload = onLoad;
	
})();

LSF.quickAccess ('$onload', LSF.DOM.Event.onload);