Large

Facebook ChatBar +

By Mike S. Last update Jul 11, 2010 — Installed 399,476 times.

There are 32 previous versions of this script.

// ==UserScript==
// @name           Facebook ChatBar +
// @include        http://www.facebook.com/*
// @include        http://apps.facebook.com/*
// @version        1.4.1
// @author         Mike Shamory
// @author         archih
// @author	   bitMAN
// ==/UserScript==
//



// List of emoticons
// :) :( :D >:( -_- :/ o.O :p :'( >:O :v 3:) :o :3 ;) :* :|] 8) <3 :putnam: 8| ^_^ (^^^) O:)
	
	var emotsInfo = new Array();
	emotsInfo[0] = ':)';		emotsInfo[1] = 590;
	emotsInfo[2] = ':(';		emotsInfo[3] = 606;
	emotsInfo[4] = ':p';		emotsInfo[5] = 622;
	emotsInfo[6] = ':D';		emotsInfo[7] = 638;
	emotsInfo[8] = '>:(';		emotsInfo[9] = 718;
	emotsInfo[10] = '-_-';		emotsInfo[11] = 846;
	emotsInfo[12] = ':/';		emotsInfo[13] = 734;
	emotsInfo[14] = 'o.O';		emotsInfo[15] = 862;
	emotsInfo[16] = ":'(";		emotsInfo[17] = 750;
	emotsInfo[18] = '>:O';		emotsInfo[19] = 878;
	emotsInfo[20] = ':v';		emotsInfo[21] = 894;
	emotsInfo[22] = '3:)';		emotsInfo[23] = 766;
	emotsInfo[24] = ':o';		emotsInfo[25] = 654;
	emotsInfo[26] = ':3';		emotsInfo[27] = 910;
	emotsInfo[28] = ';)';		emotsInfo[29] = 670;
	emotsInfo[30] = ':*';		emotsInfo[31] = 798;
	emotsInfo[32] = '8)';		emotsInfo[33] = 686;
	emotsInfo[34] = '<3';		emotsInfo[35] = 814;
	emotsInfo[36] = '8|';		emotsInfo[37] = 702;
	emotsInfo[38] = '^_^';		emotsInfo[39] = 830;
	emotsInfo[40] = 'O:)';		emotsInfo[41] = 782;
	emotsInfo[42] = ':|]';		emotsInfo[43] = 924;
	emotsInfo[44] = '(^^^)';	emotsInfo[45] = 940;
	emotsInfo[46] = ':putnam:';	emotsInfo[47] = 572;
	emotsInfo[48] = '<(")';		emotsInfo[49] = 518;
	emotsInfo[50] = '_msg_';	emotsInfo[51] = 536;
	emotsInfo[52] = '*msg*';	emotsInfo[53] = 554;
	emotsInfo[54] = 'popout';	emotsInfo[55] = 500;

	var fEmotBarDom = document.createElement('div');
	fEmotBarDom.setAttribute('class','chat_tab_emot_bar');
	fEmotBarDom.setAttribute('style','line-height: 16px; padding-left: 2px; background:#EEEEEE none repeat scroll 0 0; border-bottom-style: solid; border-bottom-width: 1px; border-color: #EEEEEE;');
	
	for(i=0;i<emotsInfo.length;i+=2) {
		var fEmotsDom = document.createElement('img');
		fEmotsDom.setAttribute('alt',emotsInfo[i]);
		fEmotsDom.setAttribute('style','cursor: pointer; background: transparent url(http://facebookchatbar.ucoz.com/images/themes/tmp_1.png) no-repeat scroll -'+ emotsInfo[i+1] +'px -84px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;');
		fEmotsDom.setAttribute('src','http://static.ak.fbcdn.net/images/blank.gif');
		fEmotsDom.setAttribute('class','_FBCT_EXT_emote_img emote_img');
		fEmotBarDom.appendChild(fEmotsDom);
	}
	if (!__FM__HAS__){
		var fEmotsDomlink = document.createElement('div');
		fEmotsDomlink.setAttribute('alt','get more');
		fEmotsDomlink.setAttribute('title','Get more smileys and animation for your facebook chat');
		fEmotsDomlink.setAttribute('target','_blank');
		fEmotsDomlink.setAttribute('style','cursor: pointer;cursor:hand;width:100%;text-align:center;margin:0px auto;height:15px;color:#3B5998;');
		fEmotsDomlink.innerHTML = 'Get more smileys! click here';
		fEmotsDomlink.setAttribute('class','_FBCT_EXT_emote_get');
		fEmotBarDom.appendChild(fEmotsDomlink);
	}
	
	document.addEventListener("DOMNodeInserted", fInsertedNodeHandler, false);

	var debugMode = false;

	function showAlert(str){
		if (debugMode) alert(str);
	}

	function fInsertedNodeHandler(event) {
		try{
			elm = jQuery(event.target);
		//if(event.target.getElementsByClassName && event.target.getElementsByClassName('chat_window')[0])
		if(elm.hasClass('fbChatTab')&&
			!jQuery('.chat_tab_emot_bar',elm).length)	
			fInsertEmotBar(event.target);
		}catch(e){showAlert('fInsertedNodeHandler: ' + e.message)}
	}

	function fInsertEmotBar(fChatWrapper) {
		try{
			//showAlert(fChatWrapper.className);
			//fChatToolBox = fChatWrapper.getElementsByClassName('fbNubFlyout')[0].getElementsByClassName('fbNubFlyoutBody')[0];
			fChatToolBox = fChatWrapper.getElementsByClassName('fbNubFlyout')[0].getElementsByClassName('fbNubFlyoutBody')[0];
			fNewEmotBar = fEmotBarDom.cloneNode(true);
			//for(i=0;i<fNewEmotBar.childNodes.length;i++) fNewEmotBar.childNodes[i].addEventListener('click', fEmotClickHandler , false);
			//var yosi = fChatWrapper.getElementsByClassName('fbNubFlyout')[0];
			//yosi.addEventListener('click', fEmotClickHandler , true);
			if(fChatToolBox.childNodes) fChatToolBox.insertBefore(fNewEmotBar,fChatToolBox.firstChild);
			else fChatToolBox.appendChild(fNewEmotBar);
			$('img',fNewEmotBar).bind('click',fEmotClickHandler);
			$('._FBCT_EXT_emote_get',fNewEmotBar).bind('click',fEmotClickHandler);
			//showAlert($('._FBCT_EXT_emote_get',fNewEmotBar).length);
		}catch(e){showAlert('fInsertEmotBar: ' + e.message)}
	}

	function fEmotClickHandler(event){
		try{
			elm = jQuery(event.target);
			//showAlert('elm: ');
			var fChatInput = event.target.parentNode.parentNode.parentNode.getElementsByClassName('chat_input_div')[0].getElementsByClassName('chat_input')[0];
	        if (event.target.getAttribute('alt') == 'popout') {
	                window.open('http://www.facebook.com/presence/popout.php');
			}else {
				if (event.target.getAttribute('alt') == 'get more') {
	                window.open('http://facemoods.com/landing/chattab');
				} else {
					if (elm.hasClass('_FBCT_EXT_emote_img')){
						fChatInput.value += ' ' + event.target.getAttribute('alt')+' ';
						fChatInput.focus();
					}
	             }
			}
		}catch(e){showAlert('fEmotClickHandler: ' + e.message)}
	}