function whichBrs() {
	var agt=navigator.userAgent.toLowerCase();
	if (agt.indexOf("opera") != -1) return 'Opera';
	if (agt.indexOf("staroffice") != -1) return 'Star Office';
	if (agt.indexOf("beonex") != -1) return 'Beonex';
	if (agt.indexOf("chimera") != -1) return 'Chimera';
	if (agt.indexOf("netpositive") != -1) return 'NetPositive';
	if (agt.indexOf("phoenix") != -1) return 'Phoenix';
	if (agt.indexOf("firefox") != -1) return 'Firefox';
	if (agt.indexOf("safari") != -1) return 'Safari';
	if (agt.indexOf("skipstone") != -1) return 'SkipStone';
	if (agt.indexOf("msie") != -1) return 'Internet Explorer';
	if (agt.indexOf("netscape") != -1) return 'Netscape';
	if (agt.indexOf("mozilla/5.0") != -1) return 'Mozilla';
	if (agt.indexOf('\/') != -1) {
	if (agt.substr(0,agt.indexOf('\/')) != 'mozilla') {
	return navigator.userAgent.substr(0,agt.indexOf('\/'));}
	else return 'Netscape';} else if (agt.indexOf(' ') != -1)
	return navigator.userAgent.substr(0,agt.indexOf(' '));
	else return navigator.userAgent;
}

var theBrowser = whichBrs();

function escapeJavaLiteral(str) {
	str = str.replace(/'/g,"\\'");
	str = str.replace(/'\n/g,"\\n");
	return str;
}

function getAbsLeft(o) {
	var pos = 0;
	while (o && o.tagName != "BODY") {
		pos += o.offsetLeft;
		o = o.offsetParent;
	}
	return pos;
}

function getAbsTop(o) {
	var pos = 0;
	while (o && o.tagName != "BODY") {
		pos += o.offsetTop;
		o = o.offsetParent;
	}
	return pos;
}

////////////// TRACE FUNCTIONS /////////////////

function __trace(msg) {
	var date  = new Date();
	var timestamp = date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds() + " " + date.getMilliseconds() + " ";
	document.getElementById("debug_console").innerHTML += timestamp + msg + "<br>";
}

function __trace_html(msg) {
	document.getElementById("debug_console").innerHTML = msg.replace(/</g,"&lt;").replace(/\n/g,"<br>");
}



