function onDOMContentLoaded(callbackFunction) {
    (function(i) {
      var u = navigator.userAgent.toLowerCase();
      var ie = /*@cc_on!@*/false;
      if (/webkit/.test(u)) {
        // safari
        timeout = setTimeout(function(){
                if ( document.readyState == "loaded" || 
                    document.readyState == "complete" ) {
                    i();
                } else {
                  setTimeout(arguments.callee,10);
                }
            }, 10); 
      } else if ((/mozilla/.test(u) && !/(compatible)/.test(u)) ||
                 (/opera/.test(u))) {
        // opera/moz
        document.addEventListener("DOMContentLoaded",i,false);
      } else if (ie) {
        // IE
        (function (){ 
          var tempNode = document.createElement('document:ready'); 
          try {
            tempNode.doScroll('left'); 
            i(); 
            tempNode = null; 
          } catch(e) { 
            setTimeout(arguments.callee, 0); 
          } 
        })();
      } else {
        window.onload = i;
      }
    })(callbackFunction);
}