There are 30 previous versions of this script.
// ==UserScript==
// @name facebook.com - replace smileys
// @version 2.0
// @description Replace text smileys as graphics (graphics by facebook.com)
// @homepage http://Kub4jz.cz
// @namespace http://userscripts.org/scripts/source/49338.user.js
// @require http://buzzy.hostoi.com/AutoUpdater.js
// @include http://www.facebook.com/*
// @exclude http://apps.facebook.com/*
// ==/UserScript==
var script_id = 49338;
var script_version = '2.0';
// # smileys
smiley = new Array();
smiley[':-P'] = '-32px'; smiley[':P'] = '-32px';
smiley[';-)'] = '-80px'; smiley[';)'] = '-80px';
smiley['8-)'] = '-96px';
smiley['8-|'] = '-112px';
smiley['>:-('] = '-128px'; smiley['>:('] = '-128px';
smiley[':-/'] = '-144px'; smiley[' :/'] = '-144px';
smiley[':\'('] = '-160px'; smiley[':´('] = '-160px';
smiley['3:-)'] = '-176px'; smiley['3:)'] = '-176px';
smiley['O:-)'] = '-192px'; smiley['0:)'] = '-192px';
smiley[':-*'] = '-208px';
smiley['<3'] = '-224px';
smiley['^_^'] = '-240px';
smiley['-_-'] = '-256px';
smiley['o.O'] = '-272px';
smiley['>:-O'] = '-288px'; smiley['>:o'] = '-288px';
smiley[':v'] = '-304px';
smiley[' :3'] = '-320px';
smiley[':-)'] = '0px'; smiley[':)'] = '0px';
smiley[':-('] = '-16px'; smiley[':('] = '-16px';
smiley[':-D'] = '-48px'; smiley[':D'] = '-48px'; smiley['xD'] = '-48px';
smiley[':-O'] = '-64px';
// # replaced elements class name
var gm_class = ' gm_smileys_replaced';
// < start functions >
function replace(elements) {
count = elements.length - 1;
if (count < 0) { return; }
for(i = 0; i <= count; i++) {
var el = elements.item(i);
// is replaced?
if (el.className.indexOf(gm_class) >= 0) {
continue;
} else {
el.className += gm_class;
}
var data = el.textContent;
for (smile in smiley) {
if (data == null) { data = el.textContent; }
alt = smile.replace(')', '­)');
if (data && data.indexOf(smile) >= 0) {
var replace = ' <img class="emote_img" src="http://static.ak.fbcdn.net/images/blank.gif" style="position: relative; top: -1px; background: transparent url(http://static.ak.fbcdn.net/images/emote/emote.gif?8:93872) no-repeat scroll ' + smiley[smile] + ' top; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" title="'+alt+'" alt="'+alt+'">';
smile = smile.replace('>', '>');
smile = smile.replace('<', '<');
// special smileys
if (smile == ':-)' || smile == ':)') {smile = new RegExp('(:-?[\)]+)', 'gmi'); }
if (smile == ':-(' || smile == ':(') { smile = new RegExp('(:-?[\(]+)', 'gmi'); }
if (smile == ':-D' || smile == ':D') { smile = new RegExp('(:-?D+)', 'gmi'); }
el.innerHTML = el.innerHTML.replace(smile, replace, 'gmi');
data = null; // data reset
}
}
}
return false;
}
function smileys() {
// get location
var loc = location.hash;
if (loc.length == 0 || new RegExp('.php|/inbox/').test(loc) == false ) {
loc = location.pathname;
}
// statuses
if (new RegExp('home.php|profile.php|pages/', 'i').test(loc)) {
var headers = document.getElementsByClassName('GenericStory_Message');
replace(headers);
}
// comments
if (new RegExp('home.php|profile.php|photo.php|video.php|pages/|note.php|posted.php', 'i').test(loc)) {
var comments = document.getElementsByClassName("comment_actual_text");
replace(comments);
}
// events, groups wall
if (new RegExp('event.php|group.php', 'i').test(loc)) {
var wall = document.getElementsByClassName("walltext");
replace(wall);
}
// messages
if (new RegExp('/inbox/', 'i').test(loc)) {
var msgs = document.getElementsByClassName("GBThreadMessageRow_Body_Content");
replace(msgs);
}
// messages
if (new RegExp('topic.php', 'i').test(loc)) {
var posts = document.getElementsByClassName("post_message");
replace(posts);
}
setTimeout(smileys, 1500);
}
// waits till page is loaded
window.addEventListener("load", smileys, false);
autoUpdate (script_id, script_version);
