var debug_count = 0;
var debug_vis = false;
var debug_wide = false;

function debug(msg) {
	if (isObject(document.getElementsByTagName('body').item(0))) {
		if (!document.getElementById('debug')) {
			var div = document.createElement('div');
			div.id = 'debug';
			div.style.zIndex = 100000;
			div.style.background = '#fff';
			div.style.border = '1px solid #000';
			div.style.position = 'absolute';
			div.style.top = '20px';
			div.style.right = '10px';
			div.style.overflow = 'hidden';
			div.style.padding  = '5px';

			var divd = document.createElement('div');
			divd.id = 'debug_content';
			divd.style.display = 'none';

			var divo = document.createElement('div');
			divo.id = 'debug_off';
			divo.innerHTML = '0';

			div.appendChild(divd);
			div.appendChild(divo);

			var p = document.createElement('p');
			p.style.fontFamily = 'courier';
			p.style.fontSize = '12px';
			p.innerHTML = "<a href='#' id='debug_clear' style='display:none;' onclick='clear_debug()'>Clear</a> <a style='display:none;' id='debug_close' href='#' onclick='close_debug()'>Close</a>";
			div.appendChild(p);

			div.onmouseover = function() {
				if (!isUndefined(debug_vis) && !debug_vis) {
					document.getElementById('debug').style.width = '400px';
					document.getElementById('debug').style.height = '200px';
					document.getElementById('debug').style.overflow = 'scroll';
					document.getElementById('debug_content').style.display = 'block';
					document.getElementById('debug_close').style.display = 'inline';
					document.getElementById('debug_clear').style.display = 'inline';
					document.getElementById('debug_off').style.display = 'none';
					document.getElementById('debug').scrollTop = 0;document.getElementById('debug').scrollTop = document.getElementById('debug').scrollHeight;
					debug_vis = true;
				}
			}

			div.ondblclick = function() {
				if (debug_vis && !debug_wide) {
					debug_wide = true;
					document.getElementById('debug').style.width = '800px';
					document.getElementById('debug').style.height = '400px';
				} else if(debug_vis && debug_wide) {
					debug_wide = false;
					document.getElementById('debug').style.width = '400px';
					document.getElementById('debug').style.height = '200px';
				}
			}

			var body = document.getElementsByTagName('body').item(0);
			body.insertBefore(div,body.firstChild.nextSibling);
		}

		debug_count++;

		var p = document.createElement('pre');
		p.innerHTML = '<strong>'+debug_count+'</strong><br/>'+msg;
		p.style.borderBottom = '1px solid #000';
		p.style.paddingBottom = '5px';
		p.style.paddingTop = '5px';
		document.getElementById('debug_content').appendChild(p);
		document.getElementById('debug_off').innerHTML = debug_count;
		if (document.getElementById('debug_content').style.display == 'block') {
			document.getElementById('debug').scrollTop = 0;document.getElementById('debug').scrollTop = document.getElementById('debug').scrollHeight;
		}

		if (debug_count > 100) {
			while (debug_count > 100) {
				document.getElementById('debug_content').removeChild(document.getElementById('debug_content').firstChild);
				debug_count--;
				document.getElementById('debug_off').innerHTML = debug_count;
			}
		}

		document.getElementById('debug').style.background = '#ff0';
		setTimeout(function() {
			document.getElementById('debug').style.background = '#fff';
		},1000);
	}
}

function close_debug() {
	if (debug_vis) {
		document.getElementById('debug_content').style.display = 'none';
		document.getElementById('debug_close').style.display = 'none';
		document.getElementById('debug_clear').style.display = 'none';
		document.getElementById('debug_off').style.display = 'block';
		document.getElementById('debug').style.width = null;
		document.getElementById('debug').style.height = null;
		document.getElementById('debug').style.overflow = 'hidden';
		debug_vis = false;
	}
}

function clear_debug() {
	debug_count = 0;
	document.getElementById('debug_content').innerHTML = "";
	document.getElementById('debug_off').innerHTML = debug_count;
}