Greasy Fork is available in English.

FlipText

Click button to flip text

// ==UserScript==
// @name         FlipText
// @version      0.6
// @namespace    http://userscripts.org/users/zackton
// @description  Click button to flip text
// @include      *
// @grant        none
// ==/UserScript==

function formYes() {
if($('textarea').length > 0) {
    addGlobalStyle('.flipLink {position:relative;z-index:100;background-color:transparent;font-size:75%;}');
    }
}

function addGlobalStyle(css) {
  var head = document.getElementsByTagName('head')[0];
  if (head) { 
    var style = document.createElement('style');
    style.type = 'text/css';
    style.innerHTML = css;
    head.appendChild(style);
  }
}
addGlobalStyle('.flipLink {position:relative;z-index:100;background-color:transparent;font-size:75%;}');

function flipText(text) {
  var revText = '';
  for (var i = 0; i < text.length; i++) {
    var orgChar = text.charAt(text.length - 1 - i);
    var revChar = flipTable[orgChar];
    revText += (revChar != undefined) ? revChar : orgChar;
  }
  return revText;
}

function flipClick(event) {
  //console.log('flipClick: event.target=' + event.target);
  
  if (event.target.hasAttribute("textfieldId")) {
    textfieldId = event.target.getAttribute("textfieldId");
    //console.log('flipClick: textfieldId=' + textfieldId);
    document.getElementById(textfieldId).value = flipText(document.getElementById(textfieldId).value);
  }
}

function addInputfield(fieldObj) {
  if (fieldObj.id != '') {
    //console.log('addInputfield: fieldObj.id=' + fieldObj.id);
    var flipLink = document.createElement("a");
    //flipLink.href = "#";
    flipLink.innerHTML = "Flipit!";
    flipLink.className = "flipObj";
    flipLink.setAttribute("textfieldId", fieldObj.id);
    flipLink.addEventListener('click',	flipClick, true);
    fieldObj.parentNode.appendChild(flipLink);
  } else {
    //console.log('addInputfield: fieldObj without id: ' + fieldObj.name + ', ' + fieldObj.className);
  }
}

function addAllInputfields() {
  inputObjs = document.getElementsByTagName("input");
  for (var i = 0; i < inputObjs.length; i++) {
    if (inputObjs[i].type == "text") {
      addInputfield(inputObjs[i]);
    }
  }
  textareaObjs = document.getElementsByTagName("textarea");
  for (var i = 0; i < textareaObjs.length; i++) {
    addInputfield(textareaObjs[i]);
  }
}

addAllInputfields();


// the character conversion table
var flipTable = {
'a' : '\u0250',
'b' : 'q',
'c' : '\u0254',
'd' : 'p',
'e' : '\u01DD',
'f' : '\u025F',
'g' : '\u0183',
'h' : '\u0265',
'i' : '!',
'j' : '\u027E',
'k' : '\u029E',
'l' : '\u05DF',
'm' : '\u026F',
'n' : 'u',
'p' : 'b',
'r' : '\u0279',
't' : '\u0287',
'v' : '\u028C',
'w' : '\u028D',
'y' : '\u028E',
'ä' : '\u1EA1',
'ö' : '\u1ECD',
'ö' : '\u1EE5',
'[' : ']',
'(' : ')',
'{' : '}',
'<' : '>',
'?' : '\u00BF',
'!' : '\u00A1',
'.' : '\u02D9',
';' : '\u061B',
"'" : ',',
'"' : '\u201e',
'_' : '\u203E',
'^' : '\u203f',
'&' : '\u214b',
'\u203F' : '\u2040',
'\u2045' : '\u2046',
'\u2234' : '\u2235',
'A' : '\u2200',
'C' : '\u0186',
'D' : '\u15E1',
'E' : '\u018e',
'F' : '\u2132',
'G' : '\u2141',
'J' : '\u017f',
'L' : '\u2142',
'N' : '\u0418',
'P' : '\u0500',
'R' : '\u1D1A',
'T' : '\u22a5',
'U' : '\u144e',
'V' : '\u039b',
'W' : 'M',
'Y' : '\u2144',
'Ä' : '\u1EA0',
'Ü' : '\u1EE4',
'Ö' : '\u1ECC',
'1' : '\u21C2',
'2' : '\u1105',
'3' : '\u0190',
'4' : '\u3123',
'5' : '\u03DA',
'6' : '9',
'7' : '\u3125',
'9' : '6',
}

for (i in flipTable) {
  flipTable[flipTable[i]] = i
}