function addEvent(obj, type, fn) {
  if (obj.addEventListener) {
    obj.addEventListener(type, fn, true);
    return(true);
  }
  if (obj.attachEvent) {
    var r = obj.attachEvent('on'+type, fn);
    return(r);
  }
  return(false);
}

// Thanks to Marko Samastur and Hoss Firooznia
// See instructions at 
// http://www.math.rochester.edu/people/faculty/cmlr/Antispam/

function change() {
  var space = / /g;
  var mathend = /math$/;
  var spans = document.getElementsByTagName('span');
  for (var i = 0; i < spans.length; i++) {
    var s = spans[i];
    var name = s.className;
    if (name == 'justify' || name == 'expand') {
      var address = s.firstChild.nodeValue;

      if (name == 'justify') {
	address = address.replace(mathend, '');
	address += '@math.roch';
	address += 'ester.edu';
      } else if (name == 'expand') {
	address = address.replace(' ', '@');
	address = address.replace('math@', '@');
	address = address.replace(space, '.');
	address = address.replace(mathend, '');
      }

      var anchor = document.createElement('a');
      anchor.appendChild(document.createTextNode(address));
      anchor.setAttribute('href', 'mailto:' + address);
      s.removeChild(s.firstChild);
      s.appendChild(anchor);
    }
  }
}

addEvent(window, 'load', change);
