
var logger = function() {

	var maxMsgSize = 100;

	return {
	
		log: function(src, msg) {
			var logArea = parent.document.getElementById("logArea");
			var now = new Date();
			if (msg.length > maxMsgSize)
				msg = msg.substring(0,maxMsgSize);
			msg = msg.replace("\n", "<br/>");		
			
			msg = msg.replace("function",  "<span style='color: #ff0000;'> function <b>");
			msg = msg.replace("()", "</b>()</div>");
			logArea.innerHTML = logArea.innerHTML + "<hr/><b>[" + src + "] " + now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds() + ":" + now.getMilliseconds() + "<br/></b>"  + msg + "<br/><br/>";			
		}
	
	};

} ();


function addLoadDesktopEvent(func) {
	var oldonload = window.onload;
	//alert(typeof window.onload + " --- " + func);
   	if (typeof window.onload != 'function') {
    	window.onload = func;
   	}
   	else {
      	window.onload = function() {
      	oldonload();
      	func();	
    	}
   	}
}
/*
 * (c)2006 Dean Edwards/Matthias Miller/John Resig
 * Special thanks to Dan Webb's domready.js Prototype extension
 * and Simon Willison's addLoadEvent
 *
 * For more info, see:
 * http://dean.edwards.name/weblog/2006/06/again/
 * http://www.vivabit.com/bollocks/2006/06/21/a-dom-ready-extension-for-prototype
 * http://simon.incutio.com/archive/2004/05/26/addLoadEvent
 * 
 * Thrown together by Jesse Skinner (http://www.thefutureoftheweb.com/)
 *
 *
 * To use: call addDOMLoadEvent one or more times with functions, ie:
 *
 *    function something() {
 *       // do something
 *    }
 *    addDOMLoadEvent(something);
 *
 *    addDOMLoadEvent(function() {
 *        // do other stuff
 *    });
 *
 */
 
function addLoadEvent(func) {
	//alert(window.location);
   if (!window.__load_events) {
      var init = function () {      	  
          // quit if this function has already been called
          if (arguments.callee.done) return;
      	  //logger.log(window.location, "onload has been called: " + window.__load_events.length);
      	  //parent.desktop.setMutex("onload");
      	  //logger.log(window.location,"mutex set!");
      
          // flag this function so we don't do the same thing twice
          arguments.callee.done = true;
      
          // kill the timer
          if (window.__load_timer) {
              clearInterval(window.__load_timer);
              window.__load_timer = null;
          }
          
          // execute each function in the stack in the order they were added
          for (var i=0;i < window.__load_events.length;i++) {
	          //logger.log(window.location, (i + 1) + "/" + window.__load_events.length + ": " + window.__load_events[i]);
	          try {
              window.__load_events[i]();                   
              }
              catch(err) {
              	//logger.log(window.location, "function " + (i + 1) + " failed! " + err);
              }
          }
          window.__load_events = null;
          //parent.desktop.clearMutex("onload");
          //logger.log(window.location,"mutex cleared!");   
      };
   
      // 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 @*/
      
      // for Safari
      if (/WebKit/i.test(navigator.userAgent)) { // sniff
          window.__load_timer = setInterval(function() {
              if (/loaded|complete/.test(document.readyState)) {
              	  /*if (parent.desktop.getMutex("onload") == 0) {
	              	  logger.log(window.location, "mutex check (before init) -> " + parent.desktop.getMutex("onload"));
	                  init(); // call the onload handler
	              }
	              else if (parent.desktop.getMutex("onload") > 500) {
	              	  clearInterval(window.__load_timer);	              	  
	              }
	              else { logger.log(window.location, "mutex check -> " + parent.desktop.getMutex("onload")); }*/
	              init();
              }
          }, 10);
      } else 
      	 window.onload = init;
     	
     
      
      // create event function stack
      window.__load_events = [];
      
   }
   
   // add function to event stack
   window.__load_events.push(func);

}


