﻿/* $Id: funkcioj.js,v 1.1 2007/01/19 16:36:31 hoss Exp hoss $ */

function aldonuEventon(obj, speco, fn) {
  if (obj.addEventListener) {
    obj.addEventListener(speco, fn, true);
    return(true);
  }
  if (obj.attachEvent) {
    var r = obj.attachEvent("on"+speco, fn);
    return(r);
  }
  return(false);
}

/* Kasxu retposxtajn adresojn de spamrobotoj.
 *
 * Tiu cxi funkcio sxangxos:
 *   <span class="retposxtadreso">user cxe example punkto com</span>
 * al
 *   <a href="mailto:user@example.com">user@example.com</a>
 *
 * Bonvolu noti, ke:
 *  - "class" povas esti aux "retposxtadreso" aux "retpoŝtadreso"
 *    aux "retposhtadreso" aux "emailaddress"
 *  - per "@" anstatauxigxas kaj "cxe" kaj "che" kaj "ĉe" kaj "at"
 *  - per "." anstatauxigxas kaj "punkto" kaj "punkt" kaj "dot"
 */

function kasxuRetposxtajnAdresojn() {
  var reClass  = /\bretpo(sx|sh|ŝ)tadreso|emailaddress\b/i;
  var reCxe    = /\s+(cxe|che|ĉe|at)\s+/i;
  var rePunkto = /\s+(punkto?|dot)\s+/ig;
  var spanoj = document.getElementsByTagName('span');
  for (var i = 0; i < spanoj.length; i++) {
    var s = spanoj[i];
    if (reClass.test(s.className)) {
      var teksto = s.firstChild;
      var adreso = teksto.data.replace(reCxe, '@').replace(rePunkto, '.');
      adreso = adreso.replace(/\s*/g, ''); /* forigu spacojn */
      var ankro = document.createElement('a');
      ankro.appendChild(document.createTextNode(adreso));
      ankro.setAttribute('href', 'mailto:' + adreso);
      s.removeChild(teksto);
      s.appendChild(ankro);
    }
  }
}

aldonuEventon(window, "load", kasxuRetposxtajnAdresojn);