/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Author: Ferry Brouwer and Marcel le Rutte
Usage debug_funcs.js

debug.trace(str) 									-> Debug string in debug console	[@param str: string to display in console]
debug.clear()										-> Clear debug console		
debug.cols(int)										-> Set Number of colomns of the debug console	[@param int: number of colomns]
debug.rows(int)										-> Set Number of rows of the debug console		[@param int: number of rows]
track_mouse(event)									-> debug mouse positions (x and y) in console	[@param event: event (example onclick)]

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/

function Debugger(){}

Debugger.prototype.trace = function(str){
	if(typeof this.debugpanel == "undefined"){
		var debugpanel = document.createElement("DIV");
		debugpanel.setAttribute("id", "debug_panel");
		debugpanel.setAttribute("style", "top:10px; padding:0; left:10px; position:absolute; background:#FFF; z-index:999999; border:1px solid #000;");
		
		var titlebar = document.createElement("DIV");
		titlebar.setAttribute("id", "debug_title");
		titlebar.setAttribute("style", "padding:0; background:#000; width:100%; color:#FFF; text-align:center; font-size:8pt; cursor:pointer;");
		debugpanel.appendChild(titlebar);
		
		var textarea = document.createElement("TEXTAREA");
		textarea.cols = (this.numcols) ? this.numcols : 40;
		textarea.rows = (this.numrows) ? this.numrows : 10;
		textarea.setAttribute("style", "color:#000; background:#FFF; font-size:8pt; font-family:Arial; margin:5px; padding:3px;");
		debugpanel.appendChild(textarea);
		
		var _body = document.getElementsByTagName("body")[0];
		_body.appendChild(debugpanel);
		titlebar.innerHTML = "Debug panel";
		
		this.rowcounter = 0;
		this.globalcounter = 0;
		this.textarea = textarea;
		this.title = titlebar;
		this.debugpanel = debugpanel;
	}
	this.rowcounter++;
	this.globalcounter++;	
	
	if(this.rowcounter == this.textarea.rows){
		this.rowcounter = 0;
		this.textarea.value = "";
	}
	
	this.textarea.value += str.toString() + "\n";
	//if(doc != null && typeof(doc) != "undefined")doc.draggable(this.debugpanel);
}

Debugger.prototype.clear = function(){
	if(this.rowcounter)		this.rowcounter = 0;
	if(this.textarea)		this.textarea.value = "";
	if(this.globalcounter)	this.globalcounter = 0;
}

Debugger.prototype.rows = function(val){(this.textarea) ? this.textarea.rows = val : this.numrows = val;}
Debugger.prototype.cols = function(val){(this.textarea) ? this.textarea.cols = val : this.numcols = val;}

var debug = new Debugger();

function track_mouse(event){
	var mouse_tracker;
	event = event_DOMnify(event);
	if( document.getElementById("mouse_tracker") ){
		mouse_tracker = document.getElementById("mouse_tracker");
	}else{
		mouse_tracker = document.createElement("DIV");
		mouse_tracker.id = "mouse_tracker";
		document.body.appendChild(mouse_tracker);
	}
	mouse_tracker.visibility = "hidden";
	mouse_tracker.innerHTML = "X&nbsp;:&nbsp;" + event.pageX +"&nbsp;&nbsp;Y&nbsp;:&nbsp;" + event.pageY;
	mouse_tracker.style.position = "absolute";
	mouse_tracker.style.zIndex = '999999';
	mouse_tracker.style.left = event.pageX + 10 + "px";
	mouse_tracker.style.top = event.pageY + "px";
	mouse_tracker.style.backgroundColor = "yellow";
	mouse_tracker.style.visibility = "visible";
}
