function tablelayout() {
	contentsDiv = document.getElementById('contents');
	if (readmode) {
		contentsDiv.style.height ='497px';
	}
	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;
			}
		}
		if (tables[i].className.indexOf('scrollable') > -1) {
			// skapa en ny tabell och lyft över rubrikcellerna dit
			table = document.createElement('table');
			table.className = 'datatable';
			table.cellSpacing = '0';
			table.appendChild(document.createElement('tbody'));
			table = table.childNodes[0];
			r = 0;
			if (tables[i].rows[r].cells[1] != null) 
			    while (tables[i].rows[r].cells[1].tagName == 'TH') {
				    table.appendChild(tables[i].rows[r]);
				    r++;
			    }
			
			tables[i].parentNode.insertBefore(table.parentNode, tables[i]);
			
			tablescrollpanel = document.createElement('div');
			tablescrollpanel.className = 'tablescrollpanel';
			tables[i].parentNode.appendChild(tablescrollpanel);
			tablescrollpanel.appendChild(tables[i + 1]);
			return;
		}
	}	
}

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;
}

/* -------- INLINE DIAGRAM FUNCTION ---------------------------------------------------------------------------------- */

var hasRadio = false;
var diagrambars;
var diagramrow;
var maintable;

function initradios(div) {
	table = div.getElementsByTagName('table');
	var cell = document.createElement('th');
	cell.className = 'radio';
	cell.innerHTML = '<input type="radio" name="radio" onclick="hidediagram();" />';
	table[0].rows[0].insertBefore(cell, table[0].rows[0].cells[1]);
	
	maintable = table[1];
	for (var i = 0; i < table[1].rows.length; i++) {
		cell = table[1].rows[i].insertCell(1);
		cell.className = 'radio';
		cell.innerHTML = '<input type="radio" name="radio" onclick="showdiagram(' + i + ');" />';
	}
	hasRadio = true;
}

function hidediagram() {
	if (diagrambars == null) return;
	for (var i = 0; i < diagrambars.length; i++) {
		diagrambars[i].style.display = 'none';
	}
}

function tablescroll() {
	diagrambars[0].parentNode.style.top = (this.offsetTop - this.scrollTop) + 'px';
}

function showdiagram(rowindex) {
	rowindex++;
	if (rowindex == 0) {
		if (diagrambars != null) {
			for (var i = 0; i < diagrambars.length; i++) {
				diagrambars[i].style.display = 'none';
			}
		}
		if (diagramrow != null) {
			diagramrow.className = diagramrow.className.replace('diagram', '');
			diagramrow = null;
		}
		return;
	}
	if (diagramrow != null) {
		diagramrow.className = diagramrow.className.replace('diagram', '');
	}
	else {
		div = document.createElement('div');
		div.id = 'bars';
		for (var i = 0; i < 10; i++) {
			img = document.createElement('img');
			img.width = '7';
			div.appendChild(img);
		}
		document.getElementById('tablecontent').appendChild(div);
		el = document.getElementById('tablecontent').getElementsByTagName('div')[0];
		addEvent(el, 'scroll', tablescroll);
		div.style.top = (el.offsetTop - el.scrollTop) + 'px';
		
		if (rowindex == -1) return;
		diagrambars = document.getElementById('bars').getElementsByTagName('IMG');
	}
	
	if (rowindex != -1) {
		diagramrow = maintable.rows.item(rowindex - 1);
	}
	else if (diagramrow.style.display == 'none') {
		for (var i = 0; i < diagrambars.length; i++) {
			diagrambars[i].style.display = 'none';
		}
		return;	
	}
	
	diagramrow.className = diagramrow.className + ' diagram';
	diagramcells = diagramrow.cells;
	cellvalue = new Array();
	max = -1000000;
	min = 1000000;
	label = diagramcells[0].childNodes[0];
		
	for (var i = 3; i < diagramcells.length; i++) {
		cellvalue[i] = diagramcells[i].innerHTML;
		if (lang == 'en')
			cellvalue[i] = cellvalue[i].replace(',', '');
		else
			cellvalue[i] = cellvalue[i].replace('&nbsp;', '').replace(',', '.').replace(' ', '').replace(' ', '');
			
		cellvalue[i] = parseFloat(cellvalue[i]);
		if (cellvalue[i] < min)
			min = cellvalue[i];
		if (cellvalue[i] > max)
			max = cellvalue[i];
	}
	
	scale = 1;
	
	if (Math.abs(min) > max) {
		scale = -min;
	}
	else {
		scale = max;
	}

	scrollDivTop = 3;
	
	for (var i = 3; i < diagramcells.length; i++) {
		if (isNaN(cellvalue[i]))
			cellvalue[i] = 0;
			
		height = parseInt((Math.abs(cellvalue[i]) / scale) * 100);
		diagrambars[i-2].style.height = height + 'px';
		diagrambars[i-2].style.left = (25 + (i * 72)) + 'px';
		if (cellvalue[i] < 0)  {
			diagrambars[i-2].className = 'negative';
			diagrambars[i-2].style.top = (diagramrow.offsetTop + 19 - scrollDivTop) + 'px';
			diagrambars[i-2].src = '../../images/diagramred.gif';
		}
		else {
			diagrambars[i-2].className = '';
			diagrambars[i-2].style.top = (diagramrow.offsetTop - height + 18 - scrollDivTop) + 'px';
			diagrambars[i-2].src = '../../images/diagramblue.gif';
		}
		
		diagrambars[i-2].style.display = 'block';
	}
}
