function fixSpacing(){
	var tables = document.getElementsByTagName("tbody");
	for(var ii = 0; ii < tables.length; ii++){
		colNum = 0;
		while(getCol(tables[ii], colNum) != null){
			var col = getCol(tables[ii], colNum);
			if(col[0] == null) break;
			var maxDecimals = 0;
			for (var jj = 0; jj < col.length; jj++)
				if(isNumber(col[jj].innerHTML) && numDecimal(col[jj].innerHTML) > maxDecimals)
					maxDecimals = numDecimal(col[jj].innerHTML);			
			for (var jj = 0; jj < col.length; jj++)
				if(isNumber(col[jj].innerHTML))
					pad(col[jj], maxDecimals);
			colNum++;
		}
	}
	alternateLines();
}

function alternateLines(){
	var tables = document.getElementsByTagName("tbody");
	for(var ii = 0; ii < tables.length; ii++){
		var count = 1;
		var firstRow = false;
		var children = tables[ii].childNodes;
		for(var jj = 0; jj < children.length; jj++){
			if(children[jj].nodeName == "TR"){
				count++;
				var cells = children[jj].childNodes;
				var realCells = new Array();
				for(var kk = 0; kk < cells.length; kk++)
					if(cells[kk].nodeName == "TD" || cells[kk].nodeName == "TH")
						realCells[realCells.length] = cells[kk];	
				for(var ll = 0; ll < realCells.length; ll++){
					if(count % 2 == 1) realCells[ll].style.backgroundColor = "#EEEEEE";
					if(firstRow == false) realCells[ll].style.borderTopWidth = "0";
				}
				if(realCells[realCells.length - 1]) realCells[realCells.length - 1].style.borderRightWidth = "0"; 
				firstRow = true;
			}
		}		
	}
}

function pad(el, digits){
	if(el.nodeName != "TH") el.style.textAlign = "right";
	var number = new RegExp("(\\.[0-9]*)$");
	var result = number.exec(el.innerHTML);
	if (result) for(var ii = 0; ii < digits - result[1].length; ii++) el.innerHTML += "&nbsp;";
	else for(var ii = 0; ii < digits; ii++) el.innerHTML += "&nbsp;";
}

function getCol(table, colNum){
	var cells = new Array();
	var rows = new Array();
	var children = table.childNodes;
	for(var ii = 0; ii < children.length; ii++)
		if(children[ii].nodeName == "TR")
			rows[rows.length] = children[ii];
	
	for(var ii = 0; ii < rows.length; ii++)
		cells[cells.length] = getCell(rows[ii], colNum);
	return cells;
}

function getCell(row, colNum){
	var cells = new Array();
	var children = row.childNodes;
	for(var ii = 0; ii < children.length; ii++)
		if(children[ii].nodeName == "TD" || children[ii].nodeName == "TH") 
			cells[cells.length] = children[ii];

	var spaces = 0;
	for(var ii = 0; ii <= colNum; ii++){
		if(cells[ii]) spaces += cells[ii].colSpan;
		if(spaces - 1 >= colNum) return cells[ii];
	}
}

function isNumber(el){
	if(el == "—") return true;
	var number = new RegExp("^(<|>|\\+|-)?[0-9,]+\\.?[0-9]*$");
	if(number.exec(el)) return true;
	return false;
}

function numDecimal(el){
	var number = new RegExp("(\\.[0-9]+)$");
	var result = number.exec(el);
	if (result) return result[1].length;
	else return 0;
}