Travian BBCode in all pages

By Matt93 Last update Sep 18, 2008 — Installed 34,962 times.

There are 3 previous versions of this script.

// ==UserScript==
// @name           Travian BBCode in all pages
// @namespace      travian_bbcode
// @include        http://*.travian.*/*
// ==/UserScript==
faccine=new Array();
faccine[':-P']='tongue';
faccine['^^']="laugh";
faccine['O.o']='blink';
faccine['8-)']='cool';
faccine[':-((']='cry';
faccine[':-))']='biggrin';
faccine[':-D']='biggrin';
faccine[':-)']='happy';
faccine[':-O']='ohmy';
faccine[':-(']='sad';

function replace(string, first, last) {
while (string.indexOf(first) != -1) {
string = string.replace(first, last);
}
return string
}

function addGlobalStyle(css) {
    var head, style;
    head = document.getElementsByTagName('head')[0];
    if (!head) { return; }
    style = document.createElement('style');
    style.type = 'text/css';
    style.innerHTML = css;
    head.appendChild(style);
}

addGlobalStyle('.faccina { width: 15px; height:15px }');

function parseBBCode(str)
{
   var ret;
   ret=str;
   ret=ret.replace(/\[b\](.*?)\[\/b\]/gi,'<span style="font-weight:bold">$1</span>');
   ret=ret.replace(/\[i\](.*?)\[\/i\]/gi,'<span style="font-style:italic">$1</span>');
   ret=ret.replace(/\[u\](.*?)\[\/u\]/gi,'<span style="text-decoration:underline">$1</span>');
   ret=ret.replace(/\[url\](.*?)\[\/url\]/gi,'<a href="$1" target="_blank">$1</a>');
   ret=ret.replace(/\[url=(.*?)\](.*?)\[\/url\]/gi,'<a href="$1" target="_blank">$2</a>');
   ret=ret.replace(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />');
   ret=ret.replace(/\[img=(.*?)\]/gi,'<img src="$1" />');
   ret=ret.replace(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<span style="color:$1">$2</span>');
   ret=ret.replace(/\[size=(.*?)\](.*?)\[\/size\]/gi,'<span style="font-size:$1px">$2</span>');
   
   for(var code in faccine){
   stringa="<img class=\"faccina\" src=\"http:\/\/matt93\.altervista\.org\/_altervista_ht\/travian\/faccine\/"+faccine[code]+"\.gif\" alt=\"\" \/>";
   ret=replace(ret,code,stringa);
   }
   return ret;
   
}

function removeBBCode(str)
{
   var ret;
   ret=str;
   ret=ret.replace(/<span style="font-weight:bold">(.*?)<\/span>/gi, "[b]$1[/b]");
   ret=ret.replace(/<span style="font-style:italic">(.*?)<\/span>/gi, "[i]$1[/i]");
   ret=ret.replace(/<span style="text-decoration:underline">(.*?)<\/span>/gi, "[u]$1[/u]");
   ret=ret.replace(/<a href="(.*?)" target="_blank">(.*?)<\/a>/gi, "[url=$1]$2[/url]");
   ret=ret.replace(/<img src="(.*?)" \/>/gi, "[img=$1]");
   ret=ret.replace(/<span style="color:(.*?)">(.*?)<\/span>/gi ,"[color=$1]$2[/color]");
   ret=ret.replace(/<span style="font-size:(.*?)px">(.*?)<\/span>/gi ,"[size=$1]$2[/size]");
   for(var code in faccine){
   stringa="<img class=\"faccina\" src=\"http:\/\/matt93\.altervista\.org\/_altervista_ht\/travian\/faccine\/"+faccine[code]+"\.gif\" alt=\"\" \/>";
   ret=replace(ret,stringa, code);
   }
   //nella linea successiva un ' dopo l'asterisco
   return ret;
   
}

document.body.innerHTML=parseBBCode(document.body.innerHTML);
var allElements, thisElement;
allElements = document.getElementsByTagName('textarea');
for (var i = 0; i < allElements.length; i++) {
    allElements[i].value=removeBBCode(allElements[i].value);
    // do something with thisElement
}