if (document.documentElement && document.getElementById && navigator.userAgent.indexOf('Opera 7')<0) {
	document.documentElement.className="js";
}

var scroble_labels;


function inner_text(c)
{
	var s='';
	var el;
	if (!c) return '';
	for (el=c.firstChild;el;el=el.nextSibling) {
		if (el.nodeType == 3) {
			s+=el.nodeValue;
			continue;
		}
		if (el.nodeType== 1) {
			var z=inner_text(el);
			if (z) s+=' '+z;
		}
	}
	return s.replace(/\s+/g,' ');
}

function get_label(cell)
{
	return inner_text(cell).replace(/^\s+/g,'').replace(/\s+$/g,'');
}

function scroblesorter(ela,elb)
{
	var i;
	for (i=0;i<ela.succ.length;i++) if (ela.succ[i]==elb.lab) return -1;
	for (i=0;i<ela.pred.length;i++) if (ela.pred[i]==elb.lab) return 1;
	for (i=0;i<elb.succ.length;i++) if (elb.succ[i]==ela.lab) return 1;
	for (i=0;i<elb.pred.length;i++) if (elb.pred[i]==ela.lab) return -1;
	if (ela.lab > elb.lab) return 1;
	if (ela.lab < elb.lab) return -1;
	return 0;
	
}

function make_scroblabs(tabelka)
{
	var i,j,m;
	var s='';
	for (i=0;i<tabelka.length;i++) {
		var el=null;
		for (j=0;j<scroble_labels.length;j++) if (scroble_labels[j].lab == tabelka[i]) {
			el=scroble_labels[j];
			break;
		}
		if (!el) {
			el={lab:tabelka[i],pred:[],succ:[]};
			scroble_labels.push(el);
		}
		for (j=0;j<i-1;j++) {
			for (m=0;m<el.pred.length;m++) if (el.pred[m]==tabelka[j]) break;
			if (m>=el.pred.length) el.pred.push(tabelka[j]);
		}
		for (j=i+1;j<tabelka.length;j++) {
			for (m=0;m<el.succ.length;m++) if (el.succ[m]==tabelka[j]) break;
			if (m>=el.succ.length) el.succ.push(tabelka[j]);
		}
	}
}

var scroble_cols;

function append_div(div)
{
	var anchr;
	var ars=div.getElementsByTagName('a');
	if (ars.length<1) return;
	anchr=ars[ars.length-1];
	ars=div.getElementsByTagName('table');
	if (ars.length != 1) return;
	var tabela=ars[0];
	var i;
	var rows=new Array();
	for (i=0;i<tabela.rows.length;i++) rows[get_label(tabela.rows[i].cells[0])]=get_label(tabela.rows[i].cells[1]);
	scroble_cols.push({anchr:anchr,rows:rows});
}

function has_table_inside(e)
{
	var l=e.getElementsByTagName('table');
	if (l.length>0) return true;
	return false;
}

function rescroble(el)
{
 	if(navigator.userAgent.indexOf('Opera 7')>=0) return;
	var tabelki=el.getElementsByTagName('table');
	if (tabelki.length<2) {
		el.className+=' visible';
		return;
	}
	var i,j;
	scroble_labels=new Array();
	for (i=0;i<tabelki.length;i++) {
		var tabelka=tabelki[i];
		var tablist=new Array();
		for (j=0;j<tabelka.rows.length;j++) tablist.push(get_label(tabelka.rows[j].cells[0]));
		make_scroblabs(tablist);
	}
	var a=new Array();
	scroble_labels.sort(scroblesorter);
	scroble_cols=new Array();
	var divs=el.getElementsByTagName('div');
	for (i=0;i<divs.length;i++) if (has_table_inside(divs[i])) append_div(divs[i]);
	
	var table=document.createElement('table');
	table.className="proptable";
	var thead=document.createElement('thead');
	var row=document.createElement('tr');
	var hdr;
	for (i=0;i<scroble_labels.length;i++) {
		hdr=document.createElement('th');
		var s=scroble_labels[i].lab;
		var n=s.indexOf('[');
		if (n>0) {
			hdr.appendChild(document.createTextNode(s.substr(0,n)+'\n'));
			hdr.appendChild(document.createElement('br'));
			hdr.appendChild(document.createTextNode(s.substr(n)));
		}
		else hdr.appendChild(document.createTextNode(scroble_labels[i].lab));
		row.appendChild(hdr);
	}
	thead.appendChild(row);
	table.appendChild(thead);
	
	var tbody=document.createElement('tbody');
	for (i=0;i<scroble_cols.length;i++) {
		row=document.createElement('tr');
		for (j=0;j<scroble_labels.length;j++) {
			var s=scroble_cols[i].rows[scroble_labels[j].lab];
			hdr=document.createElement('td');
			if (!j && scroble_cols[i].anchr) {
				if (!s) s='-';
				var a=document.createElement('a');
				a.href=scroble_cols[i].anchr.href;
				a.appendChild(document.createTextNode(s));
				hdr.appendChild(a);
			}
			else if (s) hdr.appendChild(document.createTextNode(s));
			row.appendChild(hdr);
		}
		tbody.appendChild(row);
	}
	
	table.appendChild(tbody);
	if (el.nextSibling) el.parentNode.insertBefore(table,el.nextSibling);
	else el.parentNode.appendChild(table);
}
