var basePath="/smilies/"; var smileys = { ">:)" : basePath+"smlEvil,gif", "]:)" : basePath+"smlEvil.gif", ":)" : basePath+"smlHappy.gif", ":-)" : basePath+"smlHappy.gif", ":(" : basePath+"smlFrown.gif", ":-(" : basePath+"smlFrown.gif", ":D" : basePath+"smlGrin.gif", ":|" : basePath+"smlNtl.gif", ":-|" : basePath+"smlNtl.gif", ":p" : basePath+"smlRazz.gif", ";)" : basePath+"smlWink.gif", ";-)" : basePath+"smlWink.gif", ":o" : basePath+"smlShock.gif" }; var regex = {}; var endLine = {}; var startLine='/g, ">"); regkey = regkey.replace(/\(/g, "\\("); regkey = regkey.replace(/\)/g, "\\)"); regkey = regkey.replace(/\[/g, "\\["); regkey = regkey.replace(/\]/g, "\\]"); regkey = regkey.replace(/\|/g, "\\|"); var fixkey=key.replace(/\\/g, ''); regex[key] = new RegExp(' '+regkey+' ', 'gm'); endLine[key]='" align="baseline" alt="'+fixkey+'" title="'+fixkey+'" border="none"/>'; } function smilify() { function doElement(el) { for(var i = 0; i < el.childNodes.length; i++) { var child=el.childNodes[i]; if(child.nodeName != '#text') doElement(child); } for(var i = 0; i < el.childNodes.length; i++) { var node=el.childNodes[i]; if(node.nodeName == '#text') { var o=node.nodeValue; o = o.replace(//g, ">"); var s=o; for (key in smileys) s = s.replace(regex[key], ' '+startLine+smileys[key]+endLine[key]+' '); if(s.length>1 && s!=o) { var span = document.createElement("span"); span.innerHTML=s; node.parentNode.replaceChild(span, node); } } } } doElement(document.body); }