function initSortTable(table) {
	var tbody = table.tBodies[0]
	tbody.arr = new Array()
	tbody.lastSort = new Array()
	tbody.sortOrder = new Array()
	var r = tbody.rows
	for (var i=0; i<r.length;i++) {
		tbody.arr[i] = new Array()
		for (j=0; j<r[i].cells.length;j++) {
			var x = new Object
			x.val = r[i].cells[j].innerHTML
			x.num = parseFloat(x.val)
			x.num= isNaN(x.num) ? x.val : x.num
			tbody.arr[i][j]=x
		}
	}
	var cells = table.tHead.rows[0].cells
	for (var i=0; i<cells.length; i++) {
		cells[i].value=i
		cells[i].onclick= function() {sortTable(tbody, this)}
		cells[i].onmouseover = function() {addClass(this, "hover")}
		cells[i].onmouseout  = function() {removeClass(this, "hover")}
	}
}

function sortTable(t, th) {
	if (t.last) {
		removeClass(t.last, "asc")
		removeClass(t.last, "desc")
	}
	t.last = th
	sortcell = th.value
	if (sortcell==null) sortcell=0
	addClass(th, t.sortOrder[sortcell] == 1 ? "desc" : "asc")
	var r=t.rows

	function sortnum(a, b, index) {
		if (!index) index= 0
		var a2=a[t.lastSort[index]].num
		var b2=b[t.lastSort[index]].num
		if (a2==b2)
			result = (index < t.lastSort.length-1) ? sortnum(a, b, index+1) : 0
		else
			result = (a2 < b2) ? -1 : 1
		return result * t.sortOrder[t.lastSort[index]]
	}

	if (t.sortOrder[sortcell]==null)
			t.sortOrder[sortcell]=1
		else 
			t.sortOrder[sortcell]*= -1
	i=0
	while (t.lastSort[i] != sortcell && i < t.lastSort.length) i++
	if (i<t.lastSort.length)
		t.lastSort.splice(i, 1)
				
	t.lastSort.splice(0, 0, sortcell)
	t.arr.sort(sortnum)

	for (i=0; i<r.length;i++)
		for (j=0; j<r[i].cells.length; j++)
			r[i].cells[j].innerHTML = t.arr[i][j].val
	
}


function makeSortable(tableID) {
	if (tableID) {
		tables = new Array
		tables[0] = getElement(tableID)
		if (!tables[0])
			tables = getElementsByClass(tableID, "table")
	} else
		tables = document.getElementsByTagName("table")
	for (i=0; i<tables.length; i++)
		initSortTable(tables[i])
}
	
