var navList = "primarynav";
function trim(str) {
	str = str.split("&nbsp;").join(" ");
	while(str.charAt(0) == " ") {
		str = str.substr(1);
	}
	while(str.charAt(str.length-1) == " ") {
		str = str.substr(0,str.length-1);
	}
	return str;
}

function init() {
	if (document.getElementById) {
		startList();
		var tables = document.getElementsByTagName("table");
		for(var i in tables) {
			if (tables[i].className == "zebra") {
				zebraStripe(tables[i]);
			}
		}
		randomDatabase();
		addLabelSupportForSafari();
		addEmailNotice();
	}
}

function addEmailNotice() {
	if(document.getElementById("email")) {
		var email = document.getElementById("email");
		attachEventUniversal(email,"onclick","removeEmailNotice");
		email.value = "email address here";
	}
}
function removeEmailNotice() {
	var email = document.getElementById("email");
	email.value = "";
	removeEventUniversal(email,"onclick");
}
function removeEventUniversal(node,eventType,funcName) {
	if(node.attachEvent && node.addEventListener && node.setAttribute){ // opera, mostly
		node.removeAttribute(eventType);
	} else if(node.detachEvent){
		node.detachEvent(eventType);
	} else if(node.setAttribute) {
		node.removeAttribute(eventType);
	}
}
function attachEventUniversal(node,eventType,funcName) {
	if(node.attachEvent && node.addEventListener && node.setAttribute){ // opera, mostly
		node.setAttribute(eventType,"return "+funcName+"(this);");
	} else if(node.attachEvent){
		node.attachEvent(eventType, function(event) {
			//return eval(""+funcName+"(event.srcElement)");
			return this[funcName](node);
		});
	} else if(node.setAttribute) {
		node.setAttribute(eventType,"return "+funcName+"(this);");
	}
}

function startList() {
	if (document.all && document.getElementById) {
		//var submitbtn = document.getElementById("submitbtn");
		navRoot = document.getElementById(navList);
		for (var i=0; i<navRoot.childNodes.length; i++) {
			node = navRoot.childNodes[i];
			if (node.nodeName.toLowerCase()=="li") {
				node.onmouseover=function() {
					this.className+=" over";
				}
				node.onmouseout=function() {
					this.className=this.className.replace(" over", "");
				}
			}
		}
		//submitbtn.value = "";
	}
}
// Safari specific functions
function addLabelSupportForSafari() {
	if (navigator.userAgent.indexOf("Safari") > 0) {
		var labels = document.getElementsByTagName("label");
		for (i = 0; i < labels.length; i++) {
			labels[i].addEventListener("click", addLabelFocus, false);
		}
	}
}
function addLabelFocus() {
	var item = document.getElementById(this.getAttribute("for"));
	item.focus();
	if (item.getAttribute("type") == "checkbox") {
		if (!item["checked"]) {
			item["checked"] = true;
		} else {
			item["checked"] = false;
		}
	}
	else if (item.getAttribute("type") == "radio") {
		var allRadios = document.getElementsByTagName("input");
		var radios = new Array();
		for (i = 0; i < allRadios.length; i++) {
			if (allRadios[i].getAttribute("name") == item.getAttribute("name")) {
				radios.push(allRadios[i]);
			}
		}
		for (i = 0; i < radios.length; i++) {
			if (radios[i]["checked"] && 
			radios[i].getAttribute("id") != item.getAttribute("id")) {
				radios[i]["checked"] = false;
			}
		}
		item["checked"] = true;
	}
}

function replaceText(s,f,r) { return s.split(f).join(r); }
function stripSpecialChars(s) {
//	s = replaceText(s,"'","\\'");
//	s = replaceText(s,"\"","\\\"");
//	s = replaceText(s,"&rsquo;","");
	s = replaceText(s,"ed. by ","");
	s = replaceText(s,"!","");
	return s;
}
function stripExtraneous(s) {
	s = s.split(" (")[0];
	s = s.split(": ")[0];
	return s;
}

function zebraStripe(table) {
	var thead = table.getElementsByTagName("thead")[0];
	var ths = thead.getElementsByTagName("th");
	var isBooklist = ((ths[0].innerHTML.toLowerCase())=="title");
	var tbods = table.getElementsByTagName("tbody");
	var trows = tbods[0].getElementsByTagName("tr");
	for (var i = 0; i < trows.length; i++) {
		if ((i%2) != 0) {
			trows[i].className = "odd";
		} else {
			trows[i].className = "even";
		}
		if(isBooklist) {
			var tds = trows[i].getElementsByTagName("td");
			if (tds[1]) {
				var titlearg = replaceText(escape(stripExtraneous(stripSpecialChars(trim(tds[0].innerHTML)))),"u2019","27");
				var authorarg = replaceText(escape(stripExtraneous(stripSpecialChars(trim(tds[1].innerHTML)))),"u2019","27");
				tds[0].innerHTML = "<a href=\""+lookupBook(titlearg,authorarg)+"\">"+tds[0].innerHTML+"</a>";
			}
		}
	}
}

function lookupBook(title,author) {
	var se = "http://ipac.uhls.org/ipac20/ipac.jsp?";
	var author = author.toLowerCase();
	if (!(author.indexOf("anonymous") > -1)) {
		se += "index=.AW&term="+author+"&oper=and&";
	}
	se += "index=.TW&term="+title;
	return se;
}

function randomDatabase() {
	if (document.getElementById("research_rotary")) {
		var rsbox = document.getElementById("research_rotary");
		var dblist = rsbox.getElementsByTagName("li");
		var num = Math.floor(dblist.length * Math.random());
		dblist[num].style.display = "list-item";
	}
}

function dumpBrowserInfo() {
	//	The code name of the browser.
	document.write("<pre>"+navigator.appCodeName + "\n");
	//	The name of the browser
	document.write(navigator.appName + "\n");
	//	Version information for the browser
	document.write(navigator.appVersion + "\n");
	//	String passed by browser as user-agent header
	document.write(navigator.userAgent + "</pre>");
}

window.onload = init;