// Debug Levels available
var OFF = 0;
var INFO = 1;
var WARNING = 2;
var DEBUG = 3;

// Select current debug level
var debugLevel=OFF;

var debugOutInfo = { debugLine:0,lastDebugMsg:null,debugMsgCount:0 }

/**
* The function to call the debug.
* Parameters: 
*	msg(string): the message to print
*	verbosity(integer): the level of this message [INFO, WARNING OR DEBUG]
*	preventRepeats(boolean): Prevents printing the same message and replaces it with a counter incrementation
*/
function DebugOut(msg,verbosity,preventRepeats){
	// *** Set global variable 'debugLevel' to an integer. Higher numbers corresponds to more verbose.
	if (this.debugLevel==null || debugLevel<verbosity) return;
	/*if (preventRepeats){
		if (msg==debugOutInfo.lastDebugMsg){
			debugOutInfo.debugMsgCount++;
			return;
		}
		debugOutInfo.lastDebugMsg = msg;
	}*/
	if (typeof(console)!=="undefined"){
		console.log(msg);
	} else {
		var out = document.getElementById('debugoutput');
		/*if (debugOutInfo.debugMsgCount>0){
			var dupsMessge = "previous output repeated "+debugOutInfo.debugMsgCount+" times...";
			if (out)	out.innerHTML="#"+(debugLine)+": "+dupsMessge+"<br>"+out.innerHTML;
			else alert(dupsMessge);
			debugOutInfo.debugMsgCount=0;
		}*/
		//var dt=new Date();
		if (out)	out.innerHTML="#"+(debugOutInfo.debugLine++)+": "+msg.replace(/\n/g,"<br>").replace(/</g,"&lt;").replace(/>/g,"&gt;")+"<br>"+out.innerHTML;
		else alert(msg);
	}
}



