function narrowDisplay() {
	var displays = document.getElementById("bd").getElementsByTagName("li");
	var query = document.forms.quicksearch.query.value.toLowerCase();
	for(var i = 0; i < displays.length; i++) {
		if(displays[i].id.toLowerCase().indexOf(query) == -1) {
			displays[i].style.display = "none";
			removeHilight(displays[i]);
		} else {
			displays[i].style.display = "block";
			addHilight(displays[i], query);
		}
	}
}

function addHilight(o, query) {
	var as = o.getElementsByTagName("a");
	for(var j = 0; j < as.length; j++) {
		if(as[j].className == "name") {
			if(query.length == 0) {
				if (navigator.appName != "Microsoft Internet Explorer") {
					as[j].innerHTML = as[j].textContent;
				} else {
					as[j].innerHTML = getTextContent(as[j]);
				}
			}
			if (navigator.appName != "Microsoft Internet Explorer") {
				var name = as[j].textContent;
			} else {
				var name = getTextContent(as[j]);			
			}
			var start = name.toLowerCase().indexOf(query);
			as[j].innerHTML = name.substr(0, start) + '<span class="hilight">' + name.substr(start, query.length) + '</span>' + name.substr(start+query.length);
		}
	}
}

function removeHilight(o) {
	var as = o.getElementsByTagName("a");
			for(var j = 0; j < as.length; j++) {
				if(as[j].className == "name") {
					if (navigator.appName != "Microsoft Internet Explorer") {
						as[j].innerHTML = as[j].textContent;
					} else {
						as[j].innerHTML = getTextContent(as[j]);
					}
				}
			}
}

function getTextContent(o) {
	var textArray = o.innerHTML.split("<");
	var text = "";
	for (var i = 0; i < textArray.length; i++) {
		var parts = textArray[i].split(">");
		if(parts.length == 1 && parts[0].length > 0) {
			text += parts[0];
		} else if(parts.length > 1) {
			text += parts[1];
		}
	}
	return text;
}

function filterDisplay() {
	var displays = document.getElementById("bd").getElementsByTagName("li");
	var filterform = document.forms.filters;
	var checkboxes = filterform.getElementsByTagName("input");
	var query1 = new Array();
	var query2 = new Array();
	var creditCheck = new Array();
	var query3 = document.forms.quicksearch.query.value.toLowerCase();

	for(var i = 0; i < checkboxes.length; i++) {
		if(checkboxes[i].checked) {
			var filtertype = checkboxes[i].name.toLowerCase();
			if(filtertype == "oldcourses" || filtertype == "newcourses") {
				query1[query1.length] = filtertype;
			} else if(filtertype == "level") {
				query2[query2.length] = checkboxes[i].value.toLowerCase();
			} else {
				creditCheck[creditCheck.length] = checkboxes[i].value.toLowerCase();
			}
		}
	}
	
	var match;
	for(i = 0; i < displays.length; i++) {
		match = false;
		var name = displays[i].id.toLowerCase().replace(/_/g, " ");
		if(name.indexOf(query3) != -1) {
			addHilight(displays[i], query3);
			for(var j = 0; j < query1.length; j++) {
				if(displays[i].className.toLowerCase().indexOf(query1[j]) != -1) {
					for(var k = 0; k < query2.length; k++) {
						if(displays[i].className.toLowerCase().indexOf("number"+query2[k]) != -1) {
							for(var l = 0; l < creditCheck.length; l++) {
								if(displays[i].className.toLowerCase().indexOf("credits"+creditCheck[l]) != -1) {
									displays[i].style.display = "block";
									match = true;
								}
							}
							
						}
					}
				}
			}
		} else {
			removeHilight(displays[i]);
		}
		if(!match) {
			displays[i].style.display = "none";
		}
	}
}

window.onload = function() { 
	while(!document.getElementById("query"));
	document.getElementById("query").value = "";
	document.getElementById("query").focus();
	document.forms.quicksearch.quicksearch_submit.parentNode.removeChild(document.forms.quicksearch.quicksearch_submit);
	document.forms.quicksearch.setAttribute("onsubmit", "return blocksubmit()");
	if(document.forms.filters) {
		document.forms.filters.filters_submit.parentNode.removeChild(document.forms.filters.filters_submit);
		document.forms.filters.filters_reset.parentNode.removeChild(document.forms.filters.filters_reset);
		document.forms.filters.onsubmit = "return false";
	}
};

function blocksubmit() {
	return false;
}