var tablesearch_initted=0;
function tablesearch_init() {
	if (tablesearch_initted!=0)
	return;
	tablesearch_initted=1;
	// Attach the search box and handler
	var tables=document.getElementsByTagName("table");
	for (var i=0;i<tables.length;i++) {
		if (tables[i].className.indexOf("search")!=-1) {
			var searcher=document.createElement("input");
			var h=tablesearch_mksearcher(tables[i],searcher);
			if (searcher.addEventListener) {
				searcher.addEventListener("change",h,false);
				searcher.addEventListener("focus",tablesearch_mkclearer(searcher,'click here to search',''),false);
			} else if (searcher.attachEvent) {
				searcher.attachEvent("onchange",h);
				searcher.attachEvent("onfocus",tablesearch_mkclearer(searcher,'click here to search',''));
			} else {
				return;
			}
			var br=document.createElement("br");
			tables[i].parentNode.insertBefore(br,tables[i]);
			tables[i].parentNode.insertBefore(searcher,br);
		}
	}
}
function tablesearch_mkclearer(s,iv,nv) {
	s.value=iv;
	return function() {
		if (s.value==iv)
		s.value=nv;
	}
}
function tablesearch_mksearcher(t,s) {
	return function() {
		var needle=s.value.toLowerCase();
		var rows=t.getElementsByTagName("tr");
		for (var i=0;i<rows.length;i++) {
			var cells=rows.item(i).getElementsByTagName("td");
			var found=1;
			if (cells.length>0) // Heading rows (those with no td cells) should not be filtered
			{
				found=0;
				// Check for the given string
				for (var j=0;j<cells.length;j++) {
					var cell=cells.item(j);
					var content;
					if (cell.textContent) {
						content=cell.textContent.toLowerCase();
					} else if (cell.innerText) {
						content=cell.innerText.toLowerCase();
					}
					if (content.indexOf(needle)!=-1) {
						found=1;
					}
				}
				var heads=rows.item(i).getElementsByTagName("th");
				for (var j=0;j<heads.length;j++) {
					var cell=heads.item(j);
					var content;
					if (cell.textContent) {
						content=cell.textContent.toLowerCase();
					} else if (cell.innerText) {
						content=cell.innerText.toLowerCase();
					}
					if (content.indexOf(needle)!=-1) {
						found=1;
					}
				}
			}
			rows.item(i).style.display=(found==0)?'none':'';
		}
	}
}
window.onload=tablesearch_init;
