Thumb

facebook.com - replace smileys

By Kub4jz Last update Oct 25, 2009 — Installed 8,980 times. Daily Installs: 151, 144, 80, 125, 107, 39, 42, 43, 30, 23, 40, 28, 28, 39, 27, 28, 28, 25, 27, 18, 21, 37, 25, 32, 17, 25, 16, 12, 14, 15, 22, 21

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(')', '&shy;)');
			
	 		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('>', '&gt;');
				smile = smile.replace('<', '&lt;');

				// 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);