if(!Array.forEach)
	Array.forEach = function(obj, block, context){
		for(var i=0,l=obj.length;i<l;i++)
			block.call(context, obj[i], i, obj);
	}
if(!Array.filter)
	Array.filter = function(obj, block, context){
		var re=[];
		for(var i=0,l=obj.length;i<l;i++)
			if(block.call(context, obj[i], i, obj))re.push(obj[i]);
		return re;
	}

function $$(className, tag, elm){
        var re=[];
	elm=elm||document;
	tag=tag||"*";
	if(document.evaluate){
		var xpath = document.evaluate(".//"+tag+"[contains(concat(' ', @class, ' '),' "+className+"' )]",elm,null,0,null);
		while(re[re.length] = xpath.iterateNext()){}
		re.pop();
	}else{
		var tags=elm.getElementsByTagName(tag);
		var reg=new RegExp('\\b' + className + '\\b');
		re=Array.filter(tags,function(obj){return reg.test(obj.className);});
	}
	return re;
}

var isIE = !document.addEventListener;
var Event = {
	events:{},
	add:function(obj, evType, evFunc){
		if(evType=="DOMContentLoaded"){
			if(/WebKit|Konqueror/i.test(navigator.userAgent)){
				var _timer = setInterval(function(){
					if (/loaded|complete/.test(document.readyState)){
						clearInterval(_timer);
						evFunc.call(obj);
					}
				}, 10);
			}else if(isIE){
				document.write("<script id=onload defer><\/script>");
				var script = document.getElementById("onload");
				script.onreadystatechange=function(){
				    if(this.readyState=="complete")evFunc.call(obj);
				}
			}
		}
		if(obj.addEventListener){
			obj.addEventListener(evType, evFunc, false);
		}else{
			var evHandler = function(){
				var e=window.event;
				e.preventDefault=function(){e.returnValue=false;}
				e.stopPropagation=function(){e.cancelBubble=true;}
				e.target=e.srcElement;
				evFunc.call(obj, e);
			}
			obj.attachEvent("on"+evType, evHandler);
			Event.events[evFunc] = {funct:evHandler,object:obj,type:evType};
		}
	},
	remove:function(obj, evType, evFunc){
		if(obj.removeEventListener){
			obj.removeEventListener(evType, evFunc, false);
		}else{
			var stEv = Event.events[evFunc];
			obj.detachEvent("on"+evType, stEv.funct);
			if(obj==stEv.object && evType==stEv.type)Event.events[evFunc]=null;
		}
	}
}
if(isIE)Event.add(window, "unload", function(){
	for(var key in Event.events){
		var itm = Event.events[key];
		Event.remove(itm.object,itm.type,itm.funct);
	}
});

function makeElement(elm, propArr, text){
	elm = (elm.charAt)?document.createElement(elm):elm;
	for(var key in propArr)
		if(propArr[key] instanceof Object)
			makeElement(elm[key], propArr[key]);
		else
			elm[key] = propArr[key];

	if(text)elm.appendChild(document.createTextNode(text));
	return elm;
}

Event.add(document, "DOMContentLoaded", function(){
	var links = $$('mailLink', 'span');
	Array.forEach(links, function(link){
		var address = link.firstChild.nodeValue.replace(' at removeme.', '@');
		var a = makeElement("a", {"href": "mailto:"+address}, address);
		link.parentNode.replaceChild(a, link);
	});
}, false);
