var AASearch = {};

AASearch.initSearch = function() {
	var searchBox = document.getElementById("search");
	var searchTerm = this.getParam("search");
	if(searchTerm != "") {
		searchBox.value = searchTerm;
		document.forms[1][0].focus();
		document.forms[1][0].value = document.getElementById("search").value;
		document.forms[1][1].value = "Go";
		document.forms[1][1].click();
	}
	this.addListener(document.forms[0], "submit", this.doSearch);
//	this.addListener(document.getElementById("search"), "keyup", this.mirrorTerm);
//	this.addListener(document.forms[1][0], "keyup", this.mirrorTerm);
}

AASearch.initForm = function() {
	var searchBox = document.getElementById("search");
	this.addListener(searchBox, "focus", this.clearSearch);
	this.addListener(searchBox, "blur", this.resetSearch);
}

AASearch.addListener = function(elem, type, func) {
	if(elem.addEventListener) {
		elem.addEventListener(type, func, false);
	} else {
		elem.attachEvent("on" + type, func);
	}
}

AASearch.removeListener = function(elem, type, func) {
	if(elem.removeEventListener) {
		elem.removeEventListener(type, func, false);
	} else {
		elem.detachEvent("on" + type, func);
	}
}

AASearch.getEvent = function(e) {
	if(!e) {e = window.event};
	return e;
}

AASearch.cancelEvent = function(e) {
	e.cancelBubble = true;
	if(e.stopPropagation) {e.stopPropagation();}
	if(e.preventDefault) {e.preventDefault();}
	else {return false};
}

AASearch.getTarget = function(e) {
	var targ;
	if(e.target) {targ = e.target;}
	else if (e.srcElement){ targ = e.srcElement;}
	if(targ.nodeType == 3) {targ = targ.parentNode;}
	return targ;
}

AASearch.clearSearch = function(e) {
	e = AASearch.getEvent(e);
	var eSrc = AASearch.getTarget(e);
	if(eSrc.value == "Search this site") {
		eSrc.value = "";
	}
}

AASearch.resetSearch = function(e) {
	e = AASearch.getEvent(e);
	var eSrc = AASearch.getTarget(e);
	if(eSrc.value == "") {
		eSrc.value = "Search this site";
	}
}


AASearch.params = null;

AASearch.getParam = function(param) {
	var x, value="";
	if(this.params == null) {
		var query = document.location.search.substr(1);
		this.params = query.split("&");
		for(x=0; x<this.params.length;x++) {
			this.params[x] = this.params[x].split("=");
		}
	}
	x = 0;
	while(value=="" && x < this.params.length) {
		if(this.params[x][0] == param) {
			value = this.params[x][1];
		}
		x++
	}
	return unescape(value).replace(/\+/g, " ");;
}

AASearch.doSearch = function(e) {
	document.forms[1][0].focus();
	document.forms[1][0].value = document.getElementById("search").value;
	document.forms[1][1].click();
	return 	AASearch.cancelEvent(AASearch.getEvent(e));
}

AASearch.mirrorTerm = function(e) {
	var otherElem, srcElem = AASearch.getTarget(e);
	if(srcElem == document.getElementById("search")) {
		otherElem = document.forms[1][0];
	} else {
		otherElem = document.getElementById("search");
	}
	otherElem.value = srcElem.value;
}

var Address = {
	e : /([a-z0-9._%-]+)\|at\|([a-z0-9._%-]+)\|dot\|([a-z.]+)/i,
	decodeInner : function(s) {
		var c = s.innerHTML;
		var d = c.replace(Address.e, Address.substitute);
		if(c != d) {
			s.innerHTML = "<a href=\"mailto:" + d + "\">" + d + "</a>";
		}
	},
	decodeRel : function(s) {
		var c = s.getAttribute("rel");
		var d = c.replace(Address.e, Address.substitute);
		if(s.innerHTML.match(Address.e)) {
			s.innerHTML = s.innerHTML.replace(Address.e, Address.substitute);
		}
											 
		if(c != d) {
			s.innerHTML = "<a href=\"mailto:" + d + "\">" + s.innerHTML + "</a>";
		}
	},
	
	init : function() {
		if(document.getElementsByTagName) {
			var l = document.getElementsByTagName("span");
			for(var i=0; i < l.length; i++) {
				if(l[i].className == "address") {
					Address.decodeInner(l[i]);
				}
				if(l[i].getAttribute("rel") != null) {
					Address.decodeRel(l[i]);
				}
			}
		}
	},
	substitute : function(s, m1, m2, m3, o, s) {
		return m1 + "@" + m2 + "." + m3;
	}
}
AASearch.addListener(window, "load", Address.init);

