function documentRegister(tag,effect,func,ev,exclusive)
{
	document.toRegister[document.toRegister.length] = {
		tag:tag,
		effect:effect,
		func:func,
		event:ev,
		exclusive:exclusive
	};
}

function doRegister(n)
{
	if(!n) n = document;
	var t, y;
	var r = document.toRegister;
	for(var x=0; x<r.length; x++)
	{
		t = n.getElementsByTagName(r[x].tag);
		if(r[x].tag=='*' && t.length==0) t = document.all;
		for(y=0; y<t.length; y++)
		{
			if(!r[x].effect || hasClassName(t[y],"Fsp."+r[x].effect) || hasClassName(t[y],r[x].effect) || t[y].className.indexOf("Fsp."+r[x].effect+":") > -1 || t[y].className.indexOf("Fsp."+r[x].effect+".") > -1)
			{
				if(r[x].event == 'load')
				{
					t[y].load = r[x].func;
					t[y].load({ currentTarget:t[y] });
				}
				else
				{
					addEventHandler(t[y],r[x].event,r[x].func,r[x].exclusive);
				}
			}
		}
	}
}

function addEventHandler(el,ev,func,exclusive)
{
	if(exclusive)
	{
		if(eval("el.on"+ev+" = func;")) return true;
		else return false;
	}
	else
	{
		if(el.addEventListener)
		{
			el.addEventListener(ev,func,false);
			return true;
		}
		else if(el.attachEvent)
		{
			return el.attachEvent("on"+ev, func);
		}
		else return false;
	}
}

document.toRegister = new Array();
document.register = documentRegister;

addEventHandler(window,'load',function(){ doRegister(); },false);

function fspEmail()
{
	var text, a, email, epat, atpat, dotpat;
	epat = /^\s*(\S+(\s+dot\s+\S+)*\s+at\s+\S+(\s+dot\s+\S+)+)\s*$/;
	atpat = /\s+at\s+/g;
	dotpat = /\s+dot\s+/g;
	if(this.tagName && this.attributes && this.childNodes && this.childNodes[0] && this.parentNode && this.parentNode.insertBefore && document.createElement && this.parentNode.removeChild)
	{
		if(this.tagName.toUpperCase()=='A')
		{
			text = this.href;
			if(text.search('mailto:')==0)
			{
				text = text.substr(7);
				text = text.replace(/\%20/g,' ');
				if(epat.test(text))
				{
					text = text.replace(atpat,'@');
					text = text.replace(dotpat,'.');
					this.href = 'mailto:'+text;
				}
			}
		}
		else if(this.tagName.toUpperCase()=='B' && this.childNodes[0].nodeValue)
		{
			text = this.childNodes[0].nodeValue;
			if(epat.test(text))
			{
				text = text.replace(atpat,'@');
				text = text.replace(dotpat,'.');
				a = document.createElement('a');
				a.href = 'mailto:'+text;
				text = document.createTextNode(text);
				a.appendChild(text);
				this.parentNode.insertBefore(a,this);
				this.style.display = 'none';
			}
		}
		
	}
}

document.register('b',null,fspEmail,'load',false);
document.register('a',null,fspEmail,'load',false);