/*-------------------------------------------------
Title:		TMS catalog JavaScript functions
Updated:	June 25 2008
------------------------------------------------- */



function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}




/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/	
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = new RegExp("\\b" + ((tag !== "*")? tag : "[a-z]+") + "\\b", "i"),
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};



function get(id) {
	return document.getElementById(id);
}


function show(id) {
	if(document.getElementById) {
		var el = document.getElementById(id);

		if(el) {
			el.style.display = 'block';
		}
	}
}

function hide(id) {
	if(document.getElementById) {
		var el = document.getElementById(id);
		
		if(el) {
			el.style.display = 'none';		
		}
	}
}

function validSearch() {
	if(document.getElementById) {
		// the standard search form
		var std = document.getElementById('search');
		var q = document.getElementById('q');

		// the advanced search form
		var adv = document.getElementById('advanced_search');
		var adv_q = document.getElementById('adv_q');
		
		if(std) {
			std.onsubmit = function() {
				if(q.value == '') {
					alert('You must provide a search term.');
					q.focus();
					return false;
				}
			}
		}

		if(adv) {
			adv.onsubmit = function() {
				if(adv_q.value == '') {
					alert('You must provide a search term.');
					adv_q.focus();
					return false;
				}
			}
		}
	}
}

function toggle(id) {
	if(document.getElementById) {
		
		var el = document.getElementById(id);
		
		if(el) {
			var links = el.getElementsByTagName("LI");
			
			for (var i=0; i<links.length; i++) {
				links[i].onclick = function() {
					
					for (var i=0; i<links.length; i++) {
						links[i].className = '';
					}
					this.className = "active";
					
					var divs = getElementsByClassName("content", "div", document.getElementById("home_intro"));
					
					for (var i=0; i<divs.length; i++) {
						divs[i].style.display = 'none';
					}
					
					var div = this.id.replace(new RegExp("in-\\b"), "");
					get(div).style.display = 'block';
				}
			}
		}		
	}
}

sfHover = function() {
	var sfEls = document.getElementById("nav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
// IE exclusive method for binding an event
if (window.attachEvent) window.attachEvent("onload", sfHover);

// standard load events
addLoadEvent(validSearch);