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)
          document.write("<scr"+"ipt id=__ie_onload defer src=//0><\/scr"+"ipt>");
          var script = document.getElementById("__ie_onload");
          script.onreadystatechange = function() {
              if (this.readyState == "complete") {
                  init(); // call the onload handler
              }
          };
      /*@end @*/
      if (/WebKit/i.test(navigator.userAgent)) { // sniff
          window.__load_timer = setInterval(function() {if (/loaded|complete/.test(document.readyState)) {init();}}, 10);
      }
			window.__load_events = [];
			if (typeof(window.onload)=='function') window.__load_events.push(window.onload);
      window.onload = init;
   }
   window.__load_events.push(func);
}