function GoTop() {
	document.getElementById('TableContainer').scrollTop = 0;
}

function sortTable(td_element,ignoreLastLines) {
	ignoreLastLines = (typeof(ignoreLastLines)=='undefined') ? 0 : ignoreLastLines;
	var sortImages =['img/desc.gif','img/asc.gif','img/none.gif','img/sorting.gif']; 
	var sortColImage = td_element.getElementsByTagName('img')[0];
	var sortAscending = false;
	var newSortColImage = "";
	if (sortColImage.getAttribute('src').indexOf(sortImages[1])>-1 || 
	 sortColImage.getAttribute('src').indexOf(sortImages[2])>-1) {
		newSortColImage = sortImages[0];
		sortAscending = false;
	} else {
		newSortColImage = sortImages[1];
		sortAscending = true;
	}
	sortColImage.setAttribute('src',sortImages[3]);

	var indexCol = td_element.cellIndex;

	var table_element = td_element.parentNode;
	while (table_element.nodeName != "TABLE") {
		table_element = table_element.parentNode;
	}

	var tr_elements = table_element.getElementsByTagName('tr');

	var allImg = tr_elements[0].getElementsByTagName('img');
	for(var i=0;i<allImg.length;i++){
		if(allImg[i]!=sortColImage){allImg[i].setAttribute('src',sortImages[2])}
	}
	var clonedRows = new Array() 
	var originalCol = new Array();
	for (var i=1; i<tr_elements.length - ignoreLastLines; i++) {
		clonedRows[i]=tr_elements[i].cloneNode(true);
		var valueCol = getTextValue(tr_elements[i].cells[indexCol]);
		valueCol = FormatForType(valueCol);
		originalCol[i]=[valueCol,tr_elements[i].rowIndex];
	}
	originalCol.shift();
	sortCol = originalCol.sort(sortCompare);
	if (sortAscending) { sortCol.reverse(); }
	for (var i=1; i < tr_elements.length - ignoreLastLines; i++) { 
		var old_row = sortCol[i-1][1];
		var new_row = i;
		tr_elements[i].parentNode.replaceChild(clonedRows[old_row],tr_elements[new_row]);
	}
	makePretty(table_element,indexCol,ignoreLastLines);

	sortColImage.setAttribute('src',newSortColImage);
}

function sortCompare (currValue, nextValue) {
	s1= currValue[0]
	s2 = nextValue[0]
	
	if (s1.substring(0,1) >= "0" && s1.substring(0,1) <= "9" && s2.substring(0,1) >= "0" && s2.substring(0,1) <= "9")
	{
		if ( parseFloat(s1, 10) == parseFloat(s2, 10) ) return 0;
		if ( parseFloat(s1, 10) < parseFloat(s2, 10) ) return -1;
		if ( parseFloat(s1, 10) > parseFloat(s2, 10) ) return 1;
	}
	else if (s1.substring(0,1) >= "0" && s1.substring(0,1) <= "9")
	{
		return 1;
	}
	else if (s2.substring(0,1) >= "0" && s2.substring(0,1) <= "9")
	{
		return -1;
	}
	else
	{
		if ( s1 == s2 ) return 0;
		if ( s1 < s2 ) return -1;
		if ( s1 > s2 ) return 1;
	}
	
}

if (document.ELEMENT_NODE == null) {
	document.ELEMENT_NODE = 1;
	document.TEXT_NODE = 3;
}

function getTextValue(el) {
	var i;
	var s;
	s = "";
	for (i = 0; i < el.childNodes.length; i++)
		if (el.childNodes[i].nodeType == document.TEXT_NODE)
			s += el.childNodes[i].nodeValue;
		else if (el.childNodes[i].nodeType == document.ELEMENT_NODE &&
			el.childNodes[i].tagName == "BR")
		  	s += " ";
		else
		  	s += getTextValue(el.childNodes[i]);

	return normalizeString(s);
}

var whtSpEnds = new RegExp("^\\s*|\\s*$", "g");
var whtSpMult = new RegExp("\\s\\s+", "g");

function normalizeString(s) {
	s = s.replace(whtSpMult, " ");  // Collapse any multiple whites space.
	s = s.replace(whtSpEnds, "");   // Remove leading or trailing white space.
  return s;
}

function FormatForType(itm) {
	var sortValue = itm.toLowerCase();

  	return sortValue;
}

var rowClsNm = "alternateRow";
var colClsNm = "sortedColumn";
var rowTest = new RegExp(rowClsNm, "gi");
var colTest = new RegExp(colClsNm, "gi");

function makePretty(tblEl, col, ignoreLastLines) {
	var i, j;
	var rowEl, cellEl;
	for (i = 1; i < tblEl.rows.length - ignoreLastLines; i++) {
		rowEl = tblEl.rows[i];
		rowEl.className = rowEl.className.replace(rowTest, "");
		if (i % 2 != 0)
			rowEl.className += " " + rowClsNm;
		rowEl.className = normalizeString(rowEl.className);
		for (j = 0; j < tblEl.rows[i].cells.length; j++) {
			cellEl = rowEl.cells[j];
			cellEl.className = cellEl.className.replace(colTest, "");
			if (j == col)
				cellEl.className += " " + colClsNm;
			cellEl.className = normalizeString(cellEl.className);
		}
	}
}

