//<pre><nowiki>
var smiley = new Array
(
// regexp image name location width height
new Array("[:=]\\)|:-\\)", "Smile.png", "2/26", 20, 20),
new Array("[:=]D|:-D", "Teeth.png", "7/72", 22, 22),
new Array("[:=]\\(|:-\\(", "Sad.png", "d/d8", 20, 20),
new Array(";-?[)D]", "Smile_eye.png","9/94", 20, 20),
new Array("[:=][pP]|:-[pP]", "Tongue.png", "c/c4", 22, 22),
new Array("[:=]'\\(|:'-\\(", "Cry.png", "d/d8", 22, 22),
new Array("8-?[)D]", "Shade.png", "d/dc", 22, 22)
);
function smileys()
{
var i;
for (i = 0; i < smiley.length; ++i)
{
smiley[i].push(new RegExp("^(" + smiley[i][0] + ")$"));
smiley[i].push(new RegExp("\\W(" + smiley[i][0] + ")$"));
smiley[i].push(new RegExp("^(" + smiley[i][0] + ")\\W"));
smiley[i].push(new RegExp("\\W(" + smiley[i][0] + ")\\W"));
}
add_smileys(document);
}
function smiley_image(i)
{
var n = document.createElement("img");
n.src = "http://up.wiki.x.io/wikipedia/commons/" + smiley[i][2] + "/" + smiley[i][1];
n.width = smiley[i][3];
n.height = smiley[i][4];
return n;
}
function add_smileys(n)
{
if (!n)
return;
add_smileys(n.firstChild);
var i, j, k, a, next = n.nextSibling;
if (n.nodeType == Node.TEXT_NODE)
{
for (i = 0; i < smiley.length; ++i)
{
for (j = 5; j <= 8; ++j)
if (a = smiley[i][j].exec(n.data))
{
switch (j)
{
case 5:
// just replace
n.parentNode.replaceChild(smiley_image(i), n);
break;
case 6:
// stuff before, but not after
k = n.splitText(a.index + 1);
n.parentNode.replaceChild(smiley_image(i), k);
break;
case 7:
// stuff after, but not before
k = n.splitText(a[1].length);
next = smiley_image(i);
n.parentNode.replaceChild(next, n);
next = next.nextSibling;
break;
case 8:
// stuff before and after
k = n.splitText(a.index + 1);
j = k.splitText(a[1].length);
next = smiley_image(i);
n.parentNode.replaceChild(next, k);
next = next.nextSibling;
break;
}
i = smiley.length;
break;
}
}
}
add_smileys(next);
}
addOnloadHook(smileys);
//</nowiki></pre>