- // ==UserScript==
- // @name UminekoFAQs
- // @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 none
- // @include http://www.gamefaqs.com/boards/*
- // @version 0.8
- // ==/UserScript==
-
- var CONST = {NEW:'Post Message', PREV:'Preview Message', PREVS:'Preview and Spellcheck Message'};
- var BTN_ID = {RED:'btnRed', BLUE:'btnBlue', GOLD:'btnGold', GREEN:'btnGreen', MAUVE:'btnMauve', PINK:'btnPink', ORANGE:'btnOrange'};
-
- if (document.getElementsByName('messagetext').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");
-
- 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");
-
- btnGold = document.createElement("input");
- btnGold.setAttribute("tabindex", "-1")
- btnGold.setAttribute("id", BTN_ID.GOLD);
- btnGold.setAttribute("value", "Gold");
- btnGold.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.getElementsByName('messagetext')[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(btnOrange, btnPink.nextSibling);
- btnOrange.parentNode.insertBefore(btnGold, btnOrange.nextSibling);
- btnGold.appendChild(document.createElement("br"));
- }
-
- renderColors();
-
- function eventListener(event) {
- var elemVal = event.target.value;
- if (elemVal == CONST.NEW || elemVal == CONST.PREV || elemVal == CONST.PREVS) {
- var text = document.getElementsByName('messagetext')[0].value;
- //red
- text = text.replace(/<red>/gi, '<i><b><b><code></code></b></b></i>').replace(/<\/red>/gi, '<i><i><i><code><i><code></code></i></code></i></i></i>');
- //blue
- text = text.replace(/<blue>/gi, '<b><b><b><code></code></b></b></b>').replace(/<\/blue>/gi, '<b><i><i><code><i><code></code></i></code></i></i></b>');
- //gold
- text = text.replace(/<gold>/gi, '<b><b><i><code></code></i></b></b>').replace(/<\/gold>/gi, '<b><b><i><code><i><code></code></i></code></i></b></b>');
- //green
- text = text.replace(/<green>/gi, '<b><i><i><code></code></i></i></b>').replace(/<\/green>/gi, '<b><b><b><code><i><code></code></i></code></b></b></b>');
- //mauve
- text = text.replace(/<mauve>/gi, '<i><i><b><code></code></b></i></i>').replace(/<\/mauve>/gi, '<i><b><b><code><i><code></code></i></code></b></b></i>');
- //salmonpink
- text = text.replace(/<salmonpink>/gi, '<i><i><i><code></code></i></i></i>').replace(/<\/salmonpink>/gi, '<i><i><b><code><i><code></code></i></code></b></i></i>');
- //orange
- text = text.replace(/<orange>/gi, '<b><code><i><i><code></code></i></i></code></b>').replace(/<\/orange>/gi, '<b><b><b><code><b><code></code></b></code></b></b></b>');
-
- document.getElementsByName('messagetext')[0].value = text;
- } else {
- var elemId = event.target.id;
- var obj = document.getElementsByName('messagetext')[0];
- if (elemId == BTN_ID.RED) {
- insertAtCaret(obj, '<red>', '</red>');
- } else if (elemId == BTN_ID.BLUE) {
- insertAtCaret(obj, '<blue>', '</blue>');
- } else if (elemId == BTN_ID.GOLD) {
- insertAtCaret(obj, '<gold>', '</gold>');
- } else if (elemId == BTN_ID.MAUVE) {
- insertAtCaret(obj, '<mauve>', '</mauve>');
- } else if (elemId == BTN_ID.PINK) {
- insertAtCaret(obj, '<salmonpink>', '</salmonpink>');
- } else if (elemId == BTN_ID.ORANGE) {
- insertAtCaret(obj, '<orange>', '</orange>');
- } else if (elemId == BTN_ID.GREEN) {
- insertAtCaret(obj, '<green>', '</green>');
- }
- }
- }
-
- 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('body');
- if (msg.lenght != 0) {
- var i = 0;
- for (i = 0; i < msg.length; i++) {
-
- //INVISIBLE Orange
- msg[i].innerHTML = msg[i].innerHTML.replace(/<b><code><i><i><\/i><\/i><\/code><\/b>/gi, "<font color=#FFA500><b>").replace(/<b><b><b><code><b><\/b><\/code><\/b><\/b><\/b>/gi, '</b></font>');
-
- //INVISIBLE Salmon Pink
- msg[i].innerHTML = msg[i].innerHTML.replace(/<i><i><i><\/i><\/i><\/i>/gi, "<font color=#FF9999><b>").replace(/<i><i><b><code><i><\/i><\/code><\/b><\/i><\/i>/gi, '</b></font>');
-
- //INVISIBLE Mauve
- msg[i].innerHTML = msg[i].innerHTML.replace(/<i><i><b><\/b><\/i><\/i>/gi, "<font color=#925f6e><b>").replace(/<i><b><b><code><i><\/i><\/code><\/b><\/b><\/i>/gi, '</b></font>');
-
- //INVISIBLE Red
- msg[i].innerHTML = msg[i].innerHTML.replace(/<i><b><b><\/b><\/b><\/i>/gi, "<font color=#F00><b>").replace(/<i><i><i><code><i><\/i><\/code><\/i><\/i><\/i>/gi, '</b></font>');
-
- //INVISIBLE Blue
- msg[i].innerHTML = msg[i].innerHTML.replace(/<b><b><b><\/b><\/b><\/b>/gi, "<font color=#00F><b>").replace(/<b><i><i><code><i><\/i><\/code><\/i><\/i><\/b>/gi, '</b></font>');
-
- //INVISIBLE Gold
- msg[i].innerHTML = msg[i].innerHTML.replace(/<b><b><i><\/i><\/b><\/b>/gi, "<font color=#FC0><b>").replace(/<b><b><i><code><i><\/i><\/code><\/i><\/b><\/b>/gi, '</b></font>');
-
- //INVISIBLE Green
- msg[i].innerHTML = msg[i].innerHTML.replace(/<b><i><i><\/i><\/i><\/b>/gi, "<font color=#6C0><b>").replace(/<b><b><b><code><i><\/i><\/code><\/b><\/b><\/b>/gi, '</b></font>');
-
- //MAUVE
- msg[i].innerHTML = msg[i].innerHTML.replace(/<i><i><i><i><i><i>/gi, "<font color=#925f6e><b>").replace(/<\/i><\/i><\/i><\/i><\/i><\/i>/gi, '</b></font>');
-
- //NEW red
- msg[i].innerHTML = msg[i].innerHTML.replace(/<i><i><i><i><i>/gi, "<font color=#F00><b>").replace(/<\/i><\/i><\/i><\/i><\/i>/gi, '</b></font>');
-
- //NEW blue
- msg[i].innerHTML = msg[i].innerHTML.replace(/<i><i><i><i>/gi, "<font color=#00F><b>").replace(/<\/i><\/i><\/i><\/i>/gi, '</b></font>');
-
- //NEW gold
- msg[i].innerHTML = msg[i].innerHTML.replace(/<i><i><i>/gi, "<font color=#FC0><b>").replace(/<\/i><\/i><\/i>/gi, '</b></font>');
-
- //NEW green
- msg[i].innerHTML = msg[i].innerHTML.replace(/<i><i>/gi, "<font color=#6C0><b>").replace(/<\/i><\/i>/gi, '</b></font>');
-
- //OLD red
- msg[i].innerHTML = msg[i].innerHTML.replace(/<em><b><i>/gi, "<font color=#F00><b>").replace(/<\/i><\/b><\/em>/gi, '</b></font>');
-
- //OLD blue
- msg[i].innerHTML = msg[i].innerHTML.replace(/<em><b><b>/gi, "<font color=#00F><b>").replace(/<\/b><\/b><\/em>/gi, '</b></font>');
-
- //OLD gold
- msg[i].innerHTML = msg[i].innerHTML.replace(/<em><i><b>/gi, "<font color=#FC0><b>").replace(/<\/b><\/i><\/em>/gi, '</b></font>');
-
- //OLD green
- msg[i].innerHTML = msg[i].innerHTML.replace(/<b><i><em>/gi, "<font color=#6C0><b>").replace(/<\/em><\/i><\/b>/gi, '</b></font>');
- }
- }
- }