// JavaScript Document

var dsCourses = new Spry.Data.XMLDataSet("courses.xml", "/courses/course", {sortOnLoad: "@id" });

function filterFunc(ds, row, index) {
	var tf = document.getElementById("filterTF");
	var regExpStr = tf.value;
	var regExp = new RegExp(regExpStr, "i");
	var str = row["title"];
	if (str && str.search(regExp) != -1) {
		return row;
	} else {
		return null;
	}
};
function FilterData() {
	var tf = document.getElementById("filterTF");
	if (!tf.value) {
		dsCourses.removeFilter(filterFunc, true);
		return;
	} else {
		dsCourses.addFilter(filterFunc, true);
	}
}

function StartFilterTimer(){
	if (StartFilterTimer.timerID)
		clearTimeout(StartFilterTimer.timerID);
	StartFilterTimer.timerID = setTimeout(function() { StartFilterTimer.timerID = null; FilterData(); }, 100);
}

function clearDropDwn(id) {
	dropDwnDis = document.getElementById("filterDis");
	if(dropDwnDis.selectedIndex != 0 && id == 1) {dropDwnDis.selectedIndex = 0;}
	dropDwnLvl = document.getElementById("filterLvl");
	if(dropDwnLvl.selectedIndex != 0 && id == 2) {dropDwnLvl.selectedIndex = 0;}
	if(id == 0) {
		dropDwnDis.selectedIndex = 0;
		dropDwnLvl.selectedIndex = 0;
	}
}

function filterDisFunc(ds, row, index) {
	var filterElement = document.getElementById("filterDis");
	var filterValue = filterElement.options[filterElement.selectedIndex].value;
	var disStr = row["discipline"];
	return disStr == filterValue ? row : null;
};
function filterDis() {
	var filterElement = document.getElementById("filterDis");
	var filterValue = filterElement.options[filterElement.selectedIndex].value;
	if(filterValue == "clear" || filterValue == "") {
		dsCourses.removeFilter(filterDisFunc, true);
	} else {
		dsCourses.addFilter(filterDisFunc, true);
	}
}
/*function filterDis() {
	var filterElement = document.getElementById("filterDis");
	var filterValue = filterElement.options[filterElement.selectedIndex].value;
	if(filterValue == "clear") {
		filterElement.selectedIndex = 0;
		dsCourses.filter(null);
		return;
	}
	if(filterValue == "") {
		dsCourses.filter(null);
		return;
	}
	var filterDisFunc = function(ds, row, rowNumber) {
		var disStr = row["discipline"];
		if(disStr == filterValue) {
			return row;
		} else {
			return null; 
		}
	};
	
	dsCourses.filter(filterDisFunc);
	clearDropDwn(2);
}*/

function filterLvlFunc(ds, row, index) {
	var filterLvlElement = document.getElementById("filterLvl");
	var lvlValue = filterLvlElement.options[filterLvlElement.selectedIndex].value;
	var lvlStr = row["level"];
	return lvlStr == lvlValue ? row : null;
};
function filterLvl() {
	var filterLvlElement = document.getElementById("filterLvl");
	var lvlValue = filterLvlElement.options[filterLvlElement.selectedIndex].value;
	if(lvlValue == "clear" || lvlValue == "") {
		dsCourses.removeFilter(filterLvlFunc, true);
	} else {
		dsCourses.addFilter(filterLvlFunc, true);
	}
}

/*function filterLvl() {
	var filterLvlElement = document.getElementById("filterLvl");
	var lvlValue = filterLvlElement.options[filterLvlElement.selectedIndex].value;
	if(lvlValue == "clear") {
		filterLvlElement.selectedIndex = 0;
		dsCourses.filter(null);
		return;
	}
	if(lvlValue == "") {
		dsCourses.filter(null);
		return;
	}
	var filterLvlFunc = function(ds, row, rowNumber) {
		var lvlStr = row["level"];
		if(lvlStr == lvlValue) {
			return row;
		} else {
			return null; 
		}
	};
	
	dsCourses.filter(filterLvlFunc);
	clearDropDwn(1);
}*/

function filterGradeFunc(ds, row, index) {
	var gStr = row["grade"];
	return gStr == "pass/no pass" ? row : null;
};
function filterGrade() {
	var filterGelement = document.getElementById("filterG");
	if(filterGelement.checked) {
		dsCourses.addFilter(filterGradeFunc, true);
	} else {
		dsCourses.removeFilter(filterGradeFunc, true);
	}
}
// ******************************************************
// not yet used!
function toggleFilter(elem, f) {
	if(!elem.checked)
		dsCourses.addFilter(f, true);
	else
		dsCourses.removeFilter(f, true);
}
// ******************************************************
function RemoveAllFilters() {
	document.getElementById("filterG").checked = false;
	clearDropDwn(0);
	document.getElementById("filterTF").value = "";

	dsCourses.removeAllFilters(true);
}
function hideDesc() {
	Spry.$$("p.description").toggleClassName("hideIt");
}
function showDesc() {
	Spry.$$("p.description").toggleClassName("hideIt");
}
function checkDesc(notificationType, notifier, data) {
	if(notificationType == "onPostUpdate") {
		var descState = Spry.$("showDescriptions");
		if(descState.checked) {
			Spry.$$("p.description").toggleClassName("hideIt");
		}
	}
}
Spry.Data.Region.addObserver("cousesRegion", checkDesc);

function showById(id) {
	target = Spry.$(id);
	if(target && target.className.match("hideIt")) {
		target.className = target.className.replace("hideIt", "");
    } else {
		target.className += " hideIt";
	}
}


/*
function getDescrip(id) {
	var row = dsCourses.getRowByID(id);
	if(row) {
		var description = row.description;
		var title = row.title;
		document.getElementById('descriptTitle').innerHTML = title;
		document.getElementById('descriptText').innerHTML = description;
		var d=document.getElementById('descriptWindow').style;
		d.visibility='visible';
		d.left='40%';
		d.top='30%';
	} else {
		alert("No description found!\nID: "+id);
	}
}*/
