- // ==UserScript==
- // @name GameFAQs Colored Text Renderer
- // @description This script translates <red>, <blue>, <gold>, <green>, <mauve>, <salmonpink>, and <orange> tags into GameFAQs friendly HTML tags, and accordingly renders messages into the aforementioned colors.
- // @namespace http://thelolilulelo.wordpress.com/
- // @grant GM_addStyle
- // @include https://www.gamefaqs.com/boards/*
- // @exclude https://www.gamefaqs.com/boards/user.php*
- // @exclude https://www.gamefaqs.com/boards/sigquote.php*
- // @version 1.2
- // ==/UserScript==
-
- GM_addStyle ( " \
- @font-face {font-family: MadokaRunes; src: url('https://dl.dropboxusercontent.com/u/42167128/MadokaRunes.ttf');} \
- " );
-
- GM_addStyle ( " \
- @font-face {font-family: ComicSans; src: url('https://dl.dropboxusercontent.com/u/42167128/comic.ttf');} \
- " );
-
- GM_addStyle ( " \
- @font-face {font-family: Papyrus; src: url('https://dl.dropboxusercontent.com/u/42167128/papyrus.ttf');} \
- " );
-
-
- var CONST = {NEW:'Post Message', PREV:'Preview Message', PREVS:'Preview and Spellcheck Message', EDIT:'Save Changes'};
- var BTN_ID = {RED:'btnRed', BLUE:'btnBlue', GOLD:'btnGold', GREEN:'btnGreen', MAUVE:'btnMauve', PINK:'btnPink', ORANGE:'btnOrange', UNDERLINE:'btnUnderline', STRIKEOUT:'btnStrikeout', SMALL:'btnSmall', BIG:'btnBig'};
-
- if (document.getElementsByTagName('textarea').length != 0) {
- document.addEventListener('click', eventListener, true);
-
- btnRed = document.createElement("input");
- btnRed.setAttribute("tabindex", "-1")
- btnRed.setAttribute("id", BTN_ID.RED);
- btnRed.setAttribute("value", "Red");
- btnRed.setAttribute("type", "button");
-
- btnBlue = document.createElement("input");
- btnBlue.setAttribute("tabindex", "-1")
- btnBlue.setAttribute("id", BTN_ID.BLUE);
- btnBlue.setAttribute("value", "Blue");
- btnBlue.setAttribute("type", "button");
-
- btnGreen = document.createElement("input");
- btnGreen.setAttribute("tabindex", "-1")
- btnGreen.setAttribute("id", BTN_ID.GREEN);
- btnGreen.setAttribute("value", "Green");
- btnGreen.setAttribute("type", "button");
-
- btnGold = document.createElement("input");
- btnGold.setAttribute("tabindex", "-1")
- btnGold.setAttribute("id", BTN_ID.GOLD);
- btnGold.setAttribute("value", "Gold");
- btnGold.setAttribute("type", "button");
-
- btnMauve = document.createElement("input");
- btnMauve.setAttribute("tabindex", "-1")
- btnMauve.setAttribute("id", BTN_ID.MAUVE);
- btnMauve.setAttribute("value", "Mauve");
- btnMauve.setAttribute("type", "button");
-
- btnPink = document.createElement("input");
- btnPink.setAttribute("tabindex", "-1")
- btnPink.setAttribute("id", BTN_ID.PINK);
- btnPink.setAttribute("value", "Pink");
- btnPink.setAttribute("type", "button");
-
- btnOrange = document.createElement("input");
- btnOrange.setAttribute("tabindex", "-1")
- btnOrange.setAttribute("id", BTN_ID.ORANGE);
- btnOrange.setAttribute("value", "Orange");
- btnOrange.setAttribute("type", "button");
-
- btnUnderline = document.createElement("input");
- btnUnderline.setAttribute("tabindex", "-1")
- btnUnderline.setAttribute("id", BTN_ID.UNDERLINE);
- btnUnderline.setAttribute("value", "Underline");
- btnUnderline.setAttribute("type", "button");
-
- btnStrikeout = document.createElement("input");
- btnStrikeout.setAttribute("tabindex", "-1")
- btnStrikeout.setAttribute("id", BTN_ID.STRIKEOUT);
- btnStrikeout.setAttribute("value", "Strike");
- btnStrikeout.setAttribute("type", "button");
-
- btnSmall = document.createElement("input");
- btnSmall.setAttribute("tabindex", "-1")
- btnSmall.setAttribute("id", BTN_ID.SMALL);
- btnSmall.setAttribute("value", "Small");
- btnSmall.setAttribute("type", "button");
-
- btnBig = document.createElement("input");
- btnBig.setAttribute("tabindex", "-1")
- btnBig.setAttribute("id", BTN_ID.BIG);
- btnBig.setAttribute("value", "Big");
- btnBig.setAttribute("type", "button");
-
- if (document.getElementsByName('gamefox-quickpost-normal').length != 0) {
- var elemParent = document.getElementsByName('gamefox-quickpost-normal')[0];
- elemParent.insertBefore(btnRed, elemParent.childNodes[0]);
- //elemParent.childNodes[0].appendChild(btnRed);
- } else {
- var elemParent = document.getElementsByTagName('textarea')[0];
- elemParent.parentNode.parentNode.insertBefore(btnRed, elemParent.parentNode);
- }
-
- btnRed.parentNode.insertBefore(btnBlue, btnRed.nextSibling);
- btnBlue.parentNode.insertBefore(btnGreen, btnBlue.nextSibling);
- btnGreen.parentNode.insertBefore(btnMauve, btnGreen.nextSibling);
- btnMauve.parentNode.insertBefore(btnPink, btnMauve.nextSibling);
- btnPink.parentNode.insertBefore(btnGold, btnPink.nextSibling);
- btnGold.parentNode.insertBefore(btnOrange, btnGold.nextSibling);
- btnOrange.parentNode.insertBefore(btnUnderline, btnOrange.nextSibling);
- btnUnderline.parentNode.insertBefore(btnStrikeout, btnUnderline.nextSibling);
- btnStrikeout.parentNode.insertBefore(btnSmall, btnStrikeout.nextSibling);
- btnSmall.parentNode.insertBefore(btnBig, btnSmall.nextSibling);
- btnGold.parentNode.insertBefore(btnOrange, btnGold.nextSibling);
- btnBig.appendChild(document.createElement("br"));
- }
-
- renderColors();
-
- function eventListener(event) {
- var elemVal = event.target.value;
- if (elemVal == CONST.NEW || elemVal == CONST.PREV || elemVal == CONST.PREVS || elemVal == CONST.EDIT) {
- var text = document.getElementsByTagName('textarea')[0].value;
- //red
- text = text.replace(/<red>/gi, '<i><b><b><code></code></b></b></i>').replace(/<\/font>/gi, '<code><i><code></code></i></code>');
- //blue
- text = text.replace(/<blue>/gi, '<b><b><b><code></code></b></b></b>');
- //gold
- text = text.replace(/<gold>/gi, '<b><b><i><code></code></i></b></b>');
- //green
- text = text.replace(/<green>/gi, '<b><i><i><code></code></i></i></b>');
- //mauve
- text = text.replace(/<mauve>/gi, '<i><i><b><code></code></b></i></i>');
- //salmonpink
- text = text.replace(/<salmonpink>/gi, '<i><i><i><code></code></i></i></i>');
- //orange
- text = text.replace(/<orange>/gi, '<b><code><i><i><code></code></i></i></code></b>');
- //contract
- text = text.replace(/<contract>/gi, '<i><code><i><i><code></code></i></i></code></i>');
- //AOEKnight
- text = text.replace(/<aoeknight>/gi, '<code><b><i></i></b></code>');
- //rennyf1
- text = text.replace(/<rennyf1>/gi, '<b><i><\/i><\/b>');
- //yaranaika
- text = text.replace(/<yaranaika>/gi, '<i><b><\/b><\/i>');
- //conwayshrug
- text = text.replace(/<conwayshrug>/gi, '<code><b><\/b><\/code>');
- //conwayfacepalm
- text = text.replace(/<conwayfacepalm>/gi, '<b><code><b><\/b><\/code><\/b>');
- //papyrus font
- text = text.replace(/<papyrusfont>/gi, '<b><code><i><\/i><\/code><\/b>');
- //papyrus emote
- text = text.replace(/<papyrus>/gi, '<i><code><b><\/b><\/code><\/i>');
- //sans emote
- text = text.replace(/<sans>/gi, '<i><code><i><\/i><\/code><\/i>');
- //tobdog
- text = text.replace(/<tobdog>/gi, '<code><b><b><\/b><\/b><\/code>');
- //happycrank
- text = text.replace(/<happycrank>/gi, '<code><i><b><\/b><\/i><\/code>');
- //Comic Sans MS
- text = text.replace(/<comicsans>/gi, ' <b><code><b><i><code></code></i></b></code></b>');
- //Marquee
- text = text.replace(/<marquee>/gi, '<code><code><b><code></code></b></code></code>').replace(/<\/marquee>/gi, '<code><code><code><b><i><code></code></i></b></code></code></code>');
- //Underline
- text = text.replace(/<u>/gi, '<code><code><i><code></code></i></code></code>').replace(/<\/u>/gi, '<code><code><code><b><code></code></b></code></code></code>');
- //Strikeout
- text = text.replace(/<strike>/gi, '<i><code><i><b><code></code></b></i></code></i>').replace(/<\/strike>/gi, '<code><code><code><i><code></code></i></code></code></code>');
- //Small Font
- text = text.replace(/<small>/gi, '<i><code><b><b><code></code></b></b></code></i>');
- //Big Font
- text = text.replace(/<big>/gi, '<b><code><b><b><code></code></b></b></code></b>');
- //DINOSAUR
- text = text.replace(/<dinosaur>/gi, '<b><code><i><b><code></code></b></i></code></b>');
- //EDIT Comic Sans MS
- text = text.replace(/<b><code><b><i><\/i><\/b><\/code><\/b>/gi, '<b><code><b><i><code></code></i></b></code></b>');
- //EDIT Red
- text = text.replace(/<i><b><b><\/b><\/b><\/i>/gi, '<i><b><b><code></code></b></b></i>');
- //EDIT Blue
- text = text.replace(/<b><b><b><\/b><\/b><\/b>/gi, '<b><b><b><code></code></b></b></b>');
- //EDIT Gold
- text = text.replace(/<b><b><i><\/i><\/b><\/b>/gi, '<b><b><i><code></code></i></b></b>');
- //EDIT Green
- text = text.replace(/<b><i><i><\/i><\/i><\/b>/gi, '<b><i><i><code></code></i></i></b>');
- //EDIT Mauve
- text = text.replace(/<i><i><b><\/b><\/i><\/i>/gi, '<i><i><b><code></code></b></i></i>');
- //EDIT Salmon Pink
- text = text.replace(/<i><i><i><\/i><\/i><\/i>/gi, '<i><i><i><code></code></i></i></i>');
- //EDIT Orange
- text = text.replace(/<b><code><i><i><\/i><\/i><\/code><\/b>/gi, '<b><code><i><i><code></code></i></i></code></b>');
- //EDIT Madoka Font
- text = text.replace(/<i><code><i><i><\/i><\/i><\/code><\/i>/gi, '<i><code><i><i><code></code></i></i></code></i>').replace(/<code><i><\/i><\/code>/gi, '<code><i><code></code></i></code>');
- //EDIT AOEKnight
- text = text.replace(/<code><b><i><\/i><\/b><\/code>/gi, '<code><b><i><code></code></i></b></code>');
- //EDIT rennyf1
- text = text.replace(/<b><i><\/i><\/b>/gi, '<b><i><code></code></i></b>');
- //EDIT yaranaika
- text = text.replace(/<i><b><\/b><\/i>/gi, '<i><b><code></code></b></i>');
- //EDIT conwayshrug
- text = text.replace(/<code><b><\/b><\/code>/gi, '<code><b><code></code></b></code>');
- //EDIT conwayfacepalm
- text = text.replace(/<b><code><b><\/b><\/code><\/b>/gi, '<b><code><b><code></code></b></code></b>');
- //EDIT mute
- text = text.replace(/<b><code><i><\/i><\/code><\/b>/gi, '<b><code><i><code></code></i></code></b>');
- //EDIT surprise
- text = text.replace(/<i><code><b><\/b><\/code><\/i>/gi, '<i><code><b><code></code></b></code></i>');
- //EDIT questionmark
- text = text.replace(/<i><code><i><\/i><\/code><\/i>/gi, '<i><code><i><code></code></i></code></i>');
- //EDIT gokigen
- text = text.replace(/<code><b><b><\/b><\/b><\/code>/gi, '<code><b><b><code></code></b></b></code>');
- //EDIT happycrank
- text = text.replace(/<code><i><b><\/b><\/i><\/code>/gi, '<code><i><b><code></code></b></i></code>');
- //EDIT Marquee
- text = text.replace(/<code><code><b><\/b><\/code><\/code>/gi, '<code><code><b><code></code></b></code></code>').replace(/<code><code><code><b><i><\/i><\/b><\/code><\/code><\/code>/gi, '<code><code><code><b><i><code></code></i></b></code></code></code>');
- //EDIT Underline
- text = text.replace(/<code><code><i><\/i><\/code><\/code>/gi, '<code><code><i><code></code></i></code></code>').replace(/<code><code><code><b><\/b><\/code><\/code><\/code>/gi, '<code><code><code><b><code></code></b></code></code></code>');
- //EDIT Strikeout
- text = text.replace(/<i><code><i><b><\/b><\/i><\/code><\/i>/gi, '<i><code><i><b><code></code></b></i></code></i>').replace(/<code><code><code><i><\/i><\/code><\/code><\/code>/gi, '<code><code><code><i><code></code></i></code></code></code>');
- //EDIT Small Font
- text = text.replace(/<i><code><b><b><\/b><\/b><\/code><\/i>/gi, '<i><code><b><b><code></code></b></b></code></i>');
- //EDIT Big Font
- text = text.replace(/<b><code><b><b><\/b><\/b><\/code><\/b>/gi, '<b><code><b><b><code></code></b></b></code></b>');
- //EDIT DINOSAUR
- text = text.replace(/<b><code><i><b><\/b><\/i><\/code><\/b>/gi, '<b><code><i><b><code></code></b></i></code></b>');
-
-
- document.getElementsByTagName('textarea')[0].value = text;
- } else {
- var elemId = event.target.id;
- var obj = document.getElementsByTagName('textarea')[0];
- if (elemId == BTN_ID.RED) {
- insertAtCaret(obj, '<red>', '</font>');
- } else if (elemId == BTN_ID.BLUE) {
- insertAtCaret(obj, '<blue>', '</font>');
- } else if (elemId == BTN_ID.GOLD) {
- insertAtCaret(obj, '<gold>', '</font>');
- } else if (elemId == BTN_ID.MAUVE) {
- insertAtCaret(obj, '<mauve>', '</font>');
- } else if (elemId == BTN_ID.PINK) {
- insertAtCaret(obj, '<salmonpink>', '</font>');
- } else if (elemId == BTN_ID.ORANGE) {
- insertAtCaret(obj, '<orange>', '</font>');
- } else if (elemId == BTN_ID.GREEN) {
- insertAtCaret(obj, '<green>', '</font>');
- } else if (elemId == BTN_ID.UNDERLINE) {
- insertAtCaret(obj, '<u>', '</u>');
- } else if (elemId == BTN_ID.STRIKEOUT) {
- insertAtCaret(obj, '<strike>', '</strike>');
- } else if (elemId == BTN_ID.SMALL) {
- insertAtCaret(obj, '<small>', '</font>');
- } else if (elemId == BTN_ID.BIG) {
- insertAtCaret(obj, '<big>', '</font>');
- }
- }
- }
-
- function insertAtCaret(obj, tagOpen, tagClose) {
- if (obj.selectionStart) {
- obj.focus();
- var start = obj.selectionStart;
- var end = obj.selectionEnd;
- obj.value = obj.value.substr(0, start).concat(tagOpen).concat(obj.value.substr(start, end - start)).concat(tagClose).concat(obj.value.substr(end));
- }
-
- if (start != null) {
- setCaretTo(obj, start + tagOpen.length);
- } else {
- //obj.value += text;
- }
- }
-
- function setCaretTo(obj, pos) {
- if(obj.createTextRange) {
- var range = obj.createTextRange();
- range.move('character', pos);
- range.select();
- } else if(obj.selectionStart) {
- obj.focus();
- obj.setSelectionRange(pos, pos);
- }
- }
-
- function renderColors() {
- var msg = document.getElementsByClassName('msg_body');
- if (msg.length != 0) {
- var i = 0;
- for (i = 0; i < msg.length; i++) {
-
- //Comic Sans
- msg[i].innerHTML = msg[i].innerHTML.replace(/<b><code><b><i><\/i><\/b><\/code><\/b>/gi, "<font face=ComicSans>");
-
- //Dinosaur
- msg[i].innerHTML = msg[i].innerHTML.replace(/<b><code><i><b><\/b><\/i><\/code><\/b>/gi, "<img src=http://i.imgur.com/56TCBmn.gif>");
-
- //Big Font
- msg[i].innerHTML = msg[i].innerHTML.replace(/<b><code><b><b><\/b><\/b><\/code><\/b>/gi, "<font size=5>");
-
- //Small Font
- msg[i].innerHTML = msg[i].innerHTML.replace(/<i><code><b><b><\/b><\/b><\/code><\/i>/gi, "<font size=1>");
-
- //Strikeout
- msg[i].innerHTML = msg[i].innerHTML.replace(/<i><code><i><b><\/b><\/i><\/code><\/i>/gi, "<strike>").replace(/<code><code><code><i><\/i><\/code><\/code><\/code>/gi, '</strike>');
-
- //Underline
- msg[i].innerHTML = msg[i].innerHTML.replace(/<code><code><i><\/i><\/code><\/code>/gi, "<u>").replace(/<code><code><code><b><\/b><\/code><\/code><\/code>/gi, '</u>');
-
- //Marquee
- msg[i].innerHTML = msg[i].innerHTML.replace(/<code><code><b><\/b><\/code><\/code>/gi, "<marquee>").replace(/<code><code><code><b><i><\/i><\/b><\/code><\/code><\/code>/gi, '</marquee>');
-
- //Madoka Font
- msg[i].innerHTML = msg[i].innerHTML.replace(/<i><code><i><i><\/i><\/i><\/code><\/i>/gi, "<font face=MadokaRunes>");
-
- //Orange
- msg[i].innerHTML = msg[i].innerHTML.replace(/<b><code><i><i><\/i><\/i><\/code><\/b>/gi, "<font color=#FFA500><b>");
-
- //Salmon Pink
- msg[i].innerHTML = msg[i].innerHTML.replace(/<i><i><i><\/i><\/i><\/i>/gi, "<font color=#FF9999><b>");
-
- //Mauve
- msg[i].innerHTML = msg[i].innerHTML.replace(/<i><i><b><\/b><\/i><\/i>/gi, "<font color=#925f6e><b>");
-
- //Red
- msg[i].innerHTML = msg[i].innerHTML.replace(/<i><b><b><\/b><\/b><\/i>/gi, "<font color=#F00><b>");
-
- //Blue
- msg[i].innerHTML = msg[i].innerHTML.replace(/<b><b><b><\/b><\/b><\/b>/gi, "<font color=#00F><b>");
-
- //Gold
- msg[i].innerHTML = msg[i].innerHTML.replace(/<b><b><i><\/i><\/b><\/b>/gi, "<font color=#FC0><b>");
-
- //happycrank
- msg[i].innerHTML = msg[i].innerHTML.replace(/<code><i><b><\/b><\/i><\/code>/gi, "<img src=http://cdn.steamcommunity.com//economy/emoticon/:happycrank:>");
-
- //AOEKnight
- msg[i].innerHTML = msg[i].innerHTML.replace(/<code><b><i><\/i><\/b><\/code>/gi, "<img src=http://cdn.steamcommunity.com//economy/emoticon/:AOEKnight:>");
-
- //tobdog
- msg[i].innerHTML = msg[i].innerHTML.replace(/<code><b><b><\/b><\/b><\/code>/gi, "<img src=http://i.imgur.com/ZahAUP4.png>");
-
- //sans emote
- msg[i].innerHTML = msg[i].innerHTML.replace(/<i><code><i><\/i><\/code><\/i>/gi, "<img src=http://i.imgur.com/Tswhynu.png>");
-
- //papyrus emote
- msg[i].innerHTML = msg[i].innerHTML.replace(/<i><code><b><\/b><\/code><\/i>/gi, "<img src=http://i.imgur.com/jKh8pPC.png>");
-
- //papyrus font
- msg[i].innerHTML = msg[i].innerHTML.replace(/<b><code><i><\/i><\/code><\/b>/gi, "<font face=Papyrus>");
-
- //conwayfacepalm
- msg[i].innerHTML = msg[i].innerHTML.replace(/<b><code><b><\/b><\/code><\/b>/gi, "<img src=http://cdn.steamcommunity.com//economy/emoticon/:conwayfacepalm:>");
-
- //conwayshrug
- msg[i].innerHTML = msg[i].innerHTML.replace(/<code><b><\/b><\/code>/gi, "<img src=http://cdn.steamcommunity.com//economy/emoticon/:conwayshrug:>");
-
- //yaranaika
- msg[i].innerHTML = msg[i].innerHTML.replace(/<i><b><\/b><\/i>/gi, "<img src=http://cdn.steamcommunity.com//economy/emoticon/:yaranaika:>");
-
- //rennyf1
- msg[i].innerHTML = msg[i].innerHTML.replace(/<b><i><\/i><\/b>/gi, "<img src=http://cdn.steamcommunity.com//economy/emoticon/:rennyf1:>");
-
- //Green
- msg[i].innerHTML = msg[i].innerHTML.replace(/<b><i><i><\/i><\/i><\/b>/gi, "<font color=#6C0><b>").replace(/<code><i><\/i><\/code>/gi, '</b></font>');
-
- }
- }
- }