function tablelayout() {
	contentsDiv = document.getElementById('contents');
	
	tables = document.getElementsByTagName('table');
	for (var i = 0; i < tables.length; i++) {
		if (tables[i].className.indexOf('datatable') > -1) {
			// catch links for note-popups
			a = tables[i].getElementsByTagName('a');
			for (var k = 0; k < a.length; k++) {
				initInternalLink(a[k]);
			}
			
			oldlevel = 1;
			for (var r = 1; r < tables[i].rows.length - 1; r++) {
				className = tables[i].rows[r].className;
				pos = className.indexOf('lev') + 3;
				level = className.substring(pos, pos + 1);
				
				if (level > oldlevel) {
					cell = tables[i].rows[r - 1].cells[0];
					tmplevel = level;
					while (tmplevel > 1) {
						tmplevel--;
						cell = cell.childNodes[0];
					}
					a = document.createElement('a');
					a.innerHTML = cell.innerHTML;
					a.href = '#';
					if (document.addEventListener) {
						a.addEventListener('click', swaprows, false);
					} 
					else if (document.attachEvent){
						a.attachEvent('onclick', swaprows);
					}
					cell.innerHTML = '';
					cell.appendChild(a);
				}
				oldlevel = level;
			}
		}
		
		var tableheight;
		try {
			tableheight = document.getElementById('tablecontent').offsetHeight - 1;
		}
		catch(ex) {
			tableheight = 441;
		}
		
		
		if (tables[i].className.indexOf('scrollable') > -1) {
			table = document.createElement('table');
			table.className = tables[i].className;
			table.cellSpacing = '0';
			table.appendChild(document.createElement('tbody'));
			table = table.childNodes[0];
			table.appendChild(tables[i].rows[0]); // append first row
			if (tables[i].rows[0].cells[1].tagName == 'TH')
				table.appendChild(tables[i].rows[0]); // append second row
			
			tables[i].parentNode.insertBefore(table.parentNode, tables[i]);
			tableheight -= table.offsetHeight;
			
			tablescrollpanel = document.createElement('div');
			tablescrollpanel.className = 'tablescrollpanel';
			tables[i].parentNode.appendChild(tablescrollpanel);
			tablescrollpanel.appendChild(tables[i + 1]);
			tablescrollpanel.style.height = tableheight + 'px';
			return;
		}
		else {
			tablescrollpanel = document.createElement('div');
			tablescrollpanel.className = 'tablescrollpanel';
			tables[i].parentNode.appendChild(tablescrollpanel);
			tablescrollpanel.appendChild(tables[i]);
			tablescrollpanel.style.height = tableheight + 'px';
		}
	}
}

function swaprows(e) {
	if (document.addEventListener) {
		e.preventDefault();
		a = e.target;
		if (a.className != 'expanded') {
			a.className = 'expanded'; 
			viewtype = 'table-row';
			//stat_function('\\Table\\Expand # ' + a.innerHTML);
		}
		else {
			a.className = '';
			viewtype = 'none';
			//stat_function('\\Table\\Collapse # ' + a.innerHTML);
		}
	}
	else {
		e.cancelBubble = true;
		a = e.srcElement;
		if (a.className != 'expanded') {
			a.className = 'expanded'; 
			viewtype = 'block';
			//stat_function('\\Table\\Expand # ' + a.innerHTML);
		}
		else {
			a.className = '';
			viewtype = 'none';
			//stat_function('\\Table\\Collapse # ' + a.innerHTML);
		}
	}
	
	tr = a.parentNode;
	
	while (tr.tagName != 'TR') 
		tr = tr.parentNode;
		
	if (a.className != 'expanded')
		tr.className = tr.className.replace(' expanded', '');
	else
		tr.className += ' expanded';
		
	var textindex = tr.className.indexOf('lev');
	startlevel = parseInt(tr.className.substring(textindex + 3, textindex + 4));
	level = startlevel + 1;
	var rowindex = tr.rowIndex;
	tr = tr.parentNode.rows[rowindex + 1];
	
	while (startlevel < level) {
		
		if (startlevel == level - 1 || viewtype == 'none')
			tr.style.display = viewtype;
		
		a = tr.cells[0].getElementsByTagName('a');
		if (a.length > 0) {
			a[0].className = ''; // this will collapse all sub-items
			tr.className = tr.className.replace(' expanded', '');
		}
		
		if (tr.parentNode.rows.length <= rowindex + 1)
			break;
			
		rowindex++;
		tr = tr.parentNode.rows[rowindex];
		textindex = tr.className.indexOf('lev');
		level = parseInt(tr.className.substring(textindex + 3, textindex + 4));
	}
	/*
	if (container) {
		column = container.getElementsByTagName('div')[0];
		if (column.className != 'column') {
			stat_rowisexpanding = true;
			showdiagram(-1);
			stat_rowisexpanding = false;
		}
	}*/
	
	return false;
}