Oye, pues funcionar más o menos funciona pero no es muy eficiente. Llamo a la función cuando se carga el body y según lo he implementado, recorro el array asociativo que mantiene los emoticiones y sus imágenes, usando como clave para indexar el valor el propio patrón (
-> por ejemplo) que luego uso para reemplazar el texto.
Entonces, ahora tengo 10 emoticones, y el elem.innerHTML.replace(patron, '...') recorre todo el cuerpo de la página 10 veces, una por cada sonrisa del array. ... y eso que no reemplazo todas las ocurrencias.
No sería mejor usar algún tipo de filosofía usando funciones de retro-llamada? (como el intérprete SAX que tienes tres métodos que implementar que se llaman al interpretar un archivo XML genérico)
Que lío no....? :D