if (document.getElementById && document.createTextNode && {}.hasOwnProperty) {
(function(cns) {
	function init() {
		if (document.body && !init.done) {
			init.done = true;
			initSpans(getElsCN(cns.email, "span"));
		}
	}

	function initSpans(spans) {
		for (var i = 0, s; (s = spans[ i]); ++i) {
			initSpan(s);
		}
	}

	function initSpan(span) {
		var u, h, spans = span.getElementsByTagName("span"), str;
		for (var i = 0, s; (s = spans[ i]); ++i) {
			str = s.firstChild && s.firstChild.nodeValue;
			if (hasClass(s, cns.user)) {
				u = str;
			} else if (hasClass(s, cns.host)) {
				h = str;
			}
		}

		if (u && h) {
			chgSpan(span, u, h);
		}
	}

	function chgSpan(span, u, h) {
		var email = u + "@" + h;
		span.parentNode.replaceChild(createEl("a", {href: "mailto:" + email, className: cns.email}, email), span);
	}

	// DOM
	function createEl(n) {
		var a, i = 0, e = document.createElementNS ? document.createElementNS("http://www.w3.org/1999/xhtml", n) : document.createElement(n);
		while ((a = arguments[++i])) {
			if (typeof a === "string") {
				e.appendChild(document.createTextNode(a));
			} else {
				for (var p in a) {
					if (a.hasOwnProperty(p)) {
						e[p] = a[p];
					}
				}
			}
		}

		return e;
	}

	function hasClass(e, c) {
		return new RegExp("(^| )" + c + "( |$)").test(e.className);
	}

	function getElsCN(c, t) {
		var els = document.getElementsByTagName(t), res = [], re = new RegExp("(^| )" + c + "( |$)");
		for (var i = 0, e; (e = els[ i]); ++i) {
			if (re.test(e.className)) {
				res[res.length] = e;
			}
		}

		return res;
	}

	// Events
	function addLoadEvent(f) {
		if (document.addEventListener) {
			document.addEventListener("DOMContentLoaded", f, false);
		}

		if (window.addEventListener) {
			addEventListener("load", f, false);
		} else if (document.addEventListener) {
			document.addEventListener("load", f, false);
		} else if (window.attachEvent) {
			attachEvent("onload", f);
		}
	}

	addLoadEvent(init);
})({
	email: "email", user: "u", host: "h"
});
}