/*
*
* DomLoad.load("foobar");
*
* DomLoad.load(function() {
*    alert('foo-bar');
* }); 
*
*
*/

function $id(id) { return (document.getElementById)? document.getElementById(id) : document.all[id]; }


var DomLoad = {
	onload: [],
	loaded: function() {
		if (arguments.callee.done) return;
		arguments.callee.done = true;
		for (i = 0;i < DomLoad.onload.length;i++) DomLoad.onload[i]();
	},
    
	load: function(fireThis) {
		this.onload.push(fireThis);
		if (document.addEventListener) 
			document.addEventListener("DOMContentLoaded", DomLoad.loaded, null);
		if (/KHTML|WebKit/i.test(navigator.userAgent)) { 
			var _timer = setInterval(function() {
				if (/loaded|complete/.test(document.readyState)) {
					clearInterval(_timer);
					delete _timer;
					DomLoad.loaded();
				}
			}, 10);
		}
        
    /*@cc_on @*/
    /*@if (@_win32)
        var proto = "src='javascript:void(0)'";
        if (location.protocol == "https:") proto = "src=//0";
        document.write("<scr"+"ipt id=__ie_onload defer " + proto + "><\/scr"+"ipt>");
        var script = document.getElementById("__ie_onload");
        script.onreadystatechange = function() {
        if (this.readyState == "complete") {
            //init(); // call the onload handler
            DomLoad.loaded();
        }

    };

    /*@end @*/ 
	   window.onload = DomLoad.loaded;
	}
};

 
function addDOMLoadEvent(func) {

    if (!window.__load_events) {
        var init = function () {
        
            if (arguments.callee.done) return;
            arguments.callee.done = true;
            
            if (window.__load_timer) {
                clearInterval(window.__load_timer);
                window.__load_timer = null;
            }
              
            for (var i=0;i < window.__load_events.length;i++) {
                window.__load_events[i]();
            }
             window.__load_events = null;
        };
        
        
        // for Mozilla/Opera9
        if (document.addEventListener) {
            document.addEventListener("DOMContentLoaded", init, false);
        }

        // for Internet Explorer
        /*@cc_on @*/
        /*@if (@_win32)
            var proto = "src='javascript:void(0)'";
            if (location.protocol == "https:") proto = "src=//0";
            document.write("<scr"+"ipt id=__ie_onload defer " + proto + "><\/scr"+"ipt>");
            var 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
            window.__load_timer = setInterval(function() {
                if (/loaded|complete/.test(document.readyState)) {
                    init(); // call the onload handler
                }
            }, 10);
        }
            
        // for other browsers
        window.onload = init;
            
        // create event function stack
        window.__load_events = [];
    }

    // add function to event stack
    window.__load_events.push(func);
}