var debugIsActive    = false;
var debugStartTime   = new Date().getTime();
var debugMsgCounter  = debugStartTime;
var debugMsgDefDelay = -1;

/*
function debugMsg(debugStatus, debugMsgDelay) {
   alert(debugStatus);
}
*/

function showDebugMsg(debugStatus, debugMsgDelay) {
   if (debugIsActive) {
      var debugDelay = '';
      var debugMsgCurrTime = new Date().getTime();

      if (typeof(debugMsgDelay) == 'undefined') debugMsgDelay = debugMsgDefDelay;
      if ((debugMsgDelay) > 0) debugDelay = ' [debug message delayed ' + debugMsgDelay/1000 + ' seconds]';

      if ((debugMsgCurrTime-debugMsgCounter) > debugMsgDelay) {
         alert(debugMsg.caller.getName() + '(): ' + debugStatus + debugDelay);
         debugMsgCounter = new Date().getTime();
      }
   }
}

function initStartTime() {
   debugStartTime = new Date().getTime();
}

function getElapsedTime() {
   var currTime = new Date().getTime();
   return ((currTime-debugStartTime)/1000);
}

Function.prototype.getName = function() {
   return this.toString().split(' ')[1].split('(')[0];
}
