﻿dbgbtn=0;
stktraces=new Array();
function dce(str)
{
	return document.createElement(str);
}
function dctn(str)
{
	return document.createTextNode(str);
}
function gebi(str)
{
	return document.getElementById(str);
}
function ShowSTs()
{
	var div,p;
	div=dce("DIV");
	gebi("container").insertBefore(div,dbgbtn);
	dbgbtn.parentNode.removeChild(dbgbtn);
	for(i in stktraces) {
		p=dce("P");
		p.appendChild(stktraces[i]);
		div.appendChild(p);
	}
	stktraces=new Array();
}
function MakeTH(row,text)
{
	var th=dce("TH");
	th.appendChild(document.createTextNode(text));
	row.appendChild(th);
}
function GenerateStackTrace()
{
	if(typeof(debug)=='undefined') return;
	var a,i,len,tbl,lines,row,cell,x;
	tbl=dce("TABLE");
	tbl.className='t1';
	head=tbl.createTHead().insertRow(-1);
	head.className='t3';
	MakeTH(head,'Navn');
	MakeTH(head,'Fil');
	MakeTH(head,'Linje');
	try {
		a.a=0;
	} catch(e) {
		lines=e.stack.split("\n");
		lines.shift();
		for(i in lines) if(lines[i].length) {
			x=lines[i].split("@");
			row=tbl.insertRow(-1);
			cell=row.insertCell(-1);
			cell.appendChild(document.createTextNode(x[0]));
			cell=row.insertCell(-1);
			y=x[1].lastIndexOf(':');
			cell.appendChild(document.createTextNode(x[1].substring(0,y)));
			cell=row.insertCell(-1);
			cell.appendChild(document.createTextNode(x[1].substring(y+1)));
		}
	}
	stktraces.push(tbl);
	if(!dbgbtn) {
		dbgbtn=dce("BUTTON");
		dbgbtn.type="BUTTON";
		dbgbtn.onclick=ShowSTs;
		dbgbtn.appendChild(document.createTextNode("Debug info"));
		gebi("container").insertBefore(dbgbtn,gebi("container").firstChild);
	}
}
