function makeMailtoLinks (tagName, className) {
  var xhtmlNS = 'http://www.w3.org/1999/xhtml';
  var classNamePattern = new RegExp('\\b' + className + '\\b', 'gi');
  var mailPattern = /(.*)\s+at\s+(.*)/i;
  var elements;
  if (document.getElementsByTagNameNS) {
    elements = document.getElementsByTagNameNS(xhtmlNS, tagName);
  }
  else if (document.getElementsByTagName) {
    elements = document.getElementsByTagName(tagName);
  }
  if (elements) {
    for (var i = 0; i < elements.length; i++) {
      var element = elements[i];
      classNamePattern.lastIndex = 0;
      if (classNamePattern.test(element.className) && element.firstChild && element.firstChild.nodeType == 3) {
        mailPattern.lastIndex = 0;
        var text = element.firstChild.nodeValue;
        var addressParts = mailPattern.exec(text);
        if (addressParts && addressParts.length == 3) {
          var link;
          if (document.createElementNS) {
            link = document.createElementNS(xhtmlNS, 'a');
          }
          else if (document.createElement) {
            link = document.createElement('a');
          }
          if (link) {
            link.href = 'mail' + 'to:' + addressParts[1] + '@' + addressParts[2];
            link.appendChild(document.createTextNode(addressParts[1] + '@' + addressParts[2]));
            element.replaceChild(link, element.firstChild);
          }
        }
      }
    }
  }
}
window.onload = function (evt) {
  makeMailtoLinks ('span', 'emailaddress');
};