Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //======================================================================
- // Author: 'Anonymous' fom 8 /pol/
- //======================================================================
- // DO WHATEVER THE FUCK YOU WANT WITH IT PUBLIC LICENSE
- //
- // Everyone is permitted to copy and distribute verbatim or modified
- // copies of this license document, and changing it is allowed as long
- // as the name is changed.
- //
- // This program is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- //
- // DO WHATEVER THE FUCK YOU WANT WANT WITH IT PUBLIC LICENSE
- // TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
- //
- // 0. This is released into the PUBLIC DOMAIN.
- // 1. You just DO WHATEVER THE FUCK YOU WANT WITH IT.
- //======================================================================
- // CLASS NAMES
- //================================================================
- var TWEETCONTAINTERNODE_CLASSNAME = "js-tweet-text-container";
- var TWEETSTREAMITEMFOOTER = "stream-item-footer";
- var TWEETSTREAMITEMHEADER = "stream-item-header";
- var TWEETBOXTOOLBAR_CLASSNAME = "TweetBoxToolbar";
- var TWEETBOXEXTRASITEM_CLASSNAME = "TweetBoxExtras-item";
- var TWEETBOXEXTRASDIV_CLASSNAME = "WizardRuneMagicButton";
- var TWEETREPLYBOXROOT_CLASSNAME = "RichEditor-scrollContainer";
- // STRINGS
- //=================================================================
- var ICONTWITTER_PATH = "icons/icon_twitter.png";
- // INDICES
- //================================================================
- var TWEETBOXTOOLBAREXTRAS_INDEX = 0;
- var TWEETBOXTOOLBAREXTRAS_INSERT_INDEX = 4;
- // INTERVALS
- //================================================================
- var REFRESH_INTERVAL_TIMER = 550;
- // LOOKUP
- //================================================================
- var LOOKUP_ALPHA_LOWER = [ "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
- var LOOKUP_ALPHA_UPPER = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
- var LOOKUP_SYMBOLS_ALPHA_32_64 = [ "\u0020","\u0021","\u0022","\u0023","\u0024","\u0025","\u0026","\u0027","\u0028","\u0029","\u002A","\u002B","\u002C","\u002D","\u002E","\u002F","\u0030","\u0031","\u0032","\u0033","\u0034","\u0035","\u0036","\u0037","\u0038","\u0039","\u003A","\u003B","\u003C","\u003D","\u003E","\u003F","\u0040"];
- var LOOKUP_SYMBOLS_ALPHA_91_96 = [ "\u005B","\u005C","\u005D","\u005E","\u005F","\u0060" ];
- var LOOKUP_SYMBOLS_ALPHA_123_126 = [ "\u007B","\u007C","\u007D","\u007E" ];
- var LOOKUP_RUNES = [ "\u05D0", "\u05D1", "\u05D2", "\u05D3", "\u05D4", "\u05D5", "\u05D6", "\u05D7", "\u05D8","\u05D9", "\u05DA", "\u05DB", "\u05DC", "\u05DD", "\u05DE", "\u05DF", "\u05E0","\u05E1", "\u05E2", "\u05E3", "\u05E4", "\u05E5", "\u05E6", "\u05E7", "\u05E8", "\u05E9" ];
- var LOOKUP_RUNES_SYMBOLS_32_64 = ["\u0020","\u0461","\u0462","\u0463","\u0464","\u0465","\u0466","\u0467","\u0468","\u0469","\u046A","\u046B","\u046C","\u046D","\u046E","\u046F","\u0470","\u0471","\u0472","\u0473","\u0474","\u0475","\u0476","\u0477","\u0478","\u0479","\u047A","\u047B","\u047C","\u047D","\u047E","\u047F","\u0480"]; //1120-1152
- var LOOKUP_RUNES_SYMBOLS_91_96 = ["\u03E2","\u03E3","\u03E4","\u03E5","\u03E6","\u03E7"]; //994-999
- var LOOKUP_RUNES_SYMBOLS_123_126 = ["\u0447","\u0448","\u0449","\u044A"]; //1095-1098
- var LOOKUP_RUNIC_ACCENT = "\u059f";
- var RUNIC_ACCENT_CODEPOINT = 1439;
- var ALPHA_MONEY_CODEPOINT = 36;
- var RUNIC_MONEY_CODEPOINT = 8362;
- var ALPHA_SPECIAL_NUMBER_CODEPOINT = 54;
- var RUNIC_SPECIAL_NUMBER_CODEPOINT = 1161;
- var RUNIC_CODEPOINT_OFFSET = (2976 / 2);
- // STATE
- //================================================================
- var bIsLogicTimerSet = false;
- // ENCRYPT / DECRYPT
- //================================================================
- function alphaToRunes(sValue)
- {
- var sResult = "";
- for(it = 0; it < sValue.length; ++it)
- {
- var codePoint = (sValue.codePointAt(it));
- if((codePoint >= 65) && (codePoint <= 90))
- {
- sResult = sResult + LOOKUP_RUNES[codePoint - 65] + LOOKUP_RUNIC_ACCENT;
- }
- else if((codePoint >= 97) && (codePoint <= 122))
- {
- sResult = sResult + LOOKUP_RUNES[codePoint - 97];
- }
- else if(codePoint == ALPHA_MONEY_CODEPOINT)
- {
- sResult = sResult + String.fromCodePoint(RUNIC_MONEY_CODEPOINT);
- }
- else if(codePoint == ALPHA_SPECIAL_NUMBER_CODEPOINT)
- {
- sResult = sResult + String.fromCodePoint(RUNIC_SPECIAL_NUMBER_CODEPOINT);
- }
- else if((codePoint >= 32) && (codePoint <= 64))
- {
- sResult = sResult + LOOKUP_RUNES_SYMBOLS_32_64[(codePoint - 32)];
- }
- else if((codePoint >= 91) && (codePoint <= 96))
- {
- sResult = sResult + LOOKUP_RUNES_SYMBOLS_91_96[(codePoint - 91)];
- }
- else if((codePoint >= 123) && (codePoint <= 126))
- {
- sResult = sResult + LOOKUP_RUNES_SYMBOLS_123_126[(codePoint - 123)];
- }
- else
- {
- sResult = sResult + String.fromCodePoint(codePoint);
- }
- }
- return sResult;
- }
- function runesToAlpha(sValue)
- {
- var sResult = "";
- var codePoint = 0;
- for(it = 0; it < sValue.length; ++it)
- {
- codePoint = sValue.codePointAt(it);
- if(((codePoint - RUNIC_CODEPOINT_OFFSET) >= 0) && ((codePoint - RUNIC_CODEPOINT_OFFSET) <= 25))
- {
- if(((it + 1) < sValue.length) && (sValue.codePointAt(it + 1) == RUNIC_ACCENT_CODEPOINT))
- {
- sResult = sResult + LOOKUP_ALPHA_UPPER[codePoint - RUNIC_CODEPOINT_OFFSET];
- it = it + 1;
- }
- else
- {
- sResult = sResult + LOOKUP_ALPHA_LOWER[codePoint - RUNIC_CODEPOINT_OFFSET];
- }
- }
- else if(codePoint == RUNIC_MONEY_CODEPOINT)
- {
- sResult = sResult + String.fromCodePoint(ALPHA_MONEY_CODEPOINT);
- }
- else if(codePoint == RUNIC_SPECIAL_NUMBER_CODEPOINT)
- {
- sResult = sResult + String.fromCodePoint(ALPHA_SPECIAL_NUMBER_CODEPOINT);
- }//1120-1152
- else if ((codePoint >= 1120) && (codePoint <= 1152))
- {
- sResult = sResult + LOOKUP_SYMBOLS_ALPHA_32_64[(codePoint - 1120)];
- }//994-999
- else if((codePoint >= 994) && (codePoint <= 999))
- {
- sResult = sResult + LOOKUP_SYMBOLS_ALPHA_91_96[(codePoint - 994)];
- }//1095-1098
- else if((codePoint >= 1095) && (codePoint <= 1098))
- {
- sResult = sResult + LOOKUP_SYMBOLS_ALPHA_123_126[(codePoint - 1095)];
- }
- else
- {
- if(codePoint != 10)
- {
- sResult = sResult + String.fromCodePoint(codePoint);
- }
- }
- }
- return sResult + " ";
- }
- function summonMagicRunes()
- {
- var tweetBoxList = document.getElementsByClassName(TWEETREPLYBOXROOT_CLASSNAME);
- var tbl = 0;
- while(tbl < tweetBoxList.length)
- {
- var nodeList = tweetBoxList[tbl].children[0].childNodes;
- var current = null;
- var it = 0;
- while(it < nodeList.length)
- {
- current = nodeList[it];
- if((current.nodeType == Node.TEXT_NODE) && (current.data !== "undefined"))
- {
- current.data = alphaToRunes(current.data);
- }
- it = it + 1;
- }
- tbl = tbl + 1;
- }
- }
- // WRUIHandler
- //======================================================================================================
- function WRUIHandler(ttbNode)
- {
- this.tbExtras = null;
- this.tbItem = null;
- this.tbDiv = null;
- this.tbImage = null;
- this.tbExtras = ttbNode.firstElementChild;
- this.tbItem = document.createElement('span');
- this.tbItem.setAttribute("class", TWEETBOXEXTRASITEM_CLASSNAME);
- this.tbExtras.insertBefore(this.tbItem, this.tbExtras.children[TWEETBOXTOOLBAREXTRAS_INSERT_INDEX]);
- this.tbDiv = document.createElement('div');
- this.tbDiv.setAttribute("class", TWEETBOXEXTRASDIV_CLASSNAME);
- this.tbDiv.style.backgroundImage = 'url(' + chrome.extension.getURL(ICONTWITTER_PATH) + ')';
- this.tbDiv.style.width = "32px";
- this.tbDiv.style.height = "32px";
- this.tbDiv.addEventListener("click", summonMagicRunes);
- this.tbItem.appendChild(this.tbDiv);
- this.shutDown = (function()
- {
- this.tbExtras.removeChild(this.tbItem);
- }).bind(this);
- }
- // CORE LOGIC
- //=================================================================
- function appendWizardUI()
- {
- var tweetToolBar = document.getElementsByClassName(TWEETBOXTOOLBAR_CLASSNAME);
- if(tweetToolBar.length > 0)
- {
- for(it = 0; it < tweetToolBar.length; ++it)
- {
- var current = tweetToolBar[it];
- if(current.hasOwnProperty("wrUIHandler") === true)
- {
- current.wrUIHandler.shutDown();
- current.wrUIHandler = null;
- }
- current.wrUIHandler = new WRUIHandler(current);
- }
- }
- }
- function scanAndDecodeRunes()
- {
- var listContent = document.getElementsByClassName(TWEETCONTAINTERNODE_CLASSNAME);
- if(listContent.length > 0)
- {
- var cContent = null;
- var decryptState = null;
- var it = 0;
- var cNodeList = null;
- var cNode = null;
- var nt = 0;
- while(it < listContent.length)
- {
- cContent = listContent[it];
- if(cContent !== "undefined")
- {
- if(cContent.hasOwnProperty("wrIsDecrypted"))
- {
- decryptState = cContent.wrIsDecrypted;
- }
- else
- {
- decryptState = false;
- }
- if(decryptState === false)
- {
- cContent.children[0].setAttribute("lang", "en");
- cNodeList = cContent.children[0].childNodes;
- nt = 0;
- while(nt < cNodeList.length)
- {
- cNode = cNodeList[nt];
- if((cNode.nodeType == Node.TEXT_NODE) && (cNode.data !== "undefined"))
- {
- cNode.data = runesToAlpha(cNode.data);
- }
- nt = nt + 1;
- }
- cContent.wrIsDecrypted = true;
- }
- }
- it = it + 1;
- }
- }
- }
- // STATE MANAGEMENT
- //=================================================================
- function onLogicTimer()
- {
- if(bIsLogicTimerSet === true)
- {
- bIsLogicTimerSet = false;
- scanAndDecodeRunes();
- appendWizardUI();
- }
- }
- function trySetLogicTimer()
- {
- if(bIsLogicTimerSet === false)
- {
- bIsLogicTimerSet = true;
- window.setTimeout(onLogicTimer, Math.floor((Math.random() * REFRESH_INTERVAL_TIMER) + REFRESH_INTERVAL_TIMER));
- }
- }
- function isElementRelevantForUpdate(element)
- {
- if(element !== null)
- {
- var klass = element.getAttribute("class");
- if(TWEETCONTAINTERNODE_CLASSNAME == klass)
- {
- return true;
- }
- if(TWEETSTREAMITEMFOOTER == klass)
- {
- return true;
- }
- if(TWEETSTREAMITEMHEADER == klass)
- {
- return true;
- }
- if(TWEETREPLYBOXROOT_CLASSNAME == klass)
- {
- return true;
- }
- if(element.parentElement !== null)
- {
- klass = element.parentElement.getAttribute("class");
- if(TWEETCONTAINTERNODE_CLASSNAME == klass)
- {
- return true;
- }
- if(TWEETSTREAMITEMFOOTER == klass)
- {
- return true;
- }
- if(TWEETSTREAMITEMHEADER == klass)
- {
- return true;
- }
- if(TWEETREPLYBOXROOT_CLASSNAME == klass)
- {
- return true;
- }
- }
- }
- return false;
- }
- function onClick(e)
- {
- if((e.target === null) || (e.target.parentElement === null))
- {
- return;
- }
- if(isElementRelevantForUpdate(e.target))
- {
- trySetLogicTimer();
- }
- }
- function initialize()
- {
- // CLASS NAMES
- //================================================================
- TWEETCONTAINTERNODE_CLASSNAME = "js-tweet-text-container";
- TWEETSTREAMITEMFOOTER = "stream-item-footer";
- TWEETSTREAMITEMHEADER = "stream-item-header";
- TWEETBOXTOOLBAR_CLASSNAME = "TweetBoxToolbar";
- TWEETBOXEXTRASITEM_CLASSNAME = "TweetBoxExtras-item";
- TWEETBOXEXTRASDIV_CLASSNAME = "WizardRuneMagicButton";
- TWEETREPLYBOXROOT_CLASSNAME = "RichEditor-scrollContainer";
- // STRINGS
- //=================================================================
- ICONTWITTER_PATH = "icons/icon_twitter.png";
- // INDICES
- //================================================================
- TWEETBOXTOOLBAREXTRAS_INDEX = 0;
- TWEETBOXTOOLBAREXTRAS_INSERT_INDEX = 4;
- // INTERVALS
- //================================================================
- REFRESH_INTERVAL_TIMER = 550;
- // LOOKUP
- //================================================================
- LOOKUP_ALPHA_LOWER = [ "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
- LOOKUP_ALPHA_UPPER = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
- LOOKUP_SYMBOLS_ALPHA_32_64 = [ "\u0020","\u0021","\u0022","\u0023","\u0024","\u0025","\u0026","\u0027","\u0028","\u0029","\u002A","\u002B","\u002C","\u002D","\u002E","\u002F","\u0030","\u0031","\u0032","\u0033","\u0034","\u0035","\u0036","\u0037","\u0038","\u0039","\u003A","\u003B","\u003C","\u003D","\u003E","\u003F","\u0040"];
- LOOKUP_SYMBOLS_ALPHA_91_96 = [ "\u005B","\u005C","\u005D","\u005E","\u005F","\u0060" ];
- LOOKUP_SYMBOLS_ALPHA_123_126 = [ "\u007B","\u007C","\u007D","\u007E" ];
- LOOKUP_RUNES = [ "\u05D0", "\u05D1", "\u05D2", "\u05D3", "\u05D4", "\u05D5", "\u05D6", "\u05D7", "\u05D8","\u05D9", "\u05DA", "\u05DB", "\u05DC", "\u05DD", "\u05DE", "\u05DF", "\u05E0","\u05E1", "\u05E2", "\u05E3", "\u05E4", "\u05E5", "\u05E6", "\u05E7", "\u05E8", "\u05E9" ];
- LOOKUP_RUNES_SYMBOLS_32_64 = ["\u0020","\u0461","\u0462","\u0463","\u0464","\u0465","\u0466","\u0467","\u0468","\u0469","\u046A","\u046B","\u046C","\u046D","\u046E","\u046F","\u0470","\u0471","\u0472","\u0473","\u0474","\u0475","\u0476","\u0477","\u0478","\u0479","\u047A","\u047B","\u047C","\u047D","\u047E","\u047F","\u0480"];
- LOOKUP_RUNES_SYMBOLS_91_96 = ["\u03E2","\u03E3","\u03E4","\u03E5","\u03E6","\u03E7"];
- LOOKUP_RUNES_SYMBOLS_123_126 = ["\u0447","\u0448","\u0449","\u044A"];
- LOOKUP_RUNIC_ACCENT = "\u059f";
- RUNIC_ACCENT_CODEPOINT = 1439;
- ALPHA_MONEY_CODEPOINT = 36;
- RUNIC_MONEY_CODEPOINT = 8362;
- ALPHA_SPECIAL_NUMBER_CODEPOINT = 54;
- RUNIC_SPECIAL_NUMBER_CODEPOINT = 1161;
- RUNIC_CODEPOINT_OFFSET = (2976 / 2);
- document.addEventListener("wheel", trySetLogicTimer);
- document.addEventListener("scroll", trySetLogicTimer);
- window.addEventListener("click", onClick);
- window.addEventListener("focus", trySetLogicTimer);
- window.addEventListener("pageshow", initialize);
- window.addEventListener("hashchange", initialize);
- trySetLogicTimer();
- }
- initialize();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement