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

// Select current debug level
var debugLevel=INFO;

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;
	}*/

	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="";
	if (out)	out.innerHTML=out.innerHTML+"<br>"+"#"+(debugOutInfo.debugLine++)+dt+": "+msg.replace(/\n/g,"<br>").replace(/</g,"&lt;").replace(/>/g,"&gt;");
	//else alert(msg);
}


