// <![CDATA[
/* Quelle: http://glendinning.org/webbuilder/sortTable/

	 Adaptiert von Subhash: Beim Klick auf den Wochentag
	 wird nach Wochentag und Zeit sortiert, beim Klick auf
	 "Grad" wird eine sinnvolle Reihenfolge gewhlt, LeiterInnen
	 koennen auch verlinkt sein
	 
	 office@subhash.at
*/
var sortedOn = 0;

function SortTable(sortOn) {

	var table = document.getElementById('stundenplan');
	var tbody = table.getElementsByTagName('tbody')[0];
	var rows = tbody.getElementsByTagName('tr');

	var rowArray = new Array();
	for (var i=0, length=rows.length; i<length; i++) {
		rowArray[i] = rows[i].cloneNode(true);
	}
	
	if (sortOn == sortedOn) { rowArray.reverse(); }
	else {
		sortedOn = sortOn;
		if (sortedOn == -1) {
			rowArray.sort(RowCompareEuros);
		}
		else if (sortedOn == 0) {
			rowArray.sort(RowCompareDays);
			rowArray.sort(RowCompareDays2);		
		}
		else if ((sortedOn == 1) || (sortedOn == 2)) {
			rowArray.sort(RowCompareNumbers);
		}
		else if (sortedOn == 4) {
			rowArray.sort(RowCompareSkills);	
		}
		else if (sortedOn == 5) {
			rowArray.sort(RowCompareLeaders);	
		}
		else {
			rowArray.sort(RowCompare);
		}
	}
	
	var newTbody = document.createElement('tbody');
	for (var i=0, length=rowArray.length; i<length; i++) {
		newTbody.appendChild(rowArray[i]);
	}
	
	table.replaceChild(newTbody, tbody);
}

function RowCompareEuros(a, b) {

	var aVal = parseFloat(a.getElementsByTagName('td')[sortedOn].firstChild.nodeValue.substr(2));
	var bVal = parseFloat(b.getElementsByTagName('td')[sortedOn].firstChild.nodeValue.substr(2));
	return (aVal - bVal);
}

function RowCompareDays(a, b) {

	var aVal = a.getElementsByTagName('td')[sortedOn].firstChild.nodeValue;
	aVal = daysToNumbers(aVal);
	var bVal = b.getElementsByTagName('td')[sortedOn].firstChild.nodeValue;
	bVal = daysToNumbers(bVal);
	return (aVal - bVal);
}

function RowCompareDays2(a, b) {

	var aVal = a.getElementsByTagName('td')[sortedOn].firstChild.nodeValue;
	aVal = daysToNumbers(aVal);
	var bVal = b.getElementsByTagName('td')[sortedOn].firstChild.nodeValue;
	bVal = daysToNumbers(bVal);
	if  (aVal - bVal == 0) { // selber Wochentag
		var subRowArray = new Array();
		subRowArray[0] = a;
		subRowArray[1] = b;
		sortedOn = 1;
		var theResult = RowCompareNumbers(a, b);
		sortedOn = 0;
		return theResult;
	}
	else {
		return (aVal - bVal);
	}
}

function daysToNumbers(theDay) {

	if (theDay == "Montag") {
		theDay = 0;
	}
	else if (theDay == "Dienstag") {
		theDay = 1;
	}
	else if (theDay == "Mittwoch") {
		theDay = 2;
	}
	else if (theDay == "Donnerstag") {
		theDay = 3;
	}
	else if (theDay == "Freitag") {
		theDay = 4;
	}
	else if (theDay == "Samstag") {
		theDay = 5;
	}
	else { // theDay == "Sonntag"
		theDay = 6;
	}
	return theDay;
}

function RowCompareNumbers(a, b) {

	var aVal = a.getElementsByTagName('td')[sortedOn].firstChild.nodeValue;
	var bVal = b.getElementsByTagName('td')[sortedOn].firstChild.nodeValue;
	return (aVal - bVal);
}

function RowCompareSkills(a, b) {

	var aVal = a.getElementsByTagName('td')[sortedOn].firstChild.nodeValue;
	aVal = skillsToNumbers(aVal);
	var bVal = b.getElementsByTagName('td')[sortedOn].firstChild.nodeValue;
	bVal = skillsToNumbers(bVal);
	return (aVal - bVal);
}

function skillsToNumbers(theSkill) {

	if (theSkill == "-") {
		theSkill = 0;
	}
	else if (theSkill == "YA") {
		theSkill = 1;
	}
	else if (theSkill == "Y1") {
		theSkill = 3;
	}
	else if (theSkill == "Y2") {
		theSkill = 4;
	}
	else { // theSkill == "YA, Y1")
		theSkill = 2;
	}
	return theSkill;
}

function RowCompareLeaders(a, b) {

	var aVal = a.getElementsByTagName('td')[sortedOn].firstChild.nodeValue;
	if ((aVal == "undefined") || (aVal == null)) { 
		aVal = a.getElementsByTagName('td')[sortedOn].firstChild.firstChild.nodeValue;
	}
	var bVal = b.getElementsByTagName('td')[sortedOn].firstChild.nodeValue;
	if ((bVal == "undefined") || (bVal == null)) {
		bVal = b.getElementsByTagName('td')[sortedOn].firstChild.firstChild.nodeValue;
	}
	return (aVal == bVal ? 0 : (aVal > bVal ? 1 : -1));
}

function RowCompare(a, b) {

	var aVal = a.getElementsByTagName('td')[sortedOn].firstChild.nodeValue;
	var bVal = b.getElementsByTagName('td')[sortedOn].firstChild.nodeValue;
	return (aVal == bVal ? 0 : (aVal > bVal ? 1 : -1));
}
// ]]>