// How to use: // ----------- // 1. Enter the names of your emoticons in the variable ´emoticons´. // 2. Reload the plugin. // 3. Check the debug log for the converted shortcode. // 4. Open the Emoticons dialog in Windows Live Messenger. // 5. Select the emoticon you want a longer shortcode of, click on "Edit" and change the shortcode to the text you copied. // // (optional) 6. Change the unicode if it interferes with your messages. // Unused Unicode used for emoticon short codes. var characters = [ "◃", "◂" ]; // The names of the emoticons you're going to use. var emoticons = [ "blobcat", "kiss" ]; function OnEvent_Initialize(MessengerStart) { printEmoticonList(); } function OnEvent_ChatWndSendMessage(ChatWnd, Message) { return replaceEmoticons(Message); } function printEmoticonList() { for (var i = 0; i < emoticons.length; i++) { var emoticonName = emoticons[i]; var encoded = encodeIndex(i); Debug.Trace("Secret unicode for emoticon \"" + emoticonName + "\" is \"" + encoded + "\""); } } function replaceEmoticons(Message) { var readingEmoji = false; var startIndex = null; var emojiBuffer = ""; for (var i = 0; i < Message.length; i++) { var char = Message.charAt(i); if (char === ":") { if (readingEmoji) { var emojiIndex = indexOf(emoticons, emojiBuffer); Debug.Trace("Searching for emoji called " + emojiBuffer); if (emojiIndex == -1) { // clear emoji buffer emojiBuffer = ""; } else { // emoji found, replacing Message. Debug.Trace("Replacing emoji at " + i); var prefix = Message.substring(0, startIndex); var suffix = Message.substring(i + 1); Message = prefix + encodeIndex(emojiIndex) + suffix; readingEmoji = false; } } else { Debug.Trace("Started reading emoji"); startIndex = i; readingEmoji = true; } } else if (readingEmoji) { emojiBuffer = emojiBuffer + char; } } return Message; } function encodeIndex(idx1) { var oldBits = idx1.toString(2); var newBits = ""; for (var idx2 = 0; idx2 < oldBits.length; idx2++) { var oldChar = oldBits.charAt(idx2); var pos = parseInt(oldChar); var newChar = characters[pos]; newBits = newBits + newChar; } return newBits; } function indexOf(array, element) { for (var i = 0; i < array.length; i++) { if (array[i] == element) return i; } return -1; }