EmoticonBar

By IzzySoft Last update Nov 13, 2009 — Installed 249 times. Daily Installs: 0, 2, 7, 4, 6, 2, 1, 0, 14, 3, 9, 4, 2, 4, 3, 1, 0, 4, 2, 12, 7, 8, 6, 1, 6, 0, 25, 4, 3, 2, 5, 2

There are 19 previous versions of this script.

var GMSU_meta_48536 = <><![CDATA[
// ==UserScript==
// @name           EmoticonBar
// @namespace      http://projects.izzysoft.de/
// @description    Adds an emoticon bar for your postings on UserScripts.Org, UserStyles.Org, MozillaZine.Org forums - and even more sites.
// @version        1.2.1
// @uso:script     48536
// @include        http://*.userstyles.org/comments.php?*
// @include        http://*.userstyles.org/post.php?*
// @include        http://userscripts.org/topics/*
// @include        http://userscripts.org/scripts/edit/*
// @include        http://userscripts.org/messages/new?*
// @include        http://tmp.garyr.net/forum/posting.php?*
// @include        http://tmp.garyr.net/forum/viewtopic.php?*
// @include        http://forums.mozillazine.org/ucp.php?*
// @include        http://forums.mozillazine.org/viewtopic.php?*
// @include        http://forums.mozillazine.org/posting.php?*
// @require        http://userscripts.org/scripts/source/51513.user.js
// @history        1.2.1 added UserScripts.Org new PM to supported @includes
// @history        1.2.0 Added support for BBCode. Switched to BBCode for TMP forums, and added support for MozillaZine 
// ==/UserScript==
]]></>;
GMSU.init(48536);

window.addEventListener("load", function(e) {

tagtype = 'html'; // default; alternative: 'bbcode'

// Emoticon definitions
function setemoticons(domname) {
  var editbar = document.getElementById(domname);
  if (editbar) {

    var bdiv = document.createElement('div');
    bdiv.setAttribute('align','center');
    bdiv.setAttribute('id','IzEmoticons');
    var buttons = "<div style='background-color:#ffffff;border:1px solid grey;width:95%;'>";
	buttons += emoticonButton("Huh?", "http://www.mysmiley.net/imgs/smile/sign/sign0035.gif");
	buttons += emoticonButton("Oops!", "http://www.mysmiley.net/imgs/smile/sign/sign0040.gif");
	buttons += emoticonButton("WOW!", "http://www.mysmiley.net/imgs/smile/sign/sign0046.gif");
	buttons += emoticonButton("Cool", "http://www.mysmiley.net/imgs/smile/sign/sign0028.gif");
	buttons += emoticonButton("Thankyou!", "http://www.freesmileys.org/smileys/smiley-signs153.gif");
	buttons += emoticonButton("Thank you!", "http://www.smileyvault.com/albums/basic/smileyvault-flowers.gif");
	buttons += emoticonButton("Smile", "http://www.freesmileys.org/smileys/smiley-basic/smile.gif");
	buttons += emoticonButton("Sad", "http://www.freesmileys.org/smileys/smiley-basic/sad.gif");
	buttons += emoticonButton("Huh", "http://www.freesmileys.org/smileys/smiley-basic/huh.gif");
	buttons += emoticonButton("Dry", "http://www.freesmileys.org/smileys/smiley-basic/dry.gif");
	buttons += emoticonButton("Mellow", "http://www.freesmileys.org/smileys/smiley-basic/mellow.gif");
	buttons += emoticonButton("Died", "http://www.freesmileys.org/smileys/smiley-violent004.gif");
	buttons += emoticonButton("Hush", "http://www.freesmileys.org/smileys/smiley-shocked002.gif");
	buttons += emoticonButton("Cool", "http://www.freesmileys.org/smileys/smiley-basic/cool.gif");
	buttons += emoticonButton("Peace", "http://www.freesmileys.org/smileys/smiley-char038.gif");
	buttons += emoticonButton("Whistle", "http://www.freesmileys.org/smileys/smiley-green/greensmilies-029.gif");
	buttons += emoticonButton("Huh?", "http://smileyjungle.com/smilies/doh28.gif");
	buttons += emoticonButton("Confused", "http://www.smileyvault.com/albums/basic/smileyvault-chin.gif");
	buttons += emoticonButton("What", "http://www.freesmileys.org/smileys/smiley-basic/what.gif");
	buttons += emoticonButton("Doh", "http://smileyjungle.com/smilies/doh13.gif");
	buttons += emoticonButton("whao?", "http://www.freesmileys.org/smileys/smiley-basic/spock.gif");
	buttons += emoticonButton("Wink", "http://www.freesmileys.org/smileys/smiley-basic/wink.gif");
	buttons += emoticonButton("wink", "http://www.dogmall.co.uk/smile/winking/winking0012.gif");
	buttons += emoticonButton("OhMy", "http://www.freesmileys.org/smileys/smiley-basic/ohmy.gif");
	buttons += emoticonButton("Laugh", "http://www.freesmileys.org/smileys/smiley-basic/laugh.gif");
	buttons += emoticonButton("Tongue", "http://www.freesmileys.org/smileys/smiley-basic/tongue.gif");
	buttons += emoticonButton("Bleh", "http://www.freesmileys.org/smileys/smiley-fc/bleh.gif");
	buttons += emoticonButton("Tongue", "http://smileys.on-my-web.com/repository/Tongue/mockery-035.gif");
	buttons += emoticonButton("...", "http://smileyjungle.com/smilies/disdain21.gif");
	buttons += emoticonButton("Angel", "http://www.freesmileys.org/smileys/smiley-basic/angel.gif");
	buttons += emoticonButton("Nono", "http://smileyjungle.com/smilies/disdain25.gif");
	buttons += emoticonButton("OhYes!", "http://www.freesmileys.org/smileys/smiley-basic/lol.gif");
	buttons += emoticonButton("ROFL", "http://www.freesmileys.org/smileys/smiley-basic/rofl.gif");
	buttons += emoticonButton("LOL", "http://www.freesmileys.org/smileys/smiley-laughing001.gif");
	buttons += emoticonButton("Hehaha!", "http://www.freesmileys.org/smileys/smiley-laughing021.gif");
	buttons += emoticonButton("Happyspin", "http://www.mysmiley.net/imgs/smile/happy/happy0088.gif");
	buttons += emoticonButton("Yeap!", "http://www.freesmileys.org/smileys/smiley-happy120.gif");
	buttons += emoticonButton("Guru", "http://www.freesmileys.org/smileys/smiley-green/greensmilies-028.gif");
	buttons += emoticonButton("Bow","http://www.theabeforum.com/images/emoticons/New/bow.gif");
	buttons += emoticonButton("RollEyes", "http://www.freesmileys.org/smileys/smiley-basic/rolleyes.gif");
	buttons += emoticonButton("Unsure", "http://www.freesmileys.org/smileys/smiley-basic/unsure.gif");
	buttons += emoticonButton("Excited", "http://www.freesmileys.org/smileys/smiley-basic/excited.gif");
	buttons += emoticonButton("Tears", "http://www.freesmileys.org/smileys/smiley-basic/tears.gif");
	buttons += emoticonButton("Sick", "http://www.freesmileys.org/smileys/smiley-basic/sick.gif");
	buttons += emoticonButton("Sleep", "http://www.freesmileys.org/smileys/smiley-basic/sleep.gif");
	buttons += emoticonButton("Shy", "http://www.freesmileys.org/smileys/smiley-basic/shy.gif");
	buttons += emoticonButton("Cash", "http://www.freesmileys.org/smileys/smiley-forum/2c.gif");
	buttons += emoticonButton("Censored", "http://www.freesmileys.org/smileys/smiley-forum/censored.gif");
	buttons += emoticonButton("Stop", "http://www.freesmileys.org/smileys/smiley-forum/stop.gif");
	buttons += emoticonButton("Ashamed", "http://www.freesmileys.org/smileys/smiley-ashamed005.gif");
	buttons += emoticonButton("Captain", "http://www.freesmileys.org/smileys/smiley-char027.gif");
	buttons += emoticonButton("NoIdea", "http://www.freesmileys.org/smileys/smiley-confused005.gif");
	buttons += emoticonButton("Beer", "http://www.freesmileys.org/smileys/smiley-eatdrink004.gif");
	buttons += emoticonButton("Sweat", "http://www.freesmileys.org/smileys/smiley-gen113.gif");
	buttons += emoticonButton("Stupid", "http://www.freesmileys.org/smileys/smiley-gen135.gif");
	buttons += emoticonButton("SOS", "http://www.freesmileys.org/smileys/smiley-gen164.gif");
	buttons += emoticonButton("Shock", "http://www.freesmileys.org/smileys/smiley-shocked003.gif");
	buttons += emoticonButton("Shocking!..", "http://www.freesmileys.org/smileys/smiley-shocked017.gif");
	buttons += emoticonButton("Mad", "http://www.freesmileys.org/smileys/smiley-basic/mad.gif");
	buttons += emoticonButton("Punch","http://knol.google.com/k/-/-/1m38742kj1jp7/7l6orf/emoticon-0146-punch.gif");
	buttons += emoticonButton("Nosepunch", "http://smileyjungle.com/smilies/fighting0.gif");
    buttons += "</div>";

    bdiv.innerHTML += buttons;
    editbar.appendChild(bdiv);
  }
}

// Create a single emoticon element
function emoticonButton(name, url) {
  if (tagtype=='bbcode')
    return "<span id='IzEmoticons_"+name+"' title='" + name + "' onmousedown='(function() {var rich_edit = document.getElementById(\""+textar+"\");rich_edit.value+=\"[img]"+url+"[/img]\";})();'><img src='" + url + "' alt='" + name + "' border='0'></span>\n";
  else
    return "<span id='IzEmoticons_"+name+"' title='" + name + "' onmousedown='(function() {var rich_edit = document.getElementById(\""+textar+"\");rich_edit.value+=\"<img  class=\\\"emoticon\\\"  src=\\\""+url+"\\\" alt=\\\"" + name + "\\\" title=\\\"" + name + "\\\" />\";})();'><img src='" + url + "' alt='" + name + "' border='0'></span>\n";
}

// Create a separator (currently unused)
function separator() {
  return "<div style=\"display: block;\" class=\"vertbar\"><span style=\"display: block;\" class=\"g\">&nbsp;</span><span style=\"display: block;\" class=\"w\">&nbsp;</span></div>\n";
}

// Check for a named element (divname) and, if found, initialize the
// corresponding textarea (txtname)
function initEmoticons(divname,txtname) {
  if ( document.getElementById(divname) ) {
    textar = txtname;
    setemoticons(divname);
    return true;
  }
  return false;
}

// Loader for UserScripts "Edit post" Ajax link
function usoEditInit() {
  window.setTimeout(function() {
    initEmoticons("edit","edit_post_body");
  },1000);
}

// MAIN: Check for the textarea to use and initialize it
var textar;    // global variable holding the textarea id
while (true) { // Loop known elements
  // UserStyles.Org
  if ( window.location.href.match(/http:\/\/([a-z]*\.)*\userstyles\.org/) ) {
	if ( document.getElementById('CommentBox') ) {
	  if ( document.getElementById('frmPostDiscussion') ) { // discuss a style
        initEmoticons("frmPostDiscussion","CommentBox");
	  } else if ( document.getElementById('Form') ) { // Forum
        initEmoticons("Form","CommentBox");
	  }
	}
    break;
  }
  // UserScripts.Org
  if ( window.location.href.match('http://userscripts.org/') ) {
    // Add event handler to edit links first (they get their textarea via Ajax)
	ta = document.evaluate("//span[@class='edit']/a", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
	for (i=0;i<ta.snapshotLength;i++) {
	  ta.snapshotItem(i).addEventListener('click',usoEditInit,false);
	}
	// name the element holding the textarea for script description
	ta = document.evaluate("//textarea[@id='script_description_extended']", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
	for (i=0;i<ta.snapshotLength;i++) {
	  ta.snapshotItem(i).parentNode.id = 'editDesc';
	}
    // now care for the remaining textareas
	if ( document.getElementById('message_body') && document.getElementById('new_message') ) { // new PM
	  initEmoticons('new_message','message_body');
	  break;
	}
	if ( initEmoticons("editDesc","script_description_extended") ) break;    // Script description
    if ( initEmoticons("reply","post_body") ) break;    // UserScripts ReplyTo
    if ( initEmoticons("content","topic_body") ) break; // UserScripts NewTopic
    if ( initEmoticons("edit","edit_post_body") ) break; //UserScripts EditPost
	break;
  }
  // TMP.garyr.net:
  if ( window.location.href.match('http://tmp.garyr.net/') ) {
    tagtype = 'bbcode';
    ta = document.evaluate("//textarea[@class='post']", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
	if ( ta.snapshotLength ) {
	  ta.snapshotItem(ta.snapshotLength-1).id = 'emoComment';
	  ta.snapshotItem(ta.snapshotLength-1).parentNode.id = 'emoDiv';
	  initEmoticons('emoDiv','emoComment');
	}
    break;
  }
  // MozillaZine
  if ( window.location.href.match('http://forums.mozillazine.org/') ) {
    tagtype = 'bbcode';
	if ( document.getElementById('message') ) {
	  if ( document.getElementById('message-box') ) { // PM / QuoteReply
	    initEmoticons('message-box','message');
	  } else if ( document.getElementById('postingbox') ) { // ViewTopic
	    initEmoticons('postingbox','message');
	  }
	}
    break;
  }
}

}, false);