var spamSpanMainClass	= 'spamspan';
var spamSpanUserClass	= 'u';
var spamSpanDomainClass	= 'd';
var spamSpanAnchorTextClass = 't';
var spamSpanParams	= new Array('subject', 'body');
addEvent(window, 'load', spamSpan);
function spamSpan() {
var allSpamSpans = getElementsByClass(spamSpanMainClass, document, 'span');
for (var i = 0; i < allSpamSpans.length; i++) {
var user = getSpanValue(spamSpanUserClass, allSpamSpans[i]);
var domain = getSpanValue(spamSpanDomainClass, allSpamSpans[i]);
var anchorText = getSpanValue(spamSpanAnchorTextClass, allSpamSpans[i]);
var paramValues = new Array();
for (var j = 0; j < spamSpanParams.length; j++) {
var paramSpanValue = getSpanValue(spamSpanParams[j], allSpamSpans[i]);
if (paramSpanValue) {
paramValues.push(spamSpanParams[j] + '=' +
encodeURIComponent(paramSpanValue));
}
}
var at = String.fromCharCode(32*2);
var email = cleanSpan(user) + at + cleanSpan(domain);
var anchorTagText = document.createTextNode(anchorText ? anchorText : email);
var mto = String.fromCharCode(109,97,105,108,116,111,58);
var hrefAttr = mto + email;
hrefAttr += paramValues.length ? '?' + paramValues.join('&') : '';
var anchorTag = document.createElement('a');
anchorTag.className = spamSpanMainClass;
anchorTag.setAttribute('href', hrefAttr);
anchorTag.appendChild(anchorTagText);
allSpamSpans[i].parentNode.replaceChild(anchorTag, allSpamSpans[i]);
}
}
function getElementsByClass(searchClass, scope, tag) {
var classElements = new Array();
if (scope == null) node = document;
if (tag == null) tag = '*';
var els = scope.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp("(^|\s)"+searchClass+"(\s|$)");
for (var i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}
function getSpanValue(searchClass, scope) {
var span = getElementsByClass(searchClass, scope, 'span');
if (span[0]) {
return span[0].firstChild.nodeValue;
} else {
return false;
}
}
function cleanSpan(string) {
string = string.replace(/[\[\(\{]?[dD][oO0][tT][\}\)\]]?/g, '.');
string = string.replace(/\s+/g, '');
return string;
}
function addEvent(obj, type, fn) {
if (obj.addEventListener)
obj.addEventListener(type, fn, false);
else if (obj.attachEvent)
{
obj['e' + type + fn] = fn;
obj[type + fn] = function() { obj['e' + type + fn](window.event); }
obj.attachEvent('on' + type, obj[type + fn]);
}
}
